From nobody Sat Sep 26 23:03:45 2026 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=1787072549; cv=none; d=zohomail.com; s=zohoarc; b=ZuvFdgbkwAi3tl9h83AG5qwQqwPeVizjPL0rGqbTTcZh+MQmsVo4H/0YWp/aqCEmcMLvOClpomF+U1zNOUASjqzfK7MmmWYcYC88DtT+GhWIsRs5tUPjjTiUU+myeg/CtokD+EMvcXPvpPdmYIEyQ6lZ0nHUcDN1d9VTG4vgXiA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072549; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UIM0s5lWODAxHFxh/yWxa09GnkzpjD0dC8DHL+7U4bw=; b=gGXwQxBH6ONptd245e2EdVBA2M1Avvd7sfZSq/poaUICwagBZUzhCDPskv8AGQ+/Rbtu6A7UE4vE4PiubGlpDUqHSYF+0GWT0XpTdIkyr2A+JX9F4LZK5y7YB+XZPeGRv6wDIfxEH9PLd89NAs06wXPAxaYStybYxl31QAG88Dw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072549866709.0766193822092; Tue, 18 Aug 2026 10:02:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCO-0007Le-Iw; Tue, 18 Aug 2026 13:02:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCN-0007L6-A6 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:03 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCL-0004cN-G9 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:03 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-84a2c90e383so1056634b3a.0 for ; Tue, 18 Aug 2026 10:02:01 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.01.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:01:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072520; x=1787677320; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=UIM0s5lWODAxHFxh/yWxa09GnkzpjD0dC8DHL+7U4bw=; b=tD9fPbqoPfLue/avhRcXliLMYUc7AOysWTI5a8xs+8XGDKoACUzUtrVkNYKo3TPBsD xOZMoXhPUXZKQCTq2bLZ/T42AVSQAzlcPOeXFz64XZssmCDMGC+wB7dc9zB35QQDaaiu qPj4Bm8KvUE/FfIYz4gshu1dJ8AraZT2vAFJKD8EI8cagsTkv7arRHJt6Q681SOvk8TR CAGCImsObmx5qWfk1DAF3tZl5P5JVvIm1YJvQGJpCqtXXfZehsohgNDgZs15ZsutMEBW iFPXpPvQH2OKsXGlM46Jume4ZYedJ5TSM96hhfI344ARa2HVcOynFEy39R+S64ogNQVb 3Vaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072520; x=1787677320; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=UIM0s5lWODAxHFxh/yWxa09GnkzpjD0dC8DHL+7U4bw=; b=lKWaup8ig3M1NriePsZl62nw8ARaaD4K2pDaiUjo+mtzrnIEXYlOp4VIa6/zkwKiRl N0ReXERB+8QMILd+XcRBDbUF9nNgSr04IO+pYsls6nbNBbw1LyT4UShPMiJecx5z/1Ki /2Mw9JBNIVZ7azw0z5FNvQNd2qfzZb6X5vboMg8qsf+BnRsnm1YC1K3G/LCs/fnxbQMc NKz0QJSBuZ7eM3VGFiqXwgeVPUgAZNdzmjIsTp7h7DwAKIJPg4i2AEjj3Sa+7++rrPPE JSW1dzBigZ7D07i+b9E2CIyfw50iXpxBNUZYCn7PMOv/acC5RQ6W6epAqCBkJi6e55Dd Yn1A== X-Gm-Message-State: AOJu0Yz06FYoIFGwPkVbshwNheKq4RZksx4+PM3WztNbOp5uD7QWBg4A JzW0tEufQmue8h2h7YltdbftRSf9QDMw/CqdjmIH5AP9CvdIzWpfFOMB2AkMaN+P0K1sEO7TWxZ 6cKiZH0A= X-Gm-Gg: AR+sD125zGpkhjFInfSr7rJihqKvKQvcXCu/gYHht+YLgD2riaVv3zLBTCImS6si38i z/WKl6oSd7Z4YmS8xP4EMPQrhUZcKoATk35ZgFIsJ+A6hQw56I2iEj1tVt6Dzjexm/teHPgAmtU dHqlk+eQT8Ah+XXdjmTnJS6SPbMJqi4C0Qylor4fhD3CD0VuZngYyOH3arDJ2P06y48fWaQjiFZ dgyrq5boM+DG7o1rC1Z5SSJpoL3dVoWG/Xgnq0teKXPnKJbEBPsFeDPT0VM92syLfwfTsrHAxs+ dry0eHWkVS2YTJt2443fr86BPrPHWFTaMR2EohBvYUK9VVMKpgntr+ZHU+14oPpX0cHY8PEcBB6 Ng6pqqAVNwZJK852NdTnamd5eEISZxS6FuooN9o/BSljtxqhFryWRRL9+R3Q82mEKn3cNvu9aiF cB5uAwxDOF2m7PNByUyYBwPXApW2GQ6NMfmMrgE/r1treZA7ux8254QwBqfNrLUm8Lv27bbxLdv nc9idW7aH5F/cWOBokCY9XXXV0xH9TlcWo= X-Received: by 2002:a05:6a00:b93:b0:848:4c3a:a359 with SMTP id d2e1a72fcca58-851bc426186mr6962710b3a.19.1787072519950; Tue, 18 Aug 2026 10:01:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 01/38] tcg/optimize: INDEX_op_mul is commutative Date: Tue, 18 Aug 2026 10:01:18 -0700 Message-ID: <20260818170155.1907006-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072550918158500 Cc: qemu-stable@nongnu.org Fixes: 7a2f7084525 ("tcg/optimize: Sink commutative operand swapping into f= old functions") Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/optimize.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tcg/optimize.c b/tcg/optimize.c index fcdef25bee..ed2ff32ed2 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -2152,7 +2152,7 @@ static bool fold_movcond(OptContext *ctx, TCGOp *op) =20 static bool fold_mul(OptContext *ctx, TCGOp *op) { - if (fold_const2(ctx, op) || + if (fold_const2_commutative(ctx, op) || fold_xi_to_i(ctx, op, 0) || fold_xi_to_x(ctx, op, 1)) { return true; --=20 2.43.0 From nobody Sat Sep 26 23:03:45 2026 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=1787072549; cv=none; d=zohomail.com; s=zohoarc; b=PRP1755O653X+3GxYDCyRFj4liPpbLRt2R6DMNomaUev6TU/xuqFX8uBdEN4F/HCNY1EdnDSNdeA0J4X97CKFb2ZEaScUVMX606akV6t9tS/4gCMdw1SUL0+tVd810neYZ8gs43MNq9Oa37+1VgOn/P7ajhjdjyXzakBkr8xUag= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072549; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=st89BtH1YIdinVd7rJQ55m7ueiw+97q7juqxabY6zvQ=; b=ZJsa6n21ELDWbTzsCAqUlehIf5pxkQrYe3sdfMoni5dslQgZwCaXyi+Jg7uqUCxnYSu4Wp7Htjsp6ESZBozjvzhNCCdOal023brVShTcv8kfz1ActHgB6iZSNnJwk49ikRMU9x/4Tyw2RQ8j4OAirDozBX8x571fVp4K/7r8wF0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072549705800.2097450028152; Tue, 18 Aug 2026 10:02:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCP-0007MV-MS; Tue, 18 Aug 2026 13:02:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCO-0007Lf-L3 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:04 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCM-0004cx-Qg for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:04 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-84f3ab8750cso163344b3a.0 for ; Tue, 18 Aug 2026 10:02:02 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072521; x=1787677321; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=st89BtH1YIdinVd7rJQ55m7ueiw+97q7juqxabY6zvQ=; b=BufL7TBsBoJs7raAdJdNAHukBPXY7CbtO3vkhEYL3z+ezjWb+DF08tPQNzV9Ge0kTX Z8w2K86WkhL/Iyr3zewT2yCtNusAz22EleZvK/HT9glbaoVMrVrR9T7bTjd+gKI0JKu2 OjciKpWwOtwrhKVPymeXd/wovboTgqb3EHHiTPqRyOKUXDY6HjQJulaGrTUJogFWpdaJ vDv01K34RHUN7re+sknkyzCo8+7H+KOLawb/vfAyb4XGkrMGkuKI1bd5Fd/GyJ2+e8lP nUk56bqhlDUeFGnmoMXhcEZsVFviEj+wN4ahY8grgCvXFY6CsIavuT1ljQ9Mj7qEO+Tc i7Zw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072521; x=1787677321; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=st89BtH1YIdinVd7rJQ55m7ueiw+97q7juqxabY6zvQ=; b=Le2pRpxO4Ai0pEUlHWQ3YFcYgecRTjNUnj/Jnc9S7yMz74mWqyppr/WelEuESD0UNs hxdhr1sN63wqliHnATB+/qkT1X7TGPeiUZ2gj5kdIfX+G+Kt6tZqL2YpAzRZmlAM5Ght cF1qsPdCcNH4lxMTsBQPO5MggWJ87OlGZ1gFnJzNtyfh8lzbyPcVsh/jsI9onpZN9ELT 78KdxXPFLbDtstyKw3HsU5q/X0qnN2vl+20x3Fk19TFnp4ewKnq5Oqw3DFrO19G1MQV5 GBA4x9GdwwuvQeW6pTwnjcDZ4UkWne4cmxg5Xy6upBgibkqGnKIc42GDbP6uw5a55PSD gN/A== X-Gm-Message-State: AOJu0Yy2+fPqrtre9f10vXWlpN+yEL71HZNLRM7j/ERV8zdf2mEml2Cu dkftoubHbc5Ni4crvMqTV/+IZ0vs4ZsmTCReDNBbN1hWvi3uwy2KeaBiPElqb8HJMrkaOHqIj7d zz54KvbY= X-Gm-Gg: AR+sD11jYk71XZAs6Th7FJE3pr1Zk2b7gqNEZYkLBIjNl2oK1GYwp+swoPE/U3aGd5X ah302I/Fij4shFW11ThLpjguGkn/9N9H0s+4V8ymVpt8/IMJ4kc/TGaFZcA6iD2gM7xzVH50Aa0 SMF09LMBHb948jJBy/0JX6K1/Xe1VnGiCotBDmJHZcKcE9+6P2W1KKIH0eJi0wVNe7UP78dKj7o RQeuzTlT623oQPJHTELuIglq8wXFW8O6Sso3gN2eeyylz2b3pC9IWncldIGVP/9uoS5n2HrzAVc 1+GSPlbzBe1UngwvXVLrgvKRqDKRda0om6Mynem7++2qps3pn3BDSa6Kf04L3pdhEMA860ZsGlB uxT5RYkW6e0om39lCtZO9Ft+8TyoqweKJPljmj/VhfY/UBD9PWVZHRRays9hniExbtRjKSlQFzb IjJyCv20IQTTUL+iGD3jWybzDvz2SEOuo/nvk7wyD4gAMHwUg10efTLc1dXHaPneOQxRCMBZ+4O zN5Q3sycPiYOmkAZ1dIYSOVja3nzGjv7JuZEUjT X-Received: by 2002:a05:6a00:ccf:b0:848:3fe2:c88b with SMTP id d2e1a72fcca58-851b87a361cmr13194342b3a.6.1787072521012; Tue, 18 Aug 2026 10:02:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-stable@nongnu.org, Jacob Young Subject: [PULL 02/38] tcg/optimize: Fix s_mask computation for shifts Date: Tue, 18 Aug 2026 10:01:19 -0700 Message-ID: <20260818170155.1907006-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072550935158500 Content-Type: text/plain; charset="utf-8" Skip s_mask computation for logical right shift. Cc: qemu-stable@nongnu.org Fixes: 93a967fbb57 ("tcg/optimize: Propagate sign info for shifting") Reported-by: Jacob Young Signed-off-by: Richard Henderson --- tcg/optimize.c | 11 ++++++++++- tests/tcg/i386/test-i386-opt-shr.c | 21 +++++++++++++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) create mode 100644 tests/tcg/i386/test-i386-opt-shr.c diff --git a/tcg/optimize.c b/tcg/optimize.c index ed2ff32ed2..d12babad88 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -2656,8 +2656,17 @@ static bool fold_shift(OptContext *ctx, TCGOp *op) =20 z_mask =3D do_constant_folding(op->opc, ctx->type, z_mask, sh); o_mask =3D do_constant_folding(op->opc, ctx->type, o_mask, sh); - s_mask =3D do_constant_folding(op->opc, ctx->type, s_mask, sh); =20 + if (op->opc =3D=3D INDEX_op_shr) { + /* + * Logical right shift will force the sign bit zero. + * Don't bother computing s_mask and let fold_masks + * recompute from z_mask. + */ + return fold_masks_zo(ctx, op, z_mask, o_mask); + } + + s_mask =3D do_constant_folding(op->opc, ctx->type, s_mask, sh); return fold_masks_zos(ctx, op, z_mask, o_mask, s_mask); } =20 diff --git a/tests/tcg/i386/test-i386-opt-shr.c b/tests/tcg/i386/test-i386-= opt-shr.c new file mode 100644 index 0000000000..9fb8d42022 --- /dev/null +++ b/tests/tcg/i386/test-i386-opt-shr.c @@ -0,0 +1,21 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* Regression test for tcg optimize vs sign bit repetition counting. */ + +#include + +int main() +{ +#ifndef __x86_64__ + char test; + + asm("movw $0x4000, %%ax\n\t" + "addw %%ax, %%ax\n\t" + "cwtl\n\t" + "shrl %%eax\n\t" + "cmpw $-0x3fff, %%ax\n\t" + "setnl %%al" + : "=3Da"(test)); + assert(!test); +#endif + return 0; +} --=20 2.43.0 From nobody Sat Sep 26 23:03:45 2026 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=1787072724; cv=none; d=zohomail.com; s=zohoarc; b=GPt3FAMBd6RkpxqRd+eJr6R37PXyw31nvlsEvF2t30ERxv6NwJsrE3c3Gb+be7OT4a76VeMuyv/VcUjqDpHjhSBjCVivtGiUa1ZOSSCBOVtyggF6/u1RgZ68DaDkZbGGqklBYrifKpp0gRwP0nxfRCjJ+fmZeh+UBPdUPocKieU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072724; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=SWiOSCQHprs0gfSUIQ9TNVGn1jj3jaoW2kL+5yWHbRk=; b=aNl47KOGcNco1O03hJjUF9+o0lFbcVAVCi/doA82ysPPw5hhw291t1XMfzKZOuBaa6wJlBpUaqsysbNTgfYBauB4Eeix38c7XHH459JxJCnMM+k2zaiy3xTiFdBhLRoYyDAIFceVXfAPog+T3ly9V7XamhavAIczwbzpGL0IVJs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072724412137.23200400929943; Tue, 18 Aug 2026 10:05:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCS-0007O3-CA; Tue, 18 Aug 2026 13:02:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCQ-0007Mq-Gs for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:06 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCO-0004dd-AN for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:05 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-84862b0d5aeso173311b3a.2 for ; Tue, 18 Aug 2026 10:02:03 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072523; x=1787677323; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=SWiOSCQHprs0gfSUIQ9TNVGn1jj3jaoW2kL+5yWHbRk=; b=IaGyoolHKsXKFc/1Q9WmSveLqJleLljPqJhcptWg01WPjx+1k62xdB1InjlyrLT3EV 9CYWOlP0c8kVc1xxIAirQRXupDKpyRdlwQDs1Rwj+WR3bhNnlNAqBitM2eSgiBsMujDt QbHrphtYN25Vf3i7MgKTgSWlEkL+Ven54CYrM+qAmLNKQCeTn0WQGBDWPZfp4x6sY9XQ CyvKiko0RKT6T38qsypcIizk6aLDAgpm11WhF5L0IVwqScbbmE7YZtln5wKXNrpLwVDp WTB0VZonYw+Po+ju1b4CRHCTXV0dcAnomh79/LpUAHbe55m59vLvlRhQfSmthuFr2AG+ WUsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072523; x=1787677323; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=SWiOSCQHprs0gfSUIQ9TNVGn1jj3jaoW2kL+5yWHbRk=; b=S7cnVObAoWKW/CRKtT/TNnMVgcrtVXQ90456+/AFGssiQTsK1F0bWrpaa4f77Ld70Q o2cjsi3ndP/5Q4vX230RETiV+QzQKtoMSmp3YekQXZzKHzN6BiMJPXdZWn+XwVA4X4x9 CDYiTZLrcQXSUx4qi00UZUP6Fdanv9B4A2M2uLL8TlcImVnlP64I3msjcE2tzdMaKjhJ kS1QjAKlveGZxXRil0yjckZ53rWQ7ZlImTFiGhmlGQrq5KQXxlXRCoZC5PGqn/pUCVbn MF4lGqGh4FQ5xUTC1/5e51sgzAoaVO7QV0Ab8/kuOYe4AKwR6hG4tSv0/sO4kJELtKaf jAoQ== X-Gm-Message-State: AOJu0YxmCtza0Oqk2rD7cU5oR3ZSAxcsEzA2ZpWK3kVEHrcUZXVMshBZ oQ2NEKrIj6iL04UnPx07cZE0svSTPD/BQDRxCiyUzFgNdfJQpuFrRtu0CaSAeX5VFq5c4xDsPW0 HRIshUuo= X-Gm-Gg: AR+sD12zDT7kpLyzG0Ko/xQGnD5WxVXFPOF6dwQvvWnmpU9WMjJCxYylHW+iKxBB458 jA9hgE+J7M/lvvVnMl3l/JioFbeucwA6QaZlF/soNHf5fdPQ5QmpigjINkZJxWdKAIHANi9HRJa v5i61r7VstyZgz6Tn9y1aaGz7QQLxJatUOOhk9y6d2HRqrgedUYk1JN1tL8aW2BcumSBH//WY1v nU2JBXrIWF8K82PFKMd7b4nNaag3CQuQrb/XQnd+3P39c/ltYGQV4cNZKBla44h/jNrp0eGuaJl zgznon4xOgMh+R9F5/c5hFJL+6iuo54FiSluuALS0XCaoTd0+gBA7iadHXrv1/eA4ro3ou7rGxA qpK1ZZ6aHUkWVBbInL+MqIPzDBytFCI9CUP5Dx6rIe7q1MwNbVfKM/OWVlWWz1LwMcOfGV9nY2x F/8+RHkkaFtSroPafS16ckHM8CuDHN1A4VYIzGrRlzw5tCVyN5AVMZv2rt3NFuM7jbamlDCjiT2 YNVVXgQr+HfJAJ9pu12jEPMebMPO6GAsjE= X-Received: by 2002:a05:6a00:448e:b0:848:42d0:bc91 with SMTP id d2e1a72fcca58-851b87d91a5mr14728823b3a.12.1787072522643; Tue, 18 Aug 2026 10:02:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Ilya Chichkov , qemu-stable@nongnu.org Subject: [PULL 03/38] accel/tcg: Allow overlapping reads in record_save Date: Tue, 18 Aug 2026 10:01:20 -0700 Message-ID: <20260818170155.1907006-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072726136158500 Content-Type: text/plain; charset="utf-8" From: Ilya Chichkov record_save() assumed that a target reads the bytes of an insn as a strictly ascending sequence of adjacent chunks, and asserted that each read begins exactly where the previous one ended. That assumption no longer holds for riscv. Since f9eaa1542b ("target/riscv: support atomic instruction fetch (Ziccif)"), decode_opc() loads a full aligned word whenever pc is 4-byte aligned, even when the insn turns out to be a 2-byte compressed one, so the record may already hold bytes past the end of the insn being translated. When such a compressed insn sits at page offset 0xffc, pc_next becomes 0xffe, which is within MAX_INSN_LEN of the end of the page, and riscv_tr_translate_insn() probes the next insn to decide whether it would cross the page boundary. That probe reads at offset 2 while the record already covers [0,4), and the assert fires: qemu-system-riscv32: accel/tcg/translator.c:395: record_save: Assertion `offset =3D=3D db->record_start + db->record_len' failed. record_save() is only reached when the insn is fetched from MMIO, so this is visible on boards that execute code from a region created with memory_region_init_io(), such as an XIP flash window mapped over a serial flash controller. Both sides of the collision are correct: the wide fetch is required for Ziccif atomicity, and the probe is required for correct fault reporting at a page boundary, per 00c07344fa ("target/riscv: Make translator stop before the end of a page"). Unlike a86d3352ab ("target/riscv: do not use translator_ldl in opcode_at"), where a non-translation caller had no business using translator_ld*, the probe here is a genuine translation read whose bytes must be recorded. Relax the invariant instead. Keep requiring that a read neither moves backwards nor leaves a gap, but let a read overlapping the recorded range extend it only by the bytes past its end. Cc: qemu-stable@nongnu.org Fixes: f9eaa1542b ("target/riscv: support atomic instruction fetch (Ziccif)= ") Signed-off-by: Ilya Chichkov Reviewed-by: Richard Henderson Signed-off-by: Richard Henderson Message-ID: <20260814142159.3800744-1-ilya.chichkov.dev@gmail.com> --- accel/tcg/translator.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/accel/tcg/translator.c b/accel/tcg/translator.c index cd7d079fe0..57daded60f 100644 --- a/accel/tcg/translator.c +++ b/accel/tcg/translator.c @@ -387,14 +387,22 @@ static void record_save(DisasContextBase *db, vaddr p= c, * Either the first or second page may be I/O. If it is the second, * then the first byte we need to record will be at a non-zero offset. * In either case, we should not need to record but a single insn. + * + * A read may re-read bytes that are already recorded: a target may + * fetch a whole aligned word to decode an insn (e.g. riscv Ziccif), + * then probe the following insn, which lies within that same word. + * Such a read extends the record only by the bytes past its end. */ if (db->record_len =3D=3D 0) { db->record_start =3D offset; db->record_len =3D size; } else { - assert(offset =3D=3D db->record_start + db->record_len); - assert(db->record_len + size <=3D sizeof(db->record)); - db->record_len +=3D size; + int end =3D offset - db->record_start + size; + + assert(offset >=3D db->record_start); + assert(offset <=3D db->record_start + db->record_len); + assert(end <=3D sizeof(db->record)); + db->record_len =3D MAX(db->record_len, end); } =20 memcpy(db->record + (offset - db->record_start), from, size); --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072575; cv=none; d=zohomail.com; s=zohoarc; b=LVEmqysGO3CZ4TujUhNuMBvjm2xvt5YJNKBkNdEDqnW4UuozJ5D4EjhWnVzy2qkjJv1440LoIuylyX0uUHVI8+8KY0HPaz5dspF2H3DrqXPpoUl/rzmlwzeJINOKpMvpYr3PW8XW2qpQLSl20ebJld6FtX6c8zQzm4+tEYmt+CM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072575; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=HF2JgYSJpxkYVVHW/A3tvsecVR7wZcA0ZMW7syqYu74=; b=J8Y4UuMQw7b6WdY+MdTPab8U76gISKR1wpY5IJ8zoVdk3q8aaQsT/eW7QYY7ovUBxppI3BhO7BoK4mjBcbHTOmOUYcKkmHYNyI3AfNIFl+ahfIiAyYT/HLXWY4Zf/jFBhh+Bt/4ZWXfBsCCbq6BV/eOuTVumNcDN3SyXMJ1Gs8E= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178707257525058.802826386893344; Tue, 18 Aug 2026 10:02:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCS-0007OC-SL; Tue, 18 Aug 2026 13:02:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCR-0007NK-1P for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:07 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCP-0004eU-BF for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:06 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-cbb8b54fcf8so21848a12.0 for ; Tue, 18 Aug 2026 10:02:04 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072524; x=1787677324; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=HF2JgYSJpxkYVVHW/A3tvsecVR7wZcA0ZMW7syqYu74=; b=FbF0bo6oAhjV9KYxyS81/MSevat7pzzIf3gv0ALyP5PbjTzOEnRa9pSFDuDkA/TdF6 XAmMG6hZsVBdhJ8fqpaO6dT09jCQ2HXxYDRzcFBLbGrslJxp0aMzkJp5e/VDqI1cDsAo HVxtHtm7PYbO5T/Bub/0wkH+xpS8ObCGK+y9bY+mysDbDrSBUYyiesWChKIx25VCpfD4 q2vJFij487ZmEG89tNbw9FCxKqAvlh+Y5S1H4voz9Phn2FUPt+zFrxzr14o8gUjSnK0E z7CmmIqRNq4Ls9eMqJjlOtWZlbqLb1SFjRq/cyZxjfyPvNBkpFRAHSUkB1xQoRsLhMLj 30cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072524; x=1787677324; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=HF2JgYSJpxkYVVHW/A3tvsecVR7wZcA0ZMW7syqYu74=; b=pAFknlhmDhw9cnFlnjpD/oTHHkhshg41NXWDmTYyWJPp8FFOI1seIhYkb16CZpoXUv 2u3w+GIdGkV01R6WQxMv1UQzXsW3Td7/uiTvJnwwsf6+JwpmY78IkwK2RkZJLpAfXbe5 LVxtQAIfhYkbmStvnQnU1cvCNGKVGyx7i/XKpl3W/5DwPMGpNrHVfRQyofVE55dIpeBi Gx3Rx3obY+GDCfmdtsKQdj1P/vTw/FFS0NlmrRTVkMayxf97v9rGB9fp9ZAHY7Kuv1NW 1tfEjB7m88uQ0rmqoL6IYhU4EgSbY7WcVLM2bqBcUtWYMZ1789hZHA6H+TDImraEsNlA wnug== X-Gm-Message-State: AOJu0Yx4E/WEVGIhJzSKTL/7NnTMlzGoPoweywdBG/y0o9n4fM5t3wq1 3Ng/HiRaFoaefhyFufdmf6ZpuqNNmZLU9T/tFBd6bHMvMlZUchSwmVak3wIo8+Z6DvG2atl7sXf ue3oWRg4= X-Gm-Gg: AR+sD13udNnYpmnM2smpP4eqeXGyjjDYrAsh2ValVO1zasRkqIxo6nhzzEbH+j7beGU RAC8+dDQ/+QbyRNfpkyDL5yR+ocj8LTg1diTbnUz3r+LyLf2EHtlxxUL8Ydr4k9bhn+45KgYUy+ ubAAJA4kupyKhmLnQdS6UHEw2vucnHA0rr9oJR6iUwBUGIfdkQF6WJlpD2t4Yp4i2bKAJ0f78Yu zdvKVdVmJFvmKLKKuzfdwpy6xtMsH9RthkVJZIzaOrVN8fD9rEE9ex4H3AxOZ1LcMpncYXWT1MK sw9VoqPQKn67fkeZ0rN5YRqwrG4yvaQBt2Jbwk+ewjHIh8pvKBP544zVMDw6YMszXQUA5otTASa 3ahqG2pWUqmp2NNMwWlIgrg4WiO9U7MBVO61pKCeC+rhSHoTg+OcemI0nad+KqlNb6vTfY+S/++ /F+M9virVwStj/BCa98OX5A627iZtV6V0Hs/0z0f92cpcdkaYixVM4rK9mmM7r2meNtXcQC5Z+O 7gMifb4nfSVWY4IDngvyexCSFL8RqcoWJ0= X-Received: by 2002:a05:6a00:338d:b0:848:6c1c:17c0 with SMTP id d2e1a72fcca58-851b88c8425mr14729415b3a.19.1787072523830; Tue, 18 Aug 2026 10:02:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 04/38] tcg: Return success from tcg_region_alloc__locked Date: Tue, 18 Aug 2026 10:01:21 -0700 Message-ID: <20260818170155.1907006-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072576905158500 Invert the sense of the boolean result from 'error' to 'success'. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/region.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tcg/region.c b/tcg/region.c index 5d4be1453b..2161d961d9 100644 --- a/tcg/region.c +++ b/tcg/region.c @@ -360,11 +360,11 @@ static void tcg_region_assign(TCGContext *s, size_t c= urr_region) static bool tcg_region_alloc__locked(TCGContext *s) { if (region.current =3D=3D region.n) { - return true; + return false; } tcg_region_assign(s, region.current); region.current++; - return false; + return true; } =20 /* @@ -373,17 +373,17 @@ static bool tcg_region_alloc__locked(TCGContext *s) */ bool tcg_region_alloc(TCGContext *s) { - bool err; + bool ok; /* read the region size now; alloc__locked will overwrite it on succes= s */ size_t size_full =3D s->code_gen_buffer_size; =20 qemu_mutex_lock(®ion.lock); - err =3D tcg_region_alloc__locked(s); - if (!err) { + ok =3D tcg_region_alloc__locked(s); + if (ok) { region.agg_size_full +=3D size_full - TCG_HIGHWATER; } qemu_mutex_unlock(®ion.lock); - return err; + return !ok; } =20 /* @@ -392,8 +392,8 @@ bool tcg_region_alloc(TCGContext *s) */ static void tcg_region_initial_alloc__locked(TCGContext *s) { - bool err =3D tcg_region_alloc__locked(s); - g_assert(!err); + bool ok =3D tcg_region_alloc__locked(s); + g_assert(ok); } =20 void tcg_region_initial_alloc(TCGContext *s) --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072628; cv=none; d=zohomail.com; s=zohoarc; b=eie8QukWnllNDy7KESGla59EexeyNjKAs6SmsoeLuP0xy0Pm+j7Wg93hRY7J3Cs2rvfpS+ofKAaUj9M7lLHEY109mcZlpkQPcB5kugDUGFBVKtFTRxcO8YX5wSvKOVgJWes/3xK/6kfZnBW2rPf/afcDBTvoUb6yTAICaaMeEgo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072628; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=x66uPrU0bLloSUoveL0+nDgF0rI02ucO41QzxqbHLgk=; b=lnbB32/BjQ93JBAOpXfTwL+BA1XiQvnsqvEh4RHHRiUyLnFJJ5dY+aBuFYYqwEinRfDKLTCHz2Hd7209+9CYAR3Hg6BpUzCAW0iKxRHW/qZbvfRgSZNXW8QKbGfoLwt4rsQbJNqce78HW8F1iZiAJPFlfxiVpsWESLhTfCVUqo4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072628382119.33298799366639; Tue, 18 Aug 2026 10:03:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCU-0007Og-BL; Tue, 18 Aug 2026 13:02:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCS-0007O2-8K for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:08 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCQ-0004ey-ON for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:07 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-84eb992a881so148238b3a.2 for ; Tue, 18 Aug 2026 10:02:06 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072525; x=1787677325; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=x66uPrU0bLloSUoveL0+nDgF0rI02ucO41QzxqbHLgk=; b=Hegt/OVIcjmgqIBtlKNuwY58b0gBsUUWwUkhsT1NE6mYbnoHTAB6r7IABjdnmyAQ2p mPLyQjuHAgKNLSlBSoTQ7eLy49jJFHxgVBVV1hSTSmXCvaCGeIJziX/IZwrZ1JDkDGhH EtodIpVu7kZQ566jkDHebBhtEkhnL+4UZUhNuP8M79CSFgncmdDRfddoIYwoGhN4b1qc nU4UmRI+ggoAhIwdXoBImTisSYnrjwQJQW6wjBI0RsTDNnV47VxiVndNoAPVxKHV07bW z7moapxS+0gWgW8c7NVo+y0dG5B6N8V2/1Al6EQInIkM5ElGsIoM8EkwA/rTsz+QbBB6 13xA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072525; x=1787677325; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=x66uPrU0bLloSUoveL0+nDgF0rI02ucO41QzxqbHLgk=; b=ioU/tpehmUu65c3MKeeQvv47G66HO7+YWFxgooEd5MDx7m5SivgA9b9EYCSmv17A2e 4Op//hVAc+hddeaAx/JhovciJDN+ztCPO4Hqg/1IxKWkyCxbNNpKEMJk81MlYfo4xxf4 hFMRO0xEFsAcIIi3lS8qKP9FNJ0Zw8aesuX5sHmEFWhRrP14e6CSNY+aPnsUR433ILbs kiI/atGFSZi/BTWcovdDRIyGYOE7toQb+egvvF8FzxrYIwaFt7CY1K2hPmHw6LS2U+dR fJbQ8Pc5aZIUEWdV9vhGlQ9dcYcBpEGAdIuKnDVndAYzVgqTF0eUJ1e+Op96tCIaZcxS XXPA== X-Gm-Message-State: AOJu0YxMmbVDWAkXzdNTwCBl9WrpIZ+5l/MKZpToj3Es+3isdwp10g5k 2g2+IWKITKYL3KqgMFFpEZHfthZuU13e/sPy6EvvSs2olLZMAHU80TKKJGkWUFPFOBAX8HLniJe JMvMg044= X-Gm-Gg: AR+sD100DuijIh91oasWtZyaIr0gYED+5hOTR7bE13fck8d1Fix4G4hZUjXqSJwKa5Y 4pMfjv39WTvZxEbZi6vW9fS9MP71CSTLUMRVa2lMVcl3KbB0kY6OR22u3f6+0mSpb8V/3dINVFz 250ZMHCUqXwMo4gZt99PuI/rr4gKs0TaQigkmFxMWsnb+zv5gxBu/AC5ogB+WKIJU4Kdta37Ql6 No6FGvSe9/t/hbBRQFTEB8uRmQeZoegyZEJEl2GYhce5bvZ5ChI3P1RHLdRIgVI+Apz2xDfVD+f hr04J65pJ2bRxq/wjEZB7QlG4ibH29JatbdgYJ3RugqQr+ConFQ7VYcXctomWM0dt4wEUaDfzTc Ck6uFdvLmd3lGvhOQgJWWDYJa8VqP+e0vZ70IomALtTaO4UVWKy3gi/5cyf+gy3nQs+LR7J5OAd dp/JUlOfgI6Vv4UuLh20z9PwkB1Gbl7PECdf2gzpajftqbnGaFp+wPNhbSXJahqE9y6Cw3x3qDh ncSDIyLYJVre2s9fIt5qTb0N1EnswO7qwY= X-Received: by 2002:a05:6a00:3981:b0:848:2eac:bfb2 with SMTP id d2e1a72fcca58-84fde004804mr37468594b3a.13.1787072525027; Tue, 18 Aug 2026 10:02:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 05/38] tcg: Return success from tcg_region_alloc Date: Tue, 18 Aug 2026 10:01:22 -0700 Message-ID: <20260818170155.1907006-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072629181158500 Invert the sense of the boolean result from 'error' to 'success'. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/region.c | 2 +- tcg/tcg.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tcg/region.c b/tcg/region.c index 2161d961d9..8ee8c39c43 100644 --- a/tcg/region.c +++ b/tcg/region.c @@ -383,7 +383,7 @@ bool tcg_region_alloc(TCGContext *s) region.agg_size_full +=3D size_full - TCG_HIGHWATER; } qemu_mutex_unlock(®ion.lock); - return !ok; + return ok; } =20 /* diff --git a/tcg/tcg.c b/tcg/tcg.c index 1e77f2365a..af15c3d63e 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1835,7 +1835,7 @@ TranslationBlock *tcg_tb_alloc(TCGContext *s) next =3D (void *)ROUND_UP((uintptr_t)(tb + 1), align); =20 if (unlikely(next > s->code_gen_highwater)) { - if (tcg_region_alloc(s)) { + if (!tcg_region_alloc(s)) { return NULL; } goto retry; --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072857; cv=none; d=zohomail.com; s=zohoarc; b=OKd3TnBBW9umQy7CfcBAxHXh9UZywrNSNHoUxOSjit2fJZ65tr6V89SlPTkVh9CiREmKNeoMZBuVg4zhTbdXvnYLUJ59t0JuCwuDIzHV8mUhpmvrlwWUd24J6QTU7BgAnuqN5B9yCkY9Zx4uQG0k4jm+K36MmZn4jGw8Kny4Qaw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072857; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=DG5KrInoOA5BiWClGx6mfaAAm5PtanUYXY9qfC53y7k=; b=HruLxgA9eCrDp1lbJN5BKFGf6w8y3N2/Ywsl3CS8e1xWb70ROK0oAYW8d0B41y0Wj21B4hCMF1SkGBcM4MDM+VWWhc9dWZE1vJGd7NUcmYD96V0Tb27bfBrMmIuOeytHL5swPIXI3LG9AHNS9M+t8fTHYv34e+syk/7cdAelC5A= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 178707285794842.687850110431214; Tue, 18 Aug 2026 10:07:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCV-0007PK-7v; Tue, 18 Aug 2026 13:02:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCT-0007OJ-AT for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:09 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCR-0004fW-Dr for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:09 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-84830c774a0so183136b3a.1 for ; Tue, 18 Aug 2026 10:02:07 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072526; x=1787677326; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=DG5KrInoOA5BiWClGx6mfaAAm5PtanUYXY9qfC53y7k=; b=BzdAy6CGmnbBWZa1AtulsTKJs4ysNelR8mnrFIquTOehK2oLy++GMe7b1zawUR6+JC QcyAF61W9GsiL9bJSC6AYpjXzQ8dde+8n9k2QinZaU2mXX+jw680bmO8Rbjg6ZpO5dmi klleHS0goMHaWxa7mM238RUhG969TAa8QLS4RsufrtqjFB+5kVsrh3FUZlDfK/UqAxe8 jr5VlBkpSy/ynY4BmaGirPPgn2pT2VE7C2+kWq8+JT7+GeMmAkN3BP2PwfRm7c9hBOYW gKkgkc8zMuKI0GIRzQSeXQAPOr42LM3tXCDOqWY47Dok2qGcVkDnZvjGeV0rRHrMbGGl 9Fyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072526; x=1787677326; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=DG5KrInoOA5BiWClGx6mfaAAm5PtanUYXY9qfC53y7k=; b=L7LxYZaobw5Vf+5xYVtKi9ixiKn923A6iNkenXlWcpd9PpQuf0eGo8mriJAvis4rUJ RAp3YMF/jjDZadfzV2+c8j7cE6M7v1sf1xWh8IV+skA21T5pO04gexuAYAeeuUKHFu2T DbldWeNejfB/qLXyGz5UCnCWHR/4Uh/QhdIKNf+IajTBeKTjiDB8ng00Hxda7gaYgj8X AhGpHNC7+yriwgrMNyhZXq4WFI1xoTn99ic9gp0Y4ygAfa4pkxSvhZftVtX6nUHTMt0r lwOvODxbY0pP5AnLpf9rWxJaUzPni2VbyMyx/pAO8NdDwhdzXoZ0VMPIyY1AbHTAeQq/ y7bQ== X-Gm-Message-State: AOJu0Yzo21nLorTntdLM1hEAAZXyyfblbZFBvaZqJZ5hbDK679jb5W6G 1jR9/Q47hPQ8ouBCn12LSKXztm15MXaSQAxaimElr4U+p3RXnJumEGxrGWF7E5Df6zt1ikvMMtp lJ74tcfA= X-Gm-Gg: AR+sD123K6t2kvKPCDlWlByKyf6S09C/Vxpj1onE+ARi8AVO3w3gFKHO6D7kYv4vV4n Q4j9lpE5KX15HC5krChG/hCa6GlZmZQLFdgZ7akg2pYllvh6jNoI/fbdH/b99U0bwQV6ws5QAp/ KlgQZrRmBMERGiiYSPdjpxm0E4fOEGl8UAlzv21N5Z+orUsFClds+n5H+yUCC+s+7/6iWFEkjU8 ChRLpdnSwcKcrNAGIBqBQ9yqs3w1f6N6S/0xPUs5wdxfPSBZk0uhRsZj03wWuImMxltybC16Ulu HnJKVjL49G5hj2uKEUN3tHJptYGxb82aKWAEurf9qqinQJltRDkKw9AiBX3CTWiLlgbHJFd+rV+ LHxMDZX/d2lsBW9p/q02q5NuTBrTcUjA2dD3FPp0WXxEe1xNa0TvCrPzEay4Wv9W0py2nRExfnn NrpnU/diP9CfOn7GnvTOrexyYPRhDjN6QNyuvIOB9RiiJSEdNX1YPLHPu5jN7T8RmbnYilZ1z6V Rmp0SaoWn26kMftAGun4wVSo4WS90hyjts= X-Received: by 2002:a05:6a00:3cca:b0:84e:2722:5d98 with SMTP id d2e1a72fcca58-84fde38d31dmr32872481b3a.19.1787072526021; Tue, 18 Aug 2026 10:02:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Anushree Mathur Subject: [PULL 06/38] tcg: Defer tb_flush when initial thread region alloc fails Date: Tue, 18 Aug 2026 10:01:23 -0700 Message-ID: <20260818170155.1907006-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072859366158500 Content-Type: text/plain; charset="utf-8" A vCPU hotplug may happen at any time. When the new thread is started, the region pool may be exhausted. Do not abort. Rename tcg_region_thread_initial_alloc to differentiate it from tcg_region_initial_alloc__locked. The renamed function now uses tcg_region_alloc__locked and is prepared for failure. In tcg_tb_alloc, allow code_gen_ptr to be NULL. Treat that as any other region exhaustion. Reorg with while instead of goto. Reported-by: Anushree Mathur Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/2984 Signed-off-by: Richard Henderson --- tcg/tcg-internal.h | 2 +- tcg/region.c | 24 ++++++++++++++++++++++-- tcg/tcg.c | 22 ++++++++++++++-------- 3 files changed, 37 insertions(+), 11 deletions(-) diff --git a/tcg/tcg-internal.h b/tcg/tcg-internal.h index c0997ab224..e35440dc8c 100644 --- a/tcg/tcg-internal.h +++ b/tcg/tcg-internal.h @@ -42,7 +42,7 @@ extern unsigned int tcg_max_ctxs; =20 void tcg_region_init(size_t tb_size, int splitwx, unsigned max_threads); bool tcg_region_alloc(TCGContext *s); -void tcg_region_initial_alloc(TCGContext *s); +void tcg_region_thread_initial_alloc(TCGContext *s); void tcg_region_prologue_set(TCGContext *s); =20 static inline void *tcg_call_func(TCGOp *op) diff --git a/tcg/region.c b/tcg/region.c index 8ee8c39c43..8bd378b212 100644 --- a/tcg/region.c +++ b/tcg/region.c @@ -396,11 +396,31 @@ static void tcg_region_initial_alloc__locked(TCGConte= xt *s) g_assert(ok); } =20 -void tcg_region_initial_alloc(TCGContext *s) +void tcg_region_thread_initial_alloc(TCGContext *s) { + bool ok; + qemu_mutex_lock(®ion.lock); - tcg_region_initial_alloc__locked(s); + ok =3D tcg_region_alloc__locked(s); qemu_mutex_unlock(®ion.lock); + + /* + * A vCPU hotplug may happen at any time. When the new thread is + * started, the region pool may be exhausted. At this point in + * the new thread call stack, we are not in a position to fix this. + * Leave code_gen_ptr NULL, so that this thread's first call to + * tcg_tb_alloc() returns NULL, so that the translator performs + * a tb_flush() and retry. + * + * During the tb_flush(), tcg_region_reset_all() will assign a + * new region to all contexts, including this one. + */ + if (!ok) { + s->code_gen_buffer =3D NULL; + s->code_gen_ptr =3D NULL; + s->code_gen_buffer_size =3D 0; + s->code_gen_highwater =3D NULL; + } } =20 /* Call from a safe-work context */ diff --git a/tcg/tcg.c b/tcg/tcg.c index af15c3d63e..db43589fa2 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1279,7 +1279,7 @@ void tcg_register_thread(void) qatomic_set(&tcg_ctxs[n], s); =20 if (n > 0) { - tcg_region_initial_alloc(s); + tcg_region_thread_initial_alloc(s); } =20 tcg_ctx =3D s; @@ -1830,18 +1830,24 @@ TranslationBlock *tcg_tb_alloc(TCGContext *s) TranslationBlock *tb; void *next; =20 - retry: - tb =3D (void *)ROUND_UP((uintptr_t)s->code_gen_ptr, align); - next =3D (void *)ROUND_UP((uintptr_t)(tb + 1), align); + while (1) { + tb =3D (void *)ROUND_UP((uintptr_t)s->code_gen_ptr, align); =20 - if (unlikely(next > s->code_gen_highwater)) { + /* + * Note that code_gen_ptr can be NULL after vCPU hotplug. + * See tcg_region_thread_initial_alloc. + */ + if (tb) { + next =3D (void *)ROUND_UP((uintptr_t)(tb + 1), align); + if (next <=3D s->code_gen_highwater) { + qatomic_set(&s->code_gen_ptr, next); + return tb; + } + } if (!tcg_region_alloc(s)) { return NULL; } - goto retry; } - qatomic_set(&s->code_gen_ptr, next); - return tb; } =20 void tcg_prologue_init(void) --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072750; cv=none; d=zohomail.com; s=zohoarc; b=ZuA58HzDfcUKiGBA2F58mWS7t1YO7jWXJ/b59zTA+GyHR32aISeUdHhc2PwHtAWKjRRmgpHUuAdDnPcUIoOUalLc3sayUzp8IqhdY0477S680e/bdhkaQBAv0HXwqGOM3gml5OOL7POhd/pKGyQzT+2I+9l4SNElu9i86N4X6CQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072750; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=z0O2HTR3sNOKW6M0XOX2OWkfkppjEUkdIUvOoj0R6vo=; b=IBiQMs764vdJ6mfjdFoTDIk3sfs8IJ7HEjxnjBeekVH2w/e+HHFuRRHLnkyurUwpybLTIGfGghHjK9VglfP/0HoLJNaJwpLmnjpwUx6GFZJ3zmrtdSux0uxSPA/QOFLAUI0JTL4RZHf9yIHPt+rJGk5PtgXX5meO2WgpMuvlRQI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072750918626.3903500319485; Tue, 18 Aug 2026 10:05:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCW-0007Pi-M4; Tue, 18 Aug 2026 13:02:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCU-0007Oe-8E for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:10 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCS-0004gC-QJ for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:09 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-84e84a6c4bfso1388054b3a.1 for ; Tue, 18 Aug 2026 10:02:08 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072527; x=1787677327; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=z0O2HTR3sNOKW6M0XOX2OWkfkppjEUkdIUvOoj0R6vo=; b=eRo1KnhF5CpYxJff81M/GzvmZE5Zbhpx9Ctf0FxeU5RwzoDvbOEJnhZK28hEpUw379 ejMJwMKSoNnq45dnJJn4uaj+D271BZ/Dmzu3mjErP3if59b4sGLmSPND1u7kWx9vYEKn ZlNSV2IFJ+gp99CUrr+67zNMt6++RafokEw0pNcJse1I8LHJLbgJwQFTbR8YqBDzHCpR yxZbzozPRkMSo8Fe/w+rGE2NWd2NSY919i4iZf5BPk8NRwdUhP8qJmSbkUIyPfhicQf3 Pv8jindlDlyDn+ttIhpzLUUAL1D8Z+pRmRS4KAOStOvHK5Lim1M+9GVpWrcU1tG4UC5h uMDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072527; x=1787677327; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=z0O2HTR3sNOKW6M0XOX2OWkfkppjEUkdIUvOoj0R6vo=; b=rFjmuxze9rlV5AyeY6VUITF3ID3/aZP2OmwCrq7umKo2lGsFGWcd6p9GcI9AiuP40j ug6iK7nBdPYIq56djSzMlHfTL+yGRpL8M6qRohI1GQZGu8OaCB8JWCndu4D6+uto8nWF H1t7EwAX/aQSpMHbZfFSAQBUuwj+BsZjV0C0sc0KKv9QqjXnc4uOdz01ofZYVVoiTTg3 L6BxFiSrzKSNcZNhX7rsDPq61xDQo1k7dYpuorwqflB6Eh1vjAJ2ZGZt4wupoVloFWWj O1d9IZtr6QWWuaoC8one1tNN2NLsebpm2FnaPcAy4uavTsDk2bfnzcFw9l9J/n7HKYyr U/7w== X-Gm-Message-State: AOJu0YwscM+59gbTmp9ols/F0ZVURN5WnutayaetwcwxVa6qkDnCib1S 6REPl11U4U+woL5k44Drd1HLtPBoKPAbRWsDMgYE7gG7A2chyoqm9IgI2R/ZM/MzYe1eWAems9w HLJnVYRE= X-Gm-Gg: AR+sD10PIm4MUwyxOAEJP3KrF5V2s4D2pD/vdvHUZyWd/gBYpUVDfAUS+MePuG7Dr3O ZpRElT0WK9xV6rUjOvcPKn4dcB7R6Vh5Is0FqN3WqrsSi99QEDiNS6U0Jgu0ZxMwY6TJOEl7FsU +rG+JuvbSOPvlOyFUxzeFkx6M7c6iGk1jtZ3CS5FjVQTQ6Z5rfGg81my4NpIIGW99o/MWC49/HS Te6IV5CE/a+wkQiZwt+/YfoGuu4NugHs20c61esn7/Lcj5HbQbnlJ8JfW18SWPm0EZzyTWyFUo2 EKLXCnbjUgbPnEbH9Lofz5LmOovLhfDKpNWxNdROnIdIkjxBhb/Ot2Fd7i1MpZF8aeUU+bWu7PF X/dHNanvVb3IDoFmZpaIwPN8UIGX7J/EHS5IXwm6JPjYUxd58I06zZ1T2EAKwGZIcXuYVfF0Vdc DSdtZlxDScNRMSM8fr3HGyNIvrFZ5MQGhEJoSb6VFHYx7cWtl31YpqoYxxZbb9GR/9XThua+jlk KJD3jlCVQzNiJEbs8Ox5tB62lbca6MZf5Q= X-Received: by 2002:a05:6a00:2314:b0:84f:df11:b78e with SMTP id d2e1a72fcca58-851bc2351d9mr7237295b3a.2.1787072526962; Tue, 18 Aug 2026 10:02:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 07/38] tcg: Fix opcode dump for bswap Date: Tue, 18 Aug 2026 10:01:24 -0700 Message-ID: <20260818170155.1907006-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072752417158500 We use an array of char for bswap_flag_name, so some entries in the array are non-null but empty. Check that. Fixes: 587195bd590 ("tcg: Add flags argument to bswap opcodes") Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/tcg.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tcg/tcg.c b/tcg/tcg.c index db43589fa2..937d0c8fd7 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -2957,7 +2957,7 @@ void tcg_dump_ops(TCGContext *s, FILE *f, bool have_p= refs) if (flags < ARRAY_SIZE(bswap_flag_name)) { name =3D bswap_flag_name[flags]; } - if (name) { + if (name && name[0]) { col +=3D ne_fprintf(f, ",%s", name); } else { col +=3D ne_fprintf(f, ",$0x%" TCG_PRIlx, flags); --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072817; cv=none; d=zohomail.com; s=zohoarc; b=E2cHXzjbSwVzMqfvLaODGcEEbcmhGtEr3BTnWEBdvQ+ZsNPaFnSqQeM5i2FOAh0x+vMtZryrw7daz0cdfn8Qav4L9sBvATue2AI9g4vwTDQCCxAS3i2/wajRN65tuQijp6rt54Kmkc+adkwmPPvXeIKh6mMv9HoHYFp9ktTxync= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072817; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=EE1j6rW04O6psozert+WRAhkHT1L5kpmKbk1CXdOhMw=; b=WGiXjt3Qt7vHsASytpiLc2BaN1D4AQGwjPpycKKB5q5E7aei4E39zc6SVvQV9uuaYYUc8m9RqQnFg6QKcrReaDehqDGXLJiCKL0K5HalS1uqFwQFhqGpJxfvimBqETgO2AGZ5Hvr31hT/6yU2Y/1EiQ6l6czsl5TkLwd1t+A2d4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072817289530.0156578849992; Tue, 18 Aug 2026 10:06:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCX-0007QX-QJ; Tue, 18 Aug 2026 13:02:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCV-0007PQ-UH for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:11 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCT-0004gm-ER for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:11 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-84faf87d19dso181897b3a.3 for ; Tue, 18 Aug 2026 10:02:09 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072528; x=1787677328; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=EE1j6rW04O6psozert+WRAhkHT1L5kpmKbk1CXdOhMw=; b=j3DxfHu5BVPFRdVrIty6nZEGcC02v8I3V223PDyYS10gP8SXSmarOAb5TBmyYwFWFt Q7LGejwsLOat8sEIsb5a11XlrWieExYOf0X1vMZ6N0yMDoPwjb2S+KYcOWkqdCQkj0eN KRBZaQiEVClH3yqFncRKZfkV8Ejn9FwQ3gKivnVdnO2FoOmxIhDWoDWaPXXi8ia1C8zW tut9gj17IdYhaozoTaOhYf5Vyq8WP0q/mkP0Yet6cQ5dkCamBwlD8hjJ/EqQBQyGOEF5 nUrQ6GhzHvB7jvc6ntzRZMIV7Ava+vNDwX5TybUlXY2qb2r7mMelmwwW4iPMKcUJ5V+T uc1w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072528; x=1787677328; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=EE1j6rW04O6psozert+WRAhkHT1L5kpmKbk1CXdOhMw=; b=ifwvxMbPj/8797AoUwJYn3yWHvbXiPaPjHdR+x7JZlwDRmVUSHtCe0zqvLyQuLrobP KSNLjeUkoC0kfSnirl50v/hTEf+z7UCMZWVQ74lpFOQcTOF0levg2bNwgkP2GOAOv5/W V8ITyum4L40gr8Ys00PwKqkDMccCYQQMPTXUY5paOWAS2xCU6DNwzSJOII1HSWrVOHdi gN5wn/7RUTb4948vyZ5u6P25BB0KmyRzJZy3JX31DoAguvc0o4henwrZJtTAkPwDIvQd SD/RAhpUUFDlJycKOPP6SGMyUj8+Gi7O0nQN3g6efR9+V45UXEjBribKMt2Fy0+rSuly OJ5w== X-Gm-Message-State: AOJu0Yx9+bsmXP3mlqF1rONO5LV1Eqm0znooXppT/AbMG9uhbuNs7Emp thXqpMe0y8cYxlqTRBRQNijSbTgBXMHV/dBFerK9hWwFnHacrOAIe8FnZ7OHsfWxa4Bfc1TlhW/ jh2SZaWo= X-Gm-Gg: AR+sD10NrB1DrluioibqW1G3k82pZPQYOllHvhMuxAkKXyZVcFWbkdSGudJl7vRIaep 4ptuf6P4EpJhJoZ2w3c5ruwR0SU+2XGro0GKIJ+cu1Af4xNF/y5tKecJzm5j77Wp6s/k8xHj5sj rnL6ugAwzL1+AdG8/QZEuEPRHWrXHu6Xlmai+7DyrDP5AAszGB6oPy1esrAq5IBny8fzLdtlKHY yohHrblQOLmQ3W8OmUfLxBTFeVKeaNnzyOFdLcgwPRrInm1pgSVx7GIwoQII1qVaJEO4hZaUGdN K3WVMyS/Tx8xwd4beeyLmL+W0F24ohArNIKYRXqvT1nC4rYrAqHQ7xbKifXjIAPj9GYXkp4kfOk 1/bxMsjKV/Vk9bscLUJmm3papKncv5TLxnQqqfodEXQ6hNXf59FfMpOcEjAKkopM7RG+coczjFL 3/kpMrfSkRufVrOlgZIbOAG1sta8PBmtEHcUKc3uqPVadgPdsNzlYhcstBrbhgeFiVKwbHc+Rd7 0VVd4R2UgDRSagNzT63g7ohgz/sYTLkghZSK1C1dPsLkg== X-Received: by 2002:a05:6a00:6c88:b0:84e:24f:2677 with SMTP id d2e1a72fcca58-84fddfa7f2emr41459482b3a.4.1787072527801; Tue, 18 Aug 2026 10:02:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 08/38] tcg: Add tcg_gen_revbit{8,32,64} Date: Tue, 18 Aug 2026 10:01:25 -0700 Message-ID: <20260818170155.1907006-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072818864158500 Add generic expanders for reversing bits within a word. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/tcg/tcg-op-common.h | 5 +++ include/tcg/tcg-op.h | 7 ++++ tcg/tcg-op.c | 76 +++++++++++++++++++++++++++++++++++++ 3 files changed, 88 insertions(+) diff --git a/include/tcg/tcg-op-common.h b/include/tcg/tcg-op-common.h index 1fe342db0d..f7b6aadb50 100644 --- a/include/tcg/tcg-op-common.h +++ b/include/tcg/tcg-op-common.h @@ -164,6 +164,8 @@ void tcg_gen_smax_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32= arg2); void tcg_gen_umin_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_umax_i32(TCGv_i32, TCGv_i32 arg1, TCGv_i32 arg2); void tcg_gen_abs_i32(TCGv_i32, TCGv_i32); +void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg); +void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg); =20 /* Replicate a value of size @vece from @in to all the lanes in @out */ void tcg_gen_dup_i32(unsigned vece, TCGv_i32 out, TCGv_i32 in); @@ -275,6 +277,9 @@ void tcg_gen_smax_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64= arg2); void tcg_gen_umin_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_umax_i64(TCGv_i64, TCGv_i64 arg1, TCGv_i64 arg2); void tcg_gen_abs_i64(TCGv_i64, TCGv_i64); +void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg); +void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags); +void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg); =20 /* Replicate a value of size @vece from @in to all the lanes in @out */ void tcg_gen_dup_i64(unsigned vece, TCGv_i64 out, TCGv_i64 in); diff --git a/include/tcg/tcg-op.h b/include/tcg/tcg-op.h index 96a5af1a29..568b78fe81 100644 --- a/include/tcg/tcg-op.h +++ b/include/tcg/tcg-op.h @@ -115,6 +115,10 @@ typedef TCGv_i64 TCGv; #define tcg_gen_bswap_tl tcg_gen_bswap64_i64 #define tcg_gen_hswap_tl tcg_gen_hswap_i64 #define tcg_gen_wswap_tl tcg_gen_wswap_i64 +#define tcg_gen_revbit8_tl tcg_gen_revbit8_i64 +#define tcg_gen_revbit32_tl tcg_gen_revbit32_i64 +#define tcg_gen_revbit64_tl tcg_gen_revbit64_i64 +#define tcg_gen_revbit_tl tcg_gen_revbit64_i64 #define tcg_gen_concat_tl_i64 tcg_gen_concat32_i64 #define tcg_gen_extr_i64_tl tcg_gen_extr32_i64 #define tcg_gen_andc_tl tcg_gen_andc_i64 @@ -234,6 +238,9 @@ typedef TCGv_i64 TCGv; #define tcg_gen_bswap32_tl(D, S, F) tcg_gen_bswap32_i32(D, S) #define tcg_gen_bswap_tl tcg_gen_bswap32_i32 #define tcg_gen_hswap_tl tcg_gen_hswap_i32 +#define tcg_gen_revbit8_tl tcg_gen_revbit8_i32 +#define tcg_gen_revbit32_tl(D, S, F) tcg_gen_revbit32_i32(D, S) +#define tcg_gen_revbit_tl tcg_gen_revbit32_i32 #define tcg_gen_concat_tl_i64 tcg_gen_concat_i32_i64 #define tcg_gen_extr_i64_tl tcg_gen_extr_i64_i32 #define tcg_gen_andc_tl tcg_gen_andc_i32 diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index bbcb510c76..3d28280785 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1160,6 +1160,45 @@ void tcg_gen_ext16u_i32(TCGv_i32 ret, TCGv_i32 arg) tcg_gen_extract_i32(ret, arg, 0, 16); } =20 +/* + * Internal helper for bit and byte reversal. + * Given a repeating matched block of 1's and 0's, swap the bits within + * those two blocks. E.g. mask=3D00ff00ff, shift the input bits left and + * right 8 bits. + */ +static void gen_bitswap_i32(TCGv_i32 ret, TCGv_i32 arg, uint32_t mask) +{ + TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); + TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); + int sh =3D cto32(mask); + + tcg_gen_andi_i32(t0, arg, mask); + tcg_gen_shri_i32(t1, arg, sh); + tcg_gen_shli_i32(t0, t0, sh); + tcg_gen_andi_i32(t1, t1, mask); + tcg_gen_or_i32(ret, t0, t1); + + tcg_temp_free_i32(t0); + tcg_temp_free_i32(t1); +} + +/* Similarly for 64-bit operands. */ +static void gen_bitswap_i64(TCGv_i64 ret, TCGv_i64 arg, uint64_t mask) +{ + TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); + TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); + int sh =3D cto64(mask); + + tcg_gen_andi_i64(t0, arg, mask); + tcg_gen_shri_i64(t1, arg, sh); + tcg_gen_shli_i64(t0, t0, sh); + tcg_gen_andi_i64(t1, t1, mask); + tcg_gen_or_i64(ret, t0, t1); + + tcg_temp_free_i64(t0); + tcg_temp_free_i64(t1); +} + /* * bswap16_i32: 16-bit byte swap on the low bits of a 32-bit value. * @@ -1244,6 +1283,19 @@ void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg) tcg_gen_rotli_i32(ret, arg, 16); } =20 +void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg) +{ + gen_bitswap_i32(ret, arg, 0x55555555u); + gen_bitswap_i32(ret, ret, 0x33333333u); + gen_bitswap_i32(ret, ret, 0x0f0f0f0fu); +} + +void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) +{ + tcg_gen_revbit8_i32(ret, arg); + tcg_gen_bswap32_i32(ret, ret); +} + void tcg_gen_smin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { tcg_gen_movcond_i32(TCG_COND_LT, ret, a, b, a, b); @@ -1869,6 +1921,30 @@ void tcg_gen_wswap_i64(TCGv_i64 ret, TCGv_i64 arg) tcg_gen_rotli_i64(ret, arg, 32); } =20 +void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 arg, int flags) +{ + /* Only one extension flag may be present. */ + tcg_debug_assert(!(flags & TCG_BSWAP_OS) || !(flags & TCG_BSWAP_OZ)); + + gen_bitswap_i64(ret, arg, 0x55555555ull); + gen_bitswap_i64(ret, ret, 0x33333333ull); + gen_bitswap_i64(ret, ret, 0x0f0f0f0full); + tcg_gen_bswap32_i64(ret, ret, flags | TCG_BSWAP_IZ); +} + +void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + gen_bitswap_i64(ret, arg, 0x5555555555555555ull); + gen_bitswap_i64(ret, ret, 0x3333333333333333ull); + gen_bitswap_i64(ret, ret, 0x0f0f0f0f0f0f0f0full); +} + +void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) +{ + tcg_gen_revbit8_i64(ret, arg); + tcg_gen_bswap64_i64(ret, ret); +} + void tcg_gen_not_i64(TCGv_i64 ret, TCGv_i64 arg) { if (tcg_op_supported(INDEX_op_not, TCG_TYPE_I64, 0)) { --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072827; cv=none; d=zohomail.com; s=zohoarc; b=SspD06/dGEUZld0v8B3dV6105UUaJpoxPXGXqEcSXFHXikRj5BPVDNmK9IwVcCGhvXMw9bpQTkPEI3SNUaW6p2vc8v2DUswtgKmpAL6st6toNhEQBupELJ5KvZTX6mhnMMltfE/op/GzSE1JI2u7c8ey4Rdm0/Zu0MFHzBMK7Uk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072827; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=E6YVpdoy244ypcJbSRQXoYkegfXpSIbiPKqsYmd5CbA=; b=Pbxc8rmixNBU/mx+u4169Zfz3TkK3z/GvcY1d7VgHybIKHIac6lPYWQXVE9U/C5a/W7iIXBlJdnA+ookeOXdTCBp9hPLHSeM6tviFqwgIVhItqwCRD/Hal6XnVKQxOTIGYFxhuw+LZKg4p/E0aYnqhkjSMGKrZiKzaeZ41qyPVg= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072827708917.7576452657618; Tue, 18 Aug 2026 10:07:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCX-0007QV-PB; Tue, 18 Aug 2026 13:02:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCW-0007PX-B5 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:12 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCU-0004h3-K5 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:12 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-848593533cbso79384b3a.3 for ; Tue, 18 Aug 2026 10:02:10 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072529; x=1787677329; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=E6YVpdoy244ypcJbSRQXoYkegfXpSIbiPKqsYmd5CbA=; b=NaDj47zyPxdHORXsWULNaCngb/vmRLTysYjHvN4I2wdeXh3xDqaB1BfSI97ANZfDaF MR/VMYdmlrEbtEOjrBXiY0swMCGAQrh/AErj51ZoHDcWcapwpOkC3eG7mGpnxBujXowf x6bbanp0NOjrruf1dvtPTN2O4fP3gV6CFbrDL33JbD9ED/3RU/itTWowuIi1E0MVmlCy rlzuTKalBdODLXor/A9Av7Kzu3vkr1P1cwq3ehMBYNVUAOBxPxXk3szh9x45qKRLjngu q4gXObz+FoPdA9538QX0FEioOjZL5AA9qJmZdV/A55uAMy9sOVK6p9N69OVpA248pxyr +AAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072529; x=1787677329; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=E6YVpdoy244ypcJbSRQXoYkegfXpSIbiPKqsYmd5CbA=; b=Wh9d0qeo5g1kv11pAc0FkfP139ztgrh66yxWcSXeJPN3qTb0ikYIhGLJUxyBU89DAw mkq4jgzV5tXNVXnLQkwC20d03eo4Nj8Pkr72ZrTJDZ4qLyaqO/HIeNLZYlSKhhChZxw9 eJS0Z/RUyAnaxJHBO3YWxcYfQ43E3RNwl/+Vw1j0a7qEq+dnM2U0h3xHOAcG+r3B6aDw O5cliwkl8lHiWmKY1jor/YHaPmdavrD3V7Sgk6HbkGeBofUdlSrUzCOhxQB/m5KXPD2r SkG/3l5bOFgRY2CHKeEvSNyUfDhNyLvq8HpxMp0W3ElW6vQG4OzcuOhlmmEAUyx4odOl 4nDw== X-Gm-Message-State: AOJu0YyCcW2UcIjmhCvLdhCGsq9VSrVlQXVPcOvxQLDVlO1OL9Odc+vr 5Be8WJl4M9qTcnd7/v1Q47A+1Y9IJLOyUQBF3Y7V9as5dUN96rvfffjwHh//oDUraxOn4YD9vVD 1CEtENyM= X-Gm-Gg: AR+sD11gQl4L51URNkxiAgpGyWJmRe1aLec9jzjnPso9N5k1HljbPYvAPpMn7geWX7b jwbm7xRkKo59BfbUTHw2WyaFxf2J+PVyP4AYJSqYAr8PRvCbtbIsgZuEi62JUxv+Ty2jSYLHMuT uqi4kQVAH1Ba+Q0J46m9Szh+qO0+9tFl/qTRhGCN9x3zditfU8HK8SLCl6EMeF6QUPtslyE/LoD 5dDyIB+oLMqGjLCn7FWEVa5A0uj2M8BgfzOPAaLvKHo4+0MuK7qKsc2U40NovZyJKVZ0c8fyTdm BWRyEZAUjWKEIN3/nZRKLITNA1Wl4NZDU6yoLVh9viPoZnlCl3ncHS/aCPkg71pZdpRITn0TWe3 /sGZsAC+8rAX/eXcmpDRAvgshD6DvI6iKRLnpm2DxmUmx0m0tMYy6Leo8n9vjPybzeiglCrXHIB FyE/Yqxe8Db71Upx/tWF52hrUoqE0eKmyPzdp8IM0nCe5nVXrhtM49vSgU5ZRXscjKJ+Gl5EG6a FOqgE0eKaQcAHBB4JE9HtpVdMuvnqZNLhdhSF9xp/TlZ6Q= X-Received: by 2002:a05:6a00:414b:b0:847:8acd:747c with SMTP id d2e1a72fcca58-84fde3da617mr43281471b3a.13.1787072529072; Tue, 18 Aug 2026 10:02:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 09/38] tcg: Simplify bswap/hswap expansion using bitswap Date: Tue, 18 Aug 2026 10:01:26 -0700 Message-ID: <20260818170155.1907006-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072828974158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/tcg-op.c | 72 ++++++---------------------------------------------- 1 file changed, 8 insertions(+), 64 deletions(-) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index 3d28280785..c24a7962fc 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1252,23 +1252,8 @@ void tcg_gen_bswap32_i32(TCGv_i32 ret, TCGv_i32 arg) if (tcg_op_supported(INDEX_op_bswap32, TCG_TYPE_I32, 0)) { tcg_gen_op3i_i32(INDEX_op_bswap32, ret, arg, 0); } else { - TCGv_i32 t0 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t1 =3D tcg_temp_ebb_new_i32(); - TCGv_i32 t2 =3D tcg_constant_i32(0x00ff00ff); - - /* arg =3D abcd */ - tcg_gen_shri_i32(t0, arg, 8); /* t0 =3D .abc */ - tcg_gen_and_i32(t1, arg, t2); /* t1 =3D .b.d */ - tcg_gen_and_i32(t0, t0, t2); /* t0 =3D .a.c */ - tcg_gen_shli_i32(t1, t1, 8); /* t1 =3D b.d. */ - tcg_gen_or_i32(ret, t0, t1); /* ret =3D badc */ - - tcg_gen_shri_i32(t0, ret, 16); /* t0 =3D ..ba */ - tcg_gen_shli_i32(t1, ret, 16); /* t1 =3D dc.. */ - tcg_gen_or_i32(ret, t0, t1); /* ret =3D dcba */ - - tcg_temp_free_i32(t0); - tcg_temp_free_i32(t1); + gen_bitswap_i32(ret, arg, 0x00ff00ff); + tcg_gen_hswap_i32(ret, ret); } } =20 @@ -1823,14 +1808,9 @@ void tcg_gen_bswap32_i64(TCGv_i64 ret, TCGv_i64 arg,= int flags) } else { TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t2 =3D tcg_constant_i64(0x00ff00ff); =20 - /* arg =3D xxxxabcd */ - tcg_gen_shri_i64(t0, arg, 8); /* t0 =3D .xxxxabc */ - tcg_gen_and_i64(t1, arg, t2); /* t1 =3D .....b.d */ - tcg_gen_and_i64(t0, t0, t2); /* t0 =3D .....a.c */ - tcg_gen_shli_i64(t1, t1, 8); /* t1 =3D ....b.d. */ - tcg_gen_or_i64(ret, t0, t1); /* ret =3D ....badc */ + /* arg =3D xxxxabcd */ + gen_bitswap_i64(ret, arg, 0x00ff00ff); /* ret =3D ....badc */ =20 tcg_gen_shli_i64(t1, ret, 48); /* t1 =3D dc...... */ tcg_gen_shri_i64(t0, ret, 16); /* t0 =3D ......ba */ @@ -1857,32 +1837,8 @@ void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg) if (tcg_op_supported(INDEX_op_bswap64, TCG_TYPE_I64, 0)) { tcg_gen_op3i_i64(INDEX_op_bswap64, ret, arg, 0); } else { - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t2 =3D tcg_temp_ebb_new_i64(); - - /* arg =3D abcdefgh */ - tcg_gen_movi_i64(t2, 0x00ff00ff00ff00ffull); - tcg_gen_shri_i64(t0, arg, 8); /* t0 =3D .abcdefg */ - tcg_gen_and_i64(t1, arg, t2); /* t1 =3D .b.d.f.h */ - tcg_gen_and_i64(t0, t0, t2); /* t0 =3D .a.c.e.g */ - tcg_gen_shli_i64(t1, t1, 8); /* t1 =3D b.d.f.h. */ - tcg_gen_or_i64(ret, t0, t1); /* ret =3D badcfehg */ - - tcg_gen_movi_i64(t2, 0x0000ffff0000ffffull); - tcg_gen_shri_i64(t0, ret, 16); /* t0 =3D ..badcfe */ - tcg_gen_and_i64(t1, ret, t2); /* t1 =3D ..dc..hg */ - tcg_gen_and_i64(t0, t0, t2); /* t0 =3D ..ba..fe */ - tcg_gen_shli_i64(t1, t1, 16); /* t1 =3D dc..hg.. */ - tcg_gen_or_i64(ret, t0, t1); /* ret =3D dcbahgfe */ - - tcg_gen_shri_i64(t0, ret, 32); /* t0 =3D ....dcba */ - tcg_gen_shli_i64(t1, ret, 32); /* t1 =3D hgfe.... */ - tcg_gen_or_i64(ret, t0, t1); /* ret =3D hgfedcba */ - - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); - tcg_temp_free_i64(t2); + gen_bitswap_i64(ret, arg, 0x00ff00ff00ff00ffull); + tcg_gen_hswap_i64(ret, ret); } } =20 @@ -1894,20 +1850,8 @@ void tcg_gen_bswap64_i64(TCGv_i64 ret, TCGv_i64 arg) */ void tcg_gen_hswap_i64(TCGv_i64 ret, TCGv_i64 arg) { - uint64_t m =3D 0x0000ffff0000ffffull; - TCGv_i64 t0 =3D tcg_temp_ebb_new_i64(); - TCGv_i64 t1 =3D tcg_temp_ebb_new_i64(); - - /* arg =3D abcdefgh */ - tcg_gen_rotli_i64(t1, arg, 32); /* t1 =3D efghabcd */ - tcg_gen_andi_i64(t0, t1, m); /* t0 =3D ..gh..cd */ - tcg_gen_shli_i64(t0, t0, 16); /* t0 =3D gh..cd.. */ - tcg_gen_shri_i64(t1, t1, 16); /* t1 =3D ..efghab */ - tcg_gen_andi_i64(t1, t1, m); /* t1 =3D ..ef..ab */ - tcg_gen_or_i64(ret, t0, t1); /* ret =3D ghefcdab */ - - tcg_temp_free_i64(t0); - tcg_temp_free_i64(t1); + gen_bitswap_i64(ret, ret, 0x0000ffff0000ffffull); + tcg_gen_wswap_i64(ret, ret); } =20 /* --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072963; cv=none; d=zohomail.com; s=zohoarc; b=giwgVVps+FpxPDoxZheHl1N/y5VFmo0FER7UqnCi/A4mBDjq5A6s0ja4nz6X3y+O6UbeQn8IER3jrc8YXFXH83naf4Hwk7qs6/g9sew92Jc7fId5P+ohu/V21rHgJ1eujjmP5G0wKnARyviv63qIu5c+ALuSvKBrJFd/Yy+tda4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072963; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=09cHq0fLPk/RPP+6CKuCMV9YgsCAmSJq8LyqnZ9wybk=; b=ShDjKLbO7p9j44k7+btsr/WKA848QCDVMml1fyYyrahB2/IOl8RLxHlW7eptfIC8Tn9r/lYjprAo66RriwB0VIow/vVPhchH01ZH+XAQYo+2mNIXOMeN1cpFyO2V/x9vYwXsurb5k8qTsdoeMpJUB/kfQh4n3csF3P7TcR2Ul+c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072962991938.3437266585864; Tue, 18 Aug 2026 10:09:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCa-0007RE-4q; Tue, 18 Aug 2026 13:02:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCX-0007QW-Pm for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:13 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCW-0004hw-3g for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:13 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-848643382fcso204044b3a.1 for ; Tue, 18 Aug 2026 10:02:11 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072531; x=1787677331; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=09cHq0fLPk/RPP+6CKuCMV9YgsCAmSJq8LyqnZ9wybk=; b=gPt5pV4hn6G5QbYVhKZSfq1/6fw4fmlbAUjNHitZ2+HHeghmoiRmpRXzfuj+ObY42z 6mdKCKKtJ2ScR/0yorFaAUvWt++wmWCAddx8qq252ba+hiAsNktFUIY8IIMQnWLSSzpd sTVTFV3Zjsz2pYFPIVTQAtrotAwPqaR9WI76XZRl5YyUhJdo0q5Sx4yTwbfT3Ya1qpZd nyr9p0v02rK+omthBdTz5qTZ4wUI5z/sDQm78JwzPJjbO4aI/E7ZN1XhY3I8WEK8UUCd Tj3vtp6IaECgBonOhnHQSIewRINufZoqZVX3fUMtNmjK7OffLIXmYju0OUfNB7KTQmgD bpCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072531; x=1787677331; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=09cHq0fLPk/RPP+6CKuCMV9YgsCAmSJq8LyqnZ9wybk=; b=V3UnnsD7TSM/1oBTnE9ktPyFfBDcXrqAGismrugw+lNoQwnDF79EoHyAvX+5grizFb gs69B8UiEbwMYlqZvojrIMYnAQOSNxnLvaYb5Mo8JlVw1bpfJK9nzXyVwje6xizGGT2v 5lW/gYs7PPGmdvfGKLCmrfGhIImf8BPKdzwb8Py2QO85X4DYuNKu5PD2q+JkFlBbqP9u vWWm3mruWBrQLaFTS0kqV4/UyAFqUWzxnukxGDvNhfM3b6OiA3TiYxYhnbl1kYGH6EDH 2bDbpscERnWDdPbFjgbEtHaBiQVxijxsa+Q12t0moWZlcfM+V5ZSHprvdcRDIzaMN1hs Yd/A== X-Gm-Message-State: AOJu0YzI37udSZqj2PC5w2nromV08NQz7zeIGi8yyiUp+IgDWry5tSMV 0Kh8/ZDPqRQ1kUL5VJ5QXXngRDGgMQh9HY2xQFpOrIWiW+azTjblFBARFbR58KYkybIidWnID64 TQBHqqaQ= X-Gm-Gg: AR+sD13Nu38zjeuXMx0fabDgQ0nkFYu2l5P24FhdphkOa3hAeklhl159BKEHdawH0D3 wCEwRX/8TjGNFQCotve1ofli+pJFkzZv/7nPYcOPgwL1PC6o7GggARsRYcMe1toVkaOacRDfYVT YXSTojrNlmbw1rQPzL4i7HKaQqLBMOWN6I6sQcjCiE9RfKyFDPN2B6wUQUWM4XCXvlM6kKl1MLl vp2B3ptww6Md87ybGv9/t7fOzg1kqvKE9yrHG6bC9eqKtITdUsG+yp0cc/WGcwP9fJvuwRpTC0g QncbcG0n4qAoFDnC7l3VAHxh45XG6fMkIHP/cB21GReowYJZvRvyi6jhM9waR/Ii99vdCveJVwD KmgqL3SPcBJoBdm2LHai9avPXyVrGpf2ZAzdcN8MrTQi/825EuEZru+N15V+PPnTRVpkAeWqw9s NUUYbU6tZtZRt2TryfodbVJ8xDekm2IBS4a6IWloQDE/GkoWCi/Nh+SKgKJqDeC0ftyqC55wM0r tk4cP6lXV+2x8FjO+OYxgbB+tptfdvQjys= X-Received: by 2002:a05:6a00:4482:b0:848:5cf5:5040 with SMTP id d2e1a72fcca58-851b8810d0fmr14872652b3a.10.1787072530626; Tue, 18 Aug 2026 10:02:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 10/38] target/arm: Use generic tcg_gen_revbit* Date: Tue, 18 Aug 2026 10:01:27 -0700 Message-ID: <20260818170155.1907006-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072964030158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/arm/tcg/helper-a64-defs.h | 1 - target/arm/tcg/helper-defs.h | 1 - target/arm/tcg/helper-a64.c | 5 ----- target/arm/tcg/op_helper.c | 5 ----- target/arm/tcg/translate-a64.c | 4 ++-- target/arm/tcg/translate.c | 2 +- 6 files changed, 3 insertions(+), 15 deletions(-) diff --git a/target/arm/tcg/helper-a64-defs.h b/target/arm/tcg/helper-a64-d= efs.h index 0e56e00f45..12f58c6a44 100644 --- a/target/arm/tcg/helper-a64-defs.h +++ b/target/arm/tcg/helper-a64-defs.h @@ -18,7 +18,6 @@ */ DEF_HELPER_FLAGS_2(udiv64, TCG_CALL_NO_RWG_SE, i64, i64, i64) DEF_HELPER_FLAGS_2(sdiv64, TCG_CALL_NO_RWG_SE, s64, s64, s64) -DEF_HELPER_FLAGS_1(rbit64, TCG_CALL_NO_RWG_SE, i64, i64) DEF_HELPER_2(msr_i_spsel, void, env, i32) DEF_HELPER_2(msr_i_daifset, void, env, i32) DEF_HELPER_2(msr_i_daifclear, void, env, i32) diff --git a/target/arm/tcg/helper-defs.h b/target/arm/tcg/helper-defs.h index 0077aeb4e2..42376af2c6 100644 --- a/target/arm/tcg/helper-defs.h +++ b/target/arm/tcg/helper-defs.h @@ -10,7 +10,6 @@ DEF_HELPER_3(add_usaturate, i32, env, i32, i32) DEF_HELPER_3(sub_usaturate, i32, env, i32, i32) DEF_HELPER_FLAGS_3(sdiv, TCG_CALL_NO_RWG, s32, env, s32, s32) DEF_HELPER_FLAGS_3(udiv, TCG_CALL_NO_RWG, i32, env, i32, i32) -DEF_HELPER_FLAGS_1(rbit, TCG_CALL_NO_RWG_SE, i32, i32) =20 #define PAS_OP(pfx) \ DEF_HELPER_3(pfx ## add8, i32, i32, i32, ptr) \ diff --git a/target/arm/tcg/helper-a64.c b/target/arm/tcg/helper-a64.c index 05ab9ab6d3..9d805231a0 100644 --- a/target/arm/tcg/helper-a64.c +++ b/target/arm/tcg/helper-a64.c @@ -69,11 +69,6 @@ int64_t HELPER(sdiv64)(int64_t num, int64_t den) return num / den; } =20 -uint64_t HELPER(rbit64)(uint64_t x) -{ - return revbit64(x); -} - void HELPER(msr_i_spsel)(CPUARMState *env, uint32_t imm) { update_spsel(env, imm); diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c index c4433be2ed..857e897a48 100644 --- a/target/arm/tcg/op_helper.c +++ b/target/arm/tcg/op_helper.c @@ -172,11 +172,6 @@ uint32_t HELPER(udiv)(CPUARMState *env, uint32_t num, = uint32_t den) return num / den; } =20 -uint32_t HELPER(rbit)(uint32_t x) -{ - return revbit32(x); -} - uint32_t HELPER(add_setq)(CPUARMState *env, uint32_t a, uint32_t b) { uint32_t res =3D a + b; diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 1780490065..4f9a93950b 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -8963,7 +8963,7 @@ static void gen_wrap2_i32(TCGv_i64 d, TCGv_i64 n, Neo= nGenOneOpFn fn) =20 static void gen_rbit32(TCGv_i64 tcg_rd, TCGv_i64 tcg_rn) { - gen_wrap2_i32(tcg_rd, tcg_rn, gen_helper_rbit); + tcg_gen_revbit32_i64(tcg_rd, tcg_rn, TCG_BSWAP_OZ); } =20 static void gen_rev16_xx(TCGv_i64 tcg_rd, TCGv_i64 tcg_rn, TCGv_i64 mask) @@ -8998,7 +8998,7 @@ static void gen_rev32(TCGv_i64 tcg_rd, TCGv_i64 tcg_r= n) tcg_gen_rotri_i64(tcg_rd, tcg_rd, 32); } =20 -TRANS(RBIT, gen_rr, a->rd, a->rn, a->sf ? gen_helper_rbit64 : gen_rbit32) +TRANS(RBIT, gen_rr, a->rd, a->rn, a->sf ? tcg_gen_revbit64_i64 : gen_rbit3= 2) TRANS(REV16, gen_rr, a->rd, a->rn, a->sf ? gen_rev16_64 : gen_rev16_32) TRANS(REV32, gen_rr, a->rd, a->rn, a->sf ? gen_rev32 : gen_rev_32) TRANS(REV64, gen_rr, a->rd, a->rn, tcg_gen_bswap64_i64) diff --git a/target/arm/tcg/translate.c b/target/arm/tcg/translate.c index 055f3c5b40..1770428d3c 100644 --- a/target/arm/tcg/translate.c +++ b/target/arm/tcg/translate.c @@ -4835,7 +4835,7 @@ static bool trans_RBIT(DisasContext *s, arg_rr *a) if (!ENABLE_ARCH_6T2) { return false; } - return op_rr(s, a, gen_helper_rbit); + return op_rr(s, a, tcg_gen_revbit32_i32); } =20 /* --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072635; cv=none; d=zohomail.com; s=zohoarc; b=RzE5cAXUUamNLFA5ruSk3N+Zk4IbWkyu8g3CF3dfcdvxWo4wW3Fop1rXJu7nYhmAI50ABCE7wnx1fTSIyNvq1xwXu7rwLDFj/4VGIBxgmeso9deMBVfbiffjQuAX3qpQS/TfpI7mCLYOulADvcDVI6V8exAeDF+CzxGG+x23RRE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072635; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Bmvs7eVPvDWK8RxG5EpSR43ByOKageHH4+EN9ul0Uio=; b=KkUlufFLH8RbQE7We3gk8MaeXp1E+OYXkA72Ut7FojbdD+VwRmay81gCMLMFl+gOf8X8dQ/DbXx5Hq/HD3CFL5mC6iMFtW8BMRBd5hMyjdeq8yT7m+Je165xQnWWwLYgFXzV2lQYWVa5GgJAI1mTNZBJbzguTKEJDuZ2sixHDXs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072635796214.02323947866353; Tue, 18 Aug 2026 10:03:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCa-0007RG-DX; Tue, 18 Aug 2026 13:02:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCY-0007R1-VR for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:14 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCX-0004iU-5I for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:14 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-cc11a905ba5so8685a12.2 for ; Tue, 18 Aug 2026 10:02:12 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072532; x=1787677332; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=Bmvs7eVPvDWK8RxG5EpSR43ByOKageHH4+EN9ul0Uio=; b=l34N+H5zIAb1DGiOopJd5cpKdKZckplE1aH0z//TxM0Ngo2DxPJmstkTZp3nTlBtI5 FkQrmbF4xUQfszc0AbI6a30GdbOnDtUBVkT4pTr2ylFdR2KRdaB6eliXk2bqOx6ZVfV5 ysbifmbCGEkgTA6xJ5m9OcfMD5YQxOXl1slacQG4OY4GfxEnQhO/1L9oABCUk1W8E3yf m0lpLpIdU/BhULFBKCX5z56useGPkWmhdIzNyk0bo32y8MiMpco/wjphrUJBg9FL7U3h CzqYIuwQI1FFofvp4rql6ReX8M7dv33tVhpzrnELL72phHpxin8ih5cuwFuUJhNiYnes wnng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072532; x=1787677332; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Bmvs7eVPvDWK8RxG5EpSR43ByOKageHH4+EN9ul0Uio=; b=aWjM2pgZV86lkDRxKBp09iQK6ezSGhGQxFxIGbjenxoJdxKNBqbRKvjQ3HY1iriq3n HSivNojrwT8w67h/Vrn213+EYKJUlUB4q/VIh53PhusX21unVCITYpVo94Ag4xjU7+ou dzPwpcAle49HoNSHIG/dF9Ymp7sHhXPAdEdeVSKAkQ+IqOoyzRiwTfpb85RPCoKnTZN5 xutJJr6we6S87mqxTLRrmcmNHR9qHP+0Otg4YgvrbhhQcYXrdj+qYT7VEQ8n7pqMDrQT VxY5Hhx43IlcX5xLqmtPNyrOyRA8KL7Ultz+7TqNQhEIUOVBbdA8PTW7VMvp34Ma8GZm dXJw== X-Gm-Message-State: AOJu0Ywc8C61hAaJ4Df3R4k8huvrH0WBUQYolUbWNwMI7l2YOj3BvL2f ff545erNkAfbsKbt2fWN5FJohSRebASC71wX0NZajOEUPYSoeDiOHqIrOoRgN9H3g7Pfkyb4hR6 6MeX1HxE= X-Gm-Gg: AR+sD11Ux6BfN0ubtU2T7hYOWS29f2DStXvszGAeOj/MPAVcW/B4PqBt7CPCnm6FdXu SbPr4MxwjmV3ahYOr1fe2v0RzVGaq2rEzydaufeInnSjbiUlWPYGgpvfnA83cnFJVba59voEkfd FmOnZ/n2kp4/er/AoWVFwvIVJH/GfOy8EO+BCmtVaxgLtgimw6UR1vNz9F5A856DM9JrcjrIyYN W/pF5U7/u0FQl3FpNxwCUkutE6CvRnnoJ4yi0uvQTp0uiPO/IlvFVUNBWQwFehWtxiMm5A0WXrN t4E00kpNyoRKwSw4BmngVusMP6wJ/O7GdyUHoutd+5DnPdlfbQd1NyY9YFmdfxLZn+lA84wwAA0 KfoDtYlgJ/B7/Dt7nv2sPpgIDmyaYaPHZOkuXnX2EWuF913xsL0/HlgmEZ6szTIfOzHBNeGcypA bHyS8hNC8Ikz4BB/zctJXQrDm0gdAO5SejSlebvt0Yl6Dvd4lPl5XFBl7fC+9ZZHurwUyAntbFh cdTfcDkQWh7ESn33UWLExLqszDo2quhUPM= X-Received: by 2002:a05:6a00:1489:b0:847:9aa8:d3ce with SMTP id d2e1a72fcca58-84fde14ff2emr36148104b3a.2.1787072531510; Tue, 18 Aug 2026 10:02:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Song Gao <17746591750@163.com>, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 11/38] target/loongarch: Use generic tcg_gen_revbit* Date: Tue, 18 Aug 2026 10:01:28 -0700 Message-ID: <20260818170155.1907006-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072637279158500 Reviewed-by: Song Gao <17746591750@163.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/loongarch/tcg/helper.h | 4 ---- target/loongarch/tcg/op_helper.c | 21 ------------------- .../loongarch/tcg/insn_trans/trans_bit.c.inc | 13 ++++++++---- 3 files changed, 9 insertions(+), 29 deletions(-) diff --git a/target/loongarch/tcg/helper.h b/target/loongarch/tcg/helper.h index 8a6c62f116..e76c73c775 100644 --- a/target/loongarch/tcg/helper.h +++ b/target/loongarch/tcg/helper.h @@ -5,10 +5,6 @@ =20 DEF_HELPER_2(raise_exception, noreturn, env, i32) =20 -DEF_HELPER_FLAGS_1(bitrev_w, TCG_CALL_NO_RWG_SE, tl, tl) -DEF_HELPER_FLAGS_1(bitrev_d, TCG_CALL_NO_RWG_SE, tl, tl) -DEF_HELPER_FLAGS_1(bitswap, TCG_CALL_NO_RWG_SE, tl, tl) - DEF_HELPER_FLAGS_3(asrtle_d, TCG_CALL_NO_WG, void, env, tl, tl) DEF_HELPER_FLAGS_3(asrtgt_d, TCG_CALL_NO_WG, void, env, tl, tl) =20 diff --git a/target/loongarch/tcg/op_helper.c b/target/loongarch/tcg/op_hel= per.c index e63ac66daa..f41f0cb1e6 100644 --- a/target/loongarch/tcg/op_helper.c +++ b/target/loongarch/tcg/op_helper.c @@ -22,27 +22,6 @@ void helper_raise_exception(CPULoongArchState *env, uint= 32_t exception) do_raise_exception(env, exception, GETPC()); } =20 -target_ulong helper_bitrev_w(target_ulong rj) -{ - return (int32_t)revbit32(rj); -} - -target_ulong helper_bitrev_d(target_ulong rj) -{ - return revbit64(rj); -} - -target_ulong helper_bitswap(target_ulong v) -{ - v =3D ((v >> 1) & (target_ulong)0x5555555555555555ULL) | - ((v & (target_ulong)0x5555555555555555ULL) << 1); - v =3D ((v >> 2) & (target_ulong)0x3333333333333333ULL) | - ((v & (target_ulong)0x3333333333333333ULL) << 2); - v =3D ((v >> 4) & (target_ulong)0x0F0F0F0F0F0F0F0FULL) | - ((v & (target_ulong)0x0F0F0F0F0F0F0F0FULL) << 4); - return v; -} - /* loongarch assert op */ void helper_asrtle_d(CPULoongArchState *env, target_ulong rj, target_ulong= rk) { diff --git a/target/loongarch/tcg/insn_trans/trans_bit.c.inc b/target/loong= arch/tcg/insn_trans/trans_bit.c.inc index ee5fa003ce..b91bb7eaa6 100644 --- a/target/loongarch/tcg/insn_trans/trans_bit.c.inc +++ b/target/loongarch/tcg/insn_trans/trans_bit.c.inc @@ -178,6 +178,11 @@ static void gen_masknez(TCGv dest, TCGv src1, TCGv src= 2) tcg_gen_movcond_tl(TCG_COND_NE, dest, src2, zero, zero, src1); } =20 +static void gen_bitrev_w(TCGv dest, TCGv src) +{ + tcg_gen_revbit32_tl(dest, src, TCG_BSWAP_OS); +} + TRANS(ext_w_h, ALL, gen_rr, EXT_NONE, EXT_NONE, tcg_gen_ext16s_tl) TRANS(ext_w_b, ALL, gen_rr, EXT_NONE, EXT_NONE, tcg_gen_ext8s_tl) TRANS(clo_w, ALL, gen_rr, EXT_NONE, EXT_NONE, gen_clo_w) @@ -194,10 +199,10 @@ TRANS(revb_2w, 64, gen_rr, EXT_NONE, EXT_NONE, gen_re= vb_2w) TRANS(revb_d, 64, gen_rr, EXT_NONE, EXT_NONE, tcg_gen_bswap64_i64) TRANS(revh_2w, 64, gen_rr, EXT_NONE, EXT_NONE, gen_revh_2w) TRANS(revh_d, 64, gen_rr, EXT_NONE, EXT_NONE, gen_revh_d) -TRANS(bitrev_4b, ALL, gen_rr, EXT_ZERO, EXT_SIGN, gen_helper_bitswap) -TRANS(bitrev_8b, 64, gen_rr, EXT_NONE, EXT_NONE, gen_helper_bitswap) -TRANS(bitrev_w, ALL, gen_rr, EXT_NONE, EXT_SIGN, gen_helper_bitrev_w) -TRANS(bitrev_d, 64, gen_rr, EXT_NONE, EXT_NONE, gen_helper_bitrev_d) +TRANS(bitrev_4b, ALL, gen_rr, EXT_NONE, EXT_SIGN, tcg_gen_revbit8_i64) +TRANS(bitrev_8b, 64, gen_rr, EXT_NONE, EXT_NONE, tcg_gen_revbit8_i64) +TRANS(bitrev_w, ALL, gen_rr, EXT_NONE, EXT_NONE, gen_bitrev_w) +TRANS(bitrev_d, 64, gen_rr, EXT_NONE, EXT_NONE, tcg_gen_revbit64_i64) TRANS(maskeqz, ALL, gen_rrr, EXT_NONE, EXT_NONE, EXT_NONE, gen_maskeqz) TRANS(masknez, ALL, gen_rrr, EXT_NONE, EXT_NONE, EXT_NONE, gen_masknez) TRANS(bytepick_w, ALL, gen_rrr_sa, EXT_NONE, EXT_NONE, gen_bytepick_w) --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072793; cv=none; d=zohomail.com; s=zohoarc; b=B/5muYL2qrOhPf0DQ5ix0u2mSIMvxcj358RsascBJ7CJ3cDCjv/ChymQmO41Z2CuFf2AGonI2Yxuih1VG2VxLlvJYEwaNqyR1/5EKZunMWoYOY9Y+HUfUjqWp27XUXFT7yYxw+4YXNPIxzmxB2fimSz29dwtdEdi5CdQIHJIopA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072793; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=sZpPOKytJxm4lwxbTGWqFKnd4UF37njKhCHk600PrmQ=; b=kfR7pS/x+qo3fsB9ixIIF64H3LLoQGb5cvu6EHGDp2qfrFSV252WcEcgjNZL5GI7Y+6AoG+2jbsfEMmpPSXooQZu23Jyv0rLkHo46b086LGPJQK6l955xIlMtfPrsQS09QnNdG3tCqsm7+1LNQ5NIvxsWLg7nX78nmHTZaZ8Qmo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072793837335.35864083519755; Tue, 18 Aug 2026 10:06:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCb-0007S3-UH; Tue, 18 Aug 2026 13:02:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCa-0007RF-3m for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:16 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCY-0004ip-52 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:15 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-84faf87d19dso181952b3a.3 for ; Tue, 18 Aug 2026 10:02:13 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072533; x=1787677333; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=sZpPOKytJxm4lwxbTGWqFKnd4UF37njKhCHk600PrmQ=; b=acYOuWdD2tma/CLQzvPM6PVBljqD9OLofTkHVEpgVWdPJk8buZmP1IY16OzKBB8zvg GVhQJ9nFiqEvf+RZ50VEbkgATTknf+FRCQJaHdC7XxgueIwzBoGAi87Sr0n6vByp8ZVo WLNHQyAkFRp2tTFY07ryGgEJ1SNM9wpPb8nPRnXmWEgFoxtYNqmjK2uyNX745jouw4Gr ta7kCz48UesCvLa+XCqOXfLm7FyckZekCOj7wKeO5PfQY5HaHquuWjxXDAA9aVHAgSiT u/zZbqQ1iRNd1sbW9/CBz5l1Yo2jgOQBZ7Hgo3ef/0Ejzo+gsM/wDmT0qTDal9IX2J89 LGyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072533; x=1787677333; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=sZpPOKytJxm4lwxbTGWqFKnd4UF37njKhCHk600PrmQ=; b=Aj8CVFS5wKyilqh2YHakPi4j6VbVlQlcucAK3vR9pKHjoBwLbQ9O23jylSPo91r8m1 7tDilSXsqrnkKrjm8UK1d+icfeO/CZgEiWZy+16P3C5pM8cXLECKtkXVFK0urWgn6Ow7 EMwJEZ4x6P4CaZWAHdUQgNB5ilI+B7v+hd0GYyiFA16jhfnoR3WcCEVrQQqtpGi5tm/E sUrMBIF3rQhAKBieGpn0SIu9E9UqxuPPo9mMhBoAyQxdqObgXaK3zYTYprJuTBy2AuPA +r/zqW53DUmvYJTlNk1744kO2/QaNAoqygW8KFDfykCEdS1m2F0psQuyXCTAL+UMAYAn t6cw== X-Gm-Message-State: AOJu0Yyf2d4VroyUdo6oQJUME+caoFx/oY+BA+Loi9k5/+wYCwAl6kLw Cyif1m0FGrMAkDG3wjwpg9yESij/ZvZUOX/vYWf254wxBGk/374xKUEW6RTPDsoWe9XCnZZQLdV dRhpavwg= X-Gm-Gg: AR+sD11q/a55ZZwm8U/PRdV0MeIuAzBZM7EezZLHCyp7lON7we9B5Ia/QfPYnyEi1zS C4wypeVxVstW8BGsnJdsNmGJ4vcSKwN04kjfcw9Io8rehkz0sS84KAh9porYxD/UN6csg4i1Yqo 1kCEOy1t/zW+4vBFHRHAWoRVo4F6cPSkFgVWDnFuptzSpzLfcb8PYTe+POwp96V+XooiUkMA8Jq VWjVOunBAmeSnkUmv77dPaxdLJkI9IBmYoC7IE9pOhT5rrcMW0QWq5knlLpC9NsVcrhHf6JHT5C OdfskfShP/swy2z4IP3YJexfmAOK6nFFkU1VuzYMupKUIyz/wGnOrkb2kfq7VGtlHsbpdNmILA0 bSrQaeOBUbpoD4tL+378MxsXekJZwdX5/Sv1iwGAEg4aXlRsdqF3mdHlq2DMstMA0H73QXAZEEM NAuIgGd2aw3alSzFGAmHAKXx02gCkSTshn5ZiVqVG9ExZXXvhWy6ZkRGI69/wdFeTpWQhfv653+ 7LN0y16NlN89+OKaHx9p5xKSePFOioa+yxo X-Received: by 2002:a05:6a00:2e85:b0:842:7296:dba with SMTP id d2e1a72fcca58-84fddfa8508mr34565966b3a.7.1787072532481; Tue, 18 Aug 2026 10:02:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Anton Johansson Subject: [PULL 12/38] target/mips: Expand octeon reflections inline Date: Tue, 18 Aug 2026 10:01:29 -0700 Message-ID: <20260818170155.1907006-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072794799158500 Content-Type: text/plain; charset="utf-8" Use tcg_gen_revbit64_i64 instead of out-of-line helpers. Reviewed-by: Anton Johansson Signed-off-by: Richard Henderson --- target/mips/helper.h | 7 ----- target/mips/tcg/octeon_crypto.c | 35 --------------------- target/mips/tcg/octeon_translate.c | 49 ++++++++++++++++++++++++++---- 3 files changed, 43 insertions(+), 48 deletions(-) diff --git a/target/mips/helper.h b/target/mips/helper.h index 786117813a..779b87101d 100644 --- a/target/mips/helper.h +++ b/target/mips/helper.h @@ -27,10 +27,6 @@ DEF_HELPER_FLAGS_4(rotx, TCG_CALL_NO_RWG_SE, tl, tl, i32= , i32, i32) =20 /* Octeon COP2 selector operation helpers. */ DEF_HELPER_1(octeon_cp2_mf_crc_iv_reflect, i64, env) -DEF_HELPER_1(octeon_cp2_mf_gfm_mul_reflect0, i64, env) -DEF_HELPER_1(octeon_cp2_mf_gfm_mul_reflect1, i64, env) -DEF_HELPER_1(octeon_cp2_mf_gfm_resinp_reflect0, i64, env) -DEF_HELPER_1(octeon_cp2_mf_gfm_resinp_reflect1, i64, env) DEF_HELPER_2(octeon_cp2_mt_crc_write_iv_reflect, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_crc_write_polynomial_reflect, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_crc_write_byte, void, env, i64) @@ -43,9 +39,6 @@ DEF_HELPER_2(octeon_cp2_mt_crc_write_dword, void, env, i6= 4) DEF_HELPER_2(octeon_cp2_mt_crc_write_var, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_crc_write_dword_reflect, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_crc_write_var_reflect, void, env, i64) -DEF_HELPER_2(octeon_cp2_mt_gfm_mul_reflect0, void, env, i64) -DEF_HELPER_2(octeon_cp2_mt_gfm_mul_reflect1, void, env, i64) -DEF_HELPER_2(octeon_cp2_mt_gfm_xor0_reflect, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_gfm_xormul1_reflect, void, env, i64) DEF_HELPER_2(octeon_cp2_mt_gfm_xormul1, void, env, i64) DEF_HELPER_1(octeon_cp2_mt_sha3_startop, void, env) diff --git a/target/mips/tcg/octeon_crypto.c b/target/mips/tcg/octeon_crypt= o.c index fbf80be2a5..118397e632 100644 --- a/target/mips/tcg/octeon_crypto.c +++ b/target/mips/tcg/octeon_crypto.c @@ -2127,41 +2127,6 @@ uint64_t helper_octeon_cp2_mf_crc_iv_reflect(CPUMIPS= State *env) return octeon_crc_reflect32_by_byte(env->octeon_crypto.crc_iv); } =20 -uint64_t helper_octeon_cp2_mf_gfm_mul_reflect0(CPUMIPSState *env) -{ - return revbit64(env->octeon_crypto.gfm_mul[0]); -} - -uint64_t helper_octeon_cp2_mf_gfm_mul_reflect1(CPUMIPSState *env) -{ - return revbit64(env->octeon_crypto.gfm_mul[1]); -} - -uint64_t helper_octeon_cp2_mf_gfm_resinp_reflect0(CPUMIPSState *env) -{ - return revbit64(env->octeon_crypto.gfm_resinp[0]); -} - -uint64_t helper_octeon_cp2_mf_gfm_resinp_reflect1(CPUMIPSState *env) -{ - return revbit64(env->octeon_crypto.gfm_resinp[1]); -} - -void helper_octeon_cp2_mt_gfm_mul_reflect0(CPUMIPSState *env, uint64_t val= ue) -{ - env->octeon_crypto.gfm_mul[0] =3D revbit64(value); -} - -void helper_octeon_cp2_mt_gfm_mul_reflect1(CPUMIPSState *env, uint64_t val= ue) -{ - env->octeon_crypto.gfm_mul[1] =3D revbit64(value); -} - -void helper_octeon_cp2_mt_gfm_xor0_reflect(CPUMIPSState *env, uint64_t val= ue) -{ - env->octeon_crypto.gfm_resinp[0] ^=3D revbit64(value); -} - static void octeon_gfm_xormul1_common(MIPSOcteonCryptoState *crypto, uint64_t value) { diff --git a/target/mips/tcg/octeon_translate.c b/target/mips/tcg/octeon_tr= anslate.c index a0db6630c7..b689adb46b 100644 --- a/target/mips/tcg/octeon_translate.c +++ b/target/mips/tcg/octeon_translate.c @@ -28,6 +28,8 @@ TRANS(NAME, trans_octeon_cp2_mf_hsh_pair, \ OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX)]), \ OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX) + 1])) +#define CP2_MF_REFLECT(NAME, FIELD) \ + TRANS(NAME, trans_octeon_cp2_mf_reflect, OCTEON_CRYPTO_OFFSET(FIELD)) #define CP2_MF_HELPER(NAME, SUFFIX) \ TRANS(NAME, trans_octeon_cp2_mf_helper, \ gen_helper_octeon_cp2_mf_ ## SUFFIX) @@ -44,6 +46,8 @@ TRANS(NAME, trans_octeon_cp2_mt_hsh_pair, \ OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX)]), \ OCTEON_CRYPTO_OFFSET(FIELD[2 * (INDEX) + 1])) +#define CP2_MT_REFLECT(NAME, FIELD) \ + TRANS(NAME, trans_octeon_cp2_mt_reflect, OCTEON_CRYPTO_OFFSET(FIELD)) #define CP2_MT_HELPER(NAME, SUFFIX) \ TRANS(NAME, trans_octeon_cp2_mt_helper, \ gen_helper_octeon_cp2_mt_ ## SUFFIX) @@ -110,6 +114,17 @@ static bool trans_octeon_cp2_mf_hsh_pair(DisasContext = *ctx, arg_cp2 *a, return true; } =20 +static bool trans_octeon_cp2_mf_reflect(DisasContext *ctx, arg_cp2 *a, + int offset) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + tcg_gen_ld_i64(value, tcg_env, offset); + tcg_gen_revbit64_i64(value, value); + gen_store_gpr(value, a->rt); + return true; +} + static bool trans_octeon_cp2_mf_helper(DisasContext *ctx, arg_cp2 *a, void (*gen_helper)(TCGv_i64, TCGv_e= nv)) { @@ -183,6 +198,17 @@ static bool trans_octeon_cp2_mt_xor_i64(DisasContext *= ctx, arg_cp2 *a, return true; } =20 +static bool trans_octeon_cp2_mt_reflect(DisasContext *ctx, arg_cp2 *a, + int offset) +{ + TCGv_i64 value =3D tcg_temp_new_i64(); + + gen_load_gpr(value, a->rt); + tcg_gen_revbit64_i64(value, value); + tcg_gen_st_i64(value, tcg_env, offset); + return true; +} + static bool trans_octeon_cp2_mt_helper(DisasContext *ctx, arg_cp2 *a, void (*gen_helper)(TCGv_env, TCGv_i= 64)) { @@ -200,6 +226,17 @@ static bool trans_octeon_cp2_mt_helper_env(DisasContex= t *ctx, arg_cp2 *a, return true; } =20 +static void gen_helper_octeon_cp2_mt_gfm_xor0_reflect(TCGv_env t_env, + TCGv_i64 value) +{ + TCGv_i64 resinp =3D tcg_temp_new_i64(); + + tcg_gen_revbit64_i64(value, value); + tcg_gen_ld_i64(resinp, t_env, OCTEON_CRYPTO_OFFSET(gfm_resinp[0])); + tcg_gen_xor_i64(resinp, resinp, value); + tcg_gen_st_i64(resinp, t_env, OCTEON_CRYPTO_OFFSET(gfm_resinp[0])); +} + CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT0, hsh_dat, 0); CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT1, hsh_dat, 1); CP2_MF_HSH_PAIR(CVM_MF_HSH_DAT2, hsh_dat, 2); @@ -241,10 +278,10 @@ CP2_MF_I64(CVM_MF_LLM_DATA1, llm_data[1]); =20 CP2_MF_HELPER(CVM_MF_CRC_IV_REFLECT, crc_iv_reflect); CP2_MF_I64(CVM_MF_SHA3_DAT24, sha3_dat24); -CP2_MF_HELPER(CVM_MF_GFM_MUL_REFLECT0, gfm_mul_reflect0); -CP2_MF_HELPER(CVM_MF_GFM_MUL_REFLECT1, gfm_mul_reflect1); -CP2_MF_HELPER(CVM_MF_GFM_RESINP_REFLECT0, gfm_resinp_reflect0); -CP2_MF_HELPER(CVM_MF_GFM_RESINP_REFLECT1, gfm_resinp_reflect1); +CP2_MF_REFLECT(CVM_MF_GFM_MUL_REFLECT0, gfm_mul[0]) +CP2_MF_REFLECT(CVM_MF_GFM_MUL_REFLECT1, gfm_mul[1]) +CP2_MF_REFLECT(CVM_MF_GFM_RESINP_REFLECT0, gfm_resinp[0]) +CP2_MF_REFLECT(CVM_MF_GFM_RESINP_REFLECT1, gfm_resinp[1]) CP2_MF_I64(CVM_MF_HSH_DATW0, hsh_dat[0]); CP2_MF_I64(CVM_MF_HSH_DATW1, hsh_dat[1]); CP2_MF_I64(CVM_MF_HSH_DATW2, hsh_dat[2]); @@ -281,8 +318,8 @@ CP2_MT_HSH_PAIR(CVM_MT_HSH_IV0, hsh_iv, 0); CP2_MT_HSH_PAIR(CVM_MT_HSH_IV1, hsh_iv, 1); CP2_MT_HSH_PAIR(CVM_MT_HSH_IV2, hsh_iv, 2); CP2_MT_HSH_PAIR(CVM_MT_HSH_IV3, hsh_iv, 3); -CP2_MT_HELPER(CVM_MT_GFM_MUL_REFLECT0, gfm_mul_reflect0); -CP2_MT_HELPER(CVM_MT_GFM_MUL_REFLECT1, gfm_mul_reflect1); +CP2_MT_REFLECT(CVM_MT_GFM_MUL_REFLECT0, gfm_mul[0]); +CP2_MT_REFLECT(CVM_MT_GFM_MUL_REFLECT1, gfm_mul[1]); CP2_MT_HELPER(CVM_MT_GFM_XOR0_REFLECT, gfm_xor0_reflect); CP2_MT_I64(CVM_MT_3DES_KEY0, des3_key[0]); CP2_MT_I64(CVM_MT_3DES_KEY1, des3_key[1]); --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072632; cv=none; d=zohomail.com; s=zohoarc; b=MkbogkR/KLDfRIi58HKxSUOyZqq4hL8peRQ66HmsPTmJQpkd6T9LIUJ0NuRbxu7eBSeTmnYyWu3ap2hzQQUX9Rs8pc1PIWxjiZBqdP3EFMIr5nI+CA3xJ8xHzpFSFu3kEg3N0rTZgcTOB/6UU0v6zMZH4xf/lQ3Er1oeqvhUk8s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072632; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=OgPDe2T/DVSI923G2nyjCGQkDZBVEDARB5/Kz4eMf3E=; b=cqqcolvjHd+2pIqxggWAS7oy3qsuzv8EzF2dVlrjyQQDODLN+efJuf3xIlNvhbnx88KQuI9PpL3FboYn+3zylqx4pRAaQtd2+rhTdN5g9i+2XCVx+ov84e4NxqEUXsSI4KSy7O/0GqQgfEU9aZ308Czum/hi+2uQtnpDoePx+v0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072632160210.00155161714417; Tue, 18 Aug 2026 10:03:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCc-0007SN-D2; Tue, 18 Aug 2026 13:02:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCa-0007Ri-Uh for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:16 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCZ-0004jZ-7e for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:16 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-cb5b8572b70so15113a12.2 for ; Tue, 18 Aug 2026 10:02:14 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072534; x=1787677334; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=OgPDe2T/DVSI923G2nyjCGQkDZBVEDARB5/Kz4eMf3E=; b=V5cQyz1SQ81FwW22oZE6N7fPRk02ORl2N8mSf9Jdi7UCcSkOWee9JuS0efu38Yaxxr xVZvkVtp+GVwYCRsFI0LhBsmukx0iVeUwPiMdKDDD3aIa81aFE6WK4N6sGA9Jf3Bmuk6 spHQ+djN7b0WakekHXQOzgE95vhlqQMJDgTC4S6Wf6Lv+xehc2Q1zP1X5PwNqaVEUqHI 0yIcFV9eONA2O1IiukvVDDInpaET6xN7wD/Z0x2u91MQhJrchK9Wr5zBq0ScWs1GmGdi 5R2NHDqtBEhG+w/G40C6GgwGFC+AECqTesNmPFk5ow8LRphyrTN2YPKY2OoJ3x3PWOlG zbqw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072534; x=1787677334; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=OgPDe2T/DVSI923G2nyjCGQkDZBVEDARB5/Kz4eMf3E=; b=BJHlQ3Dq71h61Glf6lPduCYz+/jlW5UE0KC5L/wUNdasVjGfP7+G7WEa3SSkv3RYDG ZyevdUe25Kvi6zBPBq+xilbNcYe+nX0VA+htyspFbX6f5jh/SUtwWYvlcOuTYF7157vC iTLduwCb6Qpn+UJC/nYul+U0oXycaCzRu56Hc19sGFB3c7FhR8yLLAgPRliV5XuEk775 lWw5cZqZfE9GEzGRM14/YM3XCJH4vdQn98laNx9eGHqC+nRMl4ediBtfClPyByXf/55p i4+TGcT27JTu3pEpGdVHV0VACNJgj43psAPexUNwprCG4vJwGwpypJqyQHA7+ilX01mS Y8Zg== X-Gm-Message-State: AOJu0YxJsYPRuGtQ+HrMWlPwEt6UiDc+zfqOuBmzAUQuk6SRpZ9mcdHz wt7a8PgzpFAp+CKLrtbNhGVcaMl6yPGViiY2bKAmReNlGccntk33cOlngRDx4ZNWnMoeJYMEILq 5G/5m1O8= X-Gm-Gg: AR+sD131cjVQQVOqN09QmtEiGYC4Rc6r3Fpd/uEXxqa7vgVIc9eI7cGssiNs3Of3/na ifDa52jQiDw44XvFgxbliei+QQRdN8/yMvttxlX46ZmIu8DBao/ZWjU5fA1nPBYI9AXm2Lozbbq dgqY1o0kY3EEmxAOqKQ3E2YJHtfYvbi7aQRNTt7Sm6Cv7IXBbE32izpa6aEvsmL1JRP3lTmOugz lF14wBA+OA3QF2ir6GvPf1C5Z+w6gVDVnNQrTk4IGvpvdXkNeHXvixlT1GVfgJtib4Fm807NALl 5m2e17fnmknG8sWXZREh9+Za0CkPWGiBf/90W6hglbYpn67nb01he0aSTCxfoxvqEnPJ7HRKJj3 R3knxTcghZwf2FZHon2qmcWR/B7jTt5XhyGNmvlkPoHFzhoB33U51l2/7vQqqkNmWg1fRGk3CfO lWEQaKxizZE1ykOU+nZpUrJvHFqcGNkQO/a2zhG972e47iOsdtKkd/YmHrWutV+Lk82BxSbUE3g v8NLawRg+5Q1XUia/sdoZY47h8xqIYlvtSSm42c/GdEMA== X-Received: by 2002:a05:6a00:348e:b0:848:4754:28e5 with SMTP id d2e1a72fcca58-851b8785567mr15154869b3a.16.1787072533617; Tue, 18 Aug 2026 10:02:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 13/38] target/riscv: Use generic tcg_gen_revbit8 Date: Tue, 18 Aug 2026 10:01:30 -0700 Message-ID: <20260818170155.1907006-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072633311158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/riscv/helper.h | 1 - target/riscv/tcg/bitmanip_helper.c | 15 --------------- target/riscv/tcg/insn_trans/trans_rvb.c.inc | 2 +- 3 files changed, 1 insertion(+), 17 deletions(-) diff --git a/target/riscv/helper.h b/target/riscv/helper.h index 542b7c264f..4fc2d3a155 100644 --- a/target/riscv/helper.h +++ b/target/riscv/helper.h @@ -79,7 +79,6 @@ DEF_HELPER_FLAGS_2(froundnx_d, TCG_CALL_NO_RWG_SE, i64, e= nv, i64) /* Bitmanip */ DEF_HELPER_FLAGS_2(clmul, TCG_CALL_NO_RWG_SE, tl, tl, tl) DEF_HELPER_FLAGS_2(clmulr, TCG_CALL_NO_RWG_SE, tl, tl, tl) -DEF_HELPER_FLAGS_1(brev8, TCG_CALL_NO_RWG_SE, tl, tl) DEF_HELPER_FLAGS_1(unzip, TCG_CALL_NO_RWG_SE, tl, tl) DEF_HELPER_FLAGS_1(zip, TCG_CALL_NO_RWG_SE, tl, tl) DEF_HELPER_FLAGS_2(xperm4, TCG_CALL_NO_RWG_SE, tl, tl, tl) diff --git a/target/riscv/tcg/bitmanip_helper.c b/target/riscv/tcg/bitmanip= _helper.c index 1156a87dd3..d8d94bca7b 100644 --- a/target/riscv/tcg/bitmanip_helper.c +++ b/target/riscv/tcg/bitmanip_helper.c @@ -52,21 +52,6 @@ target_ulong HELPER(clmulr)(target_ulong rs1, target_ulo= ng rs2) return result; } =20 -static inline target_ulong do_swap(target_ulong x, uint64_t mask, int shif= t) -{ - return ((x & mask) << shift) | ((x & ~mask) >> shift); -} - -target_ulong HELPER(brev8)(target_ulong rs1) -{ - target_ulong x =3D rs1; - - x =3D do_swap(x, 0x5555555555555555ull, 1); - x =3D do_swap(x, 0x3333333333333333ull, 2); - x =3D do_swap(x, 0x0f0f0f0f0f0f0f0full, 4); - return x; -} - static const uint64_t shuf_masks[] =3D { dup_const(MO_8, 0x44), dup_const(MO_8, 0x30), diff --git a/target/riscv/tcg/insn_trans/trans_rvb.c.inc b/target/riscv/tcg= /insn_trans/trans_rvb.c.inc index e4dcc7c991..3e74be223b 100644 --- a/target/riscv/tcg/insn_trans/trans_rvb.c.inc +++ b/target/riscv/tcg/insn_trans/trans_rvb.c.inc @@ -522,7 +522,7 @@ static void gen_packw(TCGv ret, TCGv src1, TCGv src2) static bool trans_brev8(DisasContext *ctx, arg_brev8 *a) { REQUIRE_ZBKB(ctx); - return gen_unary(ctx, a, EXT_NONE, gen_helper_brev8); + return gen_unary(ctx, a, EXT_NONE, tcg_gen_revbit8_tl); } =20 static bool trans_pack(DisasContext *ctx, arg_pack *a) --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072639; cv=none; d=zohomail.com; s=zohoarc; b=loOrG1OW3D9rESisSspHz71qmaZqA9LijdT3op2OC4RS15fZ+XQRCHQTO5ncVKYT4228aH+EBMaVgmj3Iufp77yDaFSpTCz8N3Vo7w0gJR107FkYhvIIr3HRzSpZW6AMvpDxt1p1LEQzbre8njJ7HjvGnQYRCjfDJUnRZgGMBIM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072639; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LE/vkj6OKUzpNRHjUmqP28r8rRJv1Dnx5QX4LKQGz0k=; b=Fx8N7DSs5oiwgJnG6Hr3uinT2uOBZkv9dP39PUO9RhymH6dyZyOGa25nilzut8Z1yDQczJIWUQ1nkjNQ+todruxtD6UjPnJ0aS0Vd1X0AJJXxt7YJUoG9RXbzJuok0igKsGu0eeAbANRnvE4amgtv9nzezhe9JCw0wqlS7ScEpI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072639295384.452527646696; Tue, 18 Aug 2026 10:03:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCe-0007T1-4L; Tue, 18 Aug 2026 13:02:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCd-0007Sh-7d for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:19 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCa-0004kA-Fx for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:18 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-84e0688b7e8so149524b3a.1 for ; Tue, 18 Aug 2026 10:02:16 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072535; x=1787677335; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=LE/vkj6OKUzpNRHjUmqP28r8rRJv1Dnx5QX4LKQGz0k=; b=n8z9U7p9cpxVVz6nvBM8x6vcNYcJkWizrd/9zArmIRUjik3yOvBedDITK4+m3bBAQx aqt43fGnCbE9ME08jrjJcgyI5sGQSWly4J01Jb4kNre1+08IgXhDTJXeiHeez2NnR/Et ph7gBhl5wQnkeAJkFWESzHG+6OZeFs7DM681XSXwOR/B3U5bt6dKlP1NrWlz+M9OfN7o DDSNv6/vd1/JKKzrGVlwjmFAaKmpBUufCsTsXtxobUxsEHwTXc0nVWjfA2yT4S+WFV/T QI/IiDh50Eqf70e3itpJx6eCIn3GIGuDPzU5OflepDm5cUg92XpMGhgu0PPXkWkN6ibV L0kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072535; x=1787677335; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=LE/vkj6OKUzpNRHjUmqP28r8rRJv1Dnx5QX4LKQGz0k=; b=WMdZZAiMIMA9ngXhSTK6Gn+ZsFBKxQ0hQCdtuH4KW3MpmbsRMMwK6s4tu98GNShnEc twhQu2K7x1oWGT2MpyZP79axwhIyhWaetqEP/s4dzbOdxh1c0TgoBgleoS9IVZ5OpA7u 6g3z7Ivx+1r9JrfOEtUOUmHd/6FiN/ekcd6wArQBZ4Bp/NpMFW/Ezd5GwhuH1MUaGyer oRRrhQnUl1Lcwa5KWfxDTWRTh/bj+xxW2Z2t8DG02YY1MEDUOMv6iY1C1nj1k59IWDqV 99NyyclDTl0pUHRk09Ox7WTxUQR1Xwn/LeRGE0XkUCA6/fAbjvaOOXahVM0PnAM60vah nB0g== X-Gm-Message-State: AOJu0YzRRfdGU4CWj9jGejuK5oiXNu5a/nmgB9OE+qVBwgO84F9lza0L DWnWC3QKJacwWw6cMXZy4ixTPsyjWf3BluhbcGMTt3kYpQpaT/NTp2yzZDH+1uT4+G/vd3LVOgS 1KXeo34g= X-Gm-Gg: AR+sD12kM9EO3MaNWHwXnd8Bw+tK0VB+tbgwmrpnPYC0kpbLYCLmA7roUQNrksMifuC 5SNg0N1l/wn1k70kEtyd4F0TFRsjQYPrc83F6zWemLkZmGhNX7DNwf2VeYg0QKlYbxumEKh1YHt ep2BI4Njna/pU9+Qv5WSeDZuGOU9abHPIwiVfShpIhLS33Mv1v6+JJmA1+dSNjRbIvi/V7fk/ZO 7/eFOacf6lVSvxxLaNN2Mm03lMMa+fl4GnIAU5NUK6OY5W+3IW0eGyCpDmtlQzNTVbcAwbykrvG ZS++EeZfSl6YMl1V1zz91kdRm5ENdoc40EI31AhavR1PeD5WnYgmks0MYPNtbXXGj69LVHn3L1f kRVFV1OkcUogN6K/FCjiTs1uScGVufT+LQuvoUppbj/vneEAmiF9rbJ6CDEBIfHkcAFe9/dwOst rKjNa9dplVv/xD+C/++3IOaAxtTNCywMNycvdmZbnrgEI5BQWtVxnlQdvMjAEvmUTOL7c1NYV4D z9HCVdzuAnX+TBXnt/YpB2yr7H955GR0ZM= X-Received: by 2002:a05:6a00:158d:b0:851:bf92:34c9 with SMTP id d2e1a72fcca58-851bf9236b6mr10157414b3a.9.1787072534815; Tue, 18 Aug 2026 10:02:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 14/38] tcg: Add revbit{8,32,64} opcodes Date: Tue, 18 Aug 2026 10:01:31 -0700 Message-ID: <20260818170155.1907006-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072641411158500 Add the plumbing, but not yet implemented for any host. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/tcg/tcg-opc.h | 3 ++ tcg/tcg-op.c | 66 +++++++++++++++++++++++++------- tcg/tcg.c | 7 ++++ docs/devel/tcg-ops.rst | 16 ++++++++ tcg/aarch64/tcg-target.c.inc | 12 ++++++ tcg/loongarch64/tcg-target.c.inc | 12 ++++++ tcg/ppc64/tcg-target.c.inc | 12 ++++++ tcg/riscv64/tcg-target.c.inc | 12 ++++++ tcg/s390x/tcg-target.c.inc | 12 ++++++ tcg/sparc64/tcg-target.c.inc | 12 ++++++ tcg/tci/tcg-target.c.inc | 12 ++++++ tcg/x86_64/tcg-target.c.inc | 12 ++++++ 12 files changed, 174 insertions(+), 14 deletions(-) diff --git a/include/tcg/tcg-opc.h b/include/tcg/tcg-opc.h index 61f1c28858..13c7f17f76 100644 --- a/include/tcg/tcg-opc.h +++ b/include/tcg/tcg-opc.h @@ -79,6 +79,9 @@ DEF(or, 1, 2, 0, TCG_OPF_INT) DEF(orc, 1, 2, 0, TCG_OPF_INT) DEF(rems, 1, 2, 0, TCG_OPF_INT) DEF(remu, 1, 2, 0, TCG_OPF_INT) +DEF(revbit8, 1, 1, 0, TCG_OPF_INT) +DEF(revbit32, 1, 1, 1, TCG_OPF_INT) +DEF(revbit64, 1, 1, 0, TCG_OPF_INT) DEF(rotl, 1, 2, 0, TCG_OPF_INT) DEF(rotr, 1, 2, 0, TCG_OPF_INT) DEF(sar, 1, 2, 0, TCG_OPF_INT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index c24a7962fc..c302a484cd 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1270,15 +1270,26 @@ void tcg_gen_hswap_i32(TCGv_i32 ret, TCGv_i32 arg) =20 void tcg_gen_revbit8_i32(TCGv_i32 ret, TCGv_i32 arg) { - gen_bitswap_i32(ret, arg, 0x55555555u); - gen_bitswap_i32(ret, ret, 0x33333333u); - gen_bitswap_i32(ret, ret, 0x0f0f0f0fu); + if (tcg_op_supported(INDEX_op_revbit8, TCG_TYPE_I32, 0)) { + tcg_gen_op2_i32(INDEX_op_revbit8, ret, arg); + } else if (tcg_op_supported(INDEX_op_revbit32, TCG_TYPE_I32, 0)) { + tcg_gen_op2_i32(INDEX_op_revbit32, ret, arg); + tcg_gen_bswap32_i32(ret, ret); + } else { + gen_bitswap_i32(ret, arg, 0x55555555u); + gen_bitswap_i32(ret, ret, 0x33333333u); + gen_bitswap_i32(ret, ret, 0x0f0f0f0fu); + } } =20 void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 arg) { - tcg_gen_revbit8_i32(ret, arg); - tcg_gen_bswap32_i32(ret, ret); + if (tcg_op_supported(INDEX_op_revbit32, TCG_TYPE_I32, 0)) { + tcg_gen_op3i_i32(INDEX_op_revbit32, ret, arg, 0); + } else { + tcg_gen_revbit8_i32(ret, arg); + tcg_gen_bswap32_i32(ret, ret); + } } =20 void tcg_gen_smin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) @@ -1870,23 +1881,50 @@ void tcg_gen_revbit32_i64(TCGv_i64 ret, TCGv_i64 ar= g, int flags) /* Only one extension flag may be present. */ tcg_debug_assert(!(flags & TCG_BSWAP_OS) || !(flags & TCG_BSWAP_OZ)); =20 - gen_bitswap_i64(ret, arg, 0x55555555ull); - gen_bitswap_i64(ret, ret, 0x33333333ull); - gen_bitswap_i64(ret, ret, 0x0f0f0f0full); - tcg_gen_bswap32_i64(ret, ret, flags | TCG_BSWAP_IZ); + if (tcg_op_supported(INDEX_op_revbit32, TCG_TYPE_I64, 0)) { + tcg_gen_op3i_i64(INDEX_op_revbit32, ret, arg, flags); + } else if (tcg_op_supported(INDEX_op_revbit64, TCG_TYPE_I64, 0)) { + tcg_gen_op2_i64(INDEX_op_revbit64, ret, arg); + if (flags & TCG_BSWAP_OS) { + tcg_gen_sari_i64(ret, ret, 32); + } else { + tcg_gen_shri_i64(ret, ret, 32); + } + } else { + if (tcg_op_supported(INDEX_op_revbit8, TCG_TYPE_I64, 0)) { + tcg_gen_op2_i64(INDEX_op_revbit8, ret, arg); + } else { + gen_bitswap_i64(ret, arg, 0x55555555ull); + gen_bitswap_i64(ret, ret, 0x33333333ull); + gen_bitswap_i64(ret, ret, 0x0f0f0f0full); + flags |=3D TCG_BSWAP_IZ; + } + tcg_gen_bswap32_i64(ret, ret, flags); + } } =20 void tcg_gen_revbit8_i64(TCGv_i64 ret, TCGv_i64 arg) { - gen_bitswap_i64(ret, arg, 0x5555555555555555ull); - gen_bitswap_i64(ret, ret, 0x3333333333333333ull); - gen_bitswap_i64(ret, ret, 0x0f0f0f0f0f0f0f0full); + if (tcg_op_supported(INDEX_op_revbit8, TCG_TYPE_I64, 0)) { + tcg_gen_op2_i64(INDEX_op_revbit8, ret, arg); + } else if (tcg_op_supported(INDEX_op_revbit64, TCG_TYPE_I64, 0)) { + tcg_gen_op2_i64(INDEX_op_revbit64, ret, arg); + tcg_gen_bswap64_i64(ret, ret); + } else { + gen_bitswap_i64(ret, arg, 0x5555555555555555ull); + gen_bitswap_i64(ret, ret, 0x3333333333333333ull); + gen_bitswap_i64(ret, ret, 0x0f0f0f0f0f0f0f0full); + } } =20 void tcg_gen_revbit64_i64(TCGv_i64 ret, TCGv_i64 arg) { - tcg_gen_revbit8_i64(ret, arg); - tcg_gen_bswap64_i64(ret, ret); + if (tcg_op_supported(INDEX_op_revbit64, TCG_TYPE_I64, 0)) { + tcg_gen_op2_i64(INDEX_op_revbit64, ret, arg); + } else { + tcg_gen_revbit8_i64(ret, arg); + tcg_gen_bswap64_i64(ret, ret); + } } =20 void tcg_gen_not_i64(TCGv_i64 ret, TCGv_i64 arg) diff --git a/tcg/tcg.c b/tcg/tcg.c index 937d0c8fd7..8a324ce885 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1203,6 +1203,7 @@ static const TCGOutOp * const all_outop[NB_OPS] =3D { OUTOP(INDEX_op_qemu_st2, TCGOutOpQemuLdSt2, outop_qemu_st2), OUTOP(INDEX_op_rems, TCGOutOpBinary, outop_rems), OUTOP(INDEX_op_remu, TCGOutOpBinary, outop_remu), + OUTOP(INDEX_op_revbit32, TCGOutOpBswap, outop_revbit32), OUTOP(INDEX_op_rotl, TCGOutOpBinary, outop_rotl), OUTOP(INDEX_op_rotr, TCGOutOpBinary, outop_rotr), OUTOP(INDEX_op_sar, TCGOutOpBinary, outop_sar), @@ -1230,6 +1231,8 @@ static const TCGOutOp * const all_outop[NB_OPS] =3D { OUTOP(INDEX_op_extrh_i64_i32, TCGOutOpUnary, outop_extrh_i64_i32), OUTOP(INDEX_op_ld32u, TCGOutOpLoad, outop_ld32u), OUTOP(INDEX_op_ld32s, TCGOutOpLoad, outop_ld32s), + OUTOP(INDEX_op_revbit8, TCGOutOpUnary, outop_revbit8), + OUTOP(INDEX_op_revbit64, TCGOutOpUnary, outop_revbit64), OUTOP(INDEX_op_st32, TCGOutOpStore, outop_st), }; =20 @@ -2950,6 +2953,7 @@ void tcg_dump_ops(TCGContext *s, FILE *f, bool have_p= refs) case INDEX_op_bswap16: case INDEX_op_bswap32: case INDEX_op_bswap64: + case INDEX_op_revbit32: { TCGArg flags =3D op->args[k]; const char *name =3D NULL; @@ -5581,6 +5585,8 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG= Op *op) case INDEX_op_ctpop: case INDEX_op_neg: case INDEX_op_not: + case INDEX_op_revbit8: + case INDEX_op_revbit64: { const TCGOutOpUnary *out =3D container_of(all_outop[op->opc], TCGOutOpUnary, base); @@ -5593,6 +5599,7 @@ static void tcg_reg_alloc_op(TCGContext *s, const TCG= Op *op) =20 case INDEX_op_bswap16: case INDEX_op_bswap32: + case INDEX_op_revbit32: { const TCGOutOpBswap *out =3D container_of(all_outop[op->opc], TCGOutOpBswap, base); diff --git a/docs/devel/tcg-ops.rst b/docs/devel/tcg-ops.rst index 92ef127c80..f2e9255dd9 100644 --- a/docs/devel/tcg-ops.rst +++ b/docs/devel/tcg-ops.rst @@ -495,6 +495,22 @@ Misc into 32-bit output *t0*. Depending on the host, this may be a si= mple shift, or may require additional canonicalization. =20 + * - revbit8 *dest*, *t1* + + - | Reverse the 8 bits within each byte of input *t1* with + | output in *dest*; the byte order is unchanged. + + * - revbit32 *dest*, *t1*, *flags* + + - | Reverse the 32 bits of the lower 32 bits of input *t1* + | with output in *dest*. On TCG_TYPE_I64, *flags* control + | any required sign or zero extension of the result in + | the same way as for bswap32. + | On TCG_TYPE_I32, *flags* should be zero. + + * - revbit64 *dest*, *t1* + + - | Reverse the 64 bits of input *t1* with output in *dest*. =20 Conditional moves ----------------- diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc index cc9c2a5158..0afa988087 100644 --- a/tcg/aarch64/tcg-target.c.inc +++ b/tcg/aarch64/tcg-target.c.inc @@ -2652,6 +2652,18 @@ static const TCGOutOpUnary outop_bswap64 =3D { .out_rr =3D tgen_bswap64, }; =20 +static const TCGOutOpUnary outop_revbit8 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBswap outop_revbit32 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpUnary outop_revbit64 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) { tgen_sub(s, type, a0, TCG_REG_XZR, a1); diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.= c.inc index 182dcfd5eb..97ed51d99c 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -1866,6 +1866,18 @@ static const TCGOutOpUnary outop_bswap64 =3D { .out_rr =3D tgen_bswap64, }; =20 +static const TCGOutOpUnary outop_revbit8 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBswap outop_revbit32 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpUnary outop_revbit64 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) { tgen_sub(s, type, a0, TCG_REG_ZERO, a1); diff --git a/tcg/ppc64/tcg-target.c.inc b/tcg/ppc64/tcg-target.c.inc index b54afa0b6d..07dff67e84 100644 --- a/tcg/ppc64/tcg-target.c.inc +++ b/tcg/ppc64/tcg-target.c.inc @@ -3421,6 +3421,18 @@ static const TCGOutOpUnary outop_bswap64 =3D { .out_rr =3D tgen_bswap64, }; =20 +static const TCGOutOpUnary outop_revbit8 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBswap outop_revbit32 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpUnary outop_revbit64 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) { tcg_out32(s, NEG | RT(a0) | RA(a1)); diff --git a/tcg/riscv64/tcg-target.c.inc b/tcg/riscv64/tcg-target.c.inc index 76dd4fca97..687146e0b0 100644 --- a/tcg/riscv64/tcg-target.c.inc +++ b/tcg/riscv64/tcg-target.c.inc @@ -2469,6 +2469,18 @@ static const TCGOutOpUnary outop_bswap64 =3D { .out_rr =3D tgen_bswap64, }; =20 +static const TCGOutOpUnary outop_revbit8 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBswap outop_revbit32 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpUnary outop_revbit64 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) { tgen_sub(s, type, a0, TCG_REG_ZERO, a1); diff --git a/tcg/s390x/tcg-target.c.inc b/tcg/s390x/tcg-target.c.inc index 84a9e73a46..c481745c3f 100644 --- a/tcg/s390x/tcg-target.c.inc +++ b/tcg/s390x/tcg-target.c.inc @@ -3020,6 +3020,18 @@ static const TCGOutOpUnary outop_bswap64 =3D { .out_rr =3D tgen_bswap64, }; =20 +static const TCGOutOpUnary outop_revbit8 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBswap outop_revbit32 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpUnary outop_revbit64 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) { if (type =3D=3D TCG_TYPE_I32) { diff --git a/tcg/sparc64/tcg-target.c.inc b/tcg/sparc64/tcg-target.c.inc index 5e5c3f1cda..d6ed9d3362 100644 --- a/tcg/sparc64/tcg-target.c.inc +++ b/tcg/sparc64/tcg-target.c.inc @@ -1947,6 +1947,18 @@ static const TCGOutOpUnary outop_bswap64 =3D { .base.static_constraint =3D C_NotImplemented, }; =20 +static const TCGOutOpUnary outop_revbit8 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBswap outop_revbit32 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpUnary outop_revbit64 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) { tgen_sub(s, type, a0, TCG_REG_G0, a1); diff --git a/tcg/tci/tcg-target.c.inc b/tcg/tci/tcg-target.c.inc index 1b22c70616..1b61668517 100644 --- a/tcg/tci/tcg-target.c.inc +++ b/tcg/tci/tcg-target.c.inc @@ -959,6 +959,18 @@ static const TCGOutOpUnary outop_bswap64 =3D { .out_rr =3D tgen_bswap64, }; =20 +static const TCGOutOpUnary outop_revbit8 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBswap outop_revbit32 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpUnary outop_revbit64 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) { tcg_out_op_rr(s, INDEX_op_neg, a0, a1); diff --git a/tcg/x86_64/tcg-target.c.inc b/tcg/x86_64/tcg-target.c.inc index 1fc45e4ec6..37acba9045 100644 --- a/tcg/x86_64/tcg-target.c.inc +++ b/tcg/x86_64/tcg-target.c.inc @@ -1290,6 +1290,18 @@ static inline void tcg_out_bswap64(TCGContext *s, in= t reg) tcg_out_opc(s, OPC_BSWAP + P_REXW + LOWREGMASK(reg), 0, reg, 0); } =20 +static const TCGOutOpUnary outop_revbit8 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBswap outop_revbit32 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpUnary outop_revbit64 =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_arithi(TCGContext *s, int c, int r0, tcg_target_long val, int cf) { --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072637; cv=none; d=zohomail.com; s=zohoarc; b=TbTeSSm2GyGE+XkPmARqwzDMB/9BoukD6FZzX4htRxUSgWxBQTaGn20CTHxN004IIq0uTMwfZ0Ne7wpfbTNjI/45tgy7zbfXQGymkYyDJ3RkbgVZlGOzKCG8niNivBSzXRKV8dFP19+haas+cY58geuACr3f6nq65PgmXQbmVpc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072637; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8mqh/eNsWz9ZiMCibf4a1NtHt1J/mT5D6YWhVmQF1HQ=; b=l/RxmiSIF5/j+ZstO8GGZaWXnsWWTOK6VzLbyabkbT2ssrm83wMcXE1TidM+z6wyYWt2m0D/fyvO1PTRRg8mqWH6C35zUNuK7iXmk7AgM1l2iz4NGrTIgEwhgbeEXujLaWfYsXaaXlZkk/Qrw5r2aUC6ljjGeyN9MuxR+Itb1hA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072637972412.7974458284199; Tue, 18 Aug 2026 10:03:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCe-0007Tg-OP; Tue, 18 Aug 2026 13:02:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCd-0007Sl-EB for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:19 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCb-0004kh-C3 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:19 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-8518d5ddaabso166599b3a.2 for ; Tue, 18 Aug 2026 10:02:16 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072536; x=1787677336; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=8mqh/eNsWz9ZiMCibf4a1NtHt1J/mT5D6YWhVmQF1HQ=; b=xVPJvhp16wUu7r4+RuWEoYifrW+pnYnQwKt6rxST3KRYjfxaz3xPrCKyJVUJmBo2UP pffyeXo5I4cG8cooSxQca77Q88hM8gtcy07WrtTyBOyePzNICz+j6QH2SpJsqMiJpHal vlIQSMDFe9MOXpnfdAzjONd4EdQ2kyscs/u6bhjEIL7dEbu17kq6UOEplN8ypY2fEoie MpzAR7VvfWq+bFiB9YGPYjr3HIiW+c6QN/SA+qyVfvh4cji8WSPiWceVUHtnbU1lqzmk 4OZ3v++EMOSSWVH94GA1X0Uxqb5EDnYx8ANhMI0N3O8tB6aW7DyFVBpRN7t/vpMxFHMr ZuEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072536; x=1787677336; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=8mqh/eNsWz9ZiMCibf4a1NtHt1J/mT5D6YWhVmQF1HQ=; b=plTv7yJTEIwdqGeW8VknE5d16bvdnVcuWR/UZvoLe+ZFZLWVGrcipyWr7Icuit9pjs ke2DBz9QoG86cL0Gn32T+/S8utHGz7uHY0z3INKSgTEqHroQDEHzPcwredXvLCZNcOrV Uku9b+TCkQgsEynefRiJVtv283EIVDefdiZT88118/Y6q33B5ionXjLeUy722kLygLRd XwBaWtI/8vqJwNrnZ6hw7LrFLO9v0rnwAQMbtrJ/W9GiU2/qtkMyh29GzUsESjF0vwJn 4nA1hO7IWhV0QhLrwKTluBuR2/Frw1mt3Z041EGI9l6wAf8iuDruP5prHEYZY7M4Svoe 9ahg== X-Gm-Message-State: AOJu0YyRXmZ6Fv0fWtWNImgvBR/Cre84NCzoqcm1atyU7dtdJR5zanBu h4N8jLkfQhflH12Lcae4wB2exLAKMzCT4hi1OVXJ+Uhm9t5nn2EQSQrwPLBfeFKsLDplYkSLVY9 UKnPWRf0= X-Gm-Gg: AR+sD129BeTcs0RhJaaI2jLBYujp7n0+kbq+vY9WdwFk82rBaiiRqKH06xIuYE2LVSl 55ArG10dtTz7cc0Q9xDVh2vA0xHz9qQL3tgtIE8B0NmMZ0bs23wmFkzcIZH6iD4oWe0ArcTEFng 8cB8Sgu/BLVUg81SYcYob07fC8ql5nL04stBMlRsVtCHR5o+mN1fEjFjFakakKYQgxdQ3zXxlGe Zgd/IzgwRE6k3/i6UR+dBuqiaDpaWTVr3Yiu5DGFwtgoVX8fdgjGX7qnlmALi5MZqBAZAHRuW9j LMSXgq2cghS4I3tjrODkJoXUUcPez86L8cpNSbDPlVAHHrpcwrJdnVUsJ0yStzhpBP6MLpuNdMd DMAE4V8gt604cTdNRLhhOO4hHJwWvPn7WBFSnKi9UtJAojdnEbq4AYUvsktqEzbMFxMEPv5B880 NqBjgUndPz3eUSE+q9Dmwnuam4004tuvGygKoYgryTtbWsqY4B+TzB+iG9NfDM2J8JDcfAtMMzg hITREkry0rojCcsQtnylHscdgu2PDWwZ/o= X-Received: by 2002:a05:6a00:4193:b0:848:5f4f:289d with SMTP id d2e1a72fcca58-84fde14ffdemr39295754b3a.4.1787072535898; Tue, 18 Aug 2026 10:02:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 15/38] tcg/optimize: Handle revbit{8,32,64} Date: Tue, 18 Aug 2026 10:01:32 -0700 Message-ID: <20260818170155.1907006-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072639358158500 These are nearly identical to bswap, so reuse fold_bswap. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/optimize.c | 77 +++++++++++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 32 deletions(-) diff --git a/tcg/optimize.c b/tcg/optimize.c index d12babad88..facf4c1e0f 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -534,6 +534,20 @@ static uint64_t do_constant_folding_2(TCGOpcode op, TC= GType type, case INDEX_op_bswap64: return bswap64(x); =20 + case INDEX_op_revbit8: + /* Note the host-utils.h revbit8 operates on uint8_t. */ + if (type =3D=3D TCG_TYPE_I32) { + return bswap32(revbit32(x)); + } + return bswap64(revbit64(x)); + + case INDEX_op_revbit32: + x =3D revbit32(x); + return y & TCG_BSWAP_OS ? (int32_t)x : x; + + case INDEX_op_revbit64: + return revbit64(x); + case INDEX_op_ext_i32_i64: return (int32_t)x; =20 @@ -1483,7 +1497,26 @@ static bool fold_bswap(OptContext *ctx, TCGOp *op) { uint64_t z_mask, o_mask, s_mask; TempOptInfo *t1 =3D arg_info(op->args[1]); - int flags =3D op->args[2]; + int flags =3D 0; + + switch (op->opc) { + case INDEX_op_bswap16: + flags =3D op->args[2]; + s_mask =3D INT16_MIN; + break; + case INDEX_op_bswap32: + case INDEX_op_revbit32: + flags =3D op->args[2]; + s_mask =3D INT32_MIN; + break; + case INDEX_op_bswap64: + case INDEX_op_revbit8: + case INDEX_op_revbit64: + s_mask =3D 0; + break; + default: + g_assert_not_reached(); + } =20 if (ti_is_const(t1)) { return tcg_opt_gen_movi(ctx, op, op->args[0], @@ -1491,39 +1524,16 @@ static bool fold_bswap(OptContext *ctx, TCGOp *op) ti_const_val(t1), flag= s)); } =20 - z_mask =3D t1->z_mask; - o_mask =3D t1->o_mask; - s_mask =3D 0; + z_mask =3D do_constant_folding(op->opc, ctx->type, t1->z_mask, flags); + o_mask =3D do_constant_folding(op->opc, ctx->type, t1->o_mask, flags); =20 - switch (op->opc) { - case INDEX_op_bswap16: - z_mask =3D bswap16(z_mask); - o_mask =3D bswap16(o_mask); - if (flags & TCG_BSWAP_OS) { - z_mask =3D (int16_t)z_mask; - o_mask =3D (int16_t)o_mask; - s_mask =3D INT16_MIN; - } else if (!(flags & TCG_BSWAP_OZ)) { - z_mask |=3D MAKE_64BIT_MASK(16, 48); + if (flags & TCG_BSWAP_OS) { + /* s_mask set */ + } else { + if (!(flags & TCG_BSWAP_OZ)) { + z_mask |=3D s_mask << 1; } - break; - case INDEX_op_bswap32: - z_mask =3D bswap32(z_mask); - o_mask =3D bswap32(o_mask); - if (flags & TCG_BSWAP_OS) { - z_mask =3D (int32_t)z_mask; - o_mask =3D (int32_t)o_mask; - s_mask =3D INT32_MIN; - } else if (!(flags & TCG_BSWAP_OZ)) { - z_mask |=3D MAKE_64BIT_MASK(32, 32); - } - break; - case INDEX_op_bswap64: - z_mask =3D bswap64(z_mask); - o_mask =3D bswap64(o_mask); - break; - default: - g_assert_not_reached(); + s_mask =3D 0; } =20 return fold_masks_zos(ctx, op, z_mask, o_mask, s_mask); @@ -3104,6 +3114,9 @@ void tcg_optimize(TCGContext *s) case INDEX_op_bswap16: case INDEX_op_bswap32: case INDEX_op_bswap64: + case INDEX_op_revbit8: + case INDEX_op_revbit32: + case INDEX_op_revbit64: done =3D fold_bswap(&ctx, op); break; case INDEX_op_clz: --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072634; cv=none; d=zohomail.com; s=zohoarc; b=f9eLgu6+oJ7iBGIIJchw6g7Kw1e5yIdMDrb51vrlbJi/NkFreI+/E71Sgeo4hNkC5KwUrtkbNR0peRmX8FZI9PnimRLtv8cXRxL4mPWKIlwGphYVniR+B1020km6mOTjhIoZ34bncO2UXbtKs4YIMspka3ZsvkZWiLWG26sn+c4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072634; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=PNBZwXtGw/7SqTqr09BkkYdWVCo+PU/5thxbzztQAsQ=; b=BOqwPi5sfzyCbnjBkQbVEJH2+SNxTh+TbdAoIssXYEFa/c2z7SridnJ4KcuRjOPuRBajdqTyg0bpYHunZFl5bTcpW+ZmYEFcG4TmmD6UQJJeNRRCmoac62yfAfA8symvEkSojzaPL2Qb+XKos6AODqO2Zj5Oub+7jR/PsYxtcXs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072634242293.36462751376087; Tue, 18 Aug 2026 10:03:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCf-0007Tj-4N; Tue, 18 Aug 2026 13:02:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCe-0007T0-1N for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:20 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCc-0004lF-F0 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:19 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-8487214ad2bso242655b3a.1 for ; Tue, 18 Aug 2026 10:02:18 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072537; x=1787677337; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=PNBZwXtGw/7SqTqr09BkkYdWVCo+PU/5thxbzztQAsQ=; b=JgvMxn7DJDCeTwJRCkFc3bMndtxbcMlTzn7N6AtSLf9tb+za8YtRQ3hZrJZQmRQVKm q2WkTDggJKAh/fgMr0ZVwAXAK96apWzvHtuBbDf8qkBXwCUuOOlDMjJS3MDAvzjkUe7Q rgOeTMLt0elbWRuL2YYxTCi3q9G6BEFk9adDfYY+nr90FmcnnPisKb20INzKQVzRZ2YW Tzy70oNjOzUq1pzCJYhFF8TQCQAfj8ZGRCRvulRpMmw8tQ27sqTCN7PdOYbYFpaTyZWU 5TxRFYVSwV/EM5NmmG/KwEsRoPOlOTGVYriLH0/suGyIxSTVNOEX9c0btfwiwyds9PAF fTeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072537; x=1787677337; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=PNBZwXtGw/7SqTqr09BkkYdWVCo+PU/5thxbzztQAsQ=; b=M1onWdDmo1xBs11eDzsAea2SrSThQI3+TaQLAHSoasOj+Vzu6OHNndGzWRBQ32FGqR E43JzQ5zbSEHSNf7pyFGG3LSrUpdFFhmgaUuaiQ8yNT98q6z56cISJEziw+N5We8G2H2 Bbtx2LnVibjRkJtw4l4nyqnbaqP5jZ5d6XMVlKS/1I1jQknsfE+UjmGCRNRm0NHKiCy1 Kq2MtHRDZ4ZoKU4NMs3vL4KbOsfzI0dTbuj+l+xB6JIgxmz5ghLrAe1G7Al6rjL8ibn4 HvdFfHFsN2clyFtHpi7pSbzADHK2nmsIBY1mW3JjKcfjHSEEzlLv3UXB7I8dRxyoE/RE rhzA== X-Gm-Message-State: AOJu0YyE/WTEl874vjbY16nE4RFdbqk+0/2xAkAe/jZk+DwXHWE9FDaJ CaHIsrOcP1dqBYTOZ7AlTZcjemx3G4i2YwrS91iEpn0l3YK8MHVNPRcq9lfCN17fkeH1yc/XpQ5 Y2suAE7I= X-Gm-Gg: AR+sD13KDoumrJz4Ys6vXtJnJeNaU3mO1d2aHT5haxywG2eZ+O9e/R23eS8rLl/Epjq thMVx2/Fo1NUIy3OrL66tJh0d86GzgmHk1dpTvanwO+Xt43k00qdRlL59hySQDbah5vfJ2rwwiK uSfk2KQ5WHlBKIjTe8UvUusUWu+c4HbZ7Vnync8ygFYqwH0ICPHO9O9d34zLgLl6tYXXup860Hd aGNMYXltres5XZVGYXJ1jcdDhIkEVqjlxlSfQt7lfxVcyL+NDMR34O/cBI13gOHP+6LJedvgPe6 dcTIYJA2HsLQ2F3wqbkwrUQB01Y3yjZh4bNdG1jUr7JX6LccJtCSpCyWnFbA6YTzV4F0qOKmgut rs4VxZj3uQn9t4aNAG/o+xMH48UTEMxI6tRLHgHALRLg27XuH/l1xuObLPMT3MWW4UoNSZpVaV8 zJQYy/EzY+w/unZ3SmYSRWIQOTjWvhMgMGeE1vmwlWZfHRn+feSOQZIIZwUh4Sspe9wvURvUNgj bUhNOoKcFMXO0sUxTNQ6T//H/Q7+isWs+A= X-Received: by 2002:a05:6a00:10c9:b0:848:2c2e:c7a3 with SMTP id d2e1a72fcca58-84fde012431mr32978049b3a.16.1787072537082; Tue, 18 Aug 2026 10:02:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 16/38] tcg/aarch64: Implement revbit{32,64} Date: Tue, 18 Aug 2026 10:01:33 -0700 Message-ID: <20260818170155.1907006-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072635271158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- tcg/aarch64/tcg-target.c.inc | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc index 0afa988087..80995403e4 100644 --- a/tcg/aarch64/tcg-target.c.inc +++ b/tcg/aarch64/tcg-target.c.inc @@ -2656,12 +2656,28 @@ static const TCGOutOpUnary outop_revbit8 =3D { .base.static_constraint =3D C_NotImplemented, }; =20 +static void tgen_revbit32(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, unsigned flags) +{ + tcg_out_insn(s, rr_sf, RBIT, TCG_TYPE_I32, a0, a1); + if (flags & TCG_BSWAP_OS) { + tcg_out_ext32s(s, a0, a0); + } +} + static const TCGOutOpBswap outop_revbit32 =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_O1_I1(r, r), + .out_rr =3D tgen_revbit32, }; =20 +static void tgen_revbit64(TCGContext *s, TCGType type, TCGReg a0, TCGReg a= 1) +{ + tcg_out_insn(s, rr_sf, RBIT, TCG_TYPE_I64, a0, a1); +} + static const TCGOutOpUnary outop_revbit64 =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_O1_I1(r, r), + .out_rr =3D tgen_revbit64, }; =20 static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072597; cv=none; d=zohomail.com; s=zohoarc; b=BgnlmPtrSW4L6HB5LZHLbjz9etRbQX7gCsk4jtZdo4NOQ5RoQOpcIfyWUSDMsmhfQWQIEmoFCkDQflUr2W0gYotEYBZtXc+n4ouibcsT+SSBwofe47JDPi3dD3Cu8iWboMp585ybphDb7EZmQhfq6/X2hVVWnS/5Wg6EkKE2uOI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072597; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=DBQIgGtWyeogo0/WHlWkw9M6+qGOO5XHe2Ea+hps8cA=; b=OMcossTI8GoKgit6OCTPMN+0S7DOhmUCQtyzsWprUVsv6oEwhLr+y3isUufRvzmLV9lon8AdP5l1uaXG1Uj17TJqYX8YuNw7o+NJVvzb3Q4oX3KVnlea8LnHmirpB99sXUB8j7sW5OYJ0yn9xK2Jwz9r0k8rgutCULFM8iIcWZU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072597530389.1053971329776; Tue, 18 Aug 2026 10:03:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCm-0007Vj-4x; Tue, 18 Aug 2026 13:02:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCk-0007VD-Ho for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:26 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCf-0004n8-MI for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:26 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-84e3007a2b7so160598b3a.0 for ; Tue, 18 Aug 2026 10:02:21 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.17 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072540; x=1787677340; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=DBQIgGtWyeogo0/WHlWkw9M6+qGOO5XHe2Ea+hps8cA=; b=jBRm+itrBDPnnC/zXYwCyhyi8WFrd/wB7rRZiyJ3HXzB4nrIjP0P1NcyyiUFV0lVBH D501xtnz8RIee4OHeQXMSvyv1j5J5I0ZN4tP8Z5xBrLr37BEFgGIXQ6zHq4T6OWywote 27/2/fK0vkwX7sIBcNuhnjS/TKxgfgt430WoYPxaq7ySPg/o0g9i4Lw4JJMu/pYDr8QR DW0vitdsnpGOHhdj6Jo0Rq4SF/sJfcBujJxQx+ZK/wXHFL10Tmro+GAI2SZCycrZ91Oj YfkCNuko6Qfw89F5XpgEvpu4ahvZgWYamXqwrh87BQnCwP+woCdLBBFzXQMVBq6nYFMW YvMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072540; x=1787677340; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=DBQIgGtWyeogo0/WHlWkw9M6+qGOO5XHe2Ea+hps8cA=; b=VELn9YijDme9v9EHA42rCIqzMSbiB7/tPVVow7mtf5kP7KOwNzoryWYsZY2geLfZPd pmqW800Tv54TZcweTKA+J4WVtlme7H0lJFSxRFFF3MJR2FeK4QrPU7FCTy2yMY1X05jr V+5J7udDPlCVAx3DTqfqREG6tuFaUNYsyVjL9K3WETqoGTH14q7mD+o19ggfGl9wKjpP 23R/zxDQ1VWz9fua+E1DMGmTv8OGjDaJjb8QyQuyUvw70jy7LufdL6hKk/9x4LuY9G5t rPRb1KoEQbX8eql2hlCmQmSQRnbqntGxiAELyBg9VD+W62tA6hXDZ6mW8WKvuoYZ0x5q uFYQ== X-Gm-Message-State: AOJu0YwcfPCUOogN1a4aJLdm/eMNtSSPn911m/dpACQ95ptI8N93s4MO DqoQnQiZHoD0FXDa3PM5L7zsNR+9YB4MEu1e2KPYs95qlY9ec7uaNOE7ZxlVPf6hsX7IpQ0XGXr th/aiWds= X-Gm-Gg: AR+sD1340vI1bk8xG1gXvbbDX9Mywj50MRXlePAvHYyddEfMLn7vHSFFb2oSDBFZ+wn Xu7Cv2NLtZP9No9iOQD0HzLMq/gVHD+1iI/+gd93h9CAG5xt7GEV01vQaXiTPYHZB3ULbxI05D1 STsdloTPkdPQyrJ9Z+qjew/Jwxcctnaa99jOwrJBHqQaWwgGghATyk0KUv2yiMwHA8D7P8Qxu0s RM/ZwCoLVy97KDnzoZI84AnRk5HOulH0pVnapYXDL5FI9wS5KAJR8eNrH28dtGzGCkLpOUD615Y 0itETLlHn8yku8dMhakoxMWfxIVAwmz/ufIT/k+cK4bAOMUm54DcerVL/NqDWYOeSe4ldsw0on0 3ShxNaxCaL8AJhKgJngcicU+61jbgaFB8qMxZhPknaZyjV4PshEfmDzppd9MBm9BPihj4Yu2VuI DMIMQx8hSkYXd1rDuUoOYg9NeO5jtXfBwRz2f/BK2dGZCkQ1EmZrvfQ7DrzXxHCbjeyZ2WCw3EE 0MB2/7DvrXLJlwXvAISNbEoaMF6OESch+0= X-Received: by 2002:a05:6a00:a244:b0:82f:9d21:d352 with SMTP id d2e1a72fcca58-84fde15f198mr33638033b3a.9.1787072538551; Tue, 18 Aug 2026 10:02:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 17/38] tcg/loongarch64: Import REVBIT insns Date: Tue, 18 Aug 2026 10:01:34 -0700 Message-ID: <20260818170155.1907006-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072599151158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- tcg/loongarch64/tcg-insn-defs.c.inc | 960 +++++++++++++++------------- 1 file changed, 503 insertions(+), 457 deletions(-) diff --git a/tcg/loongarch64/tcg-insn-defs.c.inc b/tcg/loongarch64/tcg-insn= -defs.c.inc index 6bb8656fd8..e907fc755f 100644 --- a/tcg/loongarch64/tcg-insn-defs.c.inc +++ b/tcg/loongarch64/tcg-insn-defs.c.inc @@ -4,7 +4,7 @@ * * This file is auto-generated by genqemutcgdefs from * https://github.com/loongson-community/loongarch-opcodes, - * from commit 7f353fb69bd99ce6edfad7ad63948c4bb526f0bf. + * from commit 1b95bb8c443ad71e266120fd97bd227df2d8ecfc. * DO NOT EDIT. */ =20 @@ -18,6 +18,10 @@ typedef enum { OPC_REVB_2H =3D 0x00003000, OPC_REVB_2W =3D 0x00003800, OPC_REVB_D =3D 0x00003c00, + OPC_REVBIT_4B =3D 0x00004800, + OPC_REVBIT_8B =3D 0x00004c00, + OPC_REVBIT_W =3D 0x00005000, + OPC_REVBIT_D =3D 0x00005400, OPC_SEXT_H =3D 0x00005800, OPC_SEXT_B =3D 0x00005c00, OPC_ADD_W =3D 0x00100000, @@ -545,14 +549,14 @@ typedef enum { OPC_XVLDI =3D 0x77e00000, } LoongArchInsn; =20 -static int32_t __attribute__((unused)) -encode_d_slot(LoongArchInsn opc, uint32_t d) +static int32_t __attribute__((unused)) encode_d_slot(LoongArchInsn opc, + uint32_t d) { return opc | d; } =20 -static int32_t __attribute__((unused)) -encode_dj_slots(LoongArchInsn opc, uint32_t d, uint32_t j) +static int32_t __attribute__((unused)) encode_dj_slots(LoongArchInsn opc, + uint32_t d, uint32_= t j) { return opc | d | j << 5; } @@ -563,43 +567,43 @@ encode_djk_slots(LoongArchInsn opc, uint32_t d, uint3= 2_t j, uint32_t k) return opc | d | j << 5 | k << 10; } =20 -static int32_t __attribute__((unused)) -encode_djka_slots(LoongArchInsn opc, uint32_t d, uint32_t j, uint32_t k, - uint32_t a) +static int32_t __attribute__((unused)) encode_djka_slots(LoongArchInsn opc, + uint32_t d, uint3= 2_t j, + uint32_t k, uint3= 2_t a) { return opc | d | j << 5 | k << 10 | a << 15; } =20 -static int32_t __attribute__((unused)) -encode_djkm_slots(LoongArchInsn opc, uint32_t d, uint32_t j, uint32_t k, - uint32_t m) +static int32_t __attribute__((unused)) encode_djkm_slots(LoongArchInsn opc, + uint32_t d, uint3= 2_t j, + uint32_t k, uint3= 2_t m) { return opc | d | j << 5 | k << 10 | m << 16; } =20 -static int32_t __attribute__((unused)) -encode_djkn_slots(LoongArchInsn opc, uint32_t d, uint32_t j, uint32_t k, - uint32_t n) +static int32_t __attribute__((unused)) encode_djkn_slots(LoongArchInsn opc, + uint32_t d, uint3= 2_t j, + uint32_t k, uint3= 2_t n) { return opc | d | j << 5 | k << 10 | n << 18; } =20 -static int32_t __attribute__((unused)) -encode_dk_slots(LoongArchInsn opc, uint32_t d, uint32_t k) +static int32_t __attribute__((unused)) encode_dk_slots(LoongArchInsn opc, + uint32_t d, uint32_= t k) { return opc | d | k << 10; } =20 -static int32_t __attribute__((unused)) -encode_dfj_insn(LoongArchInsn opc, TCGReg d, TCGReg fj) +static int32_t __attribute__((unused)) encode_dfj_insn(LoongArchInsn opc, + TCGReg d, TCGReg fj) { tcg_debug_assert(d >=3D 0 && d <=3D 0x1f); tcg_debug_assert(fj >=3D 0x20 && fj <=3D 0x3f); return encode_dj_slots(opc, d, fj & 0x1f); } =20 -static int32_t __attribute__((unused)) -encode_dj_insn(LoongArchInsn opc, TCGReg d, TCGReg j) +static int32_t __attribute__((unused)) encode_dj_insn(LoongArchInsn opc, + TCGReg d, TCGReg j) { tcg_debug_assert(d >=3D 0 && d <=3D 0x1f); tcg_debug_assert(j >=3D 0 && j <=3D 0x1f); @@ -669,9 +673,10 @@ encode_djuk5_insn(LoongArchInsn opc, TCGReg d, TCGReg = j, uint32_t uk5) return encode_djk_slots(opc, d, j, uk5); } =20 -static int32_t __attribute__((unused)) -encode_djuk5um5_insn(LoongArchInsn opc, TCGReg d, TCGReg j, uint32_t uk5, - uint32_t um5) +static int32_t __attribute__((unused)) encode_djuk5um5_insn(LoongArchInsn = opc, + TCGReg d, TCGR= eg j, + uint32_t uk5, + uint32_t um5) { tcg_debug_assert(d >=3D 0 && d <=3D 0x1f); tcg_debug_assert(j >=3D 0 && j <=3D 0x1f); @@ -689,9 +694,10 @@ encode_djuk6_insn(LoongArchInsn opc, TCGReg d, TCGReg = j, uint32_t uk6) return encode_djk_slots(opc, d, j, uk6); } =20 -static int32_t __attribute__((unused)) -encode_djuk6um6_insn(LoongArchInsn opc, TCGReg d, TCGReg j, uint32_t uk6, - uint32_t um6) +static int32_t __attribute__((unused)) encode_djuk6um6_insn(LoongArchInsn = opc, + TCGReg d, TCGR= eg j, + uint32_t uk6, + uint32_t um6) { tcg_debug_assert(d >=3D 0 && d <=3D 0x1f); tcg_debug_assert(j >=3D 0 && j <=3D 0x1f); @@ -700,16 +706,16 @@ encode_djuk6um6_insn(LoongArchInsn opc, TCGReg d, TCG= Reg j, uint32_t uk6, return encode_djkm_slots(opc, d, j, uk6, um6); } =20 -static int32_t __attribute__((unused)) -encode_dsj20_insn(LoongArchInsn opc, TCGReg d, int32_t sj20) +static int32_t __attribute__((unused)) encode_dsj20_insn(LoongArchInsn opc, + TCGReg d, int32_t= sj20) { tcg_debug_assert(d >=3D 0 && d <=3D 0x1f); tcg_debug_assert(sj20 >=3D -0x80000 && sj20 <=3D 0x7ffff); return encode_dj_slots(opc, d, sj20 & 0xfffff); } =20 -static int32_t __attribute__((unused)) -encode_dtj_insn(LoongArchInsn opc, TCGReg d, TCGReg tj) +static int32_t __attribute__((unused)) encode_dtj_insn(LoongArchInsn opc, + TCGReg d, TCGReg tj) { tcg_debug_assert(d >=3D 0 && d <=3D 0x1f); tcg_debug_assert(tj >=3D 0 && tj <=3D 0x3); @@ -770,16 +776,16 @@ encode_dxjuk3_insn(LoongArchInsn opc, TCGReg d, TCGRe= g xj, uint32_t uk3) return encode_djk_slots(opc, d, xj & 0x1f, uk3); } =20 -static int32_t __attribute__((unused)) -encode_fdfj_insn(LoongArchInsn opc, TCGReg fd, TCGReg fj) +static int32_t __attribute__((unused)) encode_fdfj_insn(LoongArchInsn opc, + TCGReg fd, TCGReg = fj) { tcg_debug_assert(fd >=3D 0x20 && fd <=3D 0x3f); tcg_debug_assert(fj >=3D 0x20 && fj <=3D 0x3f); return encode_dj_slots(opc, fd & 0x1f, fj & 0x1f); } =20 -static int32_t __attribute__((unused)) -encode_fdj_insn(LoongArchInsn opc, TCGReg fd, TCGReg j) +static int32_t __attribute__((unused)) encode_fdj_insn(LoongArchInsn opc, + TCGReg fd, TCGReg j) { tcg_debug_assert(fd >=3D 0x20 && fd <=3D 0x3f); tcg_debug_assert(j >=3D 0 && j <=3D 0x1f); @@ -804,37 +810,37 @@ encode_fdjsk12_insn(LoongArchInsn opc, TCGReg fd, TCG= Reg j, int32_t sk12) return encode_djk_slots(opc, fd & 0x1f, j, sk12 & 0xfff); } =20 -static int32_t __attribute__((unused)) -encode_sd10k16_insn(LoongArchInsn opc, int32_t sd10k16) +static int32_t __attribute__((unused)) encode_sd10k16_insn(LoongArchInsn o= pc, + int32_t sd10k16) { tcg_debug_assert(sd10k16 >=3D -0x2000000 && sd10k16 <=3D 0x1ffffff); return encode_dk_slots(opc, (sd10k16 >> 16) & 0x3ff, sd10k16 & 0xffff); } =20 -static int32_t __attribute__((unused)) -encode_sd5k16_insn(LoongArchInsn opc, int32_t sd5k16) +static int32_t __attribute__((unused)) encode_sd5k16_insn(LoongArchInsn op= c, + int32_t sd5k16) { tcg_debug_assert(sd5k16 >=3D -0x100000 && sd5k16 <=3D 0xfffff); return encode_dk_slots(opc, (sd5k16 >> 16) & 0x1f, sd5k16 & 0xffff); } =20 -static int32_t __attribute__((unused)) -encode_tdj_insn(LoongArchInsn opc, TCGReg td, TCGReg j) +static int32_t __attribute__((unused)) encode_tdj_insn(LoongArchInsn opc, + TCGReg td, TCGReg j) { tcg_debug_assert(td >=3D 0 && td <=3D 0x3); tcg_debug_assert(j >=3D 0 && j <=3D 0x1f); return encode_dj_slots(opc, td, j); } =20 -static int32_t __attribute__((unused)) -encode_ud15_insn(LoongArchInsn opc, uint32_t ud15) +static int32_t __attribute__((unused)) encode_ud15_insn(LoongArchInsn opc, + uint32_t ud15) { tcg_debug_assert(ud15 <=3D 0x7fff); return encode_d_slot(opc, ud15); } =20 -static int32_t __attribute__((unused)) -encode_vdj_insn(LoongArchInsn opc, TCGReg vd, TCGReg j) +static int32_t __attribute__((unused)) encode_vdj_insn(LoongArchInsn opc, + TCGReg vd, TCGReg j) { tcg_debug_assert(vd >=3D 0x20 && vd <=3D 0x3f); tcg_debug_assert(j >=3D 0 && j <=3D 0x1f); @@ -974,8 +980,8 @@ encode_vdsj13_insn(LoongArchInsn opc, TCGReg vd, int32_= t sj13) return encode_dj_slots(opc, vd & 0x1f, sj13 & 0x1fff); } =20 -static int32_t __attribute__((unused)) -encode_vdvj_insn(LoongArchInsn opc, TCGReg vd, TCGReg vj) +static int32_t __attribute__((unused)) encode_vdvj_insn(LoongArchInsn opc, + TCGReg vd, TCGReg = vj) { tcg_debug_assert(vd >=3D 0x20 && vd <=3D 0x3f); tcg_debug_assert(vj >=3D 0x20 && vj <=3D 0x3f); @@ -1083,8 +1089,8 @@ encode_vdvjvkva_insn(LoongArchInsn opc, TCGReg vd, TC= GReg vj, TCGReg vk, return encode_djka_slots(opc, vd & 0x1f, vj & 0x1f, vk & 0x1f, va & 0x= 1f); } =20 -static int32_t __attribute__((unused)) -encode_xdj_insn(LoongArchInsn opc, TCGReg xd, TCGReg j) +static int32_t __attribute__((unused)) encode_xdj_insn(LoongArchInsn opc, + TCGReg xd, TCGReg j) { tcg_debug_assert(xd >=3D 0x20 && xd <=3D 0x3f); tcg_debug_assert(j >=3D 0 && j <=3D 0x1f); @@ -1206,8 +1212,8 @@ encode_xdsj13_insn(LoongArchInsn opc, TCGReg xd, int3= 2_t sj13) return encode_dj_slots(opc, xd & 0x1f, sj13 & 0x1fff); } =20 -static int32_t __attribute__((unused)) -encode_xdxj_insn(LoongArchInsn opc, TCGReg xd, TCGReg xj) +static int32_t __attribute__((unused)) encode_xdxj_insn(LoongArchInsn opc, + TCGReg xd, TCGReg = xj) { tcg_debug_assert(xd >=3D 0x20 && xd <=3D 0x3f); tcg_debug_assert(xj >=3D 0x20 && xj <=3D 0x3f); @@ -1316,523 +1322,555 @@ encode_xdxjxkxa_insn(LoongArchInsn opc, TCGReg xd= , TCGReg xj, TCGReg xk, } =20 /* Emits the `movgr2scr td, j` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_movgr2scr(TCGContext *s, TCGReg td, TCGReg j) +static void __attribute__((unused)) tcg_out_opc_movgr2scr(TCGContext *s, + TCGReg td, TCGRe= g j) { tcg_out32(s, encode_tdj_insn(OPC_MOVGR2SCR, td, j)); } =20 /* Emits the `movscr2gr d, tj` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_movscr2gr(TCGContext *s, TCGReg d, TCGReg tj) +static void __attribute__((unused)) tcg_out_opc_movscr2gr(TCGContext *s, + TCGReg d, TCGReg= tj) { tcg_out32(s, encode_dtj_insn(OPC_MOVSCR2GR, d, tj)); } =20 /* Emits the `clz.w d, j` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_clz_w(TCGContext *s, TCGReg d, TCGReg j) +static void __attribute__((unused)) tcg_out_opc_clz_w(TCGContext *s, TCGRe= g d, + TCGReg j) { tcg_out32(s, encode_dj_insn(OPC_CLZ_W, d, j)); } =20 /* Emits the `ctz.w d, j` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ctz_w(TCGContext *s, TCGReg d, TCGReg j) +static void __attribute__((unused)) tcg_out_opc_ctz_w(TCGContext *s, TCGRe= g d, + TCGReg j) { tcg_out32(s, encode_dj_insn(OPC_CTZ_W, d, j)); } =20 /* Emits the `clz.d d, j` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_clz_d(TCGContext *s, TCGReg d, TCGReg j) +static void __attribute__((unused)) tcg_out_opc_clz_d(TCGContext *s, TCGRe= g d, + TCGReg j) { tcg_out32(s, encode_dj_insn(OPC_CLZ_D, d, j)); } =20 /* Emits the `ctz.d d, j` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ctz_d(TCGContext *s, TCGReg d, TCGReg j) +static void __attribute__((unused)) tcg_out_opc_ctz_d(TCGContext *s, TCGRe= g d, + TCGReg j) { tcg_out32(s, encode_dj_insn(OPC_CTZ_D, d, j)); } =20 /* Emits the `revb.2h d, j` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_revb_2h(TCGContext *s, TCGReg d, TCGReg j) +static void __attribute__((unused)) tcg_out_opc_revb_2h(TCGContext *s, TCG= Reg d, + TCGReg j) { tcg_out32(s, encode_dj_insn(OPC_REVB_2H, d, j)); } =20 /* Emits the `revb.2w d, j` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_revb_2w(TCGContext *s, TCGReg d, TCGReg j) +static void __attribute__((unused)) tcg_out_opc_revb_2w(TCGContext *s, TCG= Reg d, + TCGReg j) { tcg_out32(s, encode_dj_insn(OPC_REVB_2W, d, j)); } =20 /* Emits the `revb.d d, j` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_revb_d(TCGContext *s, TCGReg d, TCGReg j) +static void __attribute__((unused)) tcg_out_opc_revb_d(TCGContext *s, TCGR= eg d, + TCGReg j) { tcg_out32(s, encode_dj_insn(OPC_REVB_D, d, j)); } =20 +/* Emits the `revbit.4b d, j` instruction. */ +static void __attribute__((unused)) tcg_out_opc_revbit_4b(TCGContext *s, + TCGReg d, TCGReg= j) +{ + tcg_out32(s, encode_dj_insn(OPC_REVBIT_4B, d, j)); +} + +/* Emits the `revbit.8b d, j` instruction. */ +static void __attribute__((unused)) tcg_out_opc_revbit_8b(TCGContext *s, + TCGReg d, TCGReg= j) +{ + tcg_out32(s, encode_dj_insn(OPC_REVBIT_8B, d, j)); +} + +/* Emits the `revbit.w d, j` instruction. */ +static void __attribute__((unused)) tcg_out_opc_revbit_w(TCGContext *s, + TCGReg d, TCGReg = j) +{ + tcg_out32(s, encode_dj_insn(OPC_REVBIT_W, d, j)); +} + +/* Emits the `revbit.d d, j` instruction. */ +static void __attribute__((unused)) tcg_out_opc_revbit_d(TCGContext *s, + TCGReg d, TCGReg = j) +{ + tcg_out32(s, encode_dj_insn(OPC_REVBIT_D, d, j)); +} + /* Emits the `sext.h d, j` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_sext_h(TCGContext *s, TCGReg d, TCGReg j) +static void __attribute__((unused)) tcg_out_opc_sext_h(TCGContext *s, TCGR= eg d, + TCGReg j) { tcg_out32(s, encode_dj_insn(OPC_SEXT_H, d, j)); } =20 /* Emits the `sext.b d, j` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_sext_b(TCGContext *s, TCGReg d, TCGReg j) +static void __attribute__((unused)) tcg_out_opc_sext_b(TCGContext *s, TCGR= eg d, + TCGReg j) { tcg_out32(s, encode_dj_insn(OPC_SEXT_B, d, j)); } =20 /* Emits the `add.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_add_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_add_w(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_ADD_W, d, j, k)); } =20 /* Emits the `add.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_add_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_add_d(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_ADD_D, d, j, k)); } =20 /* Emits the `sub.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_sub_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_sub_w(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_SUB_W, d, j, k)); } =20 /* Emits the `sub.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_sub_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_sub_d(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_SUB_D, d, j, k)); } =20 /* Emits the `slt d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_slt(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_slt(TCGContext *s, TCGReg = d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_SLT, d, j, k)); } =20 /* Emits the `sltu d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_sltu(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_sltu(TCGContext *s, TCGReg= d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_SLTU, d, j, k)); } =20 /* Emits the `maskeqz d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_maskeqz(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_maskeqz(TCGContext *s, TCG= Reg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MASKEQZ, d, j, k)); } =20 /* Emits the `masknez d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_masknez(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_masknez(TCGContext *s, TCG= Reg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MASKNEZ, d, j, k)); } =20 /* Emits the `nor d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_nor(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_nor(TCGContext *s, TCGReg = d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_NOR, d, j, k)); } =20 /* Emits the `and d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_and(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_and(TCGContext *s, TCGReg = d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_AND, d, j, k)); } =20 /* Emits the `or d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_or(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_or(TCGContext *s, TCGReg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_OR, d, j, k)); } =20 /* Emits the `xor d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xor(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_xor(TCGContext *s, TCGReg = d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_XOR, d, j, k)); } =20 /* Emits the `orn d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_orn(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_orn(TCGContext *s, TCGReg = d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_ORN, d, j, k)); } =20 /* Emits the `andn d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_andn(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_andn(TCGContext *s, TCGReg= d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_ANDN, d, j, k)); } =20 /* Emits the `sll.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_sll_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_sll_w(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_SLL_W, d, j, k)); } =20 /* Emits the `srl.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_srl_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_srl_w(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_SRL_W, d, j, k)); } =20 /* Emits the `sra.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_sra_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_sra_w(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_SRA_W, d, j, k)); } =20 /* Emits the `sll.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_sll_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_sll_d(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_SLL_D, d, j, k)); } =20 /* Emits the `srl.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_srl_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_srl_d(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_SRL_D, d, j, k)); } =20 /* Emits the `sra.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_sra_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_sra_d(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_SRA_D, d, j, k)); } =20 /* Emits the `rotr.b d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_rotr_b(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_rotr_b(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_ROTR_B, d, j, k)); } =20 /* Emits the `rotr.h d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_rotr_h(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_rotr_h(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_ROTR_H, d, j, k)); } =20 /* Emits the `rotr.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_rotr_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_rotr_w(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_ROTR_W, d, j, k)); } =20 /* Emits the `rotr.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_rotr_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_rotr_d(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_ROTR_D, d, j, k)); } =20 /* Emits the `mul.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_mul_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_mul_w(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MUL_W, d, j, k)); } =20 /* Emits the `mulh.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_mulh_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_mulh_w(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MULH_W, d, j, k)); } =20 /* Emits the `mulh.wu d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_mulh_wu(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_mulh_wu(TCGContext *s, TCG= Reg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MULH_WU, d, j, k)); } =20 /* Emits the `mul.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_mul_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_mul_d(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MUL_D, d, j, k)); } =20 /* Emits the `mulh.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_mulh_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_mulh_d(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MULH_D, d, j, k)); } =20 /* Emits the `mulh.du d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_mulh_du(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_mulh_du(TCGContext *s, TCG= Reg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MULH_DU, d, j, k)); } =20 /* Emits the `div.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_div_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_div_w(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_DIV_W, d, j, k)); } =20 /* Emits the `mod.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_mod_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_mod_w(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MOD_W, d, j, k)); } =20 /* Emits the `div.wu d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_div_wu(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_div_wu(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_DIV_WU, d, j, k)); } =20 /* Emits the `mod.wu d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_mod_wu(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_mod_wu(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MOD_WU, d, j, k)); } =20 /* Emits the `div.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_div_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_div_d(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_DIV_D, d, j, k)); } =20 /* Emits the `mod.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_mod_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_mod_d(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MOD_D, d, j, k)); } =20 /* Emits the `div.du d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_div_du(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_div_du(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_DIV_DU, d, j, k)); } =20 /* Emits the `mod.du d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_mod_du(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_mod_du(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_MOD_DU, d, j, k)); } =20 /* Emits the `slli.w d, j, uk5` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_slli_w(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk5) +static void __attribute__((unused)) tcg_out_opc_slli_w(TCGContext *s, TCGR= eg d, + TCGReg j, uint32_t = uk5) { tcg_out32(s, encode_djuk5_insn(OPC_SLLI_W, d, j, uk5)); } =20 /* Emits the `slli.d d, j, uk6` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_slli_d(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk6) +static void __attribute__((unused)) tcg_out_opc_slli_d(TCGContext *s, TCGR= eg d, + TCGReg j, uint32_t = uk6) { tcg_out32(s, encode_djuk6_insn(OPC_SLLI_D, d, j, uk6)); } =20 /* Emits the `srli.w d, j, uk5` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_srli_w(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk5) +static void __attribute__((unused)) tcg_out_opc_srli_w(TCGContext *s, TCGR= eg d, + TCGReg j, uint32_t = uk5) { tcg_out32(s, encode_djuk5_insn(OPC_SRLI_W, d, j, uk5)); } =20 /* Emits the `srli.d d, j, uk6` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_srli_d(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk6) +static void __attribute__((unused)) tcg_out_opc_srli_d(TCGContext *s, TCGR= eg d, + TCGReg j, uint32_t = uk6) { tcg_out32(s, encode_djuk6_insn(OPC_SRLI_D, d, j, uk6)); } =20 /* Emits the `srai.w d, j, uk5` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_srai_w(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk5) +static void __attribute__((unused)) tcg_out_opc_srai_w(TCGContext *s, TCGR= eg d, + TCGReg j, uint32_t = uk5) { tcg_out32(s, encode_djuk5_insn(OPC_SRAI_W, d, j, uk5)); } =20 /* Emits the `srai.d d, j, uk6` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_srai_d(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk6) +static void __attribute__((unused)) tcg_out_opc_srai_d(TCGContext *s, TCGR= eg d, + TCGReg j, uint32_t = uk6) { tcg_out32(s, encode_djuk6_insn(OPC_SRAI_D, d, j, uk6)); } =20 /* Emits the `rotri.b d, j, uk3` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_rotri_b(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk3) +static void __attribute__((unused)) tcg_out_opc_rotri_b(TCGContext *s, TCG= Reg d, + TCGReg j, uint32_t= uk3) { tcg_out32(s, encode_djuk3_insn(OPC_ROTRI_B, d, j, uk3)); } =20 /* Emits the `rotri.h d, j, uk4` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_rotri_h(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk4) +static void __attribute__((unused)) tcg_out_opc_rotri_h(TCGContext *s, TCG= Reg d, + TCGReg j, uint32_t= uk4) { tcg_out32(s, encode_djuk4_insn(OPC_ROTRI_H, d, j, uk4)); } =20 /* Emits the `rotri.w d, j, uk5` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_rotri_w(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk5) +static void __attribute__((unused)) tcg_out_opc_rotri_w(TCGContext *s, TCG= Reg d, + TCGReg j, uint32_t= uk5) { tcg_out32(s, encode_djuk5_insn(OPC_ROTRI_W, d, j, uk5)); } =20 /* Emits the `rotri.d d, j, uk6` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_rotri_d(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk6) +static void __attribute__((unused)) tcg_out_opc_rotri_d(TCGContext *s, TCG= Reg d, + TCGReg j, uint32_t= uk6) { tcg_out32(s, encode_djuk6_insn(OPC_ROTRI_D, d, j, uk6)); } =20 /* Emits the `bstrins.w d, j, uk5, um5` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_bstrins_w(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk5, - uint32_t um5) +static void __attribute__((unused)) tcg_out_opc_bstrins_w(TCGContext *s, + TCGReg d, TCGReg= j, + uint32_t uk5, + uint32_t um5) { tcg_out32(s, encode_djuk5um5_insn(OPC_BSTRINS_W, d, j, uk5, um5)); } =20 /* Emits the `bstrpick.w d, j, uk5, um5` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_bstrpick_w(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk5, - uint32_t um5) +static void __attribute__((unused)) tcg_out_opc_bstrpick_w(TCGContext *s, + TCGReg d, TCGRe= g j, + uint32_t uk5, + uint32_t um5) { tcg_out32(s, encode_djuk5um5_insn(OPC_BSTRPICK_W, d, j, uk5, um5)); } =20 /* Emits the `bstrins.d d, j, uk6, um6` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_bstrins_d(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk6, - uint32_t um6) +static void __attribute__((unused)) tcg_out_opc_bstrins_d(TCGContext *s, + TCGReg d, TCGReg= j, + uint32_t uk6, + uint32_t um6) { tcg_out32(s, encode_djuk6um6_insn(OPC_BSTRINS_D, d, j, uk6, um6)); } =20 /* Emits the `bstrpick.d d, j, uk6, um6` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_bstrpick_d(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk6, - uint32_t um6) +static void __attribute__((unused)) tcg_out_opc_bstrpick_d(TCGContext *s, + TCGReg d, TCGRe= g j, + uint32_t uk6, + uint32_t um6) { tcg_out32(s, encode_djuk6um6_insn(OPC_BSTRPICK_D, d, j, uk6, um6)); } =20 /* Emits the `fmov.d fd, fj` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_fmov_d(TCGContext *s, TCGReg fd, TCGReg fj) +static void __attribute__((unused)) tcg_out_opc_fmov_d(TCGContext *s, TCGR= eg fd, + TCGReg fj) { tcg_out32(s, encode_fdfj_insn(OPC_FMOV_D, fd, fj)); } =20 /* Emits the `movgr2fr.d fd, j` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_movgr2fr_d(TCGContext *s, TCGReg fd, TCGReg j) +static void __attribute__((unused)) tcg_out_opc_movgr2fr_d(TCGContext *s, + TCGReg fd, TCGR= eg j) { tcg_out32(s, encode_fdj_insn(OPC_MOVGR2FR_D, fd, j)); } =20 /* Emits the `movfr2gr.d d, fj` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_movfr2gr_d(TCGContext *s, TCGReg d, TCGReg fj) +static void __attribute__((unused)) tcg_out_opc_movfr2gr_d(TCGContext *s, + TCGReg d, TCGRe= g fj) { tcg_out32(s, encode_dfj_insn(OPC_MOVFR2GR_D, d, fj)); } =20 /* Emits the `slti d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_slti(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_slti(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 2) { tcg_out32(s, encode_djsk12_insn(OPC_SLTI, d, j, sk12)); } =20 /* Emits the `sltui d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_sltui(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_sltui(TCGContext *s, TCGRe= g d, + TCGReg j, int32_t sk= 12) { tcg_out32(s, encode_djsk12_insn(OPC_SLTUI, d, j, sk12)); } =20 /* Emits the `addi.w d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_addi_w(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_addi_w(TCGContext *s, TCGR= eg d, + TCGReg j, int32_t s= k12) { tcg_out32(s, encode_djsk12_insn(OPC_ADDI_W, d, j, sk12)); } =20 /* Emits the `addi.d d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_addi_d(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_addi_d(TCGContext *s, TCGR= eg d, + TCGReg j, int32_t s= k12) { tcg_out32(s, encode_djsk12_insn(OPC_ADDI_D, d, j, sk12)); } =20 /* Emits the `cu52i.d d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_cu52i_d(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_cu52i_d(TCGContext *s, TCG= Reg d, + TCGReg j, int32_t = sk12) { tcg_out32(s, encode_djsk12_insn(OPC_CU52I_D, d, j, sk12)); } =20 /* Emits the `andi d, j, uk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_andi(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk12) +static void __attribute__((unused)) tcg_out_opc_andi(TCGContext *s, TCGReg= d, + TCGReg j, uint32_t uk= 12) { tcg_out32(s, encode_djuk12_insn(OPC_ANDI, d, j, uk12)); } =20 /* Emits the `ori d, j, uk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ori(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk12) +static void __attribute__((unused)) tcg_out_opc_ori(TCGContext *s, TCGReg = d, + TCGReg j, uint32_t uk1= 2) { tcg_out32(s, encode_djuk12_insn(OPC_ORI, d, j, uk12)); } =20 /* Emits the `xori d, j, uk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xori(TCGContext *s, TCGReg d, TCGReg j, uint32_t uk12) +static void __attribute__((unused)) tcg_out_opc_xori(TCGContext *s, TCGReg= d, + TCGReg j, uint32_t uk= 12) { tcg_out32(s, encode_djuk12_insn(OPC_XORI, d, j, uk12)); } @@ -1845,9 +1883,9 @@ tcg_out_opc_vbitsel_v(TCGContext *s, TCGReg vd, TCGRe= g vj, TCGReg vk, TCGReg va) } =20 /* Emits the `xvbitsel.v xd, xj, xk, xa` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvbitsel_v(TCGContext *s, TCGReg xd, TCGReg xj, TCGReg xk, - TCGReg xa) +static void __attribute__((unused)) tcg_out_opc_xvbitsel_v(TCGContext *s, + TCGReg xd, TCGR= eg xj, + TCGReg xk, TCGR= eg xa) { tcg_out32(s, encode_xdxjxkxa_insn(OPC_XVBITSEL_V, xd, xj, xk, xa)); } @@ -1874,22 +1912,22 @@ tcg_out_opc_addu16i_d(TCGContext *s, TCGReg d, TCGR= eg j, int32_t sk16) } =20 /* Emits the `lu12i.w d, sj20` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_lu12i_w(TCGContext *s, TCGReg d, int32_t sj20) +static void __attribute__((unused)) tcg_out_opc_lu12i_w(TCGContext *s, TCG= Reg d, + int32_t sj20) { tcg_out32(s, encode_dsj20_insn(OPC_LU12I_W, d, sj20)); } =20 /* Emits the `cu32i.d d, sj20` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_cu32i_d(TCGContext *s, TCGReg d, int32_t sj20) +static void __attribute__((unused)) tcg_out_opc_cu32i_d(TCGContext *s, TCG= Reg d, + int32_t sj20) { tcg_out32(s, encode_dsj20_insn(OPC_CU32I_D, d, sj20)); } =20 /* Emits the `pcaddu2i d, sj20` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_pcaddu2i(TCGContext *s, TCGReg d, int32_t sj20) +static void __attribute__((unused)) tcg_out_opc_pcaddu2i(TCGContext *s, + TCGReg d, int32_t= sj20) { tcg_out32(s, encode_dsj20_insn(OPC_PCADDU2I, d, sj20)); } @@ -1916,134 +1954,134 @@ tcg_out_opc_pcaddu18i(TCGContext *s, TCGReg d, in= t32_t sj20) } =20 /* Emits the `ld.b d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ld_b(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_ld_b(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 2) { tcg_out32(s, encode_djsk12_insn(OPC_LD_B, d, j, sk12)); } =20 /* Emits the `ld.h d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ld_h(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_ld_h(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 2) { tcg_out32(s, encode_djsk12_insn(OPC_LD_H, d, j, sk12)); } =20 /* Emits the `ld.w d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ld_w(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_ld_w(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 2) { tcg_out32(s, encode_djsk12_insn(OPC_LD_W, d, j, sk12)); } =20 /* Emits the `ld.d d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ld_d(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_ld_d(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 2) { tcg_out32(s, encode_djsk12_insn(OPC_LD_D, d, j, sk12)); } =20 /* Emits the `st.b d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_st_b(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_st_b(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 2) { tcg_out32(s, encode_djsk12_insn(OPC_ST_B, d, j, sk12)); } =20 /* Emits the `st.h d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_st_h(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_st_h(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 2) { tcg_out32(s, encode_djsk12_insn(OPC_ST_H, d, j, sk12)); } =20 /* Emits the `st.w d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_st_w(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_st_w(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 2) { tcg_out32(s, encode_djsk12_insn(OPC_ST_W, d, j, sk12)); } =20 /* Emits the `st.d d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_st_d(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_st_d(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 2) { tcg_out32(s, encode_djsk12_insn(OPC_ST_D, d, j, sk12)); } =20 /* Emits the `ld.bu d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ld_bu(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_ld_bu(TCGContext *s, TCGRe= g d, + TCGReg j, int32_t sk= 12) { tcg_out32(s, encode_djsk12_insn(OPC_LD_BU, d, j, sk12)); } =20 /* Emits the `ld.hu d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ld_hu(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_ld_hu(TCGContext *s, TCGRe= g d, + TCGReg j, int32_t sk= 12) { tcg_out32(s, encode_djsk12_insn(OPC_LD_HU, d, j, sk12)); } =20 /* Emits the `ld.wu d, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ld_wu(TCGContext *s, TCGReg d, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_ld_wu(TCGContext *s, TCGRe= g d, + TCGReg j, int32_t sk= 12) { tcg_out32(s, encode_djsk12_insn(OPC_LD_WU, d, j, sk12)); } =20 /* Emits the `fld.s fd, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_fld_s(TCGContext *s, TCGReg fd, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_fld_s(TCGContext *s, TCGRe= g fd, + TCGReg j, int32_t sk= 12) { tcg_out32(s, encode_fdjsk12_insn(OPC_FLD_S, fd, j, sk12)); } =20 /* Emits the `fst.s fd, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_fst_s(TCGContext *s, TCGReg fd, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_fst_s(TCGContext *s, TCGRe= g fd, + TCGReg j, int32_t sk= 12) { tcg_out32(s, encode_fdjsk12_insn(OPC_FST_S, fd, j, sk12)); } =20 /* Emits the `fld.d fd, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_fld_d(TCGContext *s, TCGReg fd, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_fld_d(TCGContext *s, TCGRe= g fd, + TCGReg j, int32_t sk= 12) { tcg_out32(s, encode_fdjsk12_insn(OPC_FLD_D, fd, j, sk12)); } =20 /* Emits the `fst.d fd, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_fst_d(TCGContext *s, TCGReg fd, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_fst_d(TCGContext *s, TCGRe= g fd, + TCGReg j, int32_t sk= 12) { tcg_out32(s, encode_fdjsk12_insn(OPC_FST_D, fd, j, sk12)); } =20 /* Emits the `vld vd, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vld(TCGContext *s, TCGReg vd, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_vld(TCGContext *s, TCGReg = vd, + TCGReg j, int32_t sk12) { tcg_out32(s, encode_vdjsk12_insn(OPC_VLD, vd, j, sk12)); } =20 /* Emits the `vst vd, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vst(TCGContext *s, TCGReg vd, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_vst(TCGContext *s, TCGReg = vd, + TCGReg j, int32_t sk12) { tcg_out32(s, encode_vdjsk12_insn(OPC_VST, vd, j, sk12)); } =20 /* Emits the `xvld xd, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvld(TCGContext *s, TCGReg xd, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_xvld(TCGContext *s, TCGReg= xd, + TCGReg j, int32_t sk1= 2) { tcg_out32(s, encode_xdjsk12_insn(OPC_XVLD, xd, j, sk12)); } =20 /* Emits the `xvst xd, j, sk12` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvst(TCGContext *s, TCGReg xd, TCGReg j, int32_t sk12) +static void __attribute__((unused)) tcg_out_opc_xvst(TCGContext *s, TCGReg= xd, + TCGReg j, int32_t sk1= 2) { tcg_out32(s, encode_xdjsk12_insn(OPC_XVST, xd, j, sk12)); } @@ -2077,33 +2115,37 @@ tcg_out_opc_vldrepl_b(TCGContext *s, TCGReg vd, TCG= Reg j, int32_t sk12) } =20 /* Emits the `vstelm.d vd, j, sk8, un1` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vstelm_d(TCGContext *s, TCGReg vd, TCGReg j, int32_t sk8, - uint32_t un1) +static void __attribute__((unused)) tcg_out_opc_vstelm_d(TCGContext *s, + TCGReg vd, TCGReg= j, + int32_t sk8, + uint32_t un1) { tcg_out32(s, encode_vdjsk8un1_insn(OPC_VSTELM_D, vd, j, sk8, un1)); } =20 /* Emits the `vstelm.w vd, j, sk8, un2` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vstelm_w(TCGContext *s, TCGReg vd, TCGReg j, int32_t sk8, - uint32_t un2) +static void __attribute__((unused)) tcg_out_opc_vstelm_w(TCGContext *s, + TCGReg vd, TCGReg= j, + int32_t sk8, + uint32_t un2) { tcg_out32(s, encode_vdjsk8un2_insn(OPC_VSTELM_W, vd, j, sk8, un2)); } =20 /* Emits the `vstelm.h vd, j, sk8, un3` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vstelm_h(TCGContext *s, TCGReg vd, TCGReg j, int32_t sk8, - uint32_t un3) +static void __attribute__((unused)) tcg_out_opc_vstelm_h(TCGContext *s, + TCGReg vd, TCGReg= j, + int32_t sk8, + uint32_t un3) { tcg_out32(s, encode_vdjsk8un3_insn(OPC_VSTELM_H, vd, j, sk8, un3)); } =20 /* Emits the `vstelm.b vd, j, sk8, un4` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vstelm_b(TCGContext *s, TCGReg vd, TCGReg j, int32_t sk8, - uint32_t un4) +static void __attribute__((unused)) tcg_out_opc_vstelm_b(TCGContext *s, + TCGReg vd, TCGReg= j, + int32_t sk8, + uint32_t un4) { tcg_out32(s, encode_vdjsk8un4_insn(OPC_VSTELM_B, vd, j, sk8, un4)); } @@ -2137,306 +2179,310 @@ tcg_out_opc_xvldrepl_b(TCGContext *s, TCGReg xd, = TCGReg j, int32_t sk12) } =20 /* Emits the `xvstelm.d xd, j, sk8, un2` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvstelm_d(TCGContext *s, TCGReg xd, TCGReg j, int32_t sk8, - uint32_t un2) +static void __attribute__((unused)) tcg_out_opc_xvstelm_d(TCGContext *s, + TCGReg xd, TCGRe= g j, + int32_t sk8, + uint32_t un2) { tcg_out32(s, encode_xdjsk8un2_insn(OPC_XVSTELM_D, xd, j, sk8, un2)); } =20 /* Emits the `xvstelm.w xd, j, sk8, un3` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvstelm_w(TCGContext *s, TCGReg xd, TCGReg j, int32_t sk8, - uint32_t un3) +static void __attribute__((unused)) tcg_out_opc_xvstelm_w(TCGContext *s, + TCGReg xd, TCGRe= g j, + int32_t sk8, + uint32_t un3) { tcg_out32(s, encode_xdjsk8un3_insn(OPC_XVSTELM_W, xd, j, sk8, un3)); } =20 /* Emits the `xvstelm.h xd, j, sk8, un4` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvstelm_h(TCGContext *s, TCGReg xd, TCGReg j, int32_t sk8, - uint32_t un4) +static void __attribute__((unused)) tcg_out_opc_xvstelm_h(TCGContext *s, + TCGReg xd, TCGRe= g j, + int32_t sk8, + uint32_t un4) { tcg_out32(s, encode_xdjsk8un4_insn(OPC_XVSTELM_H, xd, j, sk8, un4)); } =20 /* Emits the `xvstelm.b xd, j, sk8, un5` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvstelm_b(TCGContext *s, TCGReg xd, TCGReg j, int32_t sk8, - uint32_t un5) +static void __attribute__((unused)) tcg_out_opc_xvstelm_b(TCGContext *s, + TCGReg xd, TCGRe= g j, + int32_t sk8, + uint32_t un5) { tcg_out32(s, encode_xdjsk8un5_insn(OPC_XVSTELM_B, xd, j, sk8, un5)); } =20 /* Emits the `ldx.b d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ldx_b(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_ldx_b(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_LDX_B, d, j, k)); } =20 /* Emits the `ldx.h d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ldx_h(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_ldx_h(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_LDX_H, d, j, k)); } =20 /* Emits the `ldx.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ldx_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_ldx_w(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_LDX_W, d, j, k)); } =20 /* Emits the `ldx.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ldx_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_ldx_d(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_LDX_D, d, j, k)); } =20 /* Emits the `stx.b d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_stx_b(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_stx_b(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_STX_B, d, j, k)); } =20 /* Emits the `stx.h d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_stx_h(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_stx_h(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_STX_H, d, j, k)); } =20 /* Emits the `stx.w d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_stx_w(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_stx_w(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_STX_W, d, j, k)); } =20 /* Emits the `stx.d d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_stx_d(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_stx_d(TCGContext *s, TCGRe= g d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_STX_D, d, j, k)); } =20 /* Emits the `ldx.bu d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ldx_bu(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_ldx_bu(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_LDX_BU, d, j, k)); } =20 /* Emits the `ldx.hu d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ldx_hu(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_ldx_hu(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_LDX_HU, d, j, k)); } =20 /* Emits the `ldx.wu d, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ldx_wu(TCGContext *s, TCGReg d, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_ldx_wu(TCGContext *s, TCGR= eg d, + TCGReg j, TCGReg k) { tcg_out32(s, encode_djk_insn(OPC_LDX_WU, d, j, k)); } =20 /* Emits the `fldx.s fd, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_fldx_s(TCGContext *s, TCGReg fd, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_fldx_s(TCGContext *s, TCGR= eg fd, + TCGReg j, TCGReg k) { tcg_out32(s, encode_fdjk_insn(OPC_FLDX_S, fd, j, k)); } =20 /* Emits the `fldx.d fd, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_fldx_d(TCGContext *s, TCGReg fd, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_fldx_d(TCGContext *s, TCGR= eg fd, + TCGReg j, TCGReg k) { tcg_out32(s, encode_fdjk_insn(OPC_FLDX_D, fd, j, k)); } =20 /* Emits the `fstx.s fd, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_fstx_s(TCGContext *s, TCGReg fd, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_fstx_s(TCGContext *s, TCGR= eg fd, + TCGReg j, TCGReg k) { tcg_out32(s, encode_fdjk_insn(OPC_FSTX_S, fd, j, k)); } =20 /* Emits the `fstx.d fd, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_fstx_d(TCGContext *s, TCGReg fd, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_fstx_d(TCGContext *s, TCGR= eg fd, + TCGReg j, TCGReg k) { tcg_out32(s, encode_fdjk_insn(OPC_FSTX_D, fd, j, k)); } =20 /* Emits the `vldx vd, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vldx(TCGContext *s, TCGReg vd, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_vldx(TCGContext *s, TCGReg= vd, + TCGReg j, TCGReg k) { tcg_out32(s, encode_vdjk_insn(OPC_VLDX, vd, j, k)); } =20 /* Emits the `vstx vd, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vstx(TCGContext *s, TCGReg vd, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_vstx(TCGContext *s, TCGReg= vd, + TCGReg j, TCGReg k) { tcg_out32(s, encode_vdjk_insn(OPC_VSTX, vd, j, k)); } =20 /* Emits the `xvldx xd, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvldx(TCGContext *s, TCGReg xd, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_xvldx(TCGContext *s, TCGRe= g xd, + TCGReg j, TCGReg k) { tcg_out32(s, encode_xdjk_insn(OPC_XVLDX, xd, j, k)); } =20 /* Emits the `xvstx xd, j, k` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvstx(TCGContext *s, TCGReg xd, TCGReg j, TCGReg k) +static void __attribute__((unused)) tcg_out_opc_xvstx(TCGContext *s, TCGRe= g xd, + TCGReg j, TCGReg k) { tcg_out32(s, encode_xdjk_insn(OPC_XVSTX, xd, j, k)); } =20 /* Emits the `dbar ud15` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_dbar(TCGContext *s, uint32_t ud15) +static void __attribute__((unused)) tcg_out_opc_dbar(TCGContext *s, + uint32_t ud15) { tcg_out32(s, encode_ud15_insn(OPC_DBAR, ud15)); } =20 /* Emits the `jiscr0 sd5k16` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_jiscr0(TCGContext *s, int32_t sd5k16) +static void __attribute__((unused)) tcg_out_opc_jiscr0(TCGContext *s, + int32_t sd5k16) { tcg_out32(s, encode_sd5k16_insn(OPC_JISCR0, sd5k16)); } =20 /* Emits the `jiscr1 sd5k16` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_jiscr1(TCGContext *s, int32_t sd5k16) +static void __attribute__((unused)) tcg_out_opc_jiscr1(TCGContext *s, + int32_t sd5k16) { tcg_out32(s, encode_sd5k16_insn(OPC_JISCR1, sd5k16)); } =20 /* Emits the `jirl d, j, sk16` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_jirl(TCGContext *s, TCGReg d, TCGReg j, int32_t sk16) +static void __attribute__((unused)) tcg_out_opc_jirl(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 6) { tcg_out32(s, encode_djsk16_insn(OPC_JIRL, d, j, sk16)); } =20 /* Emits the `b sd10k16` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_b(TCGContext *s, int32_t sd10k16) +static void __attribute__((unused)) tcg_out_opc_b(TCGContext *s, + int32_t sd10k16) { tcg_out32(s, encode_sd10k16_insn(OPC_B, sd10k16)); } =20 /* Emits the `bl sd10k16` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_bl(TCGContext *s, int32_t sd10k16) +static void __attribute__((unused)) tcg_out_opc_bl(TCGContext *s, + int32_t sd10k16) { tcg_out32(s, encode_sd10k16_insn(OPC_BL, sd10k16)); } =20 /* Emits the `beq d, j, sk16` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_beq(TCGContext *s, TCGReg d, TCGReg j, int32_t sk16) +static void __attribute__((unused)) tcg_out_opc_beq(TCGContext *s, TCGReg = d, + TCGReg j, int32_t sk16) { tcg_out32(s, encode_djsk16_insn(OPC_BEQ, d, j, sk16)); } =20 /* Emits the `bne d, j, sk16` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_bne(TCGContext *s, TCGReg d, TCGReg j, int32_t sk16) +static void __attribute__((unused)) tcg_out_opc_bne(TCGContext *s, TCGReg = d, + TCGReg j, int32_t sk16) { tcg_out32(s, encode_djsk16_insn(OPC_BNE, d, j, sk16)); } =20 /* Emits the `bgt d, j, sk16` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_bgt(TCGContext *s, TCGReg d, TCGReg j, int32_t sk16) +static void __attribute__((unused)) tcg_out_opc_bgt(TCGContext *s, TCGReg = d, + TCGReg j, int32_t sk16) { tcg_out32(s, encode_djsk16_insn(OPC_BGT, d, j, sk16)); } =20 /* Emits the `ble d, j, sk16` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_ble(TCGContext *s, TCGReg d, TCGReg j, int32_t sk16) +static void __attribute__((unused)) tcg_out_opc_ble(TCGContext *s, TCGReg = d, + TCGReg j, int32_t sk16) { tcg_out32(s, encode_djsk16_insn(OPC_BLE, d, j, sk16)); } =20 /* Emits the `bgtu d, j, sk16` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_bgtu(TCGContext *s, TCGReg d, TCGReg j, int32_t sk16) +static void __attribute__((unused)) tcg_out_opc_bgtu(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 6) { tcg_out32(s, encode_djsk16_insn(OPC_BGTU, d, j, sk16)); } =20 /* Emits the `bleu d, j, sk16` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_bleu(TCGContext *s, TCGReg d, TCGReg j, int32_t sk16) +static void __attribute__((unused)) tcg_out_opc_bleu(TCGContext *s, TCGReg= d, + TCGReg j, int32_t sk1= 6) { tcg_out32(s, encode_djsk16_insn(OPC_BLEU, d, j, sk16)); } =20 /* Emits the `vseq.b vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vseq_b(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vseq_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSEQ_B, vd, vj, vk)); } =20 /* Emits the `vseq.h vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vseq_h(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vseq_h(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSEQ_H, vd, vj, vk)); } =20 /* Emits the `vseq.w vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vseq_w(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vseq_w(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSEQ_W, vd, vj, vk)); } =20 /* Emits the `vseq.d vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vseq_d(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vseq_d(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSEQ_D, vd, vj, vk)); } =20 /* Emits the `vsle.b vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsle_b(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsle_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLE_B, vd, vj, vk)); } =20 /* Emits the `vsle.h vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsle_h(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsle_h(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLE_H, vd, vj, vk)); } =20 /* Emits the `vsle.w vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsle_w(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsle_w(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLE_W, vd, vj, vk)); } =20 /* Emits the `vsle.d vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsle_d(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsle_d(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLE_D, vd, vj, vk)); } @@ -2470,29 +2516,29 @@ tcg_out_opc_vsle_du(TCGContext *s, TCGReg vd, TCGRe= g vj, TCGReg vk) } =20 /* Emits the `vslt.b vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vslt_b(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vslt_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLT_B, vd, vj, vk)); } =20 /* Emits the `vslt.h vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vslt_h(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vslt_h(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLT_H, vd, vj, vk)); } =20 /* Emits the `vslt.w vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vslt_w(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vslt_w(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLT_W, vd, vj, vk)); } =20 /* Emits the `vslt.d vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vslt_d(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vslt_d(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLT_D, vd, vj, vk)); } @@ -2526,57 +2572,57 @@ tcg_out_opc_vslt_du(TCGContext *s, TCGReg vd, TCGRe= g vj, TCGReg vk) } =20 /* Emits the `vadd.b vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vadd_b(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vadd_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VADD_B, vd, vj, vk)); } =20 /* Emits the `vadd.h vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vadd_h(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vadd_h(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VADD_H, vd, vj, vk)); } =20 /* Emits the `vadd.w vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vadd_w(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vadd_w(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VADD_W, vd, vj, vk)); } =20 /* Emits the `vadd.d vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vadd_d(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vadd_d(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VADD_D, vd, vj, vk)); } =20 /* Emits the `vsub.b vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsub_b(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsub_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSUB_B, vd, vj, vk)); } =20 /* Emits the `vsub.h vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsub_h(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsub_h(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSUB_H, vd, vj, vk)); } =20 /* Emits the `vsub.w vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsub_w(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsub_w(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSUB_W, vd, vj, vk)); } =20 /* Emits the `vsub.d vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsub_d(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsub_d(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSUB_D, vd, vj, vk)); } @@ -2694,57 +2740,57 @@ tcg_out_opc_vssub_du(TCGContext *s, TCGReg vd, TCGR= eg vj, TCGReg vk) } =20 /* Emits the `vmax.b vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmax_b(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmax_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMAX_B, vd, vj, vk)); } =20 /* Emits the `vmax.h vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmax_h(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmax_h(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMAX_H, vd, vj, vk)); } =20 /* Emits the `vmax.w vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmax_w(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmax_w(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMAX_W, vd, vj, vk)); } =20 /* Emits the `vmax.d vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmax_d(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmax_d(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMAX_D, vd, vj, vk)); } =20 /* Emits the `vmin.b vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmin_b(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmin_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMIN_B, vd, vj, vk)); } =20 /* Emits the `vmin.h vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmin_h(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmin_h(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMIN_H, vd, vj, vk)); } =20 /* Emits the `vmin.w vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmin_w(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmin_w(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMIN_W, vd, vj, vk)); } =20 /* Emits the `vmin.d vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmin_d(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmin_d(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMIN_D, vd, vj, vk)); } @@ -2806,113 +2852,113 @@ tcg_out_opc_vmin_du(TCGContext *s, TCGReg vd, TCG= Reg vj, TCGReg vk) } =20 /* Emits the `vmul.b vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmul_b(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmul_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMUL_B, vd, vj, vk)); } =20 /* Emits the `vmul.h vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmul_h(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmul_h(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMUL_H, vd, vj, vk)); } =20 /* Emits the `vmul.w vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmul_w(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmul_w(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMUL_W, vd, vj, vk)); } =20 /* Emits the `vmul.d vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vmul_d(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vmul_d(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VMUL_D, vd, vj, vk)); } =20 /* Emits the `vsll.b vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsll_b(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsll_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLL_B, vd, vj, vk)); } =20 /* Emits the `vsll.h vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsll_h(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsll_h(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLL_H, vd, vj, vk)); } =20 /* Emits the `vsll.w vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsll_w(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsll_w(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLL_W, vd, vj, vk)); } =20 /* Emits the `vsll.d vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsll_d(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsll_d(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSLL_D, vd, vj, vk)); } =20 /* Emits the `vsrl.b vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsrl_b(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsrl_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSRL_B, vd, vj, vk)); } =20 /* Emits the `vsrl.h vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsrl_h(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsrl_h(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSRL_H, vd, vj, vk)); } =20 /* Emits the `vsrl.w vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsrl_w(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsrl_w(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSRL_W, vd, vj, vk)); } =20 /* Emits the `vsrl.d vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsrl_d(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsrl_d(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSRL_D, vd, vj, vk)); } =20 /* Emits the `vsra.b vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsra_b(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsra_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSRA_B, vd, vj, vk)); } =20 /* Emits the `vsra.h vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsra_h(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsra_h(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSRA_H, vd, vj, vk)); } =20 /* Emits the `vsra.w vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsra_w(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsra_w(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSRA_W, vd, vj, vk)); } =20 /* Emits the `vsra.d vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vsra_d(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vsra_d(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VSRA_D, vd, vj, vk)); } @@ -2974,29 +3020,29 @@ tcg_out_opc_vreplve_d(TCGContext *s, TCGReg vd, TCG= Reg vj, TCGReg k) } =20 /* Emits the `vand.v vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vand_v(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vand_v(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VAND_V, vd, vj, vk)); } =20 /* Emits the `vor.v vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vor_v(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vor_v(TCGContext *s, TCGRe= g vd, + TCGReg vj, TCGReg vk) { tcg_out32(s, encode_vdvjvk_insn(OPC_VOR_V, vd, vj, vk)); } =20 /* Emits the `vxor.v vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vxor_v(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vxor_v(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VXOR_V, vd, vj, vk)); } =20 /* Emits the `vnor.v vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vnor_v(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vnor_v(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VNOR_V, vd, vj, vk)); } @@ -3009,8 +3055,8 @@ tcg_out_opc_vandn_v(TCGContext *s, TCGReg vd, TCGReg = vj, TCGReg vk) } =20 /* Emits the `vorn.v vd, vj, vk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vorn_v(TCGContext *s, TCGReg vd, TCGReg vj, TCGReg vk) +static void __attribute__((unused)) tcg_out_opc_vorn_v(TCGContext *s, TCGR= eg vd, + TCGReg vj, TCGReg v= k) { tcg_out32(s, encode_vdvjvk_insn(OPC_VORN_V, vd, vj, vk)); } @@ -3324,29 +3370,29 @@ tcg_out_opc_vmini_du(TCGContext *s, TCGReg vd, TCGR= eg vj, uint32_t uk5) } =20 /* Emits the `vneg.b vd, vj` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vneg_b(TCGContext *s, TCGReg vd, TCGReg vj) +static void __attribute__((unused)) tcg_out_opc_vneg_b(TCGContext *s, TCGR= eg vd, + TCGReg vj) { tcg_out32(s, encode_vdvj_insn(OPC_VNEG_B, vd, vj)); } =20 /* Emits the `vneg.h vd, vj` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vneg_h(TCGContext *s, TCGReg vd, TCGReg vj) +static void __attribute__((unused)) tcg_out_opc_vneg_h(TCGContext *s, TCGR= eg vd, + TCGReg vj) { tcg_out32(s, encode_vdvj_insn(OPC_VNEG_H, vd, vj)); } =20 /* Emits the `vneg.w vd, vj` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vneg_w(TCGContext *s, TCGReg vd, TCGReg vj) +static void __attribute__((unused)) tcg_out_opc_vneg_w(TCGContext *s, TCGR= eg vd, + TCGReg vj) { tcg_out32(s, encode_vdvj_insn(OPC_VNEG_W, vd, vj)); } =20 /* Emits the `vneg.d vd, vj` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vneg_d(TCGContext *s, TCGReg vd, TCGReg vj) +static void __attribute__((unused)) tcg_out_opc_vneg_d(TCGContext *s, TCGR= eg vd, + TCGReg vj) { tcg_out32(s, encode_vdvj_insn(OPC_VNEG_D, vd, vj)); } @@ -3702,8 +3748,8 @@ tcg_out_opc_vandi_b(TCGContext *s, TCGReg vd, TCGReg = vj, uint32_t uk8) } =20 /* Emits the `vori.b vd, vj, uk8` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vori_b(TCGContext *s, TCGReg vd, TCGReg vj, uint32_t uk8) +static void __attribute__((unused)) tcg_out_opc_vori_b(TCGContext *s, TCGR= eg vd, + TCGReg vj, uint32_t= uk8) { tcg_out32(s, encode_vdvjuk8_insn(OPC_VORI_B, vd, vj, uk8)); } @@ -3723,8 +3769,8 @@ tcg_out_opc_vnori_b(TCGContext *s, TCGReg vd, TCGReg = vj, uint32_t uk8) } =20 /* Emits the `vldi vd, sj13` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_vldi(TCGContext *s, TCGReg vd, int32_t sj13) +static void __attribute__((unused)) tcg_out_opc_vldi(TCGContext *s, TCGReg= vd, + int32_t sj13) { tcg_out32(s, encode_vdsj13_insn(OPC_VLDI, vd, sj13)); } @@ -4325,8 +4371,8 @@ tcg_out_opc_xvand_v(TCGContext *s, TCGReg xd, TCGReg = xj, TCGReg xk) } =20 /* Emits the `xvor.v xd, xj, xk` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvor_v(TCGContext *s, TCGReg xd, TCGReg xj, TCGReg xk) +static void __attribute__((unused)) tcg_out_opc_xvor_v(TCGContext *s, TCGR= eg xd, + TCGReg xj, TCGReg x= k) { tcg_out32(s, encode_xdxjxk_insn(OPC_XVOR_V, xd, xj, xk)); } @@ -4668,29 +4714,29 @@ tcg_out_opc_xvmini_du(TCGContext *s, TCGReg xd, TCG= Reg xj, uint32_t uk5) } =20 /* Emits the `xvneg.b xd, xj` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvneg_b(TCGContext *s, TCGReg xd, TCGReg xj) +static void __attribute__((unused)) tcg_out_opc_xvneg_b(TCGContext *s, + TCGReg xd, TCGReg = xj) { tcg_out32(s, encode_xdxj_insn(OPC_XVNEG_B, xd, xj)); } =20 /* Emits the `xvneg.h xd, xj` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvneg_h(TCGContext *s, TCGReg xd, TCGReg xj) +static void __attribute__((unused)) tcg_out_opc_xvneg_h(TCGContext *s, + TCGReg xd, TCGReg = xj) { tcg_out32(s, encode_xdxj_insn(OPC_XVNEG_H, xd, xj)); } =20 /* Emits the `xvneg.w xd, xj` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvneg_w(TCGContext *s, TCGReg xd, TCGReg xj) +static void __attribute__((unused)) tcg_out_opc_xvneg_w(TCGContext *s, + TCGReg xd, TCGReg = xj) { tcg_out32(s, encode_xdxj_insn(OPC_XVNEG_W, xd, xj)); } =20 /* Emits the `xvneg.d xd, xj` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvneg_d(TCGContext *s, TCGReg xd, TCGReg xj) +static void __attribute__((unused)) tcg_out_opc_xvneg_d(TCGContext *s, + TCGReg xd, TCGReg = xj) { tcg_out32(s, encode_xdxj_insn(OPC_XVNEG_D, xd, xj)); } @@ -5060,8 +5106,8 @@ tcg_out_opc_xvnori_b(TCGContext *s, TCGReg xd, TCGReg= xj, uint32_t uk8) } =20 /* Emits the `xvldi xd, sj13` instruction. */ -static void __attribute__((unused)) -tcg_out_opc_xvldi(TCGContext *s, TCGReg xd, int32_t sj13) +static void __attribute__((unused)) tcg_out_opc_xvldi(TCGContext *s, TCGRe= g xd, + int32_t sj13) { tcg_out32(s, encode_xdsj13_insn(OPC_XVLDI, xd, sj13)); } --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072915; cv=none; d=zohomail.com; s=zohoarc; b=A4Iqgr19Buug90fOstR2oQFSX6zeeAtteMxZGO8RkmWuSINF650Zw0Tx97rFQbE6rbCmCeTeVVonFr6s8Bozjl5aOqmLOLuTh4CEPWLgfYTbPE12dGwYTcXbohOPgqiy/qMQDuF8+CTIUi2UuJu95/qoMdAcp969xxkAL2XGPnU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072915; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VhlDEow7kayv7qRQDlE/Y1wsQ2IfOPvBYG5/m8i8FvA=; b=Wq4SQkRqzUxddQbw6K+XTJ9QFiBAl+A1ocU+HwfkHKe50bVxkufEskP9G8j3zovB/e5QcNsvDI/BnKTBVnVfF3VlI17oUUtzO5pmle5rw1PHvqQImfch8oz9DaQAoblbQ8HA3EHMFhj+iN8IMCXmVXxrNW4bGin/k+RbzHzDzlM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072915925249.73849328594804; Tue, 18 Aug 2026 10:08:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCi-0007UN-Fw; Tue, 18 Aug 2026 13:02:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCg-0007U1-PU for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:22 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCf-0004mu-9x for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:22 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-84a652535dcso106106b3a.3 for ; Tue, 18 Aug 2026 10:02:20 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072540; x=1787677340; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=VhlDEow7kayv7qRQDlE/Y1wsQ2IfOPvBYG5/m8i8FvA=; b=ujXYhY2PDFnecL1N52uiAmFTzp0pDxVUficm92uZuG3agdvVyLcIXcLkgvxKXyVX7N EyB08haTm+i5Ldqy8wri9p9swb6rldDDufWLAPGGoh0c5CyCx+AqUp9jKjigjQFcHSAR vDWJQJ5eyOGndnfgu3gt50tdorFUN2HmY5JAxPye1MsoUrUHds+YFrn0ppNvsb3Z5Wbw xeRlPjig4wU/hQUkNRQgjAqf7lY+orXolOWllDRbk62JFRhVfaixOwhxejYtwMyEuE2Q MABsWJMzV7w2pCbVqnVB47m7/sw5wKNKAUEvHyhqx0E8jaDOci5qmWXmr/q1zWZPQrcb ++KQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072540; x=1787677340; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=VhlDEow7kayv7qRQDlE/Y1wsQ2IfOPvBYG5/m8i8FvA=; b=IsJCP4bf4ZTgAR+ulYKw1nTptZpy23qlArbag/qbKiyvGdnCw7qHQ1Wkksq86KVaI+ Q3L85qKtQTgSIMzIJY1FAZ6RyrUGi3VYemnO7z2JKIY25oxmhtheHFQL5ok5CVHJrVcb 5PTbmJ5K8N2ZdcJcfNlo7XK1HIg3lEuPvUnW6eVacM3pzJknLbAIDCQ1zF81zsflt71x vAFgGd1mG0tJ+4Amr1aZf9PuaE3T4M0dJthpuPL3P7qkraMDM4BIITwn0F3xAP3UCibT S3ftSAK4c1rD4YsbdAeDm3cQ278EjmRChCV+8GF0ODoWfGx33zC2G1jeM1jE5A55Ygur s7EA== X-Gm-Message-State: AOJu0YyczeUAYTJIjS46dL61QURQoUyRy18uuBNu1SqY4Pd5WZvanTS4 irDsUMPrwuv/LvD6nOt9AhByuNy1nRjjS/slWVsYuh/HvnlZiERClP9uwlzeDXjsLeLEsNBG2/x I7sM+ZxY= X-Gm-Gg: AR+sD12Y3z9qeQDrrHq9m2NC722E2dpUAmLA9vZ0aCojBVcmkl5Ljp34KG7daAUphwd FHiNGvNLO4svm659iGs2+PTHz/DM66qEPm9UohRJEFqxFptRVDKG1hzuOZJIlCDi0MBZy4n1TbU ISRQRFAeKYTM0KFS8/us661Oj2fzhheBEdjPHf2vpBOHrRk75MnuJ8saqBp5LXzAz8sWb7+rTTS y4Oq25YsIxb4ofklGO8Fi0AMAlCUvEnINkLPtuHfMm8asxv8ATOlF374MBZ6gyWrBOjEfZ+1mKi 0W3Fdxgvm310y4TT+uBUiL56cNbmFTmirwJjwbeEJdKPHTg+Xq+qDKER1gka5qXuhWpXb2H9gb8 pEi8DSPo/rczC+M7PDfiCodLcnlodKBf9X3uDFDwuyKr0OIfep62lvsnUhVLJs81SmNzIv186ID pLkXC2pJL31/R19b6P2mWNRhyIUOgtsKzbv6FJAiad6Sv03hz6bcfq92vbJ4RO9h7lsPsMVZ71h 5zxiyswl1p3LeHGKiT9EDOAtPBoL0e1P9te X-Received: by 2002:a05:6a00:2d98:b0:84a:646f:193 with SMTP id d2e1a72fcca58-84fdde42b9bmr35973790b3a.0.1787072539610; Tue, 18 Aug 2026 10:02:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Anton Johansson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 18/38] tcg/loongarch64: Implement revbit{8,32,64} Date: Tue, 18 Aug 2026 10:01:35 -0700 Message-ID: <20260818170155.1907006-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072917920158500 Reviewed-by: Anton Johansson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/loongarch64/tcg-target.c.inc | 34 +++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.= c.inc index 97ed51d99c..7d89e80886 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -1866,16 +1866,44 @@ static const TCGOutOpUnary outop_bswap64 =3D { .out_rr =3D tgen_bswap64, }; =20 +static void tgen_revbit8(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) +{ + if (type =3D=3D TCG_TYPE_I32) { + tcg_out_opc_revbit_4b(s, a0, a1); + } else { + tcg_out_opc_revbit_8b(s, a0, a1); + } +} + static const TCGOutOpUnary outop_revbit8 =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_O1_I1(r, r), + .out_rr =3D tgen_revbit8; }; =20 +static void tgen_revbit32(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, unsigned flags) +{ + tcg_out_opc_revbit_w(s, a0, a1); + + /* All 32-bit values are computed sign-extended in the register. */ + if (type =3D=3D TCG_TYPE_I64 && (flags & TCG_BSWAP_OZ)) { + tcg_out_ext32u(s, a0, a0); + } +} + static const TCGOutOpBswap outop_revbit32 =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_O1_I1(r, r), + .out_rr =3D tgen_revbit32, }; =20 +static void tgen_revbit64(TCGContext *s, TCGType type, TCGReg a0, TCGReg a= 1) +{ + tcg_out_opc_revbit_d(s, a0, a1); +} + static const TCGOutOpUnary outop_revbit64 =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_O1_I1(r, r), + .out_rr =3D tgen_revbit64, }; =20 static void tgen_neg(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072830; cv=none; d=zohomail.com; s=zohoarc; b=YIeyoEq85a8roZRHNEPhne7Gd4zOwlgxyqvKp2roprdS2B+v/mdjCrw2p41NQgK95n0z0EcCJQtkWlB1IkP/pewW8VPcLGy1uVtjGJoq7BcYrJQC4jiiAxlnLVI1AJ/cAsS609zC0frp8hXUyc+LXXgE7Jlg1QASpy88XIR0ES8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072830; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=slNkRqDBUzZYQOIVRMUpEwh3vDfThqwAyUd8JEWbOVA=; b=HFL5938wiVGbFmWfSneFzTZuQ+PfGV2dzf8nsETex2ab8nhU3J8YQz0f8H+WXIOQ5DrVVa8scB6LEeN6E2WTU5Rssa4x7xyYJkfXTGwaEn2nnByRJKgh+Rq27sO+uS5a4n0wMX+opWXPDN9bZxl40TYIpsKDNHl7vDY/CEEJPus= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072830259606.5410346004786; Tue, 18 Aug 2026 10:07:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCj-0007Uq-RP; Tue, 18 Aug 2026 13:02:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCh-0007UF-VT for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:24 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCg-0004nN-FY for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:23 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-8518b3ff3e9so138641b3a.2 for ; Tue, 18 Aug 2026 10:02:22 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072541; x=1787677341; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=slNkRqDBUzZYQOIVRMUpEwh3vDfThqwAyUd8JEWbOVA=; b=GELN8Hp9jmLMX27tvoczxyUPdNL1roHHD5JEi4zoPHs4eBbzMvM5qAAjtobEzc2n4I WZptP7G9YFcD+drFnsUzTsFTEcpN5zRjf/igupQ84hO5oW+oH5oapJBrIVOGOFiBfTBQ xWCSHOEvKN+4RMXPHTwB1mSJtCZxLaZ37tF6Rczh6rJSB4mE97YJV6rZAjXmqoSG62yG iSRGSZmXY18Abel11UxAxms4YDIixFyGB7RbuBeGewEpbNohY442AxtCBGIBG4OEf8KV BwqJVsWau5dCo7fdVypRJOLix0sjqCiUnIxLWdkue3fz7vG9ho6w8gICguFKlnIk6V8C +RyQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072541; x=1787677341; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=slNkRqDBUzZYQOIVRMUpEwh3vDfThqwAyUd8JEWbOVA=; b=P+JQ9Ro4inYhLz57ICcfUc8mTlUKE/Q/TPjeFQ/q9usjLIWqopcWiYAsBpcSJdPxvA GBEGRAV3qWzdKmVjfZlJtNufSfvrUd94or+vf3+7yTin8Q0x+YJNLMQWaRbUVXGcDgtT 6aJ4ApLHiyJ2HeTh4ocdjKKA8UMxjgxYZ9NeBZ2jFzXkYeSNkSNQkncxoBHeKY1lLDf9 eHhFcxjNd99FXJS2u7HRsPaHzARhwM1R78Bkqv/rdp8dpJ6JgQhajY2BUzm4z2xl5/k4 BcX439sghYnvqHzV/hUnO/nMomNvbethlZjuKydlcBd3KVxi4Q9YiF/GDJ8ssQl3t3K3 jpkA== X-Gm-Message-State: AOJu0YwIetkKNKCEljJA1bwQUeZbVYVZZTsfDFBHrvQK7KjPsFtXwvOg KR73ZDAsEIAjlvoOT07YFCcGzMapqDnqnZf2A2edp0O4tUqWceofz2zIeKXwmtPbIazlUmdpynf wfso5zoI= X-Gm-Gg: AR+sD13mKziFkPBphEJQN6GGHIteR01d0FpRhu5wcPYExHpNkukvjzjIGQNnKi5moOc fH7cXl+B9w17Qn9ham2M/EUCcKkrT4ovtm2N7xvaMqKkSVSOUIHmRSORUbIrjXWa5k1JoGTQpXE GchhIvGQ502Fh/n6AdiSCY8NLH224KAW8fKZo1Ob8rlL6pxSP4oSddYUsBh7mX/qxpSPiYt5RUB GtiKacMxM12Vattoy9DIBMPnlbNtymRonu0EyROgNuky4UmSQvqHfcMMMO26TAY9NHFL9OuvXF5 h13Oc3LGttceLfawu7PKMaKWwxwib6w13egSukd49y4RnaZUm5qpg+hqerpe6xzXR+zOadyBacB LZfFmrooTLl96/09q3oq/EQaHP+OXVPaMjMgYLIIr9hhBNyozHm21GzSIbSFaFj/5g6px7b/k5T 9h35MYoUqGpZFDMBGCieHT4UikyidIv8wsI29yy4SavaNJvkzQId3mbtpTnYqH+9CwyCCRpXql8 Rw/6spmM19G0TzXXuZ1iAcvMP9LmmVAI7U= X-Received: by 2002:a05:6a00:ab8a:b0:851:804c:f4eb with SMTP id d2e1a72fcca58-851b87eae5dmr14551436b3a.4.1787072540662; Tue, 18 Aug 2026 10:02:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Alistair Francis , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 19/38] util/cpuinfo-riscv: Detect Zbkb Date: Tue, 18 Aug 2026 10:01:36 -0700 Message-ID: <20260818170155.1907006-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072831101158500 RISCV_HWPROBE_EXT_ZBKB was introduced in linux 6.10 with the rest of the hwprobe api. Reviewed-by: Alistair Francis Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- host/include/riscv64/host/cpuinfo.h | 1 + util/cpuinfo-riscv.c | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/host/include/riscv64/host/cpuinfo.h b/host/include/riscv64/hos= t/cpuinfo.h index b2b53dbf62..1f047051a3 100644 --- a/host/include/riscv64/host/cpuinfo.h +++ b/host/include/riscv64/host/cpuinfo.h @@ -12,6 +12,7 @@ #define CPUINFO_ZBS (1u << 3) #define CPUINFO_ZICOND (1u << 4) #define CPUINFO_ZVE64X (1u << 5) +#define CPUINFO_ZBKB (1u << 6) =20 /* Initialized with a constructor. */ extern unsigned cpuinfo; diff --git a/util/cpuinfo-riscv.c b/util/cpuinfo-riscv.c index 0291b7218a..8c48b1ea91 100644 --- a/util/cpuinfo-riscv.c +++ b/util/cpuinfo-riscv.c @@ -36,7 +36,7 @@ static void sigill_handler(int signo, siginfo_t *si, void= *data) /* Called both as constructor and (possibly) via other constructors. */ unsigned __attribute__((constructor)) cpuinfo_init(void) { - unsigned left =3D CPUINFO_ZBA | CPUINFO_ZBB | CPUINFO_ZBS + unsigned left =3D CPUINFO_ZBA | CPUINFO_ZBB | CPUINFO_ZBS | CPUINFO_ZB= KB | CPUINFO_ZICOND | CPUINFO_ZVE64X; unsigned info =3D cpuinfo; =20 @@ -60,6 +60,9 @@ unsigned __attribute__((constructor)) cpuinfo_init(void) #if defined(__riscv_arch_test) && \ (defined(__riscv_vector) || defined(__riscv_zve64x)) info |=3D CPUINFO_ZVE64X; +#endif +#if defined(__riscv_arch_test) && defined(__riscv_zbkb) + info |=3D CPUINFO_ZBKB; #endif left &=3D ~info; =20 @@ -76,7 +79,8 @@ unsigned __attribute__((constructor)) cpuinfo_init(void) info |=3D pair.value & RISCV_HWPROBE_EXT_ZBA ? CPUINFO_ZBA : 0; info |=3D pair.value & RISCV_HWPROBE_EXT_ZBB ? CPUINFO_ZBB : 0; info |=3D pair.value & RISCV_HWPROBE_EXT_ZBS ? CPUINFO_ZBS : 0; - left &=3D ~(CPUINFO_ZBA | CPUINFO_ZBB | CPUINFO_ZBS); + info |=3D pair.value & RISCV_HWPROBE_EXT_ZBKB ? CPUINFO_ZBKB := 0; + left &=3D ~(CPUINFO_ZBA | CPUINFO_ZBB | CPUINFO_ZBS | CPUINFO_= ZBKB); #ifdef RISCV_HWPROBE_EXT_ZICOND info |=3D pair.value & RISCV_HWPROBE_EXT_ZICOND ? CPUINFO_ZICO= ND : 0; left &=3D ~CPUINFO_ZICOND; @@ -131,6 +135,15 @@ unsigned __attribute__((constructor)) cpuinfo_init(voi= d) left &=3D ~CPUINFO_ZBS; } =20 + if (left & CPUINFO_ZBKB) { + /* Probe for Zbkb: brev8 zero,zero. */ + got_sigill =3D 0; + asm volatile(".insn i 0x13, 5, zero, zero, 0x687" + : : : "memory"); + info |=3D got_sigill ? 0 : CPUINFO_ZBKB; + left &=3D ~CPUINFO_ZBKB; + } + if (left & CPUINFO_ZICOND) { /* Probe for Zicond: czero.eqz zero,zero,zero. */ got_sigill =3D 0; --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072791; cv=none; d=zohomail.com; s=zohoarc; b=OYFTY89OjdQshkUKnwgyGbSthQw75EXhNnRrUSLJA1lJJYV2YaIXBE8HtkKBCgPnj96MHsU6fA3/ouVhVp3mOZoU8OQxSSwr0rh9rMPpz4N/cZmRpLUjarSE1EAJFv4OVfakBOveohyf3u9psUeF1PXYDrwGUFWwXrkVy8QIQrQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072791; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Qgcm7aG40Bg87FLfWPofELqORgbvpwPrs5KI4Oa9cDI=; b=VYJ1/vIYdeyZQfWILVlUMhmR0wz06n6ANSgcTdRalcqSmq9eJem4sOyFP77PybKbyQF4GBv/yERArz4LdVu35bv/xHl9rTKLqqPw4d3YtjI0LDmx+x/8KtckJ8Xood7+IPAYCezTOoQTQzyRuAQ7Z7BW9VS4BKWz7SzkE6RzAC4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072791663202.92238956768824; Tue, 18 Aug 2026 10:06:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCk-0007VJ-P0; Tue, 18 Aug 2026 13:02:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCj-0007Uc-38 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:25 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCh-0004ns-Jl for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:24 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-84faf87d19dso182097b3a.3 for ; Tue, 18 Aug 2026 10:02:23 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072542; x=1787677342; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=Qgcm7aG40Bg87FLfWPofELqORgbvpwPrs5KI4Oa9cDI=; b=ajVOXRO/iKjF5gijBpxMqSxZGOKr1npVbll7Bi7zlJJB2qwQL6URpjMWe1Z3EbOCYQ Kt5uMZwUwlJKSPb0VFTqafblkPdeL5OcaY/U+2Wlf5wX6ITEo099LSn8XekC4LIoarkY XTyLHNRnZ9WYmqwGHxCUz5SOJhU5VEIoXq/Cg/PLKDWuQPsHOjRn/MFOsKHOHXPuMSWW Om/3jDCX2lcw5yBvz7E74Bd7ad/Q6rMp3Qpku28rsv8z/nIkYrS6btRf0E6lT/5evhxh XjbzvnuYGggYstAhW6LL9lQYO6Wie0kIZmdAwOrNGnjhft6Iq9iJpTdK5G69UiFqZujd DnAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072542; x=1787677342; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=Qgcm7aG40Bg87FLfWPofELqORgbvpwPrs5KI4Oa9cDI=; b=e2SXUCWKR3wCtjHzjm7AViSHGFTdayPL6dTO+37NdhiyopzQyte8ohQ0sfMX/6/W/7 xtvfNnfjgZrG8Fasgz91ARQHRVcYSTUYljQlRk8yWyDUwbmZtIxIZsJvD9HKcCZK36lp e1ix+OPQUz0yPAFCNgkItuC+f9skyKMYvAPYwqOL10llRKcy9ngsypMoBktf5IXMBagd 9QMqrvt346ZZA1f4agpPuHmIOCIVQjIMSs1+3smBxIpc9NX5aJspgeuYeCRytrEYjeoA 9ORUBKgRo/9d8PIT/wt9O5pSFTiS8sJI7MNdJweywBExHcXjoBl2g+OD4Dbeagx8jqyL j+qg== X-Gm-Message-State: AOJu0YxBmEhvGZCqY0BkkuwGq3mFNAb6c3zoykATmGPwdGbipxcYhxPC Q3W+rwypT+Zt+vxy7tlXcmb+h2Uo5CvtDjVzMUsvRcnQSvgPRHks3/xFvmRQ7bdcO3MJ8yhXZzR iD/vywMA= X-Gm-Gg: AR+sD11UJWMJ7GNR5c1qcRerd6Ir3dhk8gMmRNvLa6QyHGQEZ3BwNe0BF9hIbmlMmDF 8o5i3X5PVFG5m5E9nR0PB5FbRubS9NCUgD0k3lChvqC8Et+cWVMU1Ir1T+t9sWnJTS/YjG4xGt+ kC05h+GTgPw3bYRWY3UWNao8a0y80HJRlw9JPhBVjycGRlAkZqvh/vCRnJTRonSTWrO2r8Bmc+Z qj4POC1dbaoqtv/hWEUSl+6o148LXwKQ/dL4toXDUdeZr7O33PnCwM4i/ygbQkJsWkwaliDJ/33 cjymsK88DA3nmbdfRd0XMdvSx+GFDTv3VwuHabDN4dcTH1J53RELp9NFYWN3AB1Umr7j/sQpwe3 mK8t77iTOZvFn1bZLYA5MUDAUnDuJREa2HUyuPjpDtdRT+vVRDSEa9Zyos1VKJiqTp4ecExwRCw Q2EzVk/YnBkeGv+NZsSn4CX1QmkvNLBpkDx82Dnmp2tv45/g5Bxw5fT+G9cbV55ffA5UUETym6z UQ1gtozumTrFrwkq99NOvE1YaqSdxbwZ4I= X-Received: by 2002:a05:6a00:4408:b0:84a:29a7:f650 with SMTP id d2e1a72fcca58-84fdde01af6mr37184540b3a.0.1787072542008; Tue, 18 Aug 2026 10:02:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Alistair Francis Subject: [PULL 20/38] tcg/riscv64: Implement revbit8 Date: Tue, 18 Aug 2026 10:01:37 -0700 Message-ID: <20260818170155.1907006-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072792721158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Alistair Francis Signed-off-by: Richard Henderson --- tcg/riscv64/tcg-target.c.inc | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tcg/riscv64/tcg-target.c.inc b/tcg/riscv64/tcg-target.c.inc index 687146e0b0..8fd32644fe 100644 --- a/tcg/riscv64/tcg-target.c.inc +++ b/tcg/riscv64/tcg-target.c.inc @@ -246,6 +246,9 @@ typedef enum { OPC_XNOR =3D 0x40004033, OPC_ZEXT_H =3D 0x0800403b, =20 + /* Zbkb: Bit Manipulation for Cryptography */ + OPC_BREV8 =3D 0x68705013, + /* Zicond: integer conditional operations */ OPC_CZERO_EQZ =3D 0x0e005033, OPC_CZERO_NEZ =3D 0x0e007033, @@ -2469,8 +2472,20 @@ static const TCGOutOpUnary outop_bswap64 =3D { .out_rr =3D tgen_bswap64, }; =20 +static TCGConstraintSetIndex cset_revbit8(TCGType type, unsigned flags) +{ + return cpuinfo & CPUINFO_ZBKB ? C_O1_I1(r, r) : C_NotImplemented; +} + +static void tgen_revbit8(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) +{ + tcg_out_opc_imm(s, OPC_BREV8, a0, a1, 0); +} + static const TCGOutOpUnary outop_revbit8 =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_Dynamic, + .base.dynamic_constraint =3D cset_revbit8, + .out_rr =3D tgen_revbit8, }; =20 static const TCGOutOpBswap outop_revbit32 =3D { --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072938; cv=none; d=zohomail.com; s=zohoarc; b=nGI3AXF4877PQk9l+06GQ3oUEXEI5Q+w64O65OtxnsbBR3trn40ur9mc/eLz8vDXdbSGMxq2oeSdak0m3vMxReZWQUOAPGWairSFcDnTVF2x8Di6we9kHSbo7cDFG1zz6s7rAWtOrSJpwEqVqWnbXJ3FBETCa23dw71iYT8x768= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072938; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=AqfSwhFQ5ZXhK2egjzylQrSHloLAK+d258nL1VsL+MU=; b=iYrqU59JK/XNOfT/Xp0OnBp/tczSlxyioEbjITxPh597pn+zZtUY5QxZXMBj6DGfEiTxWqrvc10B35/oLx31FxfN1z1khyS8qYvR8I7Ix8QgffhsAYcC5SxYvjlorwoIBNkWaiqYI4fHXl7GFuRPkkI5p6VgLb8lbXzQ8dGr8jM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072938031352.4372754230611; Tue, 18 Aug 2026 10:08:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCl-0007VQ-ID; Tue, 18 Aug 2026 13:02:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCk-0007V5-B0 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:26 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCi-0004o9-T9 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:26 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-ca00f126b7eso10048a12.2 for ; Tue, 18 Aug 2026 10:02:24 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072543; x=1787677343; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=AqfSwhFQ5ZXhK2egjzylQrSHloLAK+d258nL1VsL+MU=; b=YxYaf6PwqbpY8L8KXwOJNdg+3dRX5Y4FjN1bNIjAgMOwMlFkiChUzHp5CbxWjWNH9K 5B720o+C/6Dv8uH2yJE164h1pfI6m3goyTP57kKrjHSKM0z5PkJHkvsdmsgz9arbw3s5 66n+bCfE2WmT+QDNC+ZdlylU7q2ohDvzHwL7ZouCz2T1qoI7RoT+Y6UriEhPbVuNc0+8 nnQA/34cto/mkQNsYB9zQ5ffknoyi2K/cFeOWDZAKpQumAl/k/Pu1y9plKdoo4c+OkwR ADIgfHLn1eg3eULViqpjqUZATZMPzrisBbQemguEBYIB4f11FgJYur/DKhHVWl88zZrH H0lQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072543; x=1787677343; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=AqfSwhFQ5ZXhK2egjzylQrSHloLAK+d258nL1VsL+MU=; b=R+yMr7CRzc7zsckB45WRAPmE+grTAqoNH5xuRqc9+kvPH3qnOljdbN2Xb3qAAYTQJz KNiAUr0/6Huq0ZO1cR19z5+aNkGLss52+HdYqVuTPIYhtTTxsMK6FTxU4D/3ZiphA/75 Rd1CEHacF+3BjMBF+X0/Bi56fjVY53ivuvMKoILzBjq7z7iFlBy4owb56woBdO9WR03o mznwTuKGYoRUXGk8hQKIbsxJLgTzHQMwuh1WGh49qoM9m9TvXiHFsHZigswPhZHqnK1p z5Rr+dyfP/4FomrE6plHk2wAkukV0Y0Qcw8OgtXuEDvdVrKNWvPbvSrMByQ3wCYrQSrf sddQ== X-Gm-Message-State: AOJu0YxNx3dAm9Aqq23jzyTYFLtJfAF6DXH7kzGPkRpTSVYp40VamoEf xgOSSJI903tacS3+GRZ/yqHkZWRjyOaPK34dHnB0+pVDhz7C6ZkSpCAcBPcgALE5ZG+H1YVsGtN UN5rAxjw= X-Gm-Gg: AR+sD12pBxC7KFlTx/DCRFF+dZRizlkaDzTSs+gemBbKWtL2D00SCTCuIJW2OSDtw7L +irh/QFpxQLBaR2LulX84dnXnvqvruGr1GEv4eXUb27F7FXDuAlFO3681tTkO3teJgJJu9tWUxw AIES8r2NybL/xmPJfHYo0CXDZodgQF13cwNc60lQRtakegOLbtiJeCvqJ0Bq+kox027GBzU6GIO wlbIYO/s7w0fTf2PrORma/HWXE4Q84adWGkuijHACmsURbLH8tUAOmYIVCfl0IIcvd0WiP5X532 nmPGeoPxw42rMiWwoyYPF3JmwRyqe5CO1ywbTGKdQKbfrvRLjkL2bOZIrpIvacyDvWojCvZkBxC 9BzU8lJl7SoeJhcnbMNv4Rc/x/S8oMD8E08wvvoONhr2EVaepWhQNJKpJhpfu8jfKU4Dw2eRZj5 td1BSbTRCz1h5U+6Asvy8j9iGaQRPDTCmlfh9kaSmhBshw3uPFVSWZJ6KDJBTj258r6Tdo19O9J 3OjbkkJurahELsS2/WCOvb7e1P4dRIr2K0= X-Received: by 2002:a05:6a00:2383:b0:84e:89a:b8ec with SMTP id d2e1a72fcca58-84fde3d4d3emr33939674b3a.11.1787072543252; Tue, 18 Aug 2026 10:02:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 21/38] tests/tcg/loongarch64: Tidy test_bit.c Date: Tue, 18 Aug 2026 10:01:38 -0700 Message-ID: <20260818170155.1907006-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072939995158500 Use one macro for all test templates. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tests/tcg/loongarch64/test_bit.c | 69 +++++++------------------------- 1 file changed, 15 insertions(+), 54 deletions(-) diff --git a/tests/tcg/loongarch64/test_bit.c b/tests/tcg/loongarch64/test_= bit.c index a6d9904909..69b2eaac78 100644 --- a/tests/tcg/loongarch64/test_bit.c +++ b/tests/tcg/loongarch64/test_bit.c @@ -2,62 +2,23 @@ #include =20 #define ARRAY_SIZE(X) (sizeof(X) / sizeof(*(X))) -#define TEST_CLO(N) \ -static uint64_t test_clo_##N(uint64_t rj) \ -{ \ - uint64_t rd =3D 0; \ - \ - asm volatile("clo."#N" %0, %1\n\t" \ - : "=3Dr"(rd) \ - : "r"(rj) \ - : ); \ - return rd; \ + +#define TEST(C, I) \ +static uint64_t test_##C(uint64_t rj) \ +{ \ + uint64_t rd; \ + asm volatile(I " %0, %1\n\t" : "=3Dr"(rd) : "r"(rj)); \ + return rd; \ } =20 -#define TEST_CLZ(N) \ -static uint64_t test_clz_##N(uint64_t rj) \ -{ \ - uint64_t rd =3D 0; \ - \ - asm volatile("clz."#N" %0, %1\n\t" \ - : "=3Dr"(rd) \ - : "r"(rj) \ - : ); \ - return rd; \ -} - -#define TEST_CTO(N) \ -static uint64_t test_cto_##N(uint64_t rj) \ -{ \ - uint64_t rd =3D 0; \ - \ - asm volatile("cto."#N" %0, %1\n\t" \ - : "=3Dr"(rd) \ - : "r"(rj) \ - : ); \ - return rd; \ -} - -#define TEST_CTZ(N) \ -static uint64_t test_ctz_##N(uint64_t rj) \ -{ \ - uint64_t rd =3D 0; \ - \ - asm volatile("ctz."#N" %0, %1\n\t" \ - : "=3Dr"(rd) \ - : "r"(rj) \ - : ); \ - return rd; \ -} - -TEST_CLO(w) -TEST_CLO(d) -TEST_CLZ(w) -TEST_CLZ(d) -TEST_CTO(w) -TEST_CTO(d) -TEST_CTZ(w) -TEST_CTZ(d) +TEST(clo_w, "clo.w") +TEST(clo_d, "clo.d") +TEST(clz_w, "clz.w") +TEST(clz_d, "clz.d") +TEST(cto_w, "cto.w") +TEST(cto_d, "cto.d") +TEST(ctz_w, "ctz.w") +TEST(ctz_d, "ctz.d") =20 struct vector { uint64_t (*func)(uint64_t); --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072579; cv=none; d=zohomail.com; s=zohoarc; b=HSqmhp0M8oLxjTyzpQcY9Hsq4IcGAUW+lZC7Be5zPnwKsQ2cGF+wuaU5JOaWC7pXr/lSRXe/gTe4+1Kr0UO1CwMYsRLGceXYLr6gC41KuF1zfw4pTrxUWrGNZrQgrOMlAj7P/AQYfsWd5QxcjoWUEIJLVokxvTGW+Mv9YjmgzFY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072579; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1YQMkivKycB5cfvCchdQ+C8CnaC0uiNW1Azb4VvHQxA=; b=CBu9BGXCOfvzUqn/FfGmWaKhbTlmBQU9Pbqc/sqnCCOXqeIESNNTJGbf5lUPWk4RKIY79Z+cURu5IdZYSx35P8xmawlPzeRfhrXvU9q2oscOz/Tj8tPENI4WWhMWZy4wC9WC5DFQjCeWIql//kFP7R/DK8EBm/m9U0PRfIuTXts= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072579894350.03820514660583; Tue, 18 Aug 2026 10:02:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCm-0007a9-VJ; Tue, 18 Aug 2026 13:02:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCl-0007VP-IM for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:27 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCj-0004of-Q0 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:27 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-c9e7391839cso26918a12.0 for ; Tue, 18 Aug 2026 10:02:25 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072544; x=1787677344; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=1YQMkivKycB5cfvCchdQ+C8CnaC0uiNW1Azb4VvHQxA=; b=YyvhROTtjgkvOpCjAbXxEmwigpdse6PqkNEjX4BIs9bWei6vyhsIPUmE4NwVNbdBGq VfjrY1v1ton6KQW8SdGNMcs3uQnXMCJLrjLRnED1R0eQDO9LIko3Ojbke8RkVU0AJiSr PWMEl+Yy52wqK70viCLUifWENMyN7nJqfI5yW5TrT7pPXbJetp3QDJxrSWfQyQPmob40 qC0ZkZNDKAKCRUgOpndSIyKbkeo6HbrfXpARfQOUe0jL/UsswQUnQ3BQTBHT6lPHITGE CTMntFXiPiVS+X9gNNrVfAYmc8am+K6/Z5SaVHeKh4Maeya3kiP30Yl0Hy46k012XY8O qc4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072544; x=1787677344; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=1YQMkivKycB5cfvCchdQ+C8CnaC0uiNW1Azb4VvHQxA=; b=g9s4JD4i8brraV5KqAGLvcNAKNpFtg2i/SEOF8plD+BIpxvd8hUyAAWJbRCMXICrNH IxehWz8A7YYkz9R+9etwiW+NcV6GNSscJ/mLsKAOdFlLOh0mzlVoAIi+hALXKLYikLDO bpTmTOiD6IPbmkd51H53SBncG0+MwvxGnaBpXj9SeRdxyWw/ew8L4vMmOGBTpez2fiFH ieK3556jJXXNUrNNy2/hk98KZZAHiTLg2lqXho1sw1HG2hUUJalOVmR65QP1ZL1g8jS8 qY5PlO5ZWMK0hoXh/WV3crkZ6OqLl17baxZKCu2YvIBTrI1xBlZtz+1RKbquf+rnePkr 08DA== X-Gm-Message-State: AOJu0YxDnGqYhbbXEEfk1NQC0uAyjpOGdymQyNJPg/5T6NpLOVYqQGd/ hYzspuGZifRoHeAVL9eZKxbcpfph4sqnljs2EC5gVIdZJf8TOBpqv8GhgUpgJWP0TFAjtgtheyt 8/aAcCM0= X-Gm-Gg: AR+sD12kammY8LHVIvKQ15RhacITO1NmEqyhhwsDWDmurSgT1bHIHoSpe329CMGN4Y9 RAGvVAHEnLuBe7mg3xRvMU0NMtNcARA3mL/N9jPXfogtGXbsYGRU1rZBx+mbQyohMUTvJmpzI0H NfYUQCgKdOAneN+xISwGM6xtKyqtqru+B1wFnM7nTq4RO8+gsgAOBolZ6TJF62r5mTkyqyAEx2r cAucieMXVJdKIHxqyNNoAYZBYES0+oyk9MEYBba8Br26Velolou72Ge75qP2xBdQaDsXThQj6fh gXJyoiybVgdZPTFpL/4vg+sFMfsNwQlLhXvTyVh+Xby6HqSCcP9PHr8Ee5+SAK/ClglIKtjJJRe PaFAiMyEFoGINO4oMs0TD5fgKOM4zntAidQg2pjkBBi48EB+DmI3JJ77NjrLrm3ADzXej2HqhZZ 5YHmCRrkWlkw85VlV1aJKGRy9q4DTTlVzwFiO4LDcb4WHAAe+WnvEM75SPob73hTjZutGsUva53 08Gr4TUq2cVtKlhWko5fS05ZdMJwO7r3iun/neW/J4wfXs= X-Received: by 2002:a05:6a00:2e99:b0:84e:7ec:aa42 with SMTP id d2e1a72fcca58-84fddfce17amr36449556b3a.10.1787072544374; Tue, 18 Aug 2026 10:02:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 22/38] tests/tcg/loongarch64: Add bitrev smoke tests Date: Tue, 18 Aug 2026 10:01:39 -0700 Message-ID: <20260818170155.1907006-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072580794158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tests/tcg/loongarch64/test_bit.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests/tcg/loongarch64/test_bit.c b/tests/tcg/loongarch64/test_= bit.c index 69b2eaac78..65cd6598c9 100644 --- a/tests/tcg/loongarch64/test_bit.c +++ b/tests/tcg/loongarch64/test_bit.c @@ -19,6 +19,10 @@ TEST(cto_w, "cto.w") TEST(cto_d, "cto.d") TEST(ctz_w, "ctz.w") TEST(ctz_d, "ctz.d") +TEST(bitrev_4b, "bitrev.4b") +TEST(bitrev_8b, "bitrev.8b") +TEST(bitrev_w, "bitrev.w") +TEST(bitrev_d, "bitrev.d") =20 struct vector { uint64_t (*func)(uint64_t); @@ -35,6 +39,10 @@ static struct vector vectors[] =3D { {test_cto_d, 0xabd28a64000000, 0}, {test_ctz_w, 0xfaffff42392476ab, 0}, {test_ctz_d, 0xabd28a64000000, 26}, + {test_bitrev_4b, 0xdeadbeef11223344, 0xffffffff8844cc22}, + {test_bitrev_8b, 0x1122334455667788, 0x8844cc22aa66ee11}, + {test_bitrev_w, 0xdeadbeef89abcdef, 0xfffffffff7b3d591}, + {test_bitrev_d, 0x0123456789abcdef, 0xf7b3d591e6a2c480}, }; =20 int main() --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072629; cv=none; d=zohomail.com; s=zohoarc; b=Tf6xQd5En/fDXDmtgTYu35pad6OpuWfyrBNQlVVTSwJuEyo5t3fdeB+sPl2nR7eyfh6yOGAL5kZRK6TlDN+uZUcmkUBLuMhZP0iEKJZsfeBW91o5qz08nGcY+m1SvOwTHnvCjjcPALFLFk84vRxTrSBM5wEMY5GCEYa1RT+WL60= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072629; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=meRpk4HIgZo/gaZ4CbrgzmeOnyzqJ4mXEzM6ce03Ox8=; b=l7kaAoXmibIQjmxvryQQoO64G61Csy4gZBk9JLJxu3yiG7fVl8mFROBwv/v8dB01JE42EZNIzJAtpDqlrYLHAXpZsontpygQU+tBTQwDy6RuwHO09Hh9JKi9T57IInIOQanVXD3+FPc6KwJabZkWnjzHSLj0o4xDaZ0D5WaXoxQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072623870186.55709102206765; Tue, 18 Aug 2026 10:03:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCq-0007fi-6Y; Tue, 18 Aug 2026 13:02:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCn-0007d0-Vq for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:30 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCl-0004pS-HQ for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:29 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-84867f07d63so175625b3a.2 for ; Tue, 18 Aug 2026 10:02:27 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072546; x=1787677346; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=meRpk4HIgZo/gaZ4CbrgzmeOnyzqJ4mXEzM6ce03Ox8=; b=qvX3bnqUZmHsb45Sf51oa8o/hHEEvGhQnVTz/q7PbJjPNuH5wbPwU+l8VEA8MzjdhP G9UVb+lwoSuBMoKqIL/HoFlf9gFBPp2v2OhHl2zIAabmku8chkgq12x8SVQmIqt/lQqQ G4flbi3j8EdW74+cuX+IyV/xP0ageozhMWAovQycyRS15Ak389ElUbe3NjK2rT7SGX1n wzXIrk3cq7O/x/8LdBUz7rUfXwtVlTV86hn+Q9HrX2JBsDPkp0+Gp/Am04nxCw0jH0gm 3zWlgAgl3F2FHMun3ALuqHq79ER2SNUe0GD3j04THhZoFczlbz9wLA2L3skAUuzHKUK3 lOCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072546; x=1787677346; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=meRpk4HIgZo/gaZ4CbrgzmeOnyzqJ4mXEzM6ce03Ox8=; b=aw+Jfa2gDhRRICpKTQ7zqcU1f2jUGrW0m20+8tKPQIgLG7P7R7PR0NH2p2vfsYbXgo UPxlFbVhyLMNMJz40YKFP7Bnv2u/z5ud0M6A6Td9uJd8l2smPPwrQ37GtfTjeagyJRZZ P3RaRsZsp8qXc1WwWZvPCDrr4xKcGyf5wtTKwl/3Rr7En1bI72J2aBXb1Wo0/A9R3AG5 bjn55Xk/3BKO+dmBwGtY5E7mSIDQO3SAHCysUrC6embKyu5Hj5eZFIoImlp95qhDB1ps XO2R8SyBGtAU6oHpXPrLoBLVLyjfQpHBx826bK3/6seZ8dvgkoCzCaalEJVJLgqU05cs p0ww== X-Gm-Message-State: AOJu0YyhDpVAwo2g03CnIhFAi4Bpj6cMcp6JTD3f9ZbdxoNxFLcSC4t3 Vm1UAJ6BNMcjXJOKJYvX3NQtuN07pmK6jtTHCLexhRrpK/zLgJQFBhaNcpRWHchVVJdZb19/PZP DYLipz3Q= X-Gm-Gg: AR+sD12fWVdXhUcxdUPb2z9en+y/Ofs6HHMJV3/jxI+U9ZUqFa+mFv3/NSi1e3oHpfW uYLYuCHfE+gAg7LGHYF/64DWpfUn3OWgfjnNBaY6LPDNKCC5wairWAiqxf1w2JbxY+PpFV5/c4o Oa0GAqSrWOigVadqxtyrOrpxpKSU9hxJcrIDOpDZb29y9+YCm3a70Kt1sSpigulM3MGZuQDcxj+ g6LKgbCFb09zo/JU51Y3kY2pbg5XqRByC24F1UAcD0IJXMwuGZMubS0jmR9qXxq94MGAa0rWYZI 0Cbjs3vEq4sqKp5st/Cq3K8jv98CtS9cXawr7HGahgn1jBCRdjJ4SzGG2WG92D3nX5NBNIVrQWy 2gjOEzC0mPhMah2PRqnXEW0N7/znUfHsbJ7+QtKGexVKFO15E7cexXl8s6oV7c4h6mD/BqosL7v 3ao8gH/NxZg3gRl0CHHQF5VJoZhAW8Fh58ZvslaKc12ZZcYjfo13dPTAn+UhbOzuK3EQboHFh6T +xXD3/WtOdr8w5W2m9X3BYHfqdyLvthM+o= X-Received: by 2002:a05:6a00:2308:b0:84a:60a4:2651 with SMTP id d2e1a72fcca58-84fddfa84f0mr35514157b3a.6.1787072545863; Tue, 18 Aug 2026 10:02:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= Subject: [PULL 23/38] tcg: Add integer min/max opcodes Date: Tue, 18 Aug 2026 10:01:40 -0700 Message-ID: <20260818170155.1907006-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072631461158500 We already have these for vectors; replicate for integers. Reviewed-by: Alex Benn=C3=A9e Signed-off-by: Richard Henderson --- include/tcg/tcg-opc.h | 4 +++ tcg/tcg-op.c | 48 ++++++++++++++++++++++++++------ tcg/tcg.c | 8 ++++++ docs/devel/tcg-ops.rst | 12 ++++++++ tcg/aarch64/tcg-target.c.inc | 16 +++++++++++ tcg/loongarch64/tcg-target.c.inc | 16 +++++++++++ tcg/ppc64/tcg-target.c.inc | 16 +++++++++++ tcg/riscv64/tcg-target.c.inc | 16 +++++++++++ tcg/s390x/tcg-target.c.inc | 16 +++++++++++ tcg/sparc64/tcg-target.c.inc | 16 +++++++++++ tcg/tci/tcg-target.c.inc | 16 +++++++++++ tcg/x86_64/tcg-target.c.inc | 16 +++++++++++ 12 files changed, 192 insertions(+), 8 deletions(-) diff --git a/include/tcg/tcg-opc.h b/include/tcg/tcg-opc.h index 13c7f17f76..f3a81d5d7f 100644 --- a/include/tcg/tcg-opc.h +++ b/include/tcg/tcg-opc.h @@ -89,11 +89,15 @@ DEF(setcond, 1, 2, 1, TCG_OPF_INT) DEF(sextract, 1, 1, 2, TCG_OPF_INT) DEF(shl, 1, 2, 0, TCG_OPF_INT) DEF(shr, 1, 2, 0, TCG_OPF_INT) +DEF(smax, 1, 2, 0, TCG_OPF_INT) +DEF(smin, 1, 2, 0, TCG_OPF_INT) DEF(st8, 0, 2, 1, TCG_OPF_INT) DEF(st16, 0, 2, 1, TCG_OPF_INT) DEF(st32, 0, 2, 1, TCG_OPF_INT) DEF(st, 0, 2, 1, TCG_OPF_INT) DEF(sub, 1, 2, 0, TCG_OPF_INT) +DEF(umax, 1, 2, 0, TCG_OPF_INT) +DEF(umin, 1, 2, 0, TCG_OPF_INT) DEF(xor, 1, 2, 0, TCG_OPF_INT) =20 DEF(addco, 1, 2, 0, TCG_OPF_INT | TCG_OPF_CARRY_OUT) diff --git a/tcg/tcg-op.c b/tcg/tcg-op.c index c302a484cd..e28944cf72 100644 --- a/tcg/tcg-op.c +++ b/tcg/tcg-op.c @@ -1294,22 +1294,38 @@ void tcg_gen_revbit32_i32(TCGv_i32 ret, TCGv_i32 ar= g) =20 void tcg_gen_smin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { - tcg_gen_movcond_i32(TCG_COND_LT, ret, a, b, a, b); + if (tcg_op_supported(INDEX_op_smin, TCG_TYPE_I32, 0)) { + tcg_gen_op3_i32(INDEX_op_smin, ret, a, b); + } else { + tcg_gen_movcond_i32(TCG_COND_LT, ret, a, b, a, b); + } } =20 void tcg_gen_umin_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { - tcg_gen_movcond_i32(TCG_COND_LTU, ret, a, b, a, b); + if (tcg_op_supported(INDEX_op_umin, TCG_TYPE_I32, 0)) { + tcg_gen_op3_i32(INDEX_op_umin, ret, a, b); + } else { + tcg_gen_movcond_i32(TCG_COND_LTU, ret, a, b, a, b); + } } =20 void tcg_gen_smax_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { - tcg_gen_movcond_i32(TCG_COND_LT, ret, a, b, b, a); + if (tcg_op_supported(INDEX_op_smax, TCG_TYPE_I32, 0)) { + tcg_gen_op3_i32(INDEX_op_smax, ret, a, b); + } else { + tcg_gen_movcond_i32(TCG_COND_LT, ret, a, b, b, a); + } } =20 void tcg_gen_umax_i32(TCGv_i32 ret, TCGv_i32 a, TCGv_i32 b) { - tcg_gen_movcond_i32(TCG_COND_LTU, ret, a, b, b, a); + if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I32, 0)) { + tcg_gen_op3_i32(INDEX_op_umax, ret, a, b); + } else { + tcg_gen_movcond_i32(TCG_COND_LTU, ret, a, b, b, a); + } } =20 void tcg_gen_abs_i32(TCGv_i32 ret, TCGv_i32 a) @@ -2473,22 +2489,38 @@ void tcg_gen_mulsu2_i64(TCGv_i64 rl, TCGv_i64 rh, T= CGv_i64 arg1, TCGv_i64 arg2) =20 void tcg_gen_smin_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { - tcg_gen_movcond_i64(TCG_COND_LT, ret, a, b, a, b); + if (tcg_op_supported(INDEX_op_smin, TCG_TYPE_I64, 0)) { + tcg_gen_op3_i64(INDEX_op_smin, ret, a, b); + } else { + tcg_gen_movcond_i64(TCG_COND_LT, ret, a, b, a, b); + } } =20 void tcg_gen_umin_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { - tcg_gen_movcond_i64(TCG_COND_LTU, ret, a, b, a, b); + if (tcg_op_supported(INDEX_op_umin, TCG_TYPE_I64, 0)) { + tcg_gen_op3_i64(INDEX_op_umin, ret, a, b); + } else { + tcg_gen_movcond_i64(TCG_COND_LTU, ret, a, b, a, b); + } } =20 void tcg_gen_smax_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { - tcg_gen_movcond_i64(TCG_COND_LT, ret, a, b, b, a); + if (tcg_op_supported(INDEX_op_smax, TCG_TYPE_I64, 0)) { + tcg_gen_op3_i64(INDEX_op_smax, ret, a, b); + } else { + tcg_gen_movcond_i64(TCG_COND_LT, ret, a, b, b, a); + } } =20 void tcg_gen_umax_i64(TCGv_i64 ret, TCGv_i64 a, TCGv_i64 b) { - tcg_gen_movcond_i64(TCG_COND_LTU, ret, a, b, b, a); + if (tcg_op_supported(INDEX_op_umax, TCG_TYPE_I64, 0)) { + tcg_gen_op3_i64(INDEX_op_umax, ret, a, b); + } else { + tcg_gen_movcond_i64(TCG_COND_LTU, ret, a, b, b, a); + } } =20 void tcg_gen_abs_i64(TCGv_i64 ret, TCGv_i64 a) diff --git a/tcg/tcg.c b/tcg/tcg.c index 8a324ce885..489df0e738 100644 --- a/tcg/tcg.c +++ b/tcg/tcg.c @@ -1211,6 +1211,8 @@ static const TCGOutOp * const all_outop[NB_OPS] =3D { OUTOP(INDEX_op_sextract, TCGOutOpExtract, outop_sextract), OUTOP(INDEX_op_shl, TCGOutOpBinary, outop_shl), OUTOP(INDEX_op_shr, TCGOutOpBinary, outop_shr), + OUTOP(INDEX_op_smax, TCGOutOpBinary, outop_smax), + OUTOP(INDEX_op_smin, TCGOutOpBinary, outop_smin), OUTOP(INDEX_op_st, TCGOutOpStore, outop_st), OUTOP(INDEX_op_st8, TCGOutOpStore, outop_st8), OUTOP(INDEX_op_st16, TCGOutOpStore, outop_st16), @@ -1220,6 +1222,8 @@ static const TCGOutOp * const all_outop[NB_OPS] =3D { OUTOP(INDEX_op_subbo, TCGOutOpAddSubCarry, outop_subbo), /* subb1o is implemented with set_borrow + subbio */ OUTOP(INDEX_op_subb1o, TCGOutOpAddSubCarry, outop_subbio), + OUTOP(INDEX_op_umax, TCGOutOpBinary, outop_umax), + OUTOP(INDEX_op_umin, TCGOutOpBinary, outop_umin), OUTOP(INDEX_op_xor, TCGOutOpBinary, outop_xor), =20 [INDEX_op_goto_ptr] =3D &outop_goto_ptr, @@ -5518,6 +5522,10 @@ static void tcg_reg_alloc_op(TCGContext *s, const TC= GOp *op) case INDEX_op_sar: case INDEX_op_shl: case INDEX_op_shr: + case INDEX_op_smax: + case INDEX_op_smin: + case INDEX_op_umax: + case INDEX_op_umin: case INDEX_op_xor: { const TCGOutOpBinary *out =3D diff --git a/docs/devel/tcg-ops.rst b/docs/devel/tcg-ops.rst index f2e9255dd9..88d48a1f99 100644 --- a/docs/devel/tcg-ops.rst +++ b/docs/devel/tcg-ops.rst @@ -317,6 +317,18 @@ Arithmetic pass 0 to *nh* to make a simple zero-extension of *nl*, so overflow should never occur. =20 + * - smax *t0*, *t1*, *t2* + + umax *t0*, *t1*, *t2* + + - | *t0* =3D MAX(*t1*, *t2*), for signed and unsigned integers. + + * - smin *t0*, *t1*, *t2* + + umin *t0*, *t1*, *t2* + + - | *t0* =3D MIN(*t1*, *t2*), for signed and unsigned integers. + Logical ------- =20 diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc index 80995403e4..f5c185bbf4 100644 --- a/tcg/aarch64/tcg-target.c.inc +++ b/tcg/aarch64/tcg-target.c.inc @@ -2592,6 +2592,22 @@ static void tcg_out_set_borrow(TCGContext *s) TCG_REG_XZR, TCG_REG_XZR, TCG_REG_XZR); } =20 +static const TCGOutOpBinary outop_smax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_smin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_xor(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, TCGReg a2) { diff --git a/tcg/loongarch64/tcg-target.c.inc b/tcg/loongarch64/tcg-target.= c.inc index 7d89e80886..f65496a040 100644 --- a/tcg/loongarch64/tcg-target.c.inc +++ b/tcg/loongarch64/tcg-target.c.inc @@ -1804,6 +1804,22 @@ static void tcg_out_set_borrow(TCGContext *s) g_assert_not_reached(); } =20 +static const TCGOutOpBinary outop_smax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_smin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_xor(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, TCGReg a2) { diff --git a/tcg/ppc64/tcg-target.c.inc b/tcg/ppc64/tcg-target.c.inc index 07dff67e84..cd1c234367 100644 --- a/tcg/ppc64/tcg-target.c.inc +++ b/tcg/ppc64/tcg-target.c.inc @@ -3281,6 +3281,22 @@ static void tcg_out_set_borrow(TCGContext *s) tcg_out32(s, ADDIC | TAI(TCG_REG_R0, TCG_REG_R0, 0)); } =20 +static const TCGOutOpBinary outop_smax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_smin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_xor(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, TCGReg a2) { diff --git a/tcg/riscv64/tcg-target.c.inc b/tcg/riscv64/tcg-target.c.inc index 8fd32644fe..723c21b3da 100644 --- a/tcg/riscv64/tcg-target.c.inc +++ b/tcg/riscv64/tcg-target.c.inc @@ -2404,6 +2404,22 @@ static void tcg_out_set_borrow(TCGContext *s) g_assert_not_reached(); } =20 +static const TCGOutOpBinary outop_smax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_smin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_xor(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, TCGReg a2) { diff --git a/tcg/s390x/tcg-target.c.inc b/tcg/s390x/tcg-target.c.inc index c481745c3f..4d1a779c47 100644 --- a/tcg/s390x/tcg-target.c.inc +++ b/tcg/s390x/tcg-target.c.inc @@ -2950,6 +2950,22 @@ static void tcg_out_set_borrow(TCGContext *s) tcg_out_insn(s, RR, CLR, TCG_REG_R0, TCG_REG_R0); /* cc =3D 0 */ } =20 +static const TCGOutOpBinary outop_smax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_smin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_xor(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, TCGReg a2) { diff --git a/tcg/sparc64/tcg-target.c.inc b/tcg/sparc64/tcg-target.c.inc index d6ed9d3362..35cd14a5b6 100644 --- a/tcg/sparc64/tcg-target.c.inc +++ b/tcg/sparc64/tcg-target.c.inc @@ -1917,6 +1917,22 @@ static void tcg_out_set_borrow(TCGContext *s) tcg_out_set_carry(s); /* borrow =3D=3D carry */ } =20 +static const TCGOutOpBinary outop_smax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_smin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_xor(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, TCGReg a2) { diff --git a/tcg/tci/tcg-target.c.inc b/tcg/tci/tcg-target.c.inc index 1b61668517..4cd1c1431c 100644 --- a/tcg/tci/tcg-target.c.inc +++ b/tcg/tci/tcg-target.c.inc @@ -894,6 +894,22 @@ static void tcg_out_set_borrow(TCGContext *s) tcg_out_op_v(s, INDEX_op_tci_setcarry); /* borrow =3D=3D carry */ } =20 +static const TCGOutOpBinary outop_smax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_smin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_xor(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, TCGReg a2) { diff --git a/tcg/x86_64/tcg-target.c.inc b/tcg/x86_64/tcg-target.c.inc index 37acba9045..2c8f1f3e58 100644 --- a/tcg/x86_64/tcg-target.c.inc +++ b/tcg/x86_64/tcg-target.c.inc @@ -2977,6 +2977,22 @@ static void tcg_out_set_borrow(TCGContext *s) tcg_out8(s, OPC_STC); } =20 +static const TCGOutOpBinary outop_smax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_smin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umax =3D { + .base.static_constraint =3D C_NotImplemented, +}; + +static const TCGOutOpBinary outop_umin =3D { + .base.static_constraint =3D C_NotImplemented, +}; + static void tgen_xor(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, TCGReg a2) { --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072670; cv=none; d=zohomail.com; s=zohoarc; b=j/pJlSQMxisbwQSGGc4ZXpL2QnOdq14xHJzto3Tm/JYbPy9cX+1u+pNLiKbsgPmUtkhRxPwhii2Qb2Pzkl1PCQGkCUN5ZtITWC8403/vuwAbK7qFQPCVjPT6fe54wqfwr+16oaITYQhDGc+W3l7N4I2gB/adR4tKm8ZVjL5z2mg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072670; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6SRnGhlJ6x873gxevWnXJrkMCnx0Y6HHKAzPtz2nuUk=; b=GEbh5Eak+y/Vy1cE4wlRxDdbOopge1B59wGziNgvu4Per/KAQS0g1lYhYSyef3ldhFr+MCzR195ACv3mJVcO1HbH3W3O/thWDIMvDaemqtlGVWUj1g7CglQsrnDDRJeT9kGnXODb13GkA+SxxxbgSwQIukL3qn+PhxgEtbBCiaI= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072670199457.6147317680926; Tue, 18 Aug 2026 10:04:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCo-0007eH-LR; Tue, 18 Aug 2026 13:02:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCo-0007d8-1A for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:30 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCm-0004ph-ED for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:29 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-ca80d708489so1003364a12.1 for ; Tue, 18 Aug 2026 10:02:28 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072547; x=1787677347; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=6SRnGhlJ6x873gxevWnXJrkMCnx0Y6HHKAzPtz2nuUk=; b=hA/gCTz6MWdvCiSR0DgWVmk5jLTBztvOhO15lzjuDaBXYpNKqna+vx9Wnkn2uzEkqv 8RB0a2fvRQxTASNx+L58i3AL9VtMTb8gUMbJ39rBMs8qCcPrrHD15ImGC1RsYpMb2hES MSYEEdWA+hzOI8zDJ/AWvLplRFT5zIi6RP1Ved67LTXQdElnZdxJolAGeCB42yt6zcCP ANzvHGKEYTOLhju7hxhII0JTyNghfaoGodbajn8S/ndevg/SOww5iXknwo4oB5RkNI/u EkC/dRfgCOELM2tnCe0iT0kum89xbitrkmuIxQZ/A0cNcXI7JjKuQN/42eU51z4f00+A NueA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072547; x=1787677347; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=6SRnGhlJ6x873gxevWnXJrkMCnx0Y6HHKAzPtz2nuUk=; b=pUp70WeLJCEsSveNMb9KefKCMnJA+U8iWUGfwD/uIj7Wp0mVD9+dhAMDZlr2luLpjq uJMUmXVKekQRqSzi0z7zngGp9WOf+JpHF3i12FE5oLYGNSG2tnUcPlwB+99A4MWE32GA 6z6ctnthrUkkGNi1c3qIMRfPM00c+kuWRWMBU25KfUL1d5yEd0w3YTHLsIRZ5un/HigV igGekk1d6R31pCBzeULqjEYpPPa4l7Hf+9zt1z4O0fCZdUPCrFQJvXAUxpAq20C+1QcZ wAafPS33yTsI45VVDvOg6QcWt7HFWKeaYOYCEcyJddsE81PZH/mwJdODe8dNTRg1VurD bclA== X-Gm-Message-State: AOJu0YyrzaT3ZOH1tmGKhw8nvYJ/BGwOYos5nHvgA1cPJYdwEtef4AXk rgkvHckxzSlTsUJprON/wQnNVT58lQL6eOZks7uPBj6ME+vrH8eTZXy3q+IhIAlnXgzTOFWXIr8 YW98eaK4= X-Gm-Gg: AR+sD12L4/40eYiykplm929BxJZBa5xKLxOo/pvlrXFltrBTolkeRoSlJEXLTlwL+D2 TIOy6IoTtnIeCijUdahgFSaP+1M3gvz/pZKpUPBlMULd27J0CYOMp7iqi7BlvMP4Z3PPEq0p9Y0 Sk5q0bEfPx2puvlo51yAztQuk1bnbSL2tl2la5U8yhdM5zOD7vvX0D114eoXUsN1N4vcTquPLQk EJuXR5kLkx7rOGlJq80ZMz/qa0jL3V+gQXApxF9InbuPTw6pPw3Pt3H3UyGvSTde3XwYIe6mvLZ eroutlxdUjVNR/+WyDJmU0DJterjwGFEO5V4K1syP14xc/Dkdh2bEl7qE7WlywZCvEkgbbI89Xr Khr7ggBidjEVK4Bt8wFGCnQ9eaEfxM4Oy3HvvZPst8y1Wm/JiwL0byq75FvXKCDnvgvTHykqIbv JdbIPYTNTAu7g9rwwwkiR8Y95qHqxCdAykan1O+wS/pQq1h9auvrlhzBSG9yIcg5r9Ukj703yRe 6X3UO+SlSERB/JDueJPXbqGUbDES0JGYF8= X-Received: by 2002:a05:6a00:10cf:b0:847:9dd7:2683 with SMTP id d2e1a72fcca58-851bc380e98mr7772143b3a.9.1787072546872; Tue, 18 Aug 2026 10:02:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 24/38] tcg/optimize: Handle min/max opcodes Date: Tue, 18 Aug 2026 10:01:41 -0700 Message-ID: <20260818170155.1907006-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072671626158500 Reviewed-by: Alex Benn=C3=A9e Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/optimize.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/tcg/optimize.c b/tcg/optimize.c index facf4c1e0f..d291c844ca 100644 --- a/tcg/optimize.c +++ b/tcg/optimize.c @@ -597,6 +597,30 @@ static uint64_t do_constant_folding_2(TCGOpcode op, TC= GType type, } return (uint64_t)x % ((uint64_t)y ? : 1); =20 + case INDEX_op_smax: + if (type =3D=3D TCG_TYPE_I32) { + return MAX((int32_t)x, (int32_t)y); + } + return MAX((int64_t)x, (int64_t)y); + + case INDEX_op_smin: + if (type =3D=3D TCG_TYPE_I32) { + return MIN((int32_t)x, (int32_t)y); + } + return MIN((int64_t)x, (int64_t)y); + + case INDEX_op_umax: + if (type =3D=3D TCG_TYPE_I32) { + return MAX((uint32_t)x, (uint32_t)y); + } + return MAX((uint64_t)x, (uint64_t)y); + + case INDEX_op_umin: + if (type =3D=3D TCG_TYPE_I32) { + return MIN((uint32_t)x, (uint32_t)y); + } + return MIN((uint64_t)x, (uint64_t)y); + default: g_assert_not_reached(); } @@ -2101,6 +2125,16 @@ static bool fold_mb(OptContext *ctx, TCGOp *op) return true; } =20 +static bool fold_minmax(OptContext *ctx, TCGOp *op, uint64_t bound) +{ + if (fold_const2_commutative(ctx, op) || + fold_xi_to_i(ctx, op, bound) || + fold_xx_to_x(ctx, op)) { + return true; + } + return finish_folding(ctx, op); +} + static bool fold_mov(OptContext *ctx, TCGOp *op) { return tcg_opt_gen_mov(ctx, op, op->args[0], op->args[1]); @@ -3258,6 +3292,14 @@ void tcg_optimize(TCGContext *s) case INDEX_op_sextract: done =3D fold_sextract(&ctx, op); break; + case INDEX_op_smax: + done =3D fold_minmax(&ctx, op, (ctx.type =3D=3D TCG_TYPE_I32 + ? INT32_MAX : INT64_MAX)); + break; + case INDEX_op_smin: + done =3D fold_minmax(&ctx, op, (ctx.type =3D=3D TCG_TYPE_I32 + ? INT32_MIN : INT64_MIN)); + break; case INDEX_op_sub: done =3D fold_sub(&ctx, op); break; @@ -3273,6 +3315,16 @@ void tcg_optimize(TCGContext *s) case INDEX_op_sub_vec: done =3D fold_sub_vec(&ctx, op); break; + case INDEX_op_umax: + /* + * Note that 32-bit constants are stored sign extended, + * so (int32_t)UINT32_MAX =3D=3D -1. + */ + done =3D fold_minmax(&ctx, op, -1); + break; + case INDEX_op_umin: + done =3D fold_minmax(&ctx, op, 0); + break; case INDEX_op_xor: case INDEX_op_xor_vec: done =3D fold_xor(&ctx, op); --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072631; cv=none; d=zohomail.com; s=zohoarc; b=Uux3dHjAIjDA86KTzxqSLLel1I0zsOPhXsYJFn4MIoQoWePCBoyypjzcQZUEuqhrIMWfgK/Xf9UKCIq/wkU2KUApybVfVNdrVS3JAVFVJ/LTGIWIcgiS+yS6PBIJ3DzkBJwxms+cWt9RdyzzdC73NPOg0F9Gq034xc4Rc/je3oQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072631; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=EhOF9jN/PD6V/ZU4mC7f/RoDc/u+gqWIwDoJ39rAJgo=; b=ETaOP9B5iyQ7fTOX2CdkWj3sqBYi1CpdyCAB3UlIJP5YiXtcJdJuyHrutarE8oR5nm2zclOxxvRmGE52TXAQ4D8iLS0Y8ePHTyhG9xU9IGotOXOjMSO+BAXeMvYJJ2kzbm0tVZJ0j4Qvm9nHyXLgxbpeqUoBWtWW1uCs9E+RmRo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072631494509.2748543138033; Tue, 18 Aug 2026 10:03:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCq-0007g7-JT; Tue, 18 Aug 2026 13:02:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCo-0007eR-UH for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:30 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCn-0004q1-Cl for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:30 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-848743155bcso78994b3a.0 for ; Tue, 18 Aug 2026 10:02:29 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072548; x=1787677348; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=EhOF9jN/PD6V/ZU4mC7f/RoDc/u+gqWIwDoJ39rAJgo=; b=wpJ3wgi2i2m2qT043PE5Junv0pNhvWu9r3Fyo+JbcA433+D5W6lsV7zpRWGPKZk7T2 nYtMvPAuf7GcFbDhQBqdOUJ+4PdTmoV0dZrr0DT9XV0ti4P/K8DdwZxBlpHN07o2QBXY PSEQlHBI0Of3QL6dd2L+XoZ7w8xQOTi+cZd1QQur6o3j3jmUrsyoSuE80ZkM2XRfc0yn ddNJ3QreVjvtnkPsYWnrxe2lZAs78hm/Ks59DT2bqcJ71IFWXbey+AhIZvXJhtVTN+eh og0URhpaynyyeb6aYxC7KvVGSSKs74vVLgQdvPglfd6ZxmhNz9pTwKOeLVX5a27I4k5t RVTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072548; x=1787677348; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=EhOF9jN/PD6V/ZU4mC7f/RoDc/u+gqWIwDoJ39rAJgo=; b=gG3mMxzMqzIPSSwrSi+brEvTSMgx1L+Ykk0TanCwrW/D+a3sAex9RdRQ4AmOEipLOV 0L04tYLZigkcybKzdB0kEb9g9Sina2f4N6+rItAhi7Ehpj9lwkd5UeQNRTNoFLtQ9aFS dyPgSqCaCm4Kjba2Q4TNO/4oOxWKbUnw/1AjJ8RirFDi/k2E9gPT71KV3Y13rfMNVVa2 Y+1HOs5Ts16LtyADaMXC7QliGrMebKy+rviRRjDAyuzr2aWWdiTO72fS4piqA+Kc0QZw 3E72wbSG7tcYXBubDzLBGB/rPopQESyXxzHcit4mvJ9G2nlBvE+D8gIg66EPPAIRTnp0 tQug== X-Gm-Message-State: AOJu0YxF5By+7s10zXOT0VxNT1BM8uoGKDjHTd4sIvYZ7jtdiXao8ne/ xCgcaERbimVsw23aPTbOFInDkcnc5BFhjVL3VqJ9Kbe1XWgV4OyqmkfHPXCcuoQ+WIhHsS0N1jm 1aSiauoc= X-Gm-Gg: AR+sD13nmuAFFxTIFbDqxxw+K5qQJb4g58GSf/ObvDEh07ICf8V0fWT8zUjavRCvBr9 8rMi+77jeY0T558GxjhJ8o++K7/SRclKXf/DY+zo7ZOsF+AYJobCnTzVLm1YiC/ePNncJmO1Wnt syoUfmUv2EcHBxVvDAIxSBLPQNHXq2euKrvTSdJK3oGAzhyDjH7EWN/7paUFfi4/XhQcVJtyt5Q TOxlbMA+ojxlndjlsqIrzvZ/8i1BxQKtFqqElUcxSHkbw9NFNbFvmhCz6uknMoGf7p+9yRrGzss f3TeVZHqDNu8yBlnVRb+OYFjJjpwqqWQzAB+xoPD19AfESCWOFxVlme/2jn+yJKKpjQGotGK/SY BSVJ8aAAQkSP/bUFrBO20WqDeL0STT63fgPUHuoq2IWkKvpN3u3BnIqfkxk3CLvKwBEL9TDgrYs 9aWGU1ceeEmpGs/EoMqAjWOQmR3CUiXPHJS7IUPPOJ8MNYpUr0kJ+4jRSyikraDOb/vu9ySAS36 4d3CJmkQxJzIfqzqYeSBSguxY1gf/eboN2N X-Received: by 2002:a05:6a00:4501:b0:848:30c3:45dd with SMTP id d2e1a72fcca58-84fde001b0amr42699770b3a.11.1787072547693; Tue, 18 Aug 2026 10:02:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 25/38] util/cpuinfo-aarch64: Detect FEAT_CSSC Date: Tue, 18 Aug 2026 10:01:42 -0700 Message-ID: <20260818170155.1907006-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072633333158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- host/include/aarch64/host/cpuinfo.h | 1 + util/cpuinfo-aarch64.c | 2 ++ 2 files changed, 3 insertions(+) diff --git a/host/include/aarch64/host/cpuinfo.h b/host/include/aarch64/hos= t/cpuinfo.h index fe671534e4..c32c04dade 100644 --- a/host/include/aarch64/host/cpuinfo.h +++ b/host/include/aarch64/host/cpuinfo.h @@ -12,6 +12,7 @@ #define CPUINFO_AES (1u << 3) #define CPUINFO_PMULL (1u << 4) #define CPUINFO_BTI (1u << 5) +#define CPUINFO_CSSC (1u << 6) =20 /* Initialized with a constructor. */ extern unsigned cpuinfo; diff --git a/util/cpuinfo-aarch64.c b/util/cpuinfo-aarch64.c index 288074c08f..4ce6deb7c8 100644 --- a/util/cpuinfo-aarch64.c +++ b/util/cpuinfo-aarch64.c @@ -72,6 +72,7 @@ unsigned __attribute__((constructor)) cpuinfo_init(void) =20 unsigned long hwcap2 =3D qemu_getauxval(AT_HWCAP2); info |=3D (hwcap2 & HWCAP2_BTI ? CPUINFO_BTI : 0); + info |=3D (hwcap2 & HWCAP2_CSSC ? CPUINFO_CSSC : 0); #endif #ifdef CONFIG_DARWIN info |=3D sysctl_for_bool("hw.optional.arm.FEAT_LSE") * CPUINFO_LSE; @@ -79,6 +80,7 @@ unsigned __attribute__((constructor)) cpuinfo_init(void) info |=3D sysctl_for_bool("hw.optional.arm.FEAT_AES") * CPUINFO_AES; info |=3D sysctl_for_bool("hw.optional.arm.FEAT_PMULL") * CPUINFO_PMUL= L; info |=3D sysctl_for_bool("hw.optional.arm.FEAT_BTI") * CPUINFO_BTI; + info |=3D sysctl_for_bool("hw.optional.arm.FEAT_CSSC") * CPUINFO_CSSC; #endif #if defined(__OpenBSD__) && !defined(CONFIG_ELF_AUX_INFO) int mib[2]; --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072868; cv=none; d=zohomail.com; s=zohoarc; b=YUHhxxfYo2uIr36C7DoFEEGjYaaLvFjeS7Gq1pZjVTxGwLfwdU/T3/mc2AOrsLrJLxljTceXKh8SOszN47HinvkaUy3Y5SDHqC5SBJBgu6caeO8JX2uOpQi+CnKpyCs6Ts9b1n3BsxG261Jqncum/xKRHpckERD+Q68hX7C6+04= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072868; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=8Uv7LOs6RXlnAv+bZCgV2Njs2YWrslQkt4dGMw+5r34=; b=CQEvyeOQHgllRgDLKeMb90syzzx1VMKP5UgGDJEqA1zyiJtrKa8HUBi9gjnN55YVRJ7gQYZT7Mn1Cm1PD+jTU8RRGTxJ61HPuIDSFpZAlI/eJ8ZKul+c2RJM/FgT9I0M4nRWXzMWBP3IzELZ4qWfVgdCC4XMgcFqAZBa0o4L0RU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072868426427.863194916505; Tue, 18 Aug 2026 10:07:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCs-0007hF-3L; Tue, 18 Aug 2026 13:02:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCq-0007fm-7a for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:32 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCo-0004qW-CT for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:31 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-84f77cc7302so82767b3a.3 for ; Tue, 18 Aug 2026 10:02:29 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072549; x=1787677349; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=8Uv7LOs6RXlnAv+bZCgV2Njs2YWrslQkt4dGMw+5r34=; b=a8lGcBj8ybFS0VTPeMBFy8Jt2+L57B9WHwzCSWRsRhtgop9Svjp6cPbcmtq1dEseHq yu/oxZBFd7AMgOu7DQuFKX09BO25c+lDtTQLYIXEwAC3gMwZXsAWrKR8g1fpApkp8vAw t+oBnkK02cDEIpIrsEm9xAleJqQ5xcKplhkYl0kK6gZSLa2ei3N6lv35eBwxGwA0MXxS 7l7XWWfnLdSuwtCZuCwdzP5dL//C836LI476CKJmjD39NxUJqGWTIEchAgRlkC2kC9o1 DVnU+wvq3BVexLYgPMgLnFtEWDswtsti4B3a2IHNSo/ubTcOnR1Fl14M04CeNRtPcdmv VM/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072549; x=1787677349; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=8Uv7LOs6RXlnAv+bZCgV2Njs2YWrslQkt4dGMw+5r34=; b=d1uN7pqMgpqBnuym9QWYG9vm+982IIo0Mf3QwqEdQ386qODgXLmhbrObvqKQDWUT2Q QY+XS0d8qUZ0aK2P4Tx8btLl3+1XJrlQrdT8r7IJ6g+3rP0Ef+UiHROFRQqTbO81PQOt 3T2QJcn+QcMzG2eGXzCfUA8IzF7FjNByaGRKOXPgjMdILwSmJwKOfTYcy581L8ce6/Ux EaNx7naRS+Cs/qFiSI92ot54Hw4sZ6+URAtU763hDqCyfEVktGfAUZY6ffmprcNrzeC1 Rjzstjt9iZN+4KoIZbOZ9oQVeCVUx25uJrMWDeZbmYCGY9EmY3a4wKLhVoCCwbV/usnk v6Hg== X-Gm-Message-State: AOJu0YyMTDpYiX2z2o3all7vvB5YADaVLiMerGz4X3/Co7u46rs8/Jfs kagTdRn6IWyK7YvRRBiZgcbTYHOc6wi9rqfDb2BpoLwR+kH9ArFjacLlntn8ZCpLQ8O47ueENfG qqsYJpSo= X-Gm-Gg: AR+sD12knsMIF07brepam34CmUKUyFqJ9jSN8TUjENeA/+MHT3r9V2u9Q7laLRzV+vg kP5KBZ99nxy/MXDwdNwV9SzdYBHb82ZY5dpP9Oti9jFSYwxEsxVyjtTdFkvelb3rmqIcD3+Gr1N /+GKxk/1aJ1PWAMSnJqZds32DsarhviEwUaUyKqjYSJ9hNfwlEXN5PLzz6/2A6NnSdVtMo/mwGq w/CteXW3ynCjvLsUs+HywrOwMQZiGAPT4LEDjGyzNYfRI/1x5ul3KVhtY6H7CtmRDDny/awuVoz Zlng4XYblbx+t5hrB33ULLYYvaD1PoAwAqXBzM2r4u1qKMkdvTOPoQZXKhIjutUlXbOi4BXudrs 6+a0hddGR+bsPE8jPIrjdB26SqKbFUvf6az+zSyYoaj8B7sLeiB3LLEe94I/xFDgrWEewBrK8zN 7wocA/4Un554OTA+lQ3SsT99aU1zpwIXca3DAydrzD4TMvrsIgQSCjKFN33C2WS4aMRfPjKfNJa C9I7Ei75nItheXNQKsRQtMROPQEchY6ino= X-Received: by 2002:a05:6a00:14ca:b0:84e:216d:7e4e with SMTP id d2e1a72fcca58-84fde14ffb3mr31653532b3a.1.1787072548503; Tue, 18 Aug 2026 10:02:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 26/38] tcg/aarch64: Implement min/max with FEAT_CSSC Date: Tue, 18 Aug 2026 10:01:43 -0700 Message-ID: <20260818170155.1907006-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072869344158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/aarch64/tcg-target-con-set.h | 2 + tcg/aarch64/tcg-target-con-str.h | 2 + tcg/aarch64/tcg-target.c.inc | 103 +++++++++++++++++++++++++++++-- 3 files changed, 103 insertions(+), 4 deletions(-) diff --git a/tcg/aarch64/tcg-target-con-set.h b/tcg/aarch64/tcg-target-con-= set.h index d0622e65fb..dd84a9af58 100644 --- a/tcg/aarch64/tcg-target-con-set.h +++ b/tcg/aarch64/tcg-target-con-set.h @@ -24,6 +24,8 @@ C_O1_I2(r, r, rAL) C_O1_I2(r, r, rC) C_O1_I2(r, r, ri) C_O1_I2(r, r, rL) +C_O1_I2(r, r, rS) +C_O1_I2(r, r, rU) C_O1_I2(r, rZ, rA) C_O1_I2(r, rz, rMZ) C_O1_I2(r, rz, rz) diff --git a/tcg/aarch64/tcg-target-con-str.h b/tcg/aarch64/tcg-target-con-= str.h index 48e1722c68..fef75e8a76 100644 --- a/tcg/aarch64/tcg-target-con-str.h +++ b/tcg/aarch64/tcg-target-con-str.h @@ -21,4 +21,6 @@ CONST('L', TCG_CT_CONST_LIMM) CONST('M', TCG_CT_CONST_MONE) CONST('O', TCG_CT_CONST_ORRI) CONST('N', TCG_CT_CONST_ANDI) +CONST('S', TCG_CT_CONST_S8) +CONST('U', TCG_CT_CONST_U8) CONST('Z', TCG_CT_CONST_ZERO) diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc index f5c185bbf4..55b3be0b96 100644 --- a/tcg/aarch64/tcg-target.c.inc +++ b/tcg/aarch64/tcg-target.c.inc @@ -152,6 +152,8 @@ static bool patch_reloc(tcg_insn_unit *code_ptr, int ty= pe, #define TCG_CT_CONST_ORRI 0x1000 #define TCG_CT_CONST_ANDI 0x2000 #define TCG_CT_CONST_CMP 0x4000 +#define TCG_CT_CONST_S8 0x8000 +#define TCG_CT_CONST_U8 0x10000 =20 #define ALL_GENERAL_REGS 0xffffffffu #define ALL_VECTOR_REGS 0xffffffff00000000ull @@ -320,6 +322,12 @@ static bool tcg_target_const_match(int64_t val, int ct, if ((ct & TCG_CT_CONST_LIMM) && is_limm(val)) { return 1; } + if ((ct & TCG_CT_CONST_S8) && val =3D=3D (int8_t)val) { + return 1; + } + if ((ct & TCG_CT_CONST_U8) && val =3D=3D (uint8_t)val) { + return 1; + } if ((ct & TCG_CT_CONST_ZERO) && val =3D=3D 0) { return 1; } @@ -472,6 +480,12 @@ typedef enum { Iaddsub_imm_SUBI =3D 0x51000000, Iaddsub_imm_SUBSI =3D 0x71000000, =20 + /* Min/max immediate instructions. */ + Iminmax_imm_SMAXI =3D 0x11c00000, + Iminmax_imm_UMAXI =3D 0x11c40000, + Iminmax_imm_SMINI =3D 0x11c80000, + Iminmax_imm_UMINI =3D 0x11cc0000, + /* Bitfield instructions. */ Ibitfield_BFM =3D 0x33000000, Ibitfield_SBFM =3D 0x13000000, @@ -533,6 +547,10 @@ typedef enum { Irrr_UMULH =3D 0x9bc07c00, Irrr_UDIV =3D 0x1ac00800, Irrr_SDIV =3D 0x1ac00c00, + Irrr_SMAX =3D 0x1ac00600, + Irrr_UMAX =3D 0x1ac00640, + Irrr_SMIN =3D 0x1ac00680, + Irrr_UMIN =3D 0x1ac006c0, =20 /* Data-processing (3 source) instructions. */ Irrrr_MADD =3D 0x1b000000, @@ -737,6 +755,13 @@ static void tcg_out_insn_addsub_imm(TCGContext *s, AAr= ch64Insn insn, tcg_out32(s, insn | ext << 31 | aimm << 10 | rn << 5 | rd); } =20 +static void tcg_out_insn_minmax_imm(TCGContext *s, AArch64Insn insn, + TCGType ext, TCGReg rd, TCGReg rn, + uint8_t imm) +{ + tcg_out32(s, insn | ext << 31 | imm << 10 | rn << 5 | rd); +} + /* This function can be used for both 3.4.2 (Bitfield) and 3.4.4 (Logical immediate). Both insn groups have N, IMMR and IMMS fields that feed the DecodeBitMasks pseudo function. */ @@ -2592,20 +2617,90 @@ static void tcg_out_set_borrow(TCGContext *s) TCG_REG_XZR, TCG_REG_XZR, TCG_REG_XZR); } =20 +static TCGConstraintSetIndex cset_sminmax(TCGType type, unsigned flags) +{ + return cpuinfo & CPUINFO_CSSC ? C_O1_I2(r, r, rS) : C_NotImplemented; +} + +static void tgen_smax(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, TCGReg a2) +{ + tcg_out_insn(s, rrr, SMAX, type, a0, a1, a2); +} + +static void tgen_smaxi(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, tcg_target_long a2) +{ + tcg_out_insn(s, minmax_imm, SMAXI, type, a0, a1, a2); +} + static const TCGOutOpBinary outop_smax =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_Dynamic, + .base.dynamic_constraint =3D cset_sminmax, + .out_rrr =3D tgen_smax, + .out_rri =3D tgen_smaxi, }; =20 +static void tgen_smin(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, TCGReg a2) +{ + tcg_out_insn(s, rrr, SMIN, type, a0, a1, a2); +} + +static void tgen_smini(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, tcg_target_long a2) +{ + tcg_out_insn(s, minmax_imm, SMINI, type, a0, a1, a2); +} + static const TCGOutOpBinary outop_smin =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_Dynamic, + .base.dynamic_constraint =3D cset_sminmax, + .out_rrr =3D tgen_smin, + .out_rri =3D tgen_smini, }; =20 +static TCGConstraintSetIndex cset_uminmax(TCGType type, unsigned flags) +{ + return cpuinfo & CPUINFO_CSSC ? C_O1_I2(r, r, rU) : C_NotImplemented; +} + +static void tgen_umax(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, TCGReg a2) +{ + tcg_out_insn(s, rrr, UMAX, type, a0, a1, a2); +} + +static void tgen_umaxi(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, tcg_target_long a2) +{ + tcg_out_insn(s, minmax_imm, UMAXI, type, a0, a1, a2); +} + static const TCGOutOpBinary outop_umax =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_Dynamic, + .base.dynamic_constraint =3D cset_uminmax, + .out_rrr =3D tgen_umax, + .out_rri =3D tgen_umaxi, }; =20 +static void tgen_umin(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, TCGReg a2) +{ + tcg_out_insn(s, rrr, UMIN, type, a0, a1, a2); +} + +static void tgen_umini(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, tcg_target_long a2) +{ + tcg_out_insn(s, minmax_imm, UMINI, type, a0, a1, a2); +} + static const TCGOutOpBinary outop_umin =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_Dynamic, + .base.dynamic_constraint =3D cset_uminmax, + .out_rrr =3D tgen_umin, + .out_rri =3D tgen_umini, }; =20 static void tgen_xor(TCGContext *s, TCGType type, --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072760; cv=none; d=zohomail.com; s=zohoarc; b=cBNMaEe42U2YrBROiU00wrQypqtjVCZMe4Kc+RVbAK6heBe78lqxj2Ml+VcswZsC0q8lRWa3XYld0oLqJuhjWEGXHplgfkj9j3vgmsycgNpik32FD0MHSKnojaeNWTcOsN+TdpHBUJH01AuZcDpiUp4E/gUOD3zNAoEw7GTEppk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072760; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=GCy4QywX3WT2024WmusdDJbMQjYEZ61hPhsxtxgDYdg=; b=IPLE68iBrp/LwZyMKiIIaSmEgD8VVDjPGOWCGTjQcJ9dPX2ue7k3QYubpvBbZqIQvJw1bewqRuyZo2xKQ9XwHOSXbGA1WRK4V3dI/d+Ndr9CxbJppLmGsrHKhXTONH5AdFFB6U6Mz2NgNfPsj3ZbOS1c1/dC6VarIw3+wJWQXdQ= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072760338993.6990402884843; Tue, 18 Aug 2026 10:06:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCr-0007hD-VK; Tue, 18 Aug 2026 13:02:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCq-0007g4-FS for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:32 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCo-0004qu-TO for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:32 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-8486ac3f347so1288895b3a.1 for ; Tue, 18 Aug 2026 10:02:30 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072549; x=1787677349; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to:content-type; bh=GCy4QywX3WT2024WmusdDJbMQjYEZ61hPhsxtxgDYdg=; b=avgGK4st5etDnQOszvIO3GiBn9M0US/EqEZHn9Tq+ypdubhqwhW+wFZKaBhKYkjIaZ oDBQ6FWCa4Jl6aCzaqzRJPdDTSngMwGpSvl++avsIdeF+KtHUQ5jtvh/Ttn69WxYo6uy cx7tIzGBNu93HGxSQIjNhvz8U7mDSIo6Y8q+BwW9YJCln+lzpKUrG9G9k+XVIqVrnAKx 4jF06TP8o52QnHvwp0F3ZLf069dRx1j7GayE31gEONvvZKqFoo+92tqRHB2Y7YTq5MlN EmaAHaViOHSQvH8kn65CKkMvmeKuBRIELHnaTh5MRQNwbzpxsCgG1pceJ6sn8iWdAjmS Y3xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072549; x=1787677349; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to:content-type; bh=GCy4QywX3WT2024WmusdDJbMQjYEZ61hPhsxtxgDYdg=; b=QYg0DuDpXrkcJL8YFkQxd1Zf/3/dpXnZiIJ4IIEFpMz7EewEZHBNqsUxgKuhzm/A92 UPA6lhC8SUH8nnh0VWB+Cz9N7mjwCxOOkXaTwCEF4B9qdAeewS8Jya6nG8BAI9uo1HJk wIWqlHJ1/kvgFzFYrjtQgzOu8mk3nLt8MbO/WhaReIr04onUfqb/RHMCSnT7w7A1p5Uo In+nx5isq7ADFpBDKB3jdMAU/jG+pvR+WAuTeytAERKkGMFSYUYOrpcTAUazBK41phQf //yQFFtLgMDmEHLKXcg+jGeSqNBaRvFcuMzJtHE4amfkkJrP+ms12LZN2LUDAEKJzvRI olrQ== X-Gm-Message-State: AOJu0Yw90SVzkg8GQKyMsMB6qoqPpNrdTOac2Tbn3XruWdF3/aJ8eh7Z JWnQzLOdVuYi8LvvZzwIjdSTbi/vSzfT7yJ9TSHmLpQTWEIDDejAQGgto4Qc0k88oYqh878Aobq rCEMdlJw= X-Gm-Gg: AR+sD10ROteiOhdsSCSNIRuN3R8f5HRAWqOj/cx4u5mb2XX1NQL/V4THA5+VYGtHgIU 6I3f3L11XQm8zi+r8gyoocPZ5spYlgpGGcvABKwRIzrXhWKPlK8VCpZ/3aP4izQpAty+B5xorqU vf/cVc0I+ec1M2cgw3FgdJKfe8qfo6zAnOf2GJbx5iNY0oUsyYYB+yjEDieqRp4C+rDYkelACbK Jfn6Izw/MUGfZr/3V+VSOfbiydC6jSBECfbfpqHOX2A1lOdMPrc8TLg/ih4u35xeoBmBvAWnHAd QdvP0a005uM1vTcfySNlDvVfQq3gIb61vG39Txmv9RpjZYD2+tFVrBIYl3Vj/GAbV7m2aWgWS5r eB53rg/otq9EkyE/nAQKKqltFO91v88QUQqHGnezQNFZU4zEtGyZWa2JZYg3suS+2/lvLMtK6n1 3ELrYsJelIRqXnz9UyrkavEBhVBmNLB9PPSlzkXTIwivfHS1MxdUcOeXed1pnL998hhEdYi97ml E4Zi6j90FnFro87FqjLRj/tBpyqpwmxwWF8PdFhbl1wvA== X-Received: by 2002:a05:6a00:f06:b0:84e:354:422b with SMTP id d2e1a72fcca58-851be59873amr6882038b3a.2.1787072549528; Tue, 18 Aug 2026 10:02:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Subject: [PULL 27/38] target/riscv64: Implement min/max with Zbb Date: Tue, 18 Aug 2026 10:01:44 -0700 Message-ID: <20260818170155.1907006-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072762417158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- tcg/riscv64/tcg-target.c.inc | 44 ++++++++++++++++++++++++++++++++---- 1 file changed, 40 insertions(+), 4 deletions(-) diff --git a/tcg/riscv64/tcg-target.c.inc b/tcg/riscv64/tcg-target.c.inc index 723c21b3da..2ce9d47a63 100644 --- a/tcg/riscv64/tcg-target.c.inc +++ b/tcg/riscv64/tcg-target.c.inc @@ -233,6 +233,10 @@ typedef enum { OPC_CPOPW =3D 0x6020101b, OPC_CTZ =3D 0x60101013, OPC_CTZW =3D 0x6010101b, + OPC_MAX =3D 0x0a006033, + OPC_MAXU =3D 0x0a007033, + OPC_MIN =3D 0x0a004033, + OPC_MINU =3D 0x0a005033, OPC_ORN =3D 0x40006033, OPC_REV8 =3D 0x6b805013, OPC_ROL =3D 0x60001033, @@ -2404,20 +2408,52 @@ static void tcg_out_set_borrow(TCGContext *s) g_assert_not_reached(); } =20 +static void tgen_smax(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, TCGReg a2) +{ + tcg_out_opc_reg(s, OPC_MAX, a0, a1, a2); +} + static const TCGOutOpBinary outop_smax =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_Dynamic, + .base.dynamic_constraint =3D cset_zbb_rrr, + .out_rrr =3D tgen_smax, }; =20 +static void tgen_smin(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, TCGReg a2) +{ + tcg_out_opc_reg(s, OPC_MIN, a0, a1, a2); +} + static const TCGOutOpBinary outop_smin =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_Dynamic, + .base.dynamic_constraint =3D cset_zbb_rrr, + .out_rrr =3D tgen_smin, }; =20 +static void tgen_umax(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, TCGReg a2) +{ + tcg_out_opc_reg(s, OPC_MAXU, a0, a1, a2); +} + static const TCGOutOpBinary outop_umax =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_Dynamic, + .base.dynamic_constraint =3D cset_zbb_rrr, + .out_rrr =3D tgen_umax, }; =20 +static void tgen_umin(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, TCGReg a2) +{ + tcg_out_opc_reg(s, OPC_MINU, a0, a1, a2); +} + static const TCGOutOpBinary outop_umin =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_Dynamic, + .base.dynamic_constraint =3D cset_zbb_rrr, + .out_rrr =3D tgen_umin, }; =20 static void tgen_xor(TCGContext *s, TCGType type, --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072679; cv=none; d=zohomail.com; s=zohoarc; b=iWO+kuMIaL272xbPm5/NOxDHxF+TU+ISi26PaXgW5UPCd7FJqUkMMllA0e+/ik59+OrdclRpEonES8bjtVVygLe50g4U3ZWzJxP6CJOs34scGMB7eU4B4oWv2fow0d+34VLsQEf+eygVRCUP9MX1fZxecZAoTZPc9x67QoAHPy4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072679; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=1g1jwGxUmfnS3pxw6qSk0+WiXgPGC6AGTRxMMonvsBA=; b=nRyRb+suf1Wny+uJNOJ/gm6gG1QS8FB16fcXxRcKx2MLMQllGUM4wSBSnPAj2ikzAd5TJyZHiCjZ8MXzXTH0WLO6w6c84iMHxWrtAMG20Sb3t3ZcGcI1ycl1jRA07fcyxAiUbolJD9sBYCkEI3FQVTejj87YzZ4nJ8GsZ/2LWuw= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072679280754.8325855677163; Tue, 18 Aug 2026 10:04:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCs-0007hm-Ie; Tue, 18 Aug 2026 13:02:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCr-0007gn-5K for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:33 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCp-0004rP-NC for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:32 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-84f38f3b36eso145514b3a.1 for ; Tue, 18 Aug 2026 10:02:31 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072550; x=1787677350; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=1g1jwGxUmfnS3pxw6qSk0+WiXgPGC6AGTRxMMonvsBA=; b=clnlUQ4CaxGhitx7ubJYGjUhrxUGz7l5kb5AigSDa4RrAFkYjvUqbyVNoLxVduuKQ0 pvHjgdwqYx1rWs25PavUgCDIBC/7Vif+RMrhmOabxdB/MDtp1rgUiuSU+R3y43NBsEpG gneM/jm04FTYb7FGHNzjPvAmdX/PNsy2ufRz+Z0bZr/oIDbEB8WuCSIWsJUGZB5jEO8y aAK/aDTHtSVwuaEWzUxYN8TL/RqoYCEhUd6DHFiEm3kLREUlYaaT6QwsexTZ6xwz91Al wwP41X1ISjS4Uixftw60RfVPswMXS3y2rXvEI1MYh9Qrd0A/Jt0xItnrgi1uwWskVQPd gBBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072550; x=1787677350; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=1g1jwGxUmfnS3pxw6qSk0+WiXgPGC6AGTRxMMonvsBA=; b=YHpNGbWviqm7xWR2irwc9Qd/ZRLOQu4KKVk8Y84veVX7/veE1kN1f8H+rzuf5X8ryP vV1cS4EQMhLeum+mYRHEftyxDVEsD45zZvVr9MAtujmBuksNs2VpPx4FeJt0ojRNm6bD KX2/QWCmjOjbD66dcrOnhhMVAlJMg52Opd8YjYLpUa8QpS87BX9Q56yK8m86KVWx/6UK FTV4g/cffIQIweHxmxxE2GGXsGrb6Xu0hTWmi0466qoR8Ue1FSMdJdtPg6NrAwoBGUUo jM4TdWsWS5w6fKbQUwd53PNFPzywEWt4VjWEWDCXJ8RVjsJyWOKtjvOeaBOwT06yl3eC 9CdQ== X-Gm-Message-State: AOJu0YyfzKrgmVO5WZhZmWwcGtQtq0VarfiSf3B5+ZttaUWW4LFWGcHe 1CoenAN+g4K05QRQQtSsVkglosLZfWePCrMRxKZecIIoGFdmG7l/L7UN10z+jzaWuS1rsQMmGqn KM6hYQYE= X-Gm-Gg: AR+sD13/vsdfcziY/5oq2VBCcgkk5+TJOYCLJA+Gd0jrwLrg62w5/a6NMGPVPijgZmQ BhOBqv0LJgGjboJ1laJVNmTgNtUuVhGcK4FO8viGZ2nChxfMrRfKSyr5KQcyOcUx4LQmpUe5VP2 sKouimtPaC+GFnHwin4+dQdjZmVeAb1SVgzFLy0EWXKllNR/2wLhrwj9RTWnslyFoQsf6AEvdpk S42tEpvXFOhjHXUimoNoJc7z0dho+6Gmf2Wo9Ot8OUX06yO+0OA/TjGQ0Zo4sU4OKBxRCCGJyWW IGQaXYAO8IdgksDsl+iNi9l0puDMB/5Abkt6r8wMAz9u0jRG2rcL2ONPWUoojkcOCq3bP6GHbBF iqKU/InswBOqYaVElR9r9XjZmjwfU9E6+NhFT6+0IMRAH7nomak7BJDduP35TQuQRyxNJa2Di2y DOQgFzKvbb54A0Y9kNdwQAKxVxERBreZWIsviKH6JrnOBoNqFG+cW9GGpVpnXUyPHBoEM1TbzeJ XaxKpSm6KwtARYa49nx3yXJANKgiWUZGto= X-Received: by 2002:a05:6a00:ba8d:b0:848:4ff5:5316 with SMTP id d2e1a72fcca58-84fde224682mr37795530b3a.19.1787072550365; Tue, 18 Aug 2026 10:02:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 28/38] tcg/aarch64: Implement ctpop with FEAT_CSSC Date: Tue, 18 Aug 2026 10:01:45 -0700 Message-ID: <20260818170155.1907006-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072679656158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/aarch64/tcg-target.c.inc | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc index 55b3be0b96..1f784e8d46 100644 --- a/tcg/aarch64/tcg-target.c.inc +++ b/tcg/aarch64/tcg-target.c.inc @@ -535,6 +535,7 @@ typedef enum { =20 /* Data-processing (1 source) instructions. */ Irr_sf_CLZ =3D 0x5ac01000, + Irr_sf_CNT =3D 0x5ac01c00, Irr_sf_RBIT =3D 0x5ac00000, Irr_sf_REV =3D 0x5ac00000, /* + size << 10 */ =20 @@ -2251,8 +2252,20 @@ static const TCGOutOpBinary outop_clz =3D { .out_rri =3D tgen_clzi, }; =20 +static TCGConstraintSetIndex cset_ctpop(TCGType type, unsigned flags) +{ + return cpuinfo & CPUINFO_CSSC ? C_O1_I1(r, r) : C_NotImplemented; +} + +static void tgen_ctpop(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1) +{ + tcg_out_insn(s, rr_sf, CNT, type, a0, a1); +} + static const TCGOutOpUnary outop_ctpop =3D { - .base.static_constraint =3D C_NotImplemented, + .base.static_constraint =3D C_Dynamic, + .base.dynamic_constraint =3D cset_ctpop, + .out_rr =3D tgen_ctpop, }; =20 static void tgen_ctz(TCGContext *s, TCGType type, --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072954; cv=none; d=zohomail.com; s=zohoarc; b=HPwcC4+QxmaV0BBR4dqqrnTimlOwA0jfoHPAfxV8MMpzFI+pv5NF+h6q0sSzMYVDlg6ZIowFd5mR+N9xuxiaG/ElL9H7KmFNUZIJhQEMNnqnVw7QMaWyppunCbOAAhrvPssC6Zu0sRwEYdo2fnQ30cDT281/VgIybBS5aS61gYE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072954; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=vGVbCkOEIOeLT7VoAwDE/N9IP+ngx75+x/kjdK+zKf0=; b=Y47s5W4Zx0jNmmKLn4xBXeEQKZhUvv6yqd2UoupT+QGlIWKMbSkJj10skvm4LieTm8uA8FWiEkawsSdiuE+pmwfB1tHZfo+ByfDTEalXQv3UVXUa5dcsa8m6K6g4V+CND+vG5BjQFDcgMXR/jF+l2GfaNVvEhMegOAXc9sKNXjU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072954539352.08695442307453; Tue, 18 Aug 2026 10:09:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCu-0007it-BY; Tue, 18 Aug 2026 13:02:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCs-0007hl-G4 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:34 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCq-0004rm-Tk for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:34 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-84862b0d5f8so153537b3a.3 for ; Tue, 18 Aug 2026 10:02:32 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072552; x=1787677352; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=vGVbCkOEIOeLT7VoAwDE/N9IP+ngx75+x/kjdK+zKf0=; b=br6gsDs2CuhOhLKz8Vd6xjeDfRJM3GCrN8GefdizZXABXniH2K6tA9GDatMSXIsUDo uzfYu61s/pmS7eq5BOPYl+Pk85zcyRqJ92kLAIiDTq9TrOz7Or66ZDTYfG7TZeH5tVeM 3EpsEsKIh8sIYUGxcSf+MF9NijpgUQ6qKItMgUaannxeBSeVBD2/R7GjtRW1KoAqFCuh TBCjoczL5jKwgqkoKYXf+doCu++Ag3TBJjJgaYEcKUcDXLgJEPmJfdmWD6vmrJSewQ1G 6VhHVv81SbEJO7To7rtXLABoAJuZEx7pVXVa8w7JXeI7xBrCn/5HJcRalRbqqx15ouF4 WM/w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072552; x=1787677352; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=vGVbCkOEIOeLT7VoAwDE/N9IP+ngx75+x/kjdK+zKf0=; b=kM6ADbT7pQrs/7T9CmerhxwhabhICBtKksNGqSVdEL91KyeG64lOrT1OkWG6+2TjN1 uWTtCz4404kA1VphT9MAljpqMT+V47KazGThzevgix89xIelIsK0PWQ8U/Vx3OH6u4rJ t/w7FxAnXvw6vM7OYccUfqUMwoa1ZmADQhjmZ8mHgGJ50nPPzS/AbNiHDGNfRVLEyZJJ rfyYXjNck9UbopEnsa5kvi37DEQGxS4HAIIPqyjMyJM7NzhNzy1You7IfDkwK3NaFWPL Wk34te6lD6NhV3IRrk6mRldr21D6pg85YisPncs9eDBzNziJDkomnYZ8Lge3XP/dM+iI 5TVg== X-Gm-Message-State: AOJu0YzHinFi5V/txZfq8mzwdb3zq+oct1H2pMnAeD+CY4NFwOzP2DfX ucTpT3lrXOHDXJsCIzxUpn72Rpyh7kQ3qL2tknsVBIboZuOJ5hbaZ8sN0GdBRTGTwlqcx86Z6jX K5tccef8= X-Gm-Gg: AR+sD12W1cRK7rE8NQjsBi6YYNeXEjyckSCkk2P+hd3LJm7oMDZuVng4r5e5MhQgNbQ fw/zxStFngimBNE/8XClWzmgaEvmxCauUJQTkLIjZA1f1JSqgfd1Q+Dr1m3lpa8/YRdPTGY1ro0 eqODDYn8/uMuoB2Q5yZBibbgbDRlYrb2HIyBBgMX/OaukhgNhvHqSO+U8tWir8Ly4d9Q4haW6Ej EmYcSsnXCVS14vcNe9XBLGEu9q6UWlWplpM6UfwJ7lReiF9a/yzyF19Oc/ZH/T66lGNbvi9FmOY 0o0aYO8xMnu+cEa7FsFgPe5gPahsOqR1X8AEJD43Io7KGK4vHEteCJgS0phb5L3FQptjLKEu3Wj EDtoaxNMI2iFRCh0M17Q7cagzS9ECnP8+31IIOEs3jnQvzHNMYRXeEYbgaoEvTkOkqsk4cOQT1J tKhNdg/D2DRRWIlt28peL6HYxMnghCpb03HrvkKnhdOzGWdhChpgqKqxPBjNgJ1cwlH/226eX0/ KEcKe5OL6GuGpvqUzG4nj5NKwJxzHtb4rM= X-Received: by 2002:a05:6a00:3cca:b0:848:2c5e:305e with SMTP id d2e1a72fcca58-84fddfbf1a9mr36322248b3a.6.1787072551480; Tue, 18 Aug 2026 10:02:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 29/38] tcg/aarch64: Use CTZ from FEAT_CSSC Date: Tue, 18 Aug 2026 10:01:46 -0700 Message-ID: <20260818170155.1907006-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072956046158500 We already have an expansion of CTZ using RBIT+CLZ, but use the new insn with FEAT_CSSC is present. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- tcg/aarch64/tcg-target.c.inc | 43 +++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/tcg/aarch64/tcg-target.c.inc b/tcg/aarch64/tcg-target.c.inc index 1f784e8d46..ce5c039557 100644 --- a/tcg/aarch64/tcg-target.c.inc +++ b/tcg/aarch64/tcg-target.c.inc @@ -535,6 +535,7 @@ typedef enum { =20 /* Data-processing (1 source) instructions. */ Irr_sf_CLZ =3D 0x5ac01000, + Irr_sf_CTZ =3D 0x5ac01800, Irr_sf_CNT =3D 0x5ac01c00, Irr_sf_RBIT =3D 0x5ac00000, Irr_sf_REV =3D 0x5ac00000, /* + size << 10 */ @@ -2213,24 +2214,30 @@ static const TCGOutOpBinary outop_andc =3D { .out_rrr =3D tgen_andc, }; =20 -static void tgen_clz(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, TCGReg a2) +static void tgen_clzctz(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, + TCGReg a2, AArch64Insn insn) { tcg_out_cmp(s, type, TCG_COND_NE, a1, 0, true); - tcg_out_insn(s, rr_sf, CLZ, type, TCG_REG_TMP0, a1); + tcg_out_insn_rr_sf(s, insn, type, TCG_REG_TMP0, a1); tcg_out_insn(s, csel, CSEL, type, a0, TCG_REG_TMP0, a2, TCG_COND_NE); } =20 -static void tgen_clzi(TCGContext *s, TCGType type, - TCGReg a0, TCGReg a1, tcg_target_long a2) +static void tgen_clz(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, TCGReg a2) +{ + tgen_clzctz(s, type, a0, a1, a2, Irr_sf_CLZ); +} + +static void tgen_clzctzi(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, + tcg_target_long a2, AArch64Insn insn) { if (a2 =3D=3D (type =3D=3D TCG_TYPE_I32 ? 32 : 64)) { - tcg_out_insn(s, rr_sf, CLZ, type, a0, a1); + tcg_out_insn_rr_sf(s, insn, type, a0, a1); return; } =20 tcg_out_cmp(s, type, TCG_COND_NE, a1, 0, true); - tcg_out_insn(s, rr_sf, CLZ, type, a0, a1); + tcg_out_insn_rr_sf(s, insn, type, a0, a1); =20 switch (a2) { case -1: @@ -2246,6 +2253,12 @@ static void tgen_clzi(TCGContext *s, TCGType type, } } =20 +static void tgen_clzi(TCGContext *s, TCGType type, + TCGReg a0, TCGReg a1, tcg_target_long a2) +{ + tgen_clzctzi(s, type, a0, a1, a2, Irr_sf_CLZ); +} + static const TCGOutOpBinary outop_clz =3D { .base.static_constraint =3D C_O1_I2(r, r, rAL), .out_rrr =3D tgen_clz, @@ -2271,15 +2284,23 @@ static const TCGOutOpUnary outop_ctpop =3D { static void tgen_ctz(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, TCGReg a2) { - tcg_out_insn(s, rr_sf, RBIT, type, TCG_REG_TMP0, a1); - tgen_clz(s, type, a0, TCG_REG_TMP0, a2); + if (cpuinfo & CPUINFO_CSSC) { + tgen_clzctz(s, type, a0, a1, a2, Irr_sf_CTZ); + } else { + tcg_out_insn(s, rr_sf, RBIT, type, TCG_REG_TMP0, a1); + tgen_clzctz(s, type, a0, TCG_REG_TMP0, a2, Irr_sf_CLZ); + } } =20 static void tgen_ctzi(TCGContext *s, TCGType type, TCGReg a0, TCGReg a1, tcg_target_long a2) { - tcg_out_insn(s, rr_sf, RBIT, type, TCG_REG_TMP0, a1); - tgen_clzi(s, type, a0, TCG_REG_TMP0, a2); + if (cpuinfo & CPUINFO_CSSC) { + tgen_clzctzi(s, type, a0, a1, a2, Irr_sf_CTZ); + } else { + tcg_out_insn(s, rr_sf, RBIT, type, TCG_REG_TMP0, a1); + tgen_clzctzi(s, type, a0, a1, a2, Irr_sf_CLZ); + } } =20 static const TCGOutOpBinary outop_ctz =3D { --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072931; cv=none; d=zohomail.com; s=zohoarc; b=W0tKLHnCBDp6KZdtpODevsBzBaUeqoyWejpfMVFxm9imz/C7YjpiJQ/RR8Rmi6NwyNfgGv4/lTPyDVhwHfMuRKkBQOZ8Us9KbioZdyDaIqaK8l7IlE0xcfO74G+l5wJEpAsO8F0TjHR4IVFI079a3WXf24/ro+MJx+662Htbjuw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072931; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oBDCpF9uwTYRnOatzskuzdRhioUauCCyls7pC+VzqP8=; b=T574x67QDzQRRdrvzvUbJYhkph1RuDntoi2Wv2lWD8y33fp3Iv5eEZO+6RrhrUwTfhFgqHFsj15JaHhkKHH9XcvbcBlDnbc60W/AJBfyzX5qJPf3zNbzBhgw1W5ncyClxZHfNM/8YA1K9AjgnNVNAD9J3lJwMdYCtKYmAyzTBEo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072931797758.3274698000771; Tue, 18 Aug 2026 10:08:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCu-0007ik-0a; Tue, 18 Aug 2026 13:02:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCt-0007iT-52 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:35 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCr-0004s3-NW for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:34 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-84f77cc7302so82800b3a.3 for ; Tue, 18 Aug 2026 10:02:33 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072552; x=1787677352; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=oBDCpF9uwTYRnOatzskuzdRhioUauCCyls7pC+VzqP8=; b=OIAzJ89YiW/PMg/OXLYTzhHbx/RUYCb904+UIU3VweyCA2vALUK+saplx3PzbSrKb1 73qEVFp97wPdi7EHFZ9o8mRPLETWoElLrGmoznNv6ST8FYhfCXAbHj0oQ+UEvk31ErEL BFUU3Xq6iuaK5urIckoWeQLjOCuQ+LmhNOUgjGpYobvbsfB29Oa0TZ3RT9ovp29YkRZP p+daznSIBeGEtfTF/hJyb4Hn853ySePBFsBwNDm43CtKDBd1HOzjUYWJwHzmxIvjQNki mVAb2NjNu69IkDeclY+Ccc9slE5AFBfcEf3wGgDxess+cfO2TlPGFSouj1fdal7Xo5aG W8Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072552; x=1787677352; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=oBDCpF9uwTYRnOatzskuzdRhioUauCCyls7pC+VzqP8=; b=GMfJgceiZxLb259O8rSIqBz2bdkFC4YwKJnqUoaTgDREwSpqWrxnMlfGr9Hw2RDHEP fgWixMF5e3InaPryNywbL8vOGXgIMwbzdTWZtW+Q67Myf/27SdzG0+l5sU87rbWhawlF tBWghXlCVFpSk3JanGSzvglx0n5cPUYeu9mKGRkBOTTSEiAkIunsvDkKiE3i5l/LPUK5 +78eNK7niXwLV6DgMtWWirZWn9pawMKLjh2oDHXNkitnjFE4/oXm5KNSi/KuJDdevrRq KKrwlWxVDrKvqDfTmbVkAPP7hqDPZId7u4um07YF0WjnPWSxfakkA15e8q/9G4yzGrhq T6uA== X-Gm-Message-State: AOJu0YymEiNkjAjPqaRQ6y5XU06K0YSaVpkgMJMsugq7wOmWdwTSAleH YkqyyclOUMVCHI2jnPE3YFiJmfmjMLefjqQ23YHkRUaORVc066oNbXn+pBKaYbBm4Nqg+Ur6Sek vx+W/DbA= X-Gm-Gg: AR+sD11DLyclEtvpF44yfN1H8hEW2QcwIkKxyi0xYBXLDHZ+06R8Un4oBW0bDklelmM 2J2f881tRthDJ3QDik0HQDbIg1sQaQdYeEoPF/rX4VhX82SK3eVFyYWxVDJijVJ5obOo/QPa3vg joLB6rJlnxQovI4dp2WRiLH8KNXySPjDsqDl3jc6kWZrsM3um8MA26FSMvOWAosRLc5Jhgk5Ws9 kVZvC7sbUSjW1eiIt3pTJWIFc8T5rdnkLhtUHGM0mAeCdnok+U0QgbisR1z5Cak8LG2ISBRT2sY 3jhTHYtKV13xOGS8LyD0+d9ncSfQUfHO2zSY/5KplUkgDTmjVAN/pqKaHyFWp8mt8rac0vyaZMu b4lmHn2euBZfEyPIrHpS8dXUU4gsJlHoY4XWMWvIDJ77wA28ybhAW1tyCLZDrxXwOZW8/eSJFOJ m3WvJFerX40U/A2a85gvHjNMdYeUg3YDFLmajanQijWj9oMcrhqabhNQytzbCxHKQt5aUAuhBLn 1IorIkZTVuqIVOwEy/ukqkfZJ42KCn4xtHKHZe8lqk5GQ== X-Received: by 2002:a05:6a00:1489:b0:847:9aa8:d3ce with SMTP id d2e1a72fcca58-84fde14ff2emr36152849b3a.2.1787072552356; Tue, 18 Aug 2026 10:02:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 30/38] target/riscv: Improve riscv_has_ext Date: Tue, 18 Aug 2026 10:01:47 -0700 Message-ID: <20260818170155.1907006-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072933921158500 Constify the env pointer and return bool. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/riscv/cpu.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/riscv/cpu.h b/target/riscv/cpu.h index c9dfa7daff..376cff656f 100644 --- a/target/riscv/cpu.h +++ b/target/riscv/cpu.h @@ -615,7 +615,7 @@ struct RISCVCPUClass { RISCVCPUDef *def; }; =20 -static inline int riscv_has_ext(CPURISCVState *env, uint32_t ext) +static inline bool riscv_has_ext(const CPURISCVState *env, uint32_t ext) { return (env->misa_ext & ext) !=3D 0; } --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072596; cv=none; d=zohomail.com; s=zohoarc; b=FinHO3sZwmJ9Dnilxj9qt1WYknvlIDDJeXVyXmdDzRI5r9pmjvT1mnfAL9fZs0joLGNd4b7Jv6vXIL6J7D7AZtgskBEO0JTMTiHvmAcp6Cuw9O4Q5Wvl/yz496EWx783OupK2VZh6PE4JArZE1AwZa6Gnqbbsbkuz3q0qyeXwxY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072596; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6IAPatcjPdJ/99HpKAboVrpyprZdgYaQqpnnlke8PKI=; b=QuIUSb7avNWA+HWSCUDpEA0WL21IR9o+XIklyChIsAIc8c18qN0lX9uQsDg1eByswUqwBcs39Buw4Wo3DkqTKrwY+js/I1Q87L6QGPZci7HSBYJ/HXKr5KovBT+eJM9TYMja4GlNNyHafsC8VFzyoF8eCGqJvpEfNbe+Z/smbE0= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072596896828.5838383808109; Tue, 18 Aug 2026 10:03:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCv-0007jm-Df; Tue, 18 Aug 2026 13:02:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCu-0007im-64 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:36 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCs-0004sD-My for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:35 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-84f77cc7302so82812b3a.3 for ; Tue, 18 Aug 2026 10:02:34 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072553; x=1787677353; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=6IAPatcjPdJ/99HpKAboVrpyprZdgYaQqpnnlke8PKI=; b=kXTJzrueGFJRP2mLHn75NjyBMag1vlL4HF22fqsN2osaJQOT+LcxXgRSZNWRtsjgKQ kbPCcw7rD1knoCLDQfJojArsKzHU0Njqr7HBK9LRjP1MdxsEqN0zD8Zikh354ssFXpWs RP/o3Qs5+GjVaw0wmoyFJPJkPKtamV+mX53fJMU7uczLIQ++JmQXgrND+QnQOBMhxPcp M9mx4oHBEyinuoKonfnbYSd2vXGoHzDzr3n8Afcj5y4GDCvSp9NZGjzwhN3lwMebJso1 s/B57Njlo4FI5Tbtw+3y/JQWbTghG+nhhXTjlr6NVJIe1PWseCjeRvC7dQiqkXIZtGei CEHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072553; x=1787677353; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=6IAPatcjPdJ/99HpKAboVrpyprZdgYaQqpnnlke8PKI=; b=TxS1qDr5wh/7fXiJ+QUaMSyOMKMXNtd5seK/2PvJNfkC/MwyCYPElJyiU+b4EnoMoX uh9vMkLU50lEfrlvSl5mM9Df5wgVBAtWIkLaBnHxzeho12HvnOhi/WknlyWTAswYSSu5 TnrkC7Q2+BRNkVt/nBnk2DBSMVKydRdS82sT19ISjExccB3+1Y8y2ikpo8g0DxAFKKdA Gtw3fLoKr3kif+HqIogadgam1aXvTRbtZYmoxrVqsd1CFlk9juH6E3iDFkRR0F0QT07E p2LwbZlc8HUflIDW+LY31fHlzh1WasGkjBANYet2EMYlvFvXrJUV42+TKhVn/2sjJO9t qkxA== X-Gm-Message-State: AOJu0YxWyDHtxwzeHfUy/a4FueEpl6h+oGv0r12DHzolfgKPNQmeGzlg u9kzi/8QFhBHQ+ppgeJcIzCVCZQ0u5uYF0Jm0uoxpZJ7VrEerhKQfcrE3X7hVv7Nm5dhmpL0dZE Wwpvo0vU= X-Gm-Gg: AR+sD13MZTXBXV2OX2olp2LyO+Zn0B3mZmkZZcJHHLFBQkc1sdVDBrhnnGScmigUKGo /NgNvGgmrIuJ5PbKpdMoBoArh7Qa/QjMHBF90/TwJrkDYZBitDIKXyaybAgmsUyAA8R3j+s/wA6 +N509LtsSOh8cNPFlfHdU6XWWKM5ooblL/SFB8SExg2Wt8FKWhrtTDZU28FVxAnERADRMdOcofQ ksPo3N/ii7aHuScsIAfDd1exSr+tzVF0T/pHYgx2594/hR1DjV6qiza05LVU20mpjjBd65u18DL TZ80AWLX3wdjiS9551XGVutjUhCzAMM6zToqiNOlgBeIbD1Poj9TNn3aL/qN4b4oqlSCyuGsXcp OBaTv1SpyGCzOa4xflpRgBWwBv2OfXOGgUaNj5LRim7/vxbtMlvGrDoTxiLmBicFSv+rGHEm2+r HMfeUlmr7JqpD+9GU2wi+ScQnMS5vMUkPlajz9uNTgoq4wlKwVAvOc8AByGBAANHi1zzUCgn0Hj xAwNo0nbCFUnbko2KO76n/PzvpdG4CrPNQ= X-Received: by 2002:a05:6a00:1c98:b0:845:e8b5:8c49 with SMTP id d2e1a72fcca58-84fde1cd25dmr37278618b3a.10.1787072553173; Tue, 18 Aug 2026 10:02:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 31/38] disas/capstone: Allow for cap_insn_unit > length Date: Tue, 18 Aug 2026 10:01:48 -0700 Message-ID: <20260818170155.1907006-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072599022158500 cap_insn_unit is designed for targets like arm thumb2 and s390x where 4 and 6-byte insns are displayed in 2-byte chunks. For riscv, we prefer 4-byte insns to display as one 4-byte unit, rather than 2x 2-byte units. So we will want to set cap_insn_unit to 4, but allow for insns that are smaller than 4. Emit padding to match. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- disas/capstone.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/disas/capstone.c b/disas/capstone.c index fe3efb0d3c..8fb8d0724c 100644 --- a/disas/capstone.c +++ b/disas/capstone.c @@ -107,8 +107,9 @@ static void cap_dump_insn_units(disassemble_info *info,= cs_insn *insn, { fprintf_function print =3D info->fprintf_func; FILE *stream =3D info->stream; + int unit =3D MIN(info->cap_insn_unit, n - i); =20 - switch (info->cap_insn_unit) { + switch (unit) { case 4: if (info->endian =3D=3D BFD_ENDIAN_BIG) { for (; i < n; i +=3D 4) { @@ -140,6 +141,11 @@ static void cap_dump_insn_units(disassemble_info *info= , cs_insn *insn, } break; } + + if (unit < info->cap_insn_unit) { + int width =3D (info->cap_insn_unit - unit) * 2; + print(stream, "%*s", width, ""); + } } =20 static void cap_dump_insn(disassemble_info *info, cs_insn *insn) --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072800; cv=none; d=zohomail.com; s=zohoarc; b=k2jib+wVfEI+c5d6tqp2wwbghwO0qZKFZZnaNT+VbmsPenMnx40vqElBPiANdw4n51c9YpXAjFMTzqf0a6UFORIpIajxztgM4KEEsfsep2caYR4kJq9Fj+UPGJmRjv0Ru8W1MGJYmmbpOsU4MZ4BXJI/d0wjiqpdQ9+r1N10zew= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072800; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=jZJOaKZTusHHUoW9ISiY/6WK3cLRzqtf2hDDRWECaC4=; b=WA7ua4zjceljwY3mRVeTexR7jAclZdUhWJ28M9+AK8r1lFrq2LeyaOcRSmfheAYSLGEbeXTeYJnhcmtV+l9WOqdPVajwpkM3yzM/ub8eQK6akIymoe455dzYg1IBIvIrCkZU1s2WDZQ9yCbjggrwiKzLyG5Dy8pgrH4DAq8tV4w= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072800342326.85644470562534; Tue, 18 Aug 2026 10:06:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCw-0007kV-WB; Tue, 18 Aug 2026 13:02:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCv-0007jn-E2 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:37 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCt-0004sV-KT for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:37 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-cbedf433a99so8360a12.2 for ; Tue, 18 Aug 2026 10:02:35 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072554; x=1787677354; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=jZJOaKZTusHHUoW9ISiY/6WK3cLRzqtf2hDDRWECaC4=; b=NcxRT4mHTMvfwG+iSeyrscrjF3rm6VmyjLHACxuFh00aNq6qhEQeypF8eFzw5OhJvK YvVvylia2KyTWGIZaPYabaD4z5TB1WdeO4GdDY9b7Isj2arw4hkdf6iCLRel/hKLEJkK ryPGdeiAaGsBJB+1FCFZIqCM3hVNIYoPUFB4yHAhmRGqevkRPcr4D6hisF+CMD/7fOaz 96xYicmM0VNRRAr+TG2R+jH/SzXz9QYFgc4YDmfg0gv09VK1pY2rUpu+Y+AORH9d+hVd FGEHvIR67fja1vL/5/6UXgJRbid4H11OJiPkv+twF3mR56IM02T2eM9DI/D4yKjYOIjC K6Sg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072554; x=1787677354; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=jZJOaKZTusHHUoW9ISiY/6WK3cLRzqtf2hDDRWECaC4=; b=ZCYy+Fpl4K/RRrex8kcA7dX43SfWt+VJRnaAtnIyKEmY+Ye+zaBQjgtuSxXFJl0qiE CBdMbJADZ4DVoAeo1sEtaf8AwbOdFNbOVhHPTHOOwOAXwCgM0XP4mtX3ggrISpTePwSy LG7q2/I5qH6Ix3KbJhxo8J4qz3q6yXex/6kil46cRzceXsiBQi+tW1nHBnV/jecJfmhj XxpeFZYvsB3+SDwC6lXXVarqRGiUPfCp1wVZIm52LU3XhtXcInhzac3fgTZt/laxY99j HqWO6aciddN5cyvq9IFszvlBu1eB4DlRgsbFaQxNbaJ3hrebD4g5EqGG32eO2/9tHFUU Kfkg== X-Gm-Message-State: AOJu0YzvWkqPIzFWxb+WKmctB0tEJwiicAKB2lTkocuo3A0ddZDfZhmV zt1tOaqNNQRbW9ER7SGyT2n6HBlFfn8P62uFRIL2EKaHjJyJVAd0X4Ajplo4BnZPbl1mHHtn79p H27foCuA= X-Gm-Gg: AR+sD12GYX9rgMsHAUxb8R2MoaZpsjTZp9yydpyaCKX+nq7+0BnNGnQ/oDHJ/DqdeEe SmcvKDZT5tGoEVx6nzImG0IAWjMvBqH2HrYb53i5Vdyr6tOEKr755jGyNuLwZE+N8C6Mko3e94B VMIa6cE0lTVPU2XW4I/OOB6N1rZ4x6SGZAhDT6ODCdjE4/yHkhoUCoQ2VK6i+qiI+YVoqSD4mr0 trjhZljzPEW63caus6wXKrnaIXcuJxLrA6f+xADgl6ml883NZVerPJYqY+rPhPmgJnHUGdoLrjA yxG/8yRfZ5U8NYkdPg049t7FVTac5JxDFSwyxMgcKFtpKx8KoCvkSiSbgv1j3/UL6LsVKJG7vtP sIxhQlC1ofLiQt4YIi65v7NCplM1lh6E4tt1WoWXEYixgfmWQUnTS9q48edmoAqz3XeVn+cgweC 0SIfeaBYYO7aUreeCKMhdXp3fqVyBBrmqS8RwHGGjejM2q279pNaby15+pvLJbAceaAC98MZ95H ZgOQx7DvPWRlnznYmhCpOAH/Y5IqyMJK7db9cr7xtMexA== X-Received: by 2002:a05:6a00:2392:b0:848:56d4:3288 with SMTP id d2e1a72fcca58-84fddf92abamr36908931b3a.4.1787072554185; Tue, 18 Aug 2026 10:02:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 32/38] target/riscv: Enable disassembly via capstone Date: Tue, 18 Aug 2026 10:01:49 -0700 Message-ID: <20260818170155.1907006-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072800787158500 In capstone v5, riscv support is spare, but v6 is pretty good. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/disas/capstone.h | 34 +++++++++++++++++ disas/capstone.c | 19 ++++++++++ target/riscv/cpu.c | 81 +++++++++++++++++++++++++++++++++++++++- 3 files changed, 133 insertions(+), 1 deletion(-) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index c43033f7f6..5c78824da2 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -11,6 +11,8 @@ =20 /* Just enough to allow backends to init without ifdefs. */ =20 +#define CS_API_MAJOR 0 + #define CS_ARCH_ARM -1 #define CS_ARCH_ARM64 -1 #define CS_ARCH_MIPS -1 @@ -37,4 +39,36 @@ #define CS_MODE_MIPS64 0 =20 #endif /* CONFIG_CAPSTONE */ + +#if CS_API_MAJOR < 5 +#define CS_ARCH_RISCV -1 +#define CS_MODE_RISCV32 0 +#define CS_MODE_RISCV64 0 +#define CS_MODE_RISCV_C 0 +#elif CS_API_MAJOR =3D=3D 5 +/* The C symbol name changed between v5 and v6 */ +#define CS_MODE_RISCV_C CS_MODE_RISCVC +#endif +#if CS_API_MAJOR < 6 +#define CS_MODE_RISCV_FD 0 +#define CS_MODE_RISCV_V 0 +#define CS_MODE_RISCV_ZFINX 0 +#define CS_MODE_RISCV_ZCMP_ZCMT_ZCE 0 +#define CS_MODE_RISCV_ZICFISS 0 +#define CS_MODE_RISCV_E 0 +#define CS_MODE_RISCV_A 0 +#define CS_MODE_RISCV_COREV 0 +#define CS_MODE_RISCV_THEAD 0 +#define CS_MODE_RISCV_SIFIVE 0 +#define CS_MODE_RISCV_BITMANIP 0 +#define CS_MODE_RISCV_ZBA 0 +#define CS_MODE_RISCV_ZBB 0 +#define CS_MODE_RISCV_ZBC 0 +#define CS_MODE_RISCV_ZBKB 0 +#define CS_MODE_RISCV_ZBKC 0 +#define CS_MODE_RISCV_ZBKX 0 +#define CS_MODE_RISCV_ZBS 0 +#define CS_MODE_RISCV_VENTANA 0 +#endif + #endif /* QEMU_CAPSTONE_H */ diff --git a/disas/capstone.c b/disas/capstone.c index 8fb8d0724c..78062339d0 100644 --- a/disas/capstone.c +++ b/disas/capstone.c @@ -49,6 +49,20 @@ static const cs_opt_skipdata cap_skipdata_s390x =3D { .callback =3D cap_skipdata_s390x_cb }; =20 +/* Similarly for RISCV */ +static size_t CAPSTONE_API +cap_skipdata_riscv_cb(const uint8_t *code, size_t code_size, + size_t offset, void *user_data) +{ + /* See insn_len() from target/riscv/internals.h */ + return (code[offset] & 3) =3D=3D 3 ? 4 : 2; +} + +static const cs_opt_skipdata cap_skipdata_riscv =3D { + .mnemonic =3D ".byte", + .callback =3D cap_skipdata_riscv_cb +}; + /* * Initialize the Capstone library. * @@ -76,6 +90,11 @@ static cs_err cap_disas_start(disassemble_info *info, cs= h *handle) cs_option(*handle, CS_OPT_SKIPDATA, CS_OPT_ON); =20 switch (info->cap_arch) { + case CS_ARCH_RISCV: + cs_option(*handle, CS_OPT_SKIPDATA_SETUP, + (uintptr_t)&cap_skipdata_riscv); + break; + case CS_ARCH_SYSZ: cs_option(*handle, CS_OPT_SKIPDATA_SETUP, (uintptr_t)&cap_skipdata_s390x); diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c index 23b5023dd3..e73ff53159 100644 --- a/target/riscv/cpu.c +++ b/target/riscv/cpu.c @@ -39,6 +39,7 @@ #include "system/tcg.h" #include "kvm/kvm_riscv.h" #include "tcg/tcg-cpu.h" +#include "disas/capstone.h" #if !defined(CONFIG_USER_ONLY) #include "target/riscv/tcg/debug.h" #endif @@ -1099,6 +1100,7 @@ static void riscv_cpu_disas_set_info(const CPUState *= s, disassemble_info *info) { const RISCVCPU *cpu =3D RISCV_CPU(s); const CPURISCVState *env =3D &cpu->env; + int cap_mode; =20 info->target_info =3D &cpu->cfg; =20 @@ -1111,16 +1113,93 @@ static void riscv_cpu_disas_set_info(const CPUState= *s, disassemble_info *info) switch (env->xl) { case MXL_RV32: info->print_insn =3D print_insn_riscv32; + cap_mode =3D CS_MODE_RISCV32; break; case MXL_RV64: info->print_insn =3D print_insn_riscv64; + cap_mode =3D CS_MODE_RISCV64; break; case MXL_RV128: info->print_insn =3D print_insn_riscv128; - break; + /* capstone v6 doesn't support RV128 */ + return; default: g_assert_not_reached(); } + + info->cap_arch =3D CS_ARCH_RISCV; + info->cap_insn_unit =3D 4; + info->cap_insn_split =3D 4; + + /* + * Capstone compresses some features together. See RISCV_getFeatureBit= s, + * which maps LLVM feature bits to capstone bits. + */ + if (riscv_has_ext(env, RVC) || cpu->cfg.ext_zca) { + cap_mode |=3D CS_MODE_RISCV_C; + } + if (riscv_has_ext(env, RVF)) { + cap_mode |=3D CS_MODE_RISCV_FD; + } + if (riscv_has_ext(env, RVV)) { + cap_mode |=3D CS_MODE_RISCV_V; + } + if (cpu->cfg.ext_zfinx || cpu->cfg.ext_zdinx || cpu->cfg.ext_zhinx) { + cap_mode |=3D CS_MODE_RISCV_ZFINX; + } + if (cpu->cfg.ext_zcmp || cpu->cfg.ext_zcmt || cpu->cfg.ext_zce) { + cap_mode |=3D CS_MODE_RISCV_ZCMP_ZCMT_ZCE; + } + if (cpu->cfg.ext_zicfiss) { + cap_mode |=3D CS_MODE_RISCV_ZICFISS; + } + if (riscv_has_ext(env, RVE)) { + cap_mode |=3D CS_MODE_RISCV_E; + } + if (riscv_has_ext(env, RVA)) { + cap_mode |=3D CS_MODE_RISCV_A; + } + if (cpu->cfg.ext_xlrbr) { + cap_mode |=3D CS_MODE_RISCV_BITMANIP; + } + if (cpu->cfg.ext_zba) { + cap_mode |=3D CS_MODE_RISCV_ZBA; + } + if (cpu->cfg.ext_zbb) { + cap_mode |=3D CS_MODE_RISCV_ZBB; + } + if (cpu->cfg.ext_zbc) { + cap_mode |=3D CS_MODE_RISCV_ZBC; + } + if (cpu->cfg.ext_zbkb) { + cap_mode |=3D CS_MODE_RISCV_ZBKB; + } + if (cpu->cfg.ext_zbkc) { + cap_mode |=3D CS_MODE_RISCV_ZBKC; + } + if (cpu->cfg.ext_zbkx) { + cap_mode |=3D CS_MODE_RISCV_ZBKX; + } + if (cpu->cfg.ext_zbs) { + cap_mode |=3D CS_MODE_RISCV_ZBS; + } + if (cpu->cfg.ext_xtheadba || + cpu->cfg.ext_xtheadbb || + cpu->cfg.ext_xtheadbs || + cpu->cfg.ext_xtheadcmo || + cpu->cfg.ext_xtheadcondmov || + cpu->cfg.ext_xtheadfmemidx || + cpu->cfg.ext_xtheadfmv || + cpu->cfg.ext_xtheadmac || + cpu->cfg.ext_xtheadmemidx || + cpu->cfg.ext_xtheadmempair || + cpu->cfg.ext_xtheadsync) { + cap_mode |=3D CS_MODE_RISCV_THEAD; + } + if (cpu->cfg.ext_XVentanaCondOps) { + cap_mode |=3D CS_MODE_RISCV_VENTANA; + } + info->cap_mode =3D cap_mode; } =20 #ifndef CONFIG_USER_ONLY --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072952; cv=none; d=zohomail.com; s=zohoarc; b=izluSgDyZPl/PGCthF3uudNtQfZbtNDbCk3bNZIrOVCDnJDmq3azYnCL7rvFRVFoLDSRN+7hJU+m5ytVkVB/i5Qdfr1uP6G0ssDA2RUJNahSZGGDK5tccYvG3rm3XiMse49DZjXey0dezL2C4dqrIliYrAI7tSMo88iHOmXSj0g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072952; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=cm60cTHKSfIokrOsMkIE12y9wwPsvnpPsXy0HmIZSdM=; b=Ry2Lh/6E8RNOPwVNxjN7d36Fy3cAj02nc5Dw2gVc3vy3Iq5CgKzo1zy2H3MpiFkPtzdh/MvY+Y498OqM3FQG7Lk+36rAGANpGVUPgnfavfcjdgaQ/YIk5U4D4XcxLk5ORW5F9nG9Wy2SBYVv7I5l7uxFd9gtvDtiLekTe47qtyM= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072952218333.15655208900716; Tue, 18 Aug 2026 10:09:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCy-0007l3-DP; Tue, 18 Aug 2026 13:02:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCw-0007kM-Mv for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:38 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCv-0004t2-7C for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:38 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-851cbd64814so79016b3a.1 for ; Tue, 18 Aug 2026 10:02:36 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072556; x=1787677356; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=cm60cTHKSfIokrOsMkIE12y9wwPsvnpPsXy0HmIZSdM=; b=EtzZtT3qpFGNNRT2fwmhcKMYrtDTJ5uYym6tKZap0oRivpBvIWC4eODH70njlafH3a fqlCABGGJKI9N1Z+4L5+Xn4aH0sTQAcl/en1qB3GFTe1G9NBuBd9Xj1/YMqyDPe0y+jw gyOCEIykV5b6sZn4aW05eZ8R/tQB9ozWqpGgyESJ4IrYAGiE8rDHEfURVs8E8Q4bpZif viSY4GdaWh+u7a4lqHSkvlu6HO5o30vllZFzncLvvLKp4RQXeZEGutub+anatjK9xDAI XSwjrla0i2SBswpf9egVQJYa578zNFOdA2FGaNigMGBOyfQJmQFXFmR5sifRAHRGbD1z U1HA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072556; x=1787677356; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=cm60cTHKSfIokrOsMkIE12y9wwPsvnpPsXy0HmIZSdM=; b=JPtqUpFpESpnhANdbnOx/DHPxvy0cgFFPYOdV4RkBOPj0F0di7uVThfUvCk3nZ/ZEX 0wx95Z/mcA60KSDhlgGBUnDEg+XNeMbrIGH/LFmi8z0b6napkwRyqYau8XNCGVj5Igeo EinfubQoiuBU9icYgmELDXlak3YBxxGTH07Wro0rvOpd2pjjTh6/11upwjDpj9HuVW3C auLCDV/lRP/2UAYq6twdD6DdxBlF/9pbsizcmt46oj3EXZfTOK+iLgtQgyiGOkcGd4Bu cGxJA3jfvjylK/cpH9JJd2s7oe9jMulMvPps8DS9QVkKL3FikfYROQT6rF+9EVJiGqim qSYw== X-Gm-Message-State: AOJu0Yw+zLEBoCT3VdgfhikQb3KrJLey76C6IARui2TAVAghZvvep0Yb tvi4dlNCBq1KieQ9md7CRO9JRzoEsON9T5Bwo06KL5Pjt1ZGOHza01p238wKICsYhv0U66Euo1U A9JtKdq8= X-Gm-Gg: AR+sD12fDEqcb+jSdWTU9I5A5+UBVeN/mZd3X89CSDDVxEKbeUZDb1qIStE+o6J1s2I u2uAMwjQnkFX6hF9olpOXe7MU18cRFwH4hMEFkj0r+4qQK/BKyq+lxe39fQ+zzZSLqRC3sqqZSP cLgWq1arWL3e6xEqgQ4fpSRaYvo3ZyfScuKW6iRvNRwpqHG2cgPlErjZhHpDkHmPqaZhfARHfOu qfThptln3iTZHgZLEaWQgPi8mNVfKfGDyuLn/jZyUSZH19c2/KtLHhDt71ciSQlqYDbaNFvq0Lj Zbov0+arBGH8J4h2DS23WsKgPjfPGjTb0xEn64CyaVl8G50NWRAchCgY2ZVglnYiQgWP+tan/3P nQptPM5hRpl4FZFB35WmpO1VxQpWn+fKdfnpw3VGbppQcHg6q5dSLmRhlOX36F4fPDmbWxVYEpG IpFgEkA3lyfh8lAeUOK2xGV3W9WOTnDLl+GLAu2LuTr3Bd0RcwE3cg76HHtG3KXJpTZxj1y/vbr VtjEKNcr4Hb4kczMssLL5yV/YJGKIgid8+Nkb0lau9ZBBM= X-Received: by 2002:a05:6a00:1ca6:b0:846:de21:3da4 with SMTP id d2e1a72fcca58-84fde367c8emr40648396b3a.3.1787072555832; Tue, 18 Aug 2026 10:02:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 33/38] target/sh4: Enable disassembly via capstone Date: Tue, 18 Aug 2026 10:01:50 -0700 Message-ID: <20260818170155.1907006-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072953971158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/disas/capstone.h | 7 +++++++ target/sh4/cpu.c | 14 ++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index 5c78824da2..788f90771a 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -71,4 +71,11 @@ #define CS_MODE_RISCV_VENTANA 0 #endif =20 +#if CS_API_MAJOR < 5 +#define CS_ARCH_SH -1 +#define CS_MODE_SHFPU 0 +#define CS_MODE_SH4 0 +#define CS_MODE_SH4A 0 +#endif + #endif /* QEMU_CAPSTONE_H */ diff --git a/target/sh4/cpu.c b/target/sh4/cpu.c index ad2ec28c1b..3bbdee301d 100644 --- a/target/sh4/cpu.c +++ b/target/sh4/cpu.c @@ -28,6 +28,7 @@ #include "fpu/softfloat-helpers.h" #include "accel/tcg/cpu-ops.h" #include "tcg/tcg.h" +#include "disas/capstone.h" =20 static void superh_cpu_set_pc(CPUState *cs, vaddr value) { @@ -167,10 +168,23 @@ static void superh_cpu_reset_hold(Object *obj, ResetT= ype type) static void superh_cpu_disas_set_info(const CPUState *cpu, disassemble_info *info) { + const CPUSH4State *env =3D cpu_env((CPUState *)cpu); + info->endian =3D TARGET_BIG_ENDIAN ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE; info->mach =3D bfd_mach_sh4; info->print_insn =3D print_insn_sh; + + info->cap_arch =3D CS_ARCH_SH; + info->cap_insn_unit =3D 2; + info->cap_insn_split =3D 2; + /* + * Possible capstone bug: the isa levels are not additive: + * least significant bit wins, so SH4 overrides SH4A. + * Work around by setting one or the other but not both. + */ + info->cap_mode =3D CS_MODE_SHFPU + | (env->features & SH_FEATURE_SH4A ? CS_MODE_SH4A : CS_MODE_SH4); } =20 static ObjectClass *superh_cpu_class_by_name(const char *cpu_model) --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072924; cv=none; d=zohomail.com; s=zohoarc; b=WBAU1x1q+yaLc/LF44ebIgriWxtoZfWgu6GYJSUAztBXCpqhH60EiMySqd4gEhxWR0Vx8pWxeejAF+wdCNaMTM3EJjqhN4irEFmMlHcjsSe0vFGyCFH+bhhO5XJxbSJiJV0t4zL6e3LvvE9gU5Qn2kY8k8Crmn5u+DgcutVYAW8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072924; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=g33juf5c3dA6H2IeYYXITtBF1sk/zaL/b6eznyusN5k=; b=XCAeycCEfSBNmam1U9h1zjf25T7hGPgqHkWvGTLZdAXVNH6VXa5wfX45yOORkNaMDidkvEkTWLQzSb4J46fedSrQDwro3p+01bwWd9/knmjdHTDsFNJrvvn5QU1YpihfrNvXsVU79o6Md+Jyz2Bhco1vuE4KTNucZdnERbpeYuA= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072924366259.7534486654581; Tue, 18 Aug 2026 10:08:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwNCy-0007lH-V4; Tue, 18 Aug 2026 13:02:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCx-0007kt-S1 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:39 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCw-0004tR-Ch for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:39 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-84847482584so980000b3a.0 for ; Tue, 18 Aug 2026 10:02:38 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072557; x=1787677357; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=g33juf5c3dA6H2IeYYXITtBF1sk/zaL/b6eznyusN5k=; b=G8v6/j8kwKYtLRBWc59/ktqwcepeDc7/Lxvk9n+1OT6UOs8dL2sBZNr/877aAp9O4f onq/tPw3RiX7SIyz8lIK94PmKGmIGPyM9iDO4Pmr+Pla5W5N/aEfv1ap8EC1duCJCdEx a9K3oto3v604sPbHcFyYJD6pw+u0buHO9LaQUVJKyVUnn7jxR3Yhvh0uPzvvtynAaYh0 0s48OBCSas0YpeLZMAqmodNDODw4W1KXRBkbS5ESdBAwRhS3km8vHLpvSvKlwxua3/h5 qgVjBSTzcRMnde7nfUtXZLeemLiPIk7Vui8PEMweuNQBh/lz9cwn9QGqfBNrku/8Q0C6 nJ6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072557; x=1787677357; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=g33juf5c3dA6H2IeYYXITtBF1sk/zaL/b6eznyusN5k=; b=mgTPKYCf229d9Ns8cha8zSj7z2b1qFQOzir93IQNT9yDU0zfvaXURlGUbBhF9sfXg8 Ib3yowU5r+CwK5hARLe/uW/304h2PZt/DSgHzEKeQTljPpt+e28fORXTGAvVHw5H6922 QKzpAwLAKoAgN1lpkqekLPfLyDRZneHxEt/8ejOhY27cPAvOIRhxJR6VTrKAJ3l8SZPl 9Bc3qdJRWlU+Bxj1iFu2wI12EGr4lZndVvvWHXHK187hq3JOjGxTfkOnd7NB71j5xvvh fzwPU30UdpkZKGJdOZ6sY/M2J5WD1L1z159pd7LPNy3ypcRqDYI6+mhG7Cgxa0F2oiJF 5tuQ== X-Gm-Message-State: AOJu0YwZaqXEY0WIyN7iLfJWA55zuuiO7Fd7JMOK4VH/tGZACM79WyqP rwEDElesHW8hHqcuHamsPP8lgo5huRuIORR3VZIGIOPrLr7FvTsu51hDI51lp5r+KlWn/lEmXnC vDEHxTK0= X-Gm-Gg: AR+sD11/WDVSFjnEdPNAdSmdcxW/0z6ARk/t+Oy7ddNItURvrAjtlHCIkVNT6PJYNLV 1zK2XW1FnRdUfPVAwno1xRX2qQTGMen3tzCuQjP+HPOzQ1UxR+JlsDQyb5l17kBpYXZTXlGVHaY p3AYPpqGnWAnkaoSiOFbPn3rGbNTad5c4Yoq+obIhJKmqBXjkEHUO8r3I48e/6HIol2srp3Ibb+ eJX18YukO9+f+7nWDj44XTS9BrfyOJ7+kdLM+h+XkdCkF4V7cxFe1rt4MyxeC3C7/1XzTM4fk1L 4PDXSg8FY6kZmn2hHr2Y6s9P5yaxh1KOggpprNSbPQn/CRCMFU1Fu34KCNYBHij9gkisgK0V1Ni WueeCr5lEmv4R++TamhvFlJ0CLZylFMPIldotiB2036IXlfbzIc5cfxf5WIwbCCcLrIATXdoIzH SfCEXwMtoJk9Dx7RT9hOHZJByfCb6MBv4vYQQaxCoWg22cJmXmgdFeePLYeGss/mEEqUAHBGvM9 j2b8oNefbIvAq+sCzK4MLCABSsi9sY4GFg= X-Received: by 2002:a05:6a00:9494:b0:851:c1f6:948 with SMTP id d2e1a72fcca58-851c1f60b26mr5261055b3a.16.1787072556832; Tue, 18 Aug 2026 10:02:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 34/38] target/tricore: Enable disassembly via capstone Date: Tue, 18 Aug 2026 10:01:51 -0700 Message-ID: <20260818170155.1907006-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072925811158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/disas/capstone.h | 11 +++++++++++ target/tricore/cpu.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index 788f90771a..db1abe7f70 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -78,4 +78,15 @@ #define CS_MODE_SH4A 0 #endif =20 +#if CS_API_MAJOR < 5 +#define CS_ARCH_TRICORE -1 +#define CS_MODE_TRICORE_110 0 +#define CS_MODE_TRICORE_120 0 +#define CS_MODE_TRICORE_130 0 +#define CS_MODE_TRICORE_131 0 +#define CS_MODE_TRICORE_160 0 +#define CS_MODE_TRICORE_161 0 +#define CS_MODE_TRICORE_162 0 +#endif + #endif /* QEMU_CAPSTONE_H */ diff --git a/target/tricore/cpu.c b/target/tricore/cpu.c index 96e2817dee..dcd5c5065b 100644 --- a/target/tricore/cpu.c +++ b/target/tricore/cpu.c @@ -24,6 +24,7 @@ #include "qemu/error-report.h" #include "tcg/debug-assert.h" #include "accel/tcg/cpu-ops.h" +#include "disas/capstone.h" =20 static inline void set_feature(CPUTriCoreState *env, int feature) { @@ -35,6 +36,35 @@ static const gchar *tricore_gdb_arch_name(CPUState *cs) return "tricore"; } =20 +static void tricore_disas_set_info(const CPUState *cpu, disassemble_info *= info) +{ + CPUTriCoreState *env =3D cpu_env((CPUState *)cpu); + + info->endian =3D BFD_ENDIAN_LITTLE; + info->cap_arch =3D CS_ARCH_TRICORE; + info->cap_insn_unit =3D 4; + info->cap_insn_split =3D 4; + + /* + * Possible capstone bug: the isa levels are not additive. + * Work around by settiing only one. + * Note that TriCore 1.3.0 is the earliest we support. + */ + if (tricore_has_feature(env, TRICORE_FEATURE_162)) { + info->cap_mode =3D CS_MODE_TRICORE_162; + } else if (tricore_has_feature(env, TRICORE_FEATURE_161)) { + info->cap_mode =3D CS_MODE_TRICORE_161; + } else if (tricore_has_feature(env, TRICORE_FEATURE_16)) { + info->cap_mode =3D CS_MODE_TRICORE_160; + } else if (tricore_has_feature(env, TRICORE_FEATURE_131)) { + info->cap_mode =3D CS_MODE_TRICORE_131; + } else if (tricore_has_feature(env, TRICORE_FEATURE_13)) { + info->cap_mode =3D CS_MODE_TRICORE_130; + } else { + g_assert_not_reached(); + } +} + static void tricore_cpu_set_pc(CPUState *cs, vaddr value) { cpu_env(cs)->PC =3D value & ~1; @@ -214,6 +244,7 @@ static void tricore_cpu_class_init(ObjectClass *c, cons= t void *data) cc->gdb_write_register =3D tricore_cpu_gdb_write_register; cc->gdb_num_core_regs =3D 44; cc->gdb_arch_name =3D tricore_gdb_arch_name; + cc->disas_set_info =3D tricore_disas_set_info; =20 cc->dump_state =3D tricore_cpu_dump_state; cc->set_pc =3D tricore_cpu_set_pc; --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072621; cv=none; d=zohomail.com; s=zohoarc; b=jIHBHOco8ZaBRlFuFl7Wk/fz3use41EMdMYTmROkV2XCrmN3fTi3hKUBM0KYTBswv1+OLCkq83wwytb8W02lj5+31321VJq0Z7zoJE4hq2Q48vNh454HmwWrWsOX9sKCUvdaGda0qFXQfJ3KNXMHFrSjcTYpC9LBXC3YBgmFJnc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072621; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=+Pj94heN6UWYtvUEx68rDu4510kAyKsMZVzdju/rCoo=; b=FJPi9vpFQ5ENdtXoNBwtll7v84HGWci1HsZ75ywBJ7LvOaUVEWVJRbNBbZxlUSM6tk7nDTNE0BarvJCY2ffWL09h8IJWLidPcV+1NMfreGqcHl8y5+BJkdrR/RVAfT/O8amg0/CBtqCKKvB90QF3eZuqp9FUoytpS00mu+uLfqE= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 17870726217891011.5339788756868; Tue, 18 Aug 2026 10:03:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwND0-0007ly-Om; Tue, 18 Aug 2026 13:02:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwNCz-0007la-4z for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:41 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCx-0004to-EW for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:40 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-cc1469c1b83so29186a12.1 for ; Tue, 18 Aug 2026 10:02:39 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072558; x=1787677358; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=+Pj94heN6UWYtvUEx68rDu4510kAyKsMZVzdju/rCoo=; b=CjiFA82GGfrbfCuzisbWnl+Ov/s0U/ZT6zMGtSa87/5QG1Vq1FQPF8zEHmDPT5AlZ5 EzeEDx2mOBSSNtG6xdvAii0UN+vkgGKxsrTcn5PifdQmghfVw1BVsoglJCIzD8TAYIrf HE+wpgVCOmA3vHkAvMTa/q2WbXwjUV6wWhc7y03xC80ZMYPh5kjXkXCwMeU8r6IbJiw3 hz4ewrGh8IEQV8hmcdUrnscf9hjTU2doiGDYqJ9wk4iaKKk5h1IrH8F/LJ27mQrCizBc 9NXe7pOT8eOvkJ0OcZ+sIBnb2gFj/kPhKdpwRHCvt+IiDZpLD/kc5funqSLOsw4udSs/ mEyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072558; x=1787677358; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=+Pj94heN6UWYtvUEx68rDu4510kAyKsMZVzdju/rCoo=; b=EZSRZkK7Hhvzi5PJScNl5VQ1bfJiQcwrVVjipNfEBl5iIPp7ewrRXvqpFy2VGFwntI v6G7m4VYR/iWlUH/2o45HinrTiKAi6hEK1hYnAS6xeVkVIJNhSEi3PpEBETfgGxdyKuJ JF5LTPYDSIJ641eTeGyJduRwHICdLoPeiTDXGXEVx7CtQdKP33oLa8J9GyWPdPEJNpRe EkPdqrRaBCpVMQiTEnoL2byTh4znEJbfnfZnTZFD42vQsedt/6InpqAlO7Z35y1Ua3yn KoYQEWJul5jQfvG0YGjDU44V7WGCAUEMtBMCNtA60j3yMRKBeAMQQymXjBwDgO6P46+x RCUw== X-Gm-Message-State: AOJu0YzWXiLK7ZjkyDDC1FP4iUpecAmzfHtyM+7KWLoSvMCl4rF//+ib u75D17X6W2alSE0mILGw0oUFwAXKjcm6TcQ/DzEKrcSgboOtn24uSZkZlOpcpr8OisH4Cp4j1el bYFJkR5E= X-Gm-Gg: AR+sD13NEW9WpPJnMg6ieSVYsuoNyILAHQzu3Jm7AgYFnUVcfqkbmzC4wxdSa0/mjRZ 0bWqCZhtJYBqfGf2xCTV9efkgry4x8f27auFXHutRUwSM75y36CT/kDwS1sVbVQllEOI4K+wH6E /guFaF1ZlblpNkxqJU0ZeC4QjAIFeP6dwr5v0ktAMiUyRDw7RhU1bYU6x6zFLxr9S1Op97Y7GFC 1eYXZ5PV5oysicIkVDIUycUfsZoI9WqcUkF46DaM5jgJgnMEDb4b/zNsXTHMwHh9CFIFcLHajEC ErNAO3i5Q1CRUDElmoi46Vh+4SpXmKY+/GklvhBvIak1155vv+6kXvEpreILH3xJ88MfhK/yWBu eqcydYQ9KX5N7wXTj7A+FYAq155e3L5Nc+hIXb3WKwlNgR4Gg2EExwduOUKP3pSF0XlSHYKJl1P 7cz3zsAcVtCpCaAB8nIfuWDOJKu8opI6sYwzJfulXDEcnyiHGdqfxBsm6MwGGocf9P9XBBKZT5e hW0eHQAkQtr5Bhkd3nVbWck3q6U7kJJb6g= X-Received: by 2002:a05:6a00:8c6:b0:84e:9257:d0c2 with SMTP id d2e1a72fcca58-851b877ad03mr13970649b3a.9.1787072557905; Tue, 18 Aug 2026 10:02:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: Song Gao <17746591750@163.com>, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 35/38] target/loongarch: Enable disassembly via capstone Date: Tue, 18 Aug 2026 10:01:52 -0700 Message-ID: <20260818170155.1907006-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072623304158500 Reviewed-by: Song Gao <17746591750@163.com> Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/disas/capstone.h | 6 ++++++ target/loongarch/cpu.c | 8 ++++++++ 2 files changed, 14 insertions(+) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index db1abe7f70..a922f7627f 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -40,6 +40,12 @@ =20 #endif /* CONFIG_CAPSTONE */ =20 +#if CS_API_MAJOR < 6 +#define CS_ARCH_LOONGARCH -1 +#define CS_MODE_LOONGARCH32 0 +#define CS_MODE_LOONGARCH64 0 +#endif + #if CS_API_MAJOR < 5 #define CS_ARCH_RISCV -1 #define CS_MODE_RISCV32 0 diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index cb07f15110..8cd5bc18a3 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -29,6 +29,7 @@ #include #endif #include "tcg/tcg_loongarch.h" +#include "disas/capstone.h" =20 const char * const regnames[32] =3D { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", @@ -694,8 +695,15 @@ static void loongarch_cpu_reset_hold(Object *obj, Rese= tType type) static void loongarch_cpu_disas_set_info(const CPUState *cs, disassemble_info *info) { + CPULoongArchState *env =3D cpu_env((CPUState *)cs); + info->endian =3D BFD_ENDIAN_LITTLE; info->print_insn =3D print_insn_loongarch; + + info->cap_arch =3D CS_ARCH_LOONGARCH; + info->cap_insn_unit =3D 4; + info->cap_insn_split =3D 4; + info->cap_mode =3D is_la64(env) ? CS_MODE_LOONGARCH64 : CS_MODE_LOONGA= RCH32; } =20 static void loongarch_cpu_realizefn(DeviceState *dev, Error **errp) --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072632; cv=none; d=zohomail.com; s=zohoarc; b=m2blv9Q3lfk9HR7t4cSFp05F5PNxbasdYIe2ZrYvxHSAU93wyQ9ODFZYfQcmeB7vyMhT/83ZIj8LOUA5tsI4ATUjKpWe8HNZpRPaWdVPEvzbQMCBtN/XhvEdBIPBJ4ocExB9zivaa7raiiKZzjX5BvTI0cvHxeQEgfLdFelluZ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072632; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Kl4iMyhsy4R3Y60cT67oZr7+SY2GY19fNiwcCtPk6jw=; b=FSjTPXk/E4+U8AIBtYB8ootBLutm9cPQ0SuwSYUQYimiC9BMLj+lKF6rw9izB8Yz3XmVVqRnGDJFTyzH1Ocz9N9D7HsckekGpHNtbSW/tQKeSBbnTyt1XR/1oZwjCWtkfHcrXyIw99wxvylTPdkSpKj0w/RAv6bPXyRz0k03jgU= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072632888279.66131090646513; Tue, 18 Aug 2026 10:03:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwND2-0007mY-5N; Tue, 18 Aug 2026 13:02:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwND0-0007lr-GQ for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:42 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCy-0004uB-FF for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:42 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-84eb992a881so148623b3a.2 for ; Tue, 18 Aug 2026 10:02:39 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072559; x=1787677359; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=Kl4iMyhsy4R3Y60cT67oZr7+SY2GY19fNiwcCtPk6jw=; b=e6Ue4vymxZQ/j6hx4BQdjAvDixF+ZwJ1DwuGmLQK3St1dMiIhuNyVjwM4/V8qwYrtw 5xvLcr2oR8BJgJWUetDJsiMe7oF+ll0gAZwqZXK8g/vHcv8GCd7fhZ9FkxyF7RRn/XrA 1zW2BE0DPgCUvAfJgUZ8EstaBnGA83z70jp09OWJxYTMw/V2xhDLtWwLbXAl2AmXPOuV kjHTRZXU5DSAOWX+uTL+E2I96bqt4K01Q+favO1gH/vnAX7BqNibYmZP62R2FwIdSgWk 5c7txCyk/fZjZNQRCzBFMR3njQfyB8DuN5Xs+t4jWHy3+b3ufiPqizd3y0w9yECWUfTj nYjg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072559; x=1787677359; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=Kl4iMyhsy4R3Y60cT67oZr7+SY2GY19fNiwcCtPk6jw=; b=LeOJMwCjaB4a4Db579HF3EevxF3tN28+aGlHY3qWXXZXaJ6h7gQjACv/C+LYHFbKO7 K8tB6AnpWM22u9MK6QLl+Pl5hWYneMEFXWDmRMakqkq82lBNrgd9nvP2T8As2d0s0YZW 8LbTinizVNzzVAZ3W2/AKUuVvVCXi3KntaB2pIoap/aEjY5hl4hTUJfvgzKqerA4vKIR yLFIGhpSFe+VNyY7NkjyBIO2IKDgGAFFyC6RhezL5NHnvhyHaDFKMvKaKpKocfeJtFDf n3G/OTZO7UF9pcHawDFF/GM5KOxBdiNiGzpKKIDVch60U1galAOfpnRLwcUM6fMWUAXO ubUA== X-Gm-Message-State: AOJu0YxGfjkmqNWDB1KG4XX4sIhwhsONN8phOMP5EvVtvhpZDfv8rkmt 0UW3T3JSMEBkSI0GKzJTKqc+IZKhRkU1JIorqStHuZ7oFKpb4S9/eWhX/jXmx6afM/AI7hzDS7a KXUR+iSs= X-Gm-Gg: AR+sD13jSQGso9LYY/d/DLGE3SULGc3Wo0yyWoMXLK0+YVn0RyCXtScaZs5mOX3PUip Y1Wvl0hvm3YPJw9HsRf+f4gaq0eo2wm3RdvJHkAgqDsSbgmAz/B3dJfgmPOnwuEAXKy6Bto4r8D DdgTOFtM394ThiKRILviGvZabOnqxp6Zsj1o+g79vNH0O2i/6ZBPtrGvKybutAcSmlKNJ3RtYwK eF8bTgJvUW91DcSmZNhTnzU+GEX8Zbs4alETVMK6j3AInagnNTzqaBP5dEJn15+ow5fqQJGWFgO huizcwHQQUrCAYmmijPpO84+k3910CAT3fPr9Yo8NvMNrDMeKwERQ7wip4J+mJOaO8tmMRELY6f ocboIIV/IbWhpsJW0SxUihhKEosIbWfRn4qqL5MDU+6E4fUPG0HonKgwSWCokXsLUQ0fNpUYthe +p7Fm111HXAnEt3/PK5Bi3b0FMxRWZVdccdGAoC0U/XUnWXTgRYWfhB6oDQJbmn2vrvgw/U97Fe OVsIUSNVW/rrFlslZNl140AwdlvI5y8IMU= X-Received: by 2002:a05:6a00:ae06:b0:851:c1d2:c48d with SMTP id d2e1a72fcca58-851c1d2c8ffmr8823872b3a.8.1787072558729; Tue, 18 Aug 2026 10:02:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 36/38] target/s390x: Update capstone disassembly to v6 Date: Tue, 18 Aug 2026 10:01:53 -0700 Message-ID: <20260818170155.1907006-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072633311158501 In particular, this enables many more vector insns. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/disas/capstone.h | 11 +++++++++-- disas/capstone.c | 2 +- target/s390x/cpu.c | 4 +++- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index a922f7627f..87f8f6181f 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -4,7 +4,6 @@ #ifdef CONFIG_CAPSTONE =20 #define CAPSTONE_AARCH64_COMPAT_HEADER -#define CAPSTONE_SYSTEMZ_COMPAT_HEADER #include =20 #else @@ -19,7 +18,6 @@ #define CS_ARCH_X86 -1 #define CS_ARCH_PPC -1 #define CS_ARCH_SPARC -1 -#define CS_ARCH_SYSZ -1 =20 #define CS_MODE_LITTLE_ENDIAN 0 #define CS_MODE_BIG_ENDIAN 0 @@ -84,6 +82,15 @@ #define CS_MODE_SH4A 0 #endif =20 +#if CS_API_MAJOR =3D=3D 0 +#define CS_ARCH_SYSTEMZ -1 +#elif CS_API_MAJOR < 6 +#define CS_ARCH_SYSTEMZ CS_ARCH_SYSZ +#endif +#if CS_API_MAJOR < 6 +#define CS_MODE_SYSTEMZ_ARCH14 0 +#endif + #if CS_API_MAJOR < 5 #define CS_ARCH_TRICORE -1 #define CS_MODE_TRICORE_110 0 diff --git a/disas/capstone.c b/disas/capstone.c index 78062339d0..a5bd91890b 100644 --- a/disas/capstone.c +++ b/disas/capstone.c @@ -95,7 +95,7 @@ static cs_err cap_disas_start(disassemble_info *info, csh= *handle) (uintptr_t)&cap_skipdata_riscv); break; =20 - case CS_ARCH_SYSZ: + case CS_ARCH_SYSTEMZ: cs_option(*handle, CS_OPT_SKIPDATA_SETUP, (uintptr_t)&cap_skipdata_s390x); break; diff --git a/target/s390x/cpu.c b/target/s390x/cpu.c index 641ea96c8e..7c725b8a4a 100644 --- a/target/s390x/cpu.c +++ b/target/s390x/cpu.c @@ -225,10 +225,12 @@ static void s390_cpu_reset_hold(Object *obj, ResetTyp= e type) static void s390_cpu_disas_set_info(const CPUState *cpu, disassemble_info = *info) { info->mach =3D bfd_mach_s390_64; - info->cap_arch =3D CS_ARCH_SYSZ; + info->cap_arch =3D CS_ARCH_SYSTEMZ; info->endian =3D BFD_ENDIAN_BIG; info->cap_insn_unit =3D 2; info->cap_insn_split =3D 6; + /* Disassemble everything, even if the cpu would trap on the insn. */ + info->cap_mode =3D CS_MODE_SYSTEMZ_ARCH14; } =20 static void s390_cpu_realizefn(DeviceState *dev, Error **errp) --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072972; cv=none; d=zohomail.com; s=zohoarc; b=nM/KOyPKkm90YNkgjUum88P2LIrvNkVBqEU8UCwGHgbD5+1dEU9zaC/yRo8Md8Oxo9vpmDtUvgTWnpaqh8CEOnJBvr4YAJdZQ7Q5gF4xicSRBymnE1SvTI55GEAxJ29zrewFqeIOV9xPiF5BzMe2anEJgdav2JM+OG6JK4u9Sho= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072972; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=MIArda1Mmt88XEzYwt/OrbYMMCnRwSt7ese98CCkdYQ=; b=eEISZOBhwNeVGb9Gt3owjoy/yAJ1wNptDa80yquxJ7BPwLFrSBMZFvrzu/ZF+uoVL/h3Lr955aycnPwNgk2t/sSxHHxu2/0cA9oqNvbF9jQvxlhweL+gcwrzLi2NPcCoTwPMKujQZIaXWSR2eQecKRNZQwErEA3pXcVWpWo7LXk= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072972357599.8713525775825; Tue, 18 Aug 2026 10:09:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwND3-0007nG-HO; Tue, 18 Aug 2026 13:02:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwND1-0007mK-Es for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:43 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwNCz-0004uV-PZ for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:43 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-ca766c1c9ccso23534a12.0 for ; Tue, 18 Aug 2026 10:02:41 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072560; x=1787677360; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=MIArda1Mmt88XEzYwt/OrbYMMCnRwSt7ese98CCkdYQ=; b=jfO7mpRR76x1yPphcQG7ILbq6O3Zf7BBceVZvFsiHGHwIm3IiL8cGTG0XYCMLlpXoB HtRsL0xkGinwsWtZ2wcFbCwlgiQvAhCaTt13cliwPM+cAzmQtEQ9lzE9XUMEAiM2NHC7 wgfk28jNp4a2phc1jCJrmFS2qWBJuhhdbyaBII8nJbKWHnKTs/Q72MzhbMyKpNqsoNce mg7paTZcmnLHjdMGGZwT/AHyfZiCWWz37fTAoeFevIfccNflinZS+tMy7aBjqcXD/nwy X9YUc6wPrcBuHtcHaeRXqsN3QnM/rjCteg9+sHzdlOenwB3pRZ7JCy0hhJMtZ/Dxep7D pNbw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072560; x=1787677360; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=MIArda1Mmt88XEzYwt/OrbYMMCnRwSt7ese98CCkdYQ=; b=OLWfmpmS12Cm70XB3YBDGbqqXbOZeNwf+Z1af2iRzOAlTdMPuC5VvcMyhG6+OhKctB MVbCbmpmU6hB8InRsOExmP/1GaR6x74nlK0+WDkVKqh7j9PdB6/SxgQL4wtQZOjlwbMJ jdQ8jclneXZx7h81SL7617yVR8wT/FxgO1XJYN15vulfmruTMcp3FEIyxclWQQDeU41Y qcj9lNbZ8SyC0Ym47CSRra8XYhac6LXZRuZ34GDuzFzdXkT+tegTi0333GT+CvZvISjV 5kiOOgCV/1HXIPpB4RKK4/52WJo9GHe3cvy4YiVVs5xwuRSTmcWxrri9KcfZbEHKJYg3 rUzg== X-Gm-Message-State: AOJu0YzBetzSQLFdymGNL2QrC4DpvfzmqPvXHB8M+FJKa/szFbBaJ59h JiLwv/rKFECWt+3DHAI9esxj8UNfNDf5g0ci3WearW/+RHEVbyWHewGvnnTcSEIuZ1lknIkdPdq i6cESlQM= X-Gm-Gg: AR+sD13GG9MyjhDwzDVy/jolp38ZxOdW9+iICZ08E2aFOgcHJAVhkQso2kxQEULpfOe RTv2MjQQ3LHxox2ZFc3nLyj0FmeqP0gMtW24s3INbMa+e5wtsMiuXE4w6Sz8FwnGlSkvpz35vMy OC983jiI1SHO/LWksjL0vPCkKnFN3yktPDK6IhpfwnHWFYt+qJ4urU8BLGp+d2hIeM56mWmdXdM P8tTuETjFhFvEIDHioJTvjWt0s/2+Dg5S8e3h7KioB9TUJ1OcP+xqKYQa3oWntmdsgMLGB12g8W o8At1BjR412lr0VwbCQHRCamZaLwT33qWkb4Cq4uth+GOMObLBOgzXCMF6BLiIh0AWEmNePpnx7 Iwbso0Aa+g/q2BbJKcHCZFHUH0+dlSnnwklGmaA2A9smiAj/NsBpaXzjmSW1pSgGlflkSDp1+hg PKGBdCzHtu0yTN552dZK8b10MLHEyGK/BU7vQ6qVE0Ea30FM7N5bBK1HK245Z1193hOS+E0rRdS aiVwYx8cf8FSB8KTGYwBWcCIH5Gp0qIwgs= X-Received: by 2002:a05:6a00:1947:b0:842:2419:6c0b with SMTP id d2e1a72fcca58-84fde3cca20mr35550359b3a.10.1787072559829; Tue, 18 Aug 2026 10:02:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 37/38] target/m68k: Enable disassembly via capstone Date: Tue, 18 Aug 2026 10:01:54 -0700 Message-ID: <20260818170155.1907006-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072974093158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/disas/capstone.h | 20 +++++++++++++ target/m68k/cpu.c | 65 +++++++++++++++++++++++++++++++++++++++- 2 files changed, 84 insertions(+), 1 deletion(-) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index 87f8f6181f..3d6f90d816 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -14,6 +14,7 @@ =20 #define CS_ARCH_ARM -1 #define CS_ARCH_ARM64 -1 +#define CS_ARCH_M68K -1 #define CS_ARCH_MIPS -1 #define CS_ARCH_X86 -1 #define CS_ARCH_PPC -1 @@ -28,6 +29,12 @@ #define CS_MODE_THUMB 0 #define CS_MODE_MCLASS 0 #define CS_MODE_V8 0 +#define CS_MODE_M68K_000 0 +#define CS_MODE_M68K_010 0 +#define CS_MODE_M68K_020 0 +#define CS_MODE_M68K_030 0 +#define CS_MODE_M68K_040 0 +#define CS_MODE_M68K_060 0 #define CS_MODE_MICRO 0 #define CS_MODE_MIPS3 0 #define CS_MODE_MIPS32R6 0 @@ -44,6 +51,19 @@ #define CS_MODE_LOONGARCH64 0 #endif =20 +#if CS_API_MAJOR < 6 +#define CS_MODE_M68K_CF_ISA_A 0 +#define CS_MODE_M68K_CF_ISA_A_PLUS 0 +#define CS_MODE_M68K_CF_ISA_B 0 +#define CS_MODE_M68K_CF_ISA_C 0 +#define CS_MODE_M68K_CF_USP 0 +#define CS_MODE_M68K_CF_DIV 0 +#define CS_MODE_M68K_CF_MAC 0 +#define CS_MODE_M68K_CF_EMAC 0 +#define CS_MODE_M68K_CF_EMAC_B 0 +#define CS_MODE_M68K_CF_FPU 0 +#endif + #if CS_API_MAJOR < 5 #define CS_ARCH_RISCV -1 #define CS_MODE_RISCV32 0 diff --git a/target/m68k/cpu.c b/target/m68k/cpu.c index ce2707dee5..6012dc3186 100644 --- a/target/m68k/cpu.c +++ b/target/m68k/cpu.c @@ -22,7 +22,7 @@ #include "accel/tcg/cpu-ops.h" #include "fpu/softfloat.h" #include "qapi/error.h" - +#include "disas/capstone.h" #ifndef CONFIG_USER_ONLY #include "migration/vmstate.h" #include "monitor/hmp.h" @@ -182,9 +182,72 @@ static void m68k_cpu_reset_hold(Object *obj, ResetType= type) =20 static void m68k_cpu_disas_set_info(const CPUState *cs, disassemble_info *= info) { + CPUM68KState *env =3D cpu_env((CPUState *)cs); + int cap_mode =3D 0; + info->print_insn =3D print_insn_m68k; info->endian =3D BFD_ENDIAN_BIG; info->mach =3D 0; + + /* m68k support in capstone prior to v6 is unusably bad */ + if (CS_API_MAJOR < 6) { + return; + } + + info->cap_arch =3D CS_ARCH_M68K; + info->cap_insn_unit =3D 2; + + if (m68k_feature(env, M68K_FEATURE_M68K)) { + /* + * m68k insns may have up to 11 words, and 5 words are common. + * Choosing 12 bytes splits after 6 words and disassembly + * uses no more than 2 lines. + */ + info->cap_insn_split =3D 12; + if (m68k_feature(env, M68K_FEATURE_M68060)) { + cap_mode =3D CS_MODE_M68K_060; + } else if (m68k_feature(env, M68K_FEATURE_M68040)) { + cap_mode =3D CS_MODE_M68K_040; + } else if (m68k_feature(env, M68K_FEATURE_M68030)) { + cap_mode =3D CS_MODE_M68K_030; + } else if (m68k_feature(env, M68K_FEATURE_M68020)) { + cap_mode =3D CS_MODE_M68K_020; + } else if (m68k_feature(env, M68K_FEATURE_M68010)) { + cap_mode =3D CS_MODE_M68K_010; + } else { + cap_mode =3D CS_MODE_M68K_000; + } + } else { + /* ColdFire insns may have up to 3 words. */ + info->cap_insn_split =3D 6; + if (m68k_feature(env, M68K_FEATURE_CF_ISA_A)) { + cap_mode |=3D CS_MODE_M68K_CF_ISA_A; + cap_mode |=3D CS_MODE_M68K_CF_DIV; + } + if (m68k_feature(env, M68K_FEATURE_CF_ISA_B)) { + cap_mode |=3D CS_MODE_M68K_CF_ISA_B; + } + if (m68k_feature(env, M68K_FEATURE_CF_ISA_APLUSC)) { + cap_mode |=3D CS_MODE_M68K_CF_ISA_A_PLUS; + cap_mode |=3D CS_MODE_M68K_CF_ISA_C; + } + if (m68k_feature(env, M68K_FEATURE_USP)) { + cap_mode |=3D CS_MODE_M68K_CF_USP; + } + if (m68k_feature(env, M68K_FEATURE_CF_FPU)) { + cap_mode |=3D CS_MODE_M68K_CF_FPU; + } + if (m68k_feature(env, M68K_FEATURE_CF_MAC)) { + cap_mode |=3D CS_MODE_M68K_CF_MAC; + } + if (m68k_feature(env, M68K_FEATURE_CF_EMAC)) { + cap_mode |=3D CS_MODE_M68K_CF_EMAC; + } + if (m68k_feature(env, M68K_FEATURE_CF_EMAC_B)) { + cap_mode |=3D CS_MODE_M68K_CF_EMAC_B; + } + } + info->cap_mode =3D cap_mode; } =20 /* CPU models */ --=20 2.43.0 From nobody Sat Sep 26 23:03:46 2026 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=1787072964; cv=none; d=zohomail.com; s=zohoarc; b=I0TtUMWf8pTIPzi5SWZT5t6vQEVowg4H6EFJaLDAOCQxHOuCyZDDiCBfBK6U56Y0DRe3R/7Vfp7xCtKJVvKpI5GXCAeH1AwTg30sGXX56LACzXNpoLFF4b7+//WvKsxqr5zHGO85s7V69W45ovro/oTQEIxZrNrM88becp0YWXg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1787072964; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=oeddzaUhKMxufvZlehk99Q+yzXw/oIr+pmQ26YJiCqw=; b=EJypO2gCpHuNzYh4927ftvpMSI7wz6MxxQDkAL7DAgdWGx3SeZtBvHQtCZf/d4jz5JMqb38t75KUnRdKpH0bwcVnL9/qbyRu8y+Jg+W+0c1wZ4fP4niiJr9NYo6Z5sRv74zm43qyfzyRXWfCYArDuJdghE7nNbhiLq2hITMSYeo= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1787072964350777.960492546382; Tue, 18 Aug 2026 10:09:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wwND3-0007nL-LA; Tue, 18 Aug 2026 13:02:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wwND1-0007mU-VB for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:43 -0400 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wwND0-0004uu-A5 for qemu-devel@nongnu.org; Tue, 18 Aug 2026 13:02:43 -0400 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-c9b373d5af0so7959a12.2 for ; Tue, 18 Aug 2026 10:02:41 -0700 (PDT) Received: from stoup.. (c-73-181-156-132.hsd1.wa.comcast.net. [73.181.156.132]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-851b401e10bsm2108314b3a.12.2026.08.18.10.02.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 18 Aug 2026 10:02:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1787072561; x=1787677361; darn=nongnu.org; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to:content-type; bh=oeddzaUhKMxufvZlehk99Q+yzXw/oIr+pmQ26YJiCqw=; b=QEsS7/trR0Rs//ljTA0RUsf0yU9b5toGZKcrVAOLzKAMOdRC98myVFtG4z8dtoLazv jc8jD6svw15GzomEnrcKZjhAf5xihaocH4YsKFTdbODGIRceXH2Lnai4+G5NwTsEX4kB Pcvlm+6NBJifACFe8nX+ocynSxSe3rz2/MiVJqT9tm63e91eeqEEbcE89VFhygg5N/4S IJSd4EbPg4QROs4/H1estVS/35jkVxtCJHlCAg0HYjq+vF5kANWcmysjiI0MQaovTnI1 iJfCpA3YiR9uOCh2x7dGzzy2f3cw50e53ZCjN1Iq8tELk3bWr7a1JvM2tRRmLZ1LRLnS ehgw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1787072561; x=1787677361; h=content-transfer-encoding:content-type:mime-version:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=oeddzaUhKMxufvZlehk99Q+yzXw/oIr+pmQ26YJiCqw=; b=BrnOjoBxsjeXkr67Aomi77ZrLRBiiid/NTV4X/AjnOiPo1KmV4F5twJXssP0W1miUO 5PnKJRTzTOIym788u0Wa803zE1zMNChFZ229rc8pQU6rICGFlzDZ1d8lWXbKFWZxO5W+ DSieTaGENLyYMhsRPVNhPsHTHRpJcPtTFhixes6RahIdsyWD6p8gIxd0X2zPevLe0Oru 5Iljjgc07Wc0acC/+7tnfbgSj9S5EFnAutgRVhi6vBDiywysK3YhGwY22ghrEfVm7S7W e9M3FROTGQVgfiZs8+qZJT3zpBidiuHDvGbieii2n4dgHTp37F2PNpBYRABqye9Nto7J trsQ== X-Gm-Message-State: AOJu0YyO2I6JAXvfX2yWoLI2X08jC+Fp6r2Oxb/UffcxgQ+FVg5wnb1r ZD/nsy4REQwJxugnnenkXMpoXohWb6y1rJI+Oisq0ZHmSqwlcSlBjmbpSbniTdJn0H7o/tPYvvi wMZJnalI= X-Gm-Gg: AR+sD114+qKzTvF6L7VTEC+w1vp7VBNJV1HGqkU9xbbC9o0nsZuPPNGm/NoSICbsJg7 Nue3veE/JJPQOo7TZump/HdxXGOYD0xM9x3HxtjVDjBmZRhSpWj+T05nl9pQOlgorefstw6IOPh eZiQf6qP9bRgKgB9DGoE7h05vE7L+y7jEK6eWiCzz+DlFQS3yXzt/0o+P/qZRn+aI/0K9KZo+qZ I5Id71GUEeyd0Zp2sYoIBGKfYWH2toU6UySu5NLhi/Cg9gFMHEeK63lMW+xCE6QNKU6+b6DBrED WPt2oBOE8O7zp8mXuv12R1hsaekc4lqhJGd4JpgPOXoHLJXeQJQn/tVMydF64RrVLBiGND71tF8 dEgv79Yf4juyALO9K0Dlk8KF91WTk4YqTQd83OG2Ov4xmO3f2FRHeU/yOg9+72X8U9z52uDx9x1 cp/oGzFZ+PN6POREv8JsEvEY3jACX30ubJkAQ6uM3ZMXVhNQ4LcMOO/fiv0JRGUuFYxwNf0CcoY vEIdaBopLkRbgW6y16z3PLOsQsQ4Aet2w0= X-Received: by 2002:a05:6a00:2c97:b0:848:62ab:7b7 with SMTP id d2e1a72fcca58-84fde1af5b9mr39625468b3a.16.1787072560730; Tue, 18 Aug 2026 10:02:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PULL 38/38] target/mips: Enable disassembly via capstone Date: Tue, 18 Aug 2026 10:01:55 -0700 Message-ID: <20260818170155.1907006-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260818170155.1907006-1-richard.henderson@linaro.org> References: <20260818170155.1907006-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=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::529; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x529.google.com 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.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1787072966076158500 Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- include/disas/capstone.h | 24 ++++++++++++++-- target/mips/cpu.c | 60 +++++++++++++++++++++++++++++++++++++--- 2 files changed, 77 insertions(+), 7 deletions(-) diff --git a/include/disas/capstone.h b/include/disas/capstone.h index 3d6f90d816..e72faf8179 100644 --- a/include/disas/capstone.h +++ b/include/disas/capstone.h @@ -29,6 +29,7 @@ #define CS_MODE_THUMB 0 #define CS_MODE_MCLASS 0 #define CS_MODE_V8 0 +#define CS_MODE_V9 0 #define CS_MODE_M68K_000 0 #define CS_MODE_M68K_010 0 #define CS_MODE_M68K_020 0 @@ -36,11 +37,10 @@ #define CS_MODE_M68K_040 0 #define CS_MODE_M68K_060 0 #define CS_MODE_MICRO 0 +#define CS_MODE_MIPS2 0 #define CS_MODE_MIPS3 0 -#define CS_MODE_MIPS32R6 0 -#define CS_MODE_MIPSGP64 0 -#define CS_MODE_V9 0 #define CS_MODE_MIPS32 0 +#define CS_MODE_MIPS32R6 0 #define CS_MODE_MIPS64 0 =20 #endif /* CONFIG_CAPSTONE */ @@ -64,6 +64,24 @@ #define CS_MODE_M68K_CF_FPU 0 #endif =20 +#if CS_API_MAJOR < 6 +#define CS_MODE_MIPS16 0 +#define CS_MODE_MIPS1 0 +#define CS_MODE_MIPS32R2 0 +#define CS_MODE_MIPS32R3 0 +#define CS_MODE_MIPS32R5 0 +#define CS_MODE_MIPS4 0 +#define CS_MODE_MIPS5 0 +#define CS_MODE_MIPS64R2 0 +#define CS_MODE_MIPS64R3 0 +#define CS_MODE_MIPS64R5 0 +#define CS_MODE_MIPS64R6 0 +#define CS_MODE_OCTEON 0 +#define CS_MODE_OCTEONP 0 +#define CS_MODE_NANOMIPS 0 +#define CS_MODE_MIPS_PTR64 0 +#endif + #if CS_API_MAJOR < 5 #define CS_ARCH_RISCV -1 #define CS_MODE_RISCV32 0 diff --git a/target/mips/cpu.c b/target/mips/cpu.c index 669c7d99bb..0fead20d65 100644 --- a/target/mips/cpu.c +++ b/target/mips/cpu.c @@ -30,6 +30,7 @@ #include "system/qtest.h" #include "hw/core/qdev-properties.h" #include "hw/core/qdev-clock.h" +#include "disas/capstone.h" #include "fpu_helper.h" #ifndef CONFIG_USER_ONLY #include "semihosting/semihost.h" @@ -488,15 +489,66 @@ static void mips_cpu_disas_set_info(const CPUState *c= s, disassemble_info *info) { const MIPSCPU *cpu =3D MIPS_CPU(cs); const CPUMIPSState *env =3D &cpu->env; + bool is64 =3D env->hflags & MIPS_HFLAG_64; + int cap_mode =3D 0; =20 - if (!(env->insn_flags & ISA_NANOMIPS32)) { + if (env->insn_flags & ISA_NANOMIPS32) { + info->print_insn =3D print_insn_nanomips; + info->endian =3D BFD_ENDIAN_LITTLE; + /* nanomips has 16, 32 and 48-bit insns */ + info->cap_insn_unit =3D 2; + info->cap_insn_split =3D 6; + cap_mode =3D CS_MODE_NANOMIPS; + } else { info->endian =3D TARGET_BIG_ENDIAN ? BFD_ENDIAN_BIG : BFD_ENDIAN_LITTLE; info->print_insn =3D TARGET_BIG_ENDIAN ? print_insn_big_mips : print_insn_little_mips; - } else { - info->print_insn =3D print_insn_nanomips; - info->endian =3D BFD_ENDIAN_LITTLE; + + if (env->hflags & MIPS_HFLAG_M16) { + cap_mode =3D (env->insn_flags & ASE_MICROMIPS + ? CS_MODE_MICRO : CS_MODE_MIPS16); + /* Beware unsupported capstone mode */ + if (cap_mode =3D=3D 0) { + return; + } + info->cap_insn_unit =3D 2; + } else { + info->cap_insn_unit =3D 4; + } + info->cap_insn_split =3D 4; + + cap_mode |=3D is64 ? CS_MODE_MIPS64 : CS_MODE_MIPS32; + if (env->insn_flags & ISA_MIPS_R6) { + cap_mode |=3D is64 ? CS_MODE_MIPS64R6 : CS_MODE_MIPS32R6; + } else if (env->insn_flags & ISA_MIPS_R5) { + cap_mode |=3D is64 ? CS_MODE_MIPS64R5 : CS_MODE_MIPS32R5; + } else if (env->insn_flags & ISA_MIPS_R3) { + cap_mode |=3D is64 ? CS_MODE_MIPS64R3 : CS_MODE_MIPS32R3; + } else if (env->insn_flags & ISA_MIPS_R2) { + cap_mode |=3D is64 ? CS_MODE_MIPS64R2 : CS_MODE_MIPS32R2; + } else if (env->insn_flags & ISA_MIPS5) { + cap_mode |=3D CS_MODE_MIPS5; + } else if (env->insn_flags & ISA_MIPS4) { + cap_mode |=3D CS_MODE_MIPS4; + } else if (env->insn_flags & ISA_MIPS3) { + cap_mode |=3D CS_MODE_MIPS3; + } else if (env->insn_flags & ISA_MIPS2) { + cap_mode |=3D CS_MODE_MIPS2; + } else if (env->insn_flags & ISA_MIPS1) { + cap_mode |=3D CS_MODE_MIPS1; + } + if (env->insn_flags & INSN_OCTEON) { + cap_mode |=3D CS_MODE_OCTEON | CS_MODE_OCTEONP; + } + if (is64 && !(env->hflags & MIPS_HFLAG_AWRAP)) { + cap_mode |=3D CS_MODE_MIPS_PTR64; + } + } + /* Beware unsupported capstone mode */ + if (cap_mode) { + info->cap_arch =3D CS_ARCH_MIPS; + info->cap_mode =3D cap_mode; } } =20 --=20 2.43.0