From nobody Sun Jun 7 22:21:00 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=1780617039; cv=none; d=zohomail.com; s=zohoarc; b=NsIkzEFfNWEuxsjmhEJMd0mUAtX/UIOkr7ZENVX3uAVwspHL8tyB2IuNHbbo65sQ0QyAZfpUZuabOgcNUNHR3O6HaO7WTNcqAO8F2CBnmlDgDpMH4ThVHlSvObILnOVCJbpXG90fkbOXmPx3fkjoJz3Conin4e9S+TCEWHwsOR8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617039; 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=SCXUMTjg9OeuHT4T5XcE5EzNk2J0W4LheW0f85VqoHQ=; b=aMYGQhUma6k+qR4Tnv0dSKFWZXVXFn9BP9mghO70FJZxjZdgbYyHVCXYX9+wszRQVuiCn9MJpz/q7nskuvoBf6HaCu0+2ZwnxRdSmCIVq1VN4UxYvx9NCGN1VZmN9phIOaOpwVns6fD3/LSE66sX09O2fDR+fi6SxzreaSnxUWM= 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 1780617039934983.6775338227332; Thu, 4 Jun 2026 16:50:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHo4-0006bL-Vc; Thu, 04 Jun 2026 19:49:00 -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 1wVHo3-0006ap-4Z for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:48:59 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo0-0007qd-Vy for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:48:58 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2c0c2c7d45eso12273775ad.1 for ; Thu, 04 Jun 2026 16:48:55 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.48.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:48:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616935; x=1781221735; 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; bh=SCXUMTjg9OeuHT4T5XcE5EzNk2J0W4LheW0f85VqoHQ=; b=qPTGU/C1J/RyOGU2yMA+w9eR5AeR5LzgL+GRpW3BCitXbrwRbi5RgSK9miQ9VflW3O aLDQ3U525ArlzC/hiV/OgoLe/ClTwxL8E6VMKJNJbjb2rrTjudQK7vuNUue5TCbvZ6a7 sMobeHiG4vBlVNgLVzpDudxkErJZftRaTBjbWNVI+Z3i4c6I8dSdwgIaApCdPiG06q0n BNJYADn+yDzXyPmSp+vRC9mVQnZ1gB9a9+TPQ6U/oZZCxOG0mvOS063myvi5Hau+VTiu WqKKzxw7zYaeveHLwHTeP7CldS1U4RpFgvnaJTSJ6YMXWVnc3M7RX2XoDvwKKKRR/Wba t8iQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616935; x=1781221735; 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; bh=SCXUMTjg9OeuHT4T5XcE5EzNk2J0W4LheW0f85VqoHQ=; b=N0NI6OaObZR4nI2kPfna1mwDujmas9WkU9cKSS2+uGx2Fart8T5WwEwSPEYbtw2HPP eku9TJBuIdIFr4Zah18hMn+W3Oqh3V3mkTTNB+OJA7g/r5n+rj75YTS99XuZLeTM57Xo Paoyh481fPVPRNlsx79YoNk6rSyi/9fYE/vYaTdk3g8bFs80k3PScXxp1ut07QNuQ+Ez wym8o4tUEwoOLVwE+ag4M0Rmzw1a94tIHvTZgRfykDwifbwWTjqWRFNF5bxx5nVVIEMw yiGQZaA56Iyb/nfFEK++eqsp7RApPy+/AJ9Mc42iATQEKgH12oVpP9Fageec9qxm8Nn7 O1vA== X-Gm-Message-State: AOJu0YwnFZAn40Kb011n1yPbQcHYo+62X3BjQby+4VKi0wrL9T5u4FtT OOgpvfopdCajHDBLsa4mcV2pbtw6x5GfvEKkNkmV+j+R7RA4cNw5MAEJo5FQWrhgHffzy4VDTpB w7KDlnL4= X-Gm-Gg: Acq92OEuTyDQw6D2qLIZLgKObsAVcPFSu15oZ0YLhHgYoQsTPdujJ1h7eLBIrcD6TVN yltWd6LBwAw4WGz1+0KojESH1+h2F8HG23SgiguhYEP1JlHoF2IdaK2u0L42aqc15u4Q48VZd6h 5WGwALOffxUIG+ce2E49FgQBdEdTYZ6nfEdXOYk7TjiQK2D79YGZ38pBPMkF0zG7LnxKzJuVRXh 7NYezk3R9QICqzjsDHC7LR7ALlHzP9WEwwZBMpebrcV/mCd5EazipOAg5pNN/ESwK/salS6p419 x/k09x2tGrOKJlKzqo7N1E3L3eF4I9TPsOrI4EGwbYGEqOsUDFA7DBCiWHXg74KVbhDORK+Xfte cw59wM9LWzU5r9i3ZhRCqGV2Xgm/0yqpHEOoV0wdmfLM3pjEWSyXxCRjnGhjTv4pXz/J1XLXkOA b4CxbBr+sBUEIEsYiE1kYeb3MhH/5Al04kGPGA3wNDNG0KiNrV/w== X-Received: by 2002:a17:902:f549:b0:2c0:b319:fb43 with SMTP id d9443c01a7336-2c1e849530dmr6889245ad.21.1780616934944; Thu, 04 Jun 2026 16:48:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 01/25] target/arm: Add feature predicates for SVE2.2 and SME2.2 Date: Thu, 4 Jun 2026 16:48:28 -0700 Message-ID: <20260604234852.573178-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.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: 1780617040524158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 5a14507682..49c8606809 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1501,7 +1501,12 @@ static inline bool isar_feature_aa64_sve2(const ARMI= SARegisters *id) =20 static inline bool isar_feature_aa64_sve2p1(const ARMISARegisters *id) { - return FIELD_EX64_IDREG(id, ID_AA64ZFR0, SVEVER) >=3D2; + return FIELD_EX64_IDREG(id, ID_AA64ZFR0, SVEVER) >=3D 2; +} + +static inline bool isar_feature_aa64_sve2p2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64ZFR0, SVEVER) >=3D 3; } =20 static inline bool isar_feature_aa64_sve2_aes(const ARMISARegisters *id) @@ -1610,6 +1615,11 @@ static inline bool isar_feature_aa64_sme2p1(const AR= MISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMEVER) >=3D 2; } =20 +static inline bool isar_feature_aa64_sme2p2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMEVER) >=3D 3; +} + static inline bool isar_feature_aa64_f8cvt(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8CVT); @@ -1673,6 +1683,11 @@ static inline bool isar_feature_aa64_sme2p1_or_sve2p= 1(const ARMISARegisters *id) return isar_feature_aa64_sme2p1(id) || isar_feature_aa64_sve2p1(id); } =20 +static inline bool isar_feature_aa64_sme2p2_or_sve2p2(const ARMISARegister= s *id) +{ + return isar_feature_aa64_sme2p2(id) || isar_feature_aa64_sve2p2(id); +} + static inline bool isar_feature_aa64_sme2_i16i64(const ARMISARegisters *id) { return isar_feature_aa64_sme2(id) && isar_feature_aa64_sme_i16i64(id); --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617040; cv=none; d=zohomail.com; s=zohoarc; b=JrfCTmmAeJz1qfBK2dR5/G42pDIhTelJJyu5Qu12Sp0g3kdOimwp2c9VUYOHB5C3Iw5vltn80IzkcPaP3tbPBmQNtOVgOs5ZdpLvZ2H6nXMDgjoWG07eR7M0sR2AAq6TTHWs7KDCItfyAKCQ6OZZKtOfS7kOubYVfaE2/8BdCSY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617040; 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=B3ljH4kMaSmijfPNquzE2ziF+cSFEXG5x4lntN3n0PA=; b=XqNexa6sPwti1b+EXSY3pASSG/HSRYIOkp6/gBUwCHwmEV5VXaYMgNjiJrr0ncbm9uOMle2CabmIr0RH4qFO4NsRAE54IQj0icOS56QehLheqo9rzI/LTfPfxKVXr3dIv+daPBHB6FTChmrIDghcLFzajJpyvF6bKwGfa9LBTSA= 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 1780617040537233.17063622498404; Thu, 4 Jun 2026 16:50:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHo9-0006gF-LY; Thu, 04 Jun 2026 19:49: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 1wVHo6-0006c2-BA for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:03 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo1-0007qz-Ky for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:02 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2c0b9328c4aso9035175ad.0 for ; Thu, 04 Jun 2026 16:48:56 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.48.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:48:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616936; x=1781221736; 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; bh=B3ljH4kMaSmijfPNquzE2ziF+cSFEXG5x4lntN3n0PA=; b=GnQKKy1z7SWJAM9Atgha8CBzlpLOrB0uryHYwBioA9u3bo3/xRc2grAllmnE8uFszw +RGCuO0kShPt8ydDwurbokTW38m/E0B0UCJvv97n14FbyEq6uQophQW58EK+yBf9TZqk 2wezmVoerdb+7d6a4oXFleinEyG3Osy9FbtmOzqLFlz9qLyzl//j7Bwmq7Jb8i50kOE6 ehZnc5m+hVkYJ6E+WVvRBJzW7duZVEscVPVeXE4oePSKj4CdndLKSMSOhjrDy99Wpn7I 7eIfl+3gK1oG0nLK8wHxLmBhppG0ZdLImbhZz1Kui8NGB7S821kgl/d7CM1zHNW1x1Gc TLSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616936; x=1781221736; 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; bh=B3ljH4kMaSmijfPNquzE2ziF+cSFEXG5x4lntN3n0PA=; b=CxQomYzmQUb5kRFbut8IQUiOmo6XgIbpDge9KgBNR9fGyTqLdn1qVhSn3PactY104U pFOHFuekUv5uiQC5XD2YvqQksj591COKcXW6LcmqMiTyLJ4wvZvMcm4R2QrIW5SH19JH Dzfb0Ru+JW/aIRkVYD9pxEFAaPr9uXM5OiCSF7ZsZ9jkgPPL8Q/4r4oJCyt/3NpVlEmL y95YEbxzlk51RNeNExzyO3VqZK2ia495BOqGEAwPhGVcDLmQrXXB6k4QbpO6X1id4I5G 7Zu3kKnCX8MPqunRkjoUxq6nATRWLvH8TDu35uAeF0Odw/PjUvPnhoIXhhDFURIaiDJi IHuw== X-Gm-Message-State: AOJu0YwGmvaq8dBWBop45+jPziO/vfL+dJVa0vHi8Dbg5W68UmPQk7oz EmXnTKXzqXJRro7kvPy0aaDEoiDxnZb2D3uEEHGgSL9amet6b0TS2xe1WPHAWKSzO92vZfdfAG8 aD5tO3rY= X-Gm-Gg: Acq92OFAo2bLSV/GOOmCFnjTWtm+s1a/Orxh+vloG3gHKZspvB8S4qDgYgavP/mlyFz A4QWmZsZWBVSC7HLnY9Uy14HDmhGiDtop+3xkDxVyAG3xcgkpfL4O2KLpIOIIdNiiEBXJNGW0xE +W30/wioaFEVqAyeKmkOObj3OCLIqrxQZlFTae2PlzkTEjhpfKx9EXo1GHWhKxphndC6DjZO5jA K4c5zcROUqoWTJYiym3T28d3e+v9S0xXSlvmGK3opVlXOyFpZ9JgsfGeXmBjRc/JOzbGAmKUiVN Fsmv21tVz7JRUAMT7a6J0HhL6+I9aD6xmzPHnlIZ5y4sQZ4pZ/scY1C4n/SzNL3o+WmEaLhX8yM BDPnLoyGmvzVg9pgJARKUFNwo66UZXs7EK8vF7Z4utc4NA47I0y49dq9MCeBL/TsUOeacjpwaUR 7aPve4wCmT3RhVmZF+GgVhMRFZt5vB5RsXJr87ep8= X-Received: by 2002:a17:903:b84:b0:2bf:23c3:34ba with SMTP id d9443c01a7336-2c1e833c207mr7288345ad.28.1780616935699; Thu, 04 Jun 2026 16:48:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 02/25] target/arm: Rename sve unary predicated patterns Date: Thu, 4 Jun 2026 16:48:29 -0700 Message-ID: <20260604234852.573178-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.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: 1780617042009154100 Content-Type: text/plain; charset="utf-8" Add an "_m" suffix to indicate merging, in preparation for adding new predicated zeroing instructions. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 169 +++++++++++++++++---------------- target/arm/tcg/sve.decode | 152 ++++++++++++++--------------- 2 files changed, 165 insertions(+), 156 deletions(-) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 9a1bf71577..8b4a06a060 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -783,14 +783,14 @@ TRANS_FEAT(SEL_zpzz, aa64_sme_or_sve, do_sel_z, a->rd= , a->rn, a->rm, a->pg, a->e }; \ TRANS_FEAT(NAME, FEAT, gen_gvec_ool_arg_zpz, name##_fns[a->esz], a, 0) =20 -DO_ZPZ(CLS, aa64_sme_or_sve, sve_cls) -DO_ZPZ(CLZ, aa64_sme_or_sve, sve_clz) -DO_ZPZ(CNT_zpz, aa64_sme_or_sve, sve_cnt_zpz) -DO_ZPZ(CNOT, aa64_sme_or_sve, sve_cnot) -DO_ZPZ(NOT_zpz, aa64_sme_or_sve, sve_not_zpz) -DO_ZPZ(ABS, aa64_sme_or_sve, sve_abs) -DO_ZPZ(NEG, aa64_sme_or_sve, sve_neg) -DO_ZPZ(RBIT, aa64_sme_or_sve, sve_rbit) +DO_ZPZ(CLS_m, aa64_sme_or_sve, sve_cls) +DO_ZPZ(CLZ_m, aa64_sme_or_sve, sve_clz) +DO_ZPZ(CNT_zpz_m, aa64_sme_or_sve, sve_cnt_zpz) +DO_ZPZ(CNOT_m, aa64_sme_or_sve, sve_cnot) +DO_ZPZ(NOT_zpz_m, aa64_sme_or_sve, sve_not_zpz) +DO_ZPZ(ABS_m, aa64_sme_or_sve, sve_abs) +DO_ZPZ(NEG_m, aa64_sme_or_sve, sve_neg) +DO_ZPZ(RBIT_m, aa64_sme_or_sve, sve_rbit) DO_ZPZ(ORQV, aa64_sme2p1_or_sve2p1, sve2p1_orqv) DO_ZPZ(EORQV, aa64_sme2p1_or_sve2p1, sve2p1_eorqv) DO_ZPZ(ANDQV, aa64_sme2p1_or_sve2p1, sve2p1_andqv) @@ -803,7 +803,7 @@ static gen_helper_gvec_3 * const fabs_ah_fns[4] =3D { NULL, gen_helper_sve_ah_fabs_h, gen_helper_sve_ah_fabs_s, gen_helper_sve_ah_fabs_d, }; -TRANS_FEAT(FABS, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, +TRANS_FEAT(FABS_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, s->fpcr_ah ? fabs_ah_fns[a->esz] : fabs_fns[a->esz], a, 0) =20 static gen_helper_gvec_3 * const fneg_fns[4] =3D { @@ -814,34 +814,38 @@ static gen_helper_gvec_3 * const fneg_ah_fns[4] =3D { NULL, gen_helper_sve_ah_fneg_h, gen_helper_sve_ah_fneg_s, gen_helper_sve_ah_fneg_d, }; -TRANS_FEAT(FNEG, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, +TRANS_FEAT(FNEG_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, s->fpcr_ah ? fneg_ah_fns[a->esz] : fneg_fns[a->esz], a, 0) =20 static gen_helper_gvec_3 * const sxtb_fns[4] =3D { NULL, gen_helper_sve_sxtb_h, gen_helper_sve_sxtb_s, gen_helper_sve_sxtb_d, }; -TRANS_FEAT(SXTB, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sxtb_fns[a->esz], = a, 0) +TRANS_FEAT(SXTB_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, + sxtb_fns[a->esz], a, 0) =20 static gen_helper_gvec_3 * const uxtb_fns[4] =3D { NULL, gen_helper_sve_uxtb_h, gen_helper_sve_uxtb_s, gen_helper_sve_uxtb_d, }; -TRANS_FEAT(UXTB, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, uxtb_fns[a->esz], = a, 0) +TRANS_FEAT(UXTB_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, + uxtb_fns[a->esz], a, 0) =20 static gen_helper_gvec_3 * const sxth_fns[4] =3D { NULL, NULL, gen_helper_sve_sxth_s, gen_helper_sve_sxth_d }; -TRANS_FEAT(SXTH, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sxth_fns[a->esz], = a, 0) +TRANS_FEAT(SXTH_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, + sxth_fns[a->esz], a, 0) =20 static gen_helper_gvec_3 * const uxth_fns[4] =3D { NULL, NULL, gen_helper_sve_uxth_s, gen_helper_sve_uxth_d }; -TRANS_FEAT(UXTH, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, uxth_fns[a->esz], = a, 0) +TRANS_FEAT(UXTH_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, + uxth_fns[a->esz], a, 0) =20 -TRANS_FEAT(SXTW, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, +TRANS_FEAT(SXTW_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, a->esz =3D=3D 3 ? gen_helper_sve_sxtw_d : NULL, a, 0) -TRANS_FEAT(UXTW, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, +TRANS_FEAT(UXTW_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, a->esz =3D=3D 3 ? gen_helper_sve_uxtw_d : NULL, a, 0) =20 static gen_helper_gvec_3 * const addqv_fns[4] =3D { @@ -2984,17 +2988,19 @@ static gen_helper_gvec_3 * const revb_fns[4] =3D { NULL, gen_helper_sve_revb_h, gen_helper_sve_revb_s, gen_helper_sve_revb_d, }; -TRANS_FEAT(REVB, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, revb_fns[a->esz], = a, 0) +TRANS_FEAT(REVB_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, + revb_fns[a->esz], a, 0) =20 static gen_helper_gvec_3 * const revh_fns[4] =3D { NULL, NULL, gen_helper_sve_revh_s, gen_helper_sve_revh_d, }; -TRANS_FEAT(REVH, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, revh_fns[a->esz], = a, 0) +TRANS_FEAT(REVH_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, + revh_fns[a->esz], a, 0) =20 -TRANS_FEAT(REVW, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, +TRANS_FEAT(REVW_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, a->esz =3D=3D 3 ? gen_helper_sve_revw_d : NULL, a, 0) =20 -TRANS_FEAT(REVD, aa64_sme_or_sve2p1, gen_gvec_ool_arg_zpz, +TRANS_FEAT(REVD_m, aa64_sme_or_sve2p1, gen_gvec_ool_arg_zpz, gen_helper_sme_revd_q, a, 0) =20 TRANS_FEAT(SPLICE, aa64_sme_or_sve, gen_gvec_ool_arg_zpzz, @@ -4491,53 +4497,53 @@ TRANS_FEAT(FCMLA_zzxz, aa64_sme_or_sve, gen_gvec_fp= st_zzzz, fcmla_idx_fns[a->esz *** SVE Floating Point Unary Operations Predicated Group */ =20 -TRANS_FEAT(FCVT_sh, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVT_sh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_sh, a, 0, FPST_A64) -TRANS_FEAT(FCVT_hs, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVT_hs_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_hs, a, 0, FPST_A64_F16) =20 -TRANS_FEAT(BFCVT, aa64_sme_sve_bf16, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(BFCVT_m, aa64_sme_sve_bf16, gen_gvec_fpst_arg_zpz, gen_helper_sve_bfcvt, a, 0, s->fpcr_ah ? FPST_AH : FPST_A64) =20 -TRANS_FEAT(FCVT_dh, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVT_dh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_dh, a, 0, FPST_A64) -TRANS_FEAT(FCVT_hd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVT_hd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_hd, a, 0, FPST_A64_F16) -TRANS_FEAT(FCVT_ds, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVT_ds_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_ds, a, 0, FPST_A64) -TRANS_FEAT(FCVT_sd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVT_sd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_sd, a, 0, FPST_A64) =20 -TRANS_FEAT(FCVTZS_hh, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZS_hh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzs_hh, a, 0, FPST_A64_F16) -TRANS_FEAT(FCVTZU_hh, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZU_hh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzu_hh, a, 0, FPST_A64_F16) -TRANS_FEAT(FCVTZS_hs, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZS_hs_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzs_hs, a, 0, FPST_A64_F16) -TRANS_FEAT(FCVTZU_hs, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZU_hs_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzu_hs, a, 0, FPST_A64_F16) -TRANS_FEAT(FCVTZS_hd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZS_hd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzs_hd, a, 0, FPST_A64_F16) -TRANS_FEAT(FCVTZU_hd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZU_hd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzu_hd, a, 0, FPST_A64_F16) =20 -TRANS_FEAT(FCVTZS_ss, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZS_ss_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzs_ss, a, 0, FPST_A64) -TRANS_FEAT(FCVTZU_ss, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZU_ss_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzu_ss, a, 0, FPST_A64) -TRANS_FEAT(FCVTZS_sd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZS_sd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzs_sd, a, 0, FPST_A64) -TRANS_FEAT(FCVTZU_sd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZU_sd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzu_sd, a, 0, FPST_A64) -TRANS_FEAT(FCVTZS_ds, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZS_ds_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzs_ds, a, 0, FPST_A64) -TRANS_FEAT(FCVTZU_ds, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZU_ds_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzu_ds, a, 0, FPST_A64) =20 -TRANS_FEAT(FCVTZS_dd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZS_dd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzs_dd, a, 0, FPST_A64) -TRANS_FEAT(FCVTZU_dd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTZU_dd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzu_dd, a, 0, FPST_A64) =20 static gen_helper_gvec_3_ptr * const frint_fns[] =3D { @@ -4546,8 +4552,9 @@ static gen_helper_gvec_3_ptr * const frint_fns[] =3D { gen_helper_sve_frint_s, gen_helper_sve_frint_d }; -TRANS_FEAT(FRINTI, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, frint_fns[a->es= z], - a, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) +TRANS_FEAT(FRINTI_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, + frint_fns[a->esz], a, 0, + a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) =20 static gen_helper_gvec_3_ptr * const frintx_fns[] =3D { NULL, @@ -4555,8 +4562,9 @@ static gen_helper_gvec_3_ptr * const frintx_fns[] =3D= { gen_helper_sve_frintx_s, gen_helper_sve_frintx_d }; -TRANS_FEAT(FRINTX, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, frintx_fns[a->e= sz], - a, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64); +TRANS_FEAT(FRINTX_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, + frintx_fns[a->esz], a, 0, + a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64); =20 static bool do_frint_mode(DisasContext *s, arg_rpr_esz *a, ARMFPRounding mode, gen_helper_gvec_3_ptr *fn) @@ -4585,63 +4593,64 @@ static bool do_frint_mode(DisasContext *s, arg_rpr_= esz *a, return true; } =20 -TRANS_FEAT(FRINTN, aa64_sme_or_sve, do_frint_mode, a, +TRANS_FEAT(FRINTN_m, aa64_sme_or_sve, do_frint_mode, a, FPROUNDING_TIEEVEN, frint_fns[a->esz]) -TRANS_FEAT(FRINTP, aa64_sme_or_sve, do_frint_mode, a, +TRANS_FEAT(FRINTP_m, aa64_sme_or_sve, do_frint_mode, a, FPROUNDING_POSINF, frint_fns[a->esz]) -TRANS_FEAT(FRINTM, aa64_sme_or_sve, do_frint_mode, a, +TRANS_FEAT(FRINTM_m, aa64_sme_or_sve, do_frint_mode, a, FPROUNDING_NEGINF, frint_fns[a->esz]) -TRANS_FEAT(FRINTZ, aa64_sme_or_sve, do_frint_mode, a, +TRANS_FEAT(FRINTZ_m, aa64_sme_or_sve, do_frint_mode, a, FPROUNDING_ZERO, frint_fns[a->esz]) -TRANS_FEAT(FRINTA, aa64_sme_or_sve, do_frint_mode, a, +TRANS_FEAT(FRINTA_m, aa64_sme_or_sve, do_frint_mode, a, FPROUNDING_TIEAWAY, frint_fns[a->esz]) =20 static gen_helper_gvec_3_ptr * const frecpx_fns[] =3D { NULL, gen_helper_sve_frecpx_h, gen_helper_sve_frecpx_s, gen_helper_sve_frecpx_d, }; -TRANS_FEAT(FRECPX, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, frecpx_fns[a->e= sz], - a, 0, select_ah_fpst(s, a->esz)) +TRANS_FEAT(FRECPX_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, + frecpx_fns[a->esz], a, 0, select_ah_fpst(s, a->esz)) =20 static gen_helper_gvec_3_ptr * const fsqrt_fns[] =3D { NULL, gen_helper_sve_fsqrt_h, gen_helper_sve_fsqrt_s, gen_helper_sve_fsqrt_d, }; -TRANS_FEAT(FSQRT, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, fsqrt_fns[a->esz= ], - a, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) +TRANS_FEAT(FSQRT_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, + fsqrt_fns[a->esz], a, 0, + a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) =20 -TRANS_FEAT(SCVTF_hh, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(SCVTF_hh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_scvt_hh, a, 0, FPST_A64_F16) -TRANS_FEAT(SCVTF_sh, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(SCVTF_sh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_scvt_sh, a, 0, FPST_A64_F16) -TRANS_FEAT(SCVTF_dh, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(SCVTF_dh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_scvt_dh, a, 0, FPST_A64_F16) =20 -TRANS_FEAT(SCVTF_ss, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(SCVTF_ss_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_scvt_ss, a, 0, FPST_A64) -TRANS_FEAT(SCVTF_ds, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(SCVTF_ds_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_scvt_ds, a, 0, FPST_A64) =20 -TRANS_FEAT(SCVTF_sd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(SCVTF_sd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_scvt_sd, a, 0, FPST_A64) -TRANS_FEAT(SCVTF_dd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(SCVTF_dd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_scvt_dd, a, 0, FPST_A64) =20 -TRANS_FEAT(UCVTF_hh, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(UCVTF_hh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_ucvt_hh, a, 0, FPST_A64_F16) -TRANS_FEAT(UCVTF_sh, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(UCVTF_sh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_ucvt_sh, a, 0, FPST_A64_F16) -TRANS_FEAT(UCVTF_dh, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(UCVTF_dh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_ucvt_dh, a, 0, FPST_A64_F16) =20 -TRANS_FEAT(UCVTF_ss, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(UCVTF_ss_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_ucvt_ss, a, 0, FPST_A64) -TRANS_FEAT(UCVTF_ds, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(UCVTF_ds_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_ucvt_ds, a, 0, FPST_A64) -TRANS_FEAT(UCVTF_sd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(UCVTF_sd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_ucvt_sd, a, 0, FPST_A64) =20 -TRANS_FEAT(UCVTF_dd, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(UCVTF_dd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_ucvt_dd, a, 0, FPST_A64) =20 /* @@ -6691,23 +6700,23 @@ TRANS_FEAT(UADALP_zpzz, aa64_sme_or_sve2, gen_gvec_= ool_arg_zpzz, * SVE2 integer unary operations (predicated) */ =20 -TRANS_FEAT(URECPE, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, +TRANS_FEAT(URECPE_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, a->esz =3D=3D 2 ? gen_helper_sve2_urecpe_s : NULL, a, 0) =20 -TRANS_FEAT(URSQRTE, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, +TRANS_FEAT(URSQRTE_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, a->esz =3D=3D 2 ? gen_helper_sve2_ursqrte_s : NULL, a, 0) =20 static gen_helper_gvec_3 * const sqabs_fns[4] =3D { gen_helper_sve2_sqabs_b, gen_helper_sve2_sqabs_h, gen_helper_sve2_sqabs_s, gen_helper_sve2_sqabs_d, }; -TRANS_FEAT(SQABS, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, sqabs_fns[a->esz= ], a, 0) +TRANS_FEAT(SQABS_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, sqabs_fns[a->e= sz], a, 0) =20 static gen_helper_gvec_3 * const sqneg_fns[4] =3D { gen_helper_sve2_sqneg_b, gen_helper_sve2_sqneg_h, gen_helper_sve2_sqneg_s, gen_helper_sve2_sqneg_d, }; -TRANS_FEAT(SQNEG, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, sqneg_fns[a->esz= ], a, 0) +TRANS_FEAT(SQNEG_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, sqneg_fns[a->e= sz], a, 0) =20 DO_ZPZZ(SQSHL, aa64_sme_or_sve2, sve2_sqshl) DO_ZPZZ(SQRSHL, aa64_sme_or_sve2, sve2_sqrshl) @@ -7879,30 +7888,30 @@ static bool trans_RAX1(DisasContext *s, arg_RAX1 *a) return gen_gvec_fn_arg_zzz(s, gen_gvec_rax1, a); } =20 -TRANS_FEAT(FCVTNT_sh, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTNT_sh_m, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, gen_helper_sve2_fcvtnt_sh, a, 0, FPST_A64) -TRANS_FEAT(FCVTNT_ds, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTNT_ds_m, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, gen_helper_sve2_fcvtnt_ds, a, 0, FPST_A64) =20 -TRANS_FEAT(BFCVTNT, aa64_sme_sve_bf16, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(BFCVTNT_m, aa64_sme_sve_bf16, gen_gvec_fpst_arg_zpz, gen_helper_sve_bfcvtnt, a, 0, s->fpcr_ah ? FPST_AH : FPST_A64) =20 -TRANS_FEAT(FCVTLT_hs, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTLT_hs_m, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, gen_helper_sve2_fcvtlt_hs, a, 0, FPST_A64_F16) -TRANS_FEAT(FCVTLT_sd, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, +TRANS_FEAT(FCVTLT_sd_m, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, gen_helper_sve2_fcvtlt_sd, a, 0, FPST_A64) =20 -TRANS_FEAT(FCVTX_ds, aa64_sme_or_sve2, do_frint_mode, a, +TRANS_FEAT(FCVTX_ds_m, aa64_sme_or_sve2, do_frint_mode, a, FPROUNDING_ODD, gen_helper_sve_fcvt_ds) -TRANS_FEAT(FCVTXNT_ds, aa64_sme_or_sve2, do_frint_mode, a, +TRANS_FEAT(FCVTXNT_ds_m, aa64_sme_or_sve2, do_frint_mode, a, FPROUNDING_ODD, gen_helper_sve2_fcvtnt_ds) =20 static gen_helper_gvec_3_ptr * const flogb_fns[] =3D { NULL, gen_helper_flogb_h, gen_helper_flogb_s, gen_helper_flogb_d }; -TRANS_FEAT(FLOGB, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, flogb_fns[a->es= z], +TRANS_FEAT(FLOGB_m, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, flogb_fns[a->= esz], a, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) =20 static bool do_FMLAL_zzzw(DisasContext *s, arg_rrrr_esz *a, bool sub, bool= sel) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index b53fe6a58f..c7e633ec4f 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -392,24 +392,24 @@ LSL_zpzw 00000100 .. 011 011 100 ... ..... ...= .. @rdn_pg_rm =20 # SVE unary bit operations (predicated) # Note esz !=3D 0 for FABS and FNEG. -CLS 00000100 .. 011 000 101 ... ..... ..... @rd_pg_rn -CLZ 00000100 .. 011 001 101 ... ..... ..... @rd_pg_rn -CNT_zpz 00000100 .. 011 010 101 ... ..... ..... @rd_pg_rn -CNOT 00000100 .. 011 011 101 ... ..... ..... @rd_pg_rn -NOT_zpz 00000100 .. 011 110 101 ... ..... ..... @rd_pg_rn -FABS 00000100 .. 011 100 101 ... ..... ..... @rd_pg_rn -FNEG 00000100 .. 011 101 101 ... ..... ..... @rd_pg_rn +CLS_m 00000100 .. 011 000 101 ... ..... ..... @rd_pg_rn +CLZ_m 00000100 .. 011 001 101 ... ..... ..... @rd_pg_rn +CNT_zpz_m 00000100 .. 011 010 101 ... ..... ..... @rd_pg_rn +CNOT_m 00000100 .. 011 011 101 ... ..... ..... @rd_pg_rn +NOT_zpz_m 00000100 .. 011 110 101 ... ..... ..... @rd_pg_rn +FABS_m 00000100 .. 011 100 101 ... ..... ..... @rd_pg_rn +FNEG_m 00000100 .. 011 101 101 ... ..... ..... @rd_pg_rn =20 # SVE integer unary operations (predicated) # Note esz > original size for extensions. -ABS 00000100 .. 010 110 101 ... ..... ..... @rd_pg_rn -NEG 00000100 .. 010 111 101 ... ..... ..... @rd_pg_rn -SXTB 00000100 .. 010 000 101 ... ..... ..... @rd_pg_rn -UXTB 00000100 .. 010 001 101 ... ..... ..... @rd_pg_rn -SXTH 00000100 .. 010 010 101 ... ..... ..... @rd_pg_rn -UXTH 00000100 .. 010 011 101 ... ..... ..... @rd_pg_rn -SXTW 00000100 .. 010 100 101 ... ..... ..... @rd_pg_rn -UXTW 00000100 .. 010 101 101 ... ..... ..... @rd_pg_rn +ABS_m 00000100 .. 010 110 101 ... ..... ..... @rd_pg_rn +NEG_m 00000100 .. 010 111 101 ... ..... ..... @rd_pg_rn +SXTB_m 00000100 .. 010 000 101 ... ..... ..... @rd_pg_rn +UXTB_m 00000100 .. 010 001 101 ... ..... ..... @rd_pg_rn +SXTH_m 00000100 .. 010 010 101 ... ..... ..... @rd_pg_rn +UXTH_m 00000100 .. 010 011 101 ... ..... ..... @rd_pg_rn +SXTW_m 00000100 .. 010 100 101 ... ..... ..... @rd_pg_rn +UXTW_m 00000100 .. 010 101 101 ... ..... ..... @rd_pg_rn =20 ### SVE Floating Point Compare - Vectors Group =20 @@ -707,11 +707,11 @@ CPY_m_r 00000101 .. 101000 101 ... ..... ....= . @rd_pg_rn =20 # SVE reverse within elements # Note esz >=3D operation size -REVB 00000101 .. 1001 00 100 ... ..... ..... @rd_pg_rn -REVH 00000101 .. 1001 01 100 ... ..... ..... @rd_pg_rn -REVW 00000101 .. 1001 10 100 ... ..... ..... @rd_pg_rn -RBIT 00000101 .. 1001 11 100 ... ..... ..... @rd_pg_rn -REVD 00000101 00 1011 10 100 ... ..... ..... @rd_pg_rn_= e0 +REVB_m 00000101 .. 1001 00 100 ... ..... ..... @rd_pg_rn +REVH_m 00000101 .. 1001 01 100 ... ..... ..... @rd_pg_rn +REVW_m 00000101 .. 1001 10 100 ... ..... ..... @rd_pg_rn +RBIT_m 00000101 .. 1001 11 100 ... ..... ..... @rd_pg_rn +REVD_m 00000101 00 1011 10 100 ... ..... ..... @rd_pg_rn_= e0 =20 # SVE vector splice (predicated, destructive) SPLICE 00000101 .. 101 100 100 ... ..... ..... @rdn_pg_rm @@ -1184,59 +1184,59 @@ FNMLS_zpzzz 01100101 .. 1 ..... 111 ... ..... .= .... @rdn_pg_rm_ra ### SVE FP Unary Operations Predicated Group =20 # SVE floating-point convert precision -FCVT_sh 01100101 10 0010 00 101 ... ..... ..... @rd_pg_rn_= e0 -FCVT_hs 01100101 10 0010 01 101 ... ..... ..... @rd_pg_rn_= e0 -BFCVT 01100101 10 0010 10 101 ... ..... ..... @rd_pg_rn_= e0 -FCVT_dh 01100101 11 0010 00 101 ... ..... ..... @rd_pg_rn_= e0 -FCVT_hd 01100101 11 0010 01 101 ... ..... ..... @rd_pg_rn_= e0 -FCVT_ds 01100101 11 0010 10 101 ... ..... ..... @rd_pg_rn_= e0 -FCVT_sd 01100101 11 0010 11 101 ... ..... ..... @rd_pg_rn_= e0 +FCVT_sh_m 01100101 10 0010 00 101 ... ..... ..... @rd_pg_rn_= e0 +FCVT_hs_m 01100101 10 0010 01 101 ... ..... ..... @rd_pg_rn_= e0 +BFCVT_m 01100101 10 0010 10 101 ... ..... ..... @rd_pg_rn_= e0 +FCVT_dh_m 01100101 11 0010 00 101 ... ..... ..... @rd_pg_rn_= e0 +FCVT_hd_m 01100101 11 0010 01 101 ... ..... ..... @rd_pg_rn_= e0 +FCVT_ds_m 01100101 11 0010 10 101 ... ..... ..... @rd_pg_rn_= e0 +FCVT_sd_m 01100101 11 0010 11 101 ... ..... ..... @rd_pg_rn_= e0 =20 # SVE floating-point convert to integer -FCVTZS_hh 01100101 01 011 01 0 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZU_hh 01100101 01 011 01 1 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZS_hs 01100101 01 011 10 0 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZU_hs 01100101 01 011 10 1 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZS_hd 01100101 01 011 11 0 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZU_hd 01100101 01 011 11 1 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZS_ss 01100101 10 011 10 0 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZU_ss 01100101 10 011 10 1 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZS_ds 01100101 11 011 00 0 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZU_ds 01100101 11 011 00 1 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZS_sd 01100101 11 011 10 0 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZU_sd 01100101 11 011 10 1 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZS_dd 01100101 11 011 11 0 101 ... ..... ..... @rd_pg_rn_= e0 -FCVTZU_dd 01100101 11 011 11 1 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_hh_m 01100101 01 011 01 0 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_hh_m 01100101 01 011 01 1 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_hs_m 01100101 01 011 10 0 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_hs_m 01100101 01 011 10 1 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_hd_m 01100101 01 011 11 0 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_hd_m 01100101 01 011 11 1 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_ss_m 01100101 10 011 10 0 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_ss_m 01100101 10 011 10 1 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_ds_m 01100101 11 011 00 0 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_ds_m 01100101 11 011 00 1 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_sd_m 01100101 11 011 10 0 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_sd_m 01100101 11 011 10 1 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_dd_m 01100101 11 011 11 0 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_dd_m 01100101 11 011 11 1 101 ... ..... ..... @rd_pg_rn_= e0 =20 # SVE floating-point round to integral value -FRINTN 01100101 .. 000 000 101 ... ..... ..... @rd_pg_rn -FRINTP 01100101 .. 000 001 101 ... ..... ..... @rd_pg_rn -FRINTM 01100101 .. 000 010 101 ... ..... ..... @rd_pg_rn -FRINTZ 01100101 .. 000 011 101 ... ..... ..... @rd_pg_rn -FRINTA 01100101 .. 000 100 101 ... ..... ..... @rd_pg_rn -FRINTX 01100101 .. 000 110 101 ... ..... ..... @rd_pg_rn -FRINTI 01100101 .. 000 111 101 ... ..... ..... @rd_pg_rn +FRINTN_m 01100101 .. 000 000 101 ... ..... ..... @rd_pg_rn +FRINTP_m 01100101 .. 000 001 101 ... ..... ..... @rd_pg_rn +FRINTM_m 01100101 .. 000 010 101 ... ..... ..... @rd_pg_rn +FRINTZ_m 01100101 .. 000 011 101 ... ..... ..... @rd_pg_rn +FRINTA_m 01100101 .. 000 100 101 ... ..... ..... @rd_pg_rn +FRINTX_m 01100101 .. 000 110 101 ... ..... ..... @rd_pg_rn +FRINTI_m 01100101 .. 000 111 101 ... ..... ..... @rd_pg_rn =20 # SVE floating-point unary operations -FRECPX 01100101 .. 001 100 101 ... ..... ..... @rd_pg_rn -FSQRT 01100101 .. 001 101 101 ... ..... ..... @rd_pg_rn +FRECPX_m 01100101 .. 001 100 101 ... ..... ..... @rd_pg_rn +FSQRT_m 01100101 .. 001 101 101 ... ..... ..... @rd_pg_rn =20 # SVE integer convert to floating-point -SCVTF_hh 01100101 01 010 01 0 101 ... ..... ..... @rd_pg_rn_= e0 -SCVTF_sh 01100101 01 010 10 0 101 ... ..... ..... @rd_pg_rn_= e0 -SCVTF_dh 01100101 01 010 11 0 101 ... ..... ..... @rd_pg_rn_= e0 -SCVTF_ss 01100101 10 010 10 0 101 ... ..... ..... @rd_pg_rn_= e0 -SCVTF_sd 01100101 11 010 00 0 101 ... ..... ..... @rd_pg_rn_= e0 -SCVTF_ds 01100101 11 010 10 0 101 ... ..... ..... @rd_pg_rn_= e0 -SCVTF_dd 01100101 11 010 11 0 101 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_hh_m 01100101 01 010 01 0 101 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_sh_m 01100101 01 010 10 0 101 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_dh_m 01100101 01 010 11 0 101 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_ss_m 01100101 10 010 10 0 101 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_sd_m 01100101 11 010 00 0 101 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_ds_m 01100101 11 010 10 0 101 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_dd_m 01100101 11 010 11 0 101 ... ..... ..... @rd_pg_rn_= e0 =20 -UCVTF_hh 01100101 01 010 01 1 101 ... ..... ..... @rd_pg_rn_= e0 -UCVTF_sh 01100101 01 010 10 1 101 ... ..... ..... @rd_pg_rn_= e0 -UCVTF_dh 01100101 01 010 11 1 101 ... ..... ..... @rd_pg_rn_= e0 -UCVTF_ss 01100101 10 010 10 1 101 ... ..... ..... @rd_pg_rn_= e0 -UCVTF_sd 01100101 11 010 00 1 101 ... ..... ..... @rd_pg_rn_= e0 -UCVTF_ds 01100101 11 010 10 1 101 ... ..... ..... @rd_pg_rn_= e0 -UCVTF_dd 01100101 11 010 11 1 101 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_hh_m 01100101 01 010 01 1 101 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_sh_m 01100101 01 010 10 1 101 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_dh_m 01100101 01 010 11 1 101 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_ss_m 01100101 10 010 10 1 101 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_sd_m 01100101 11 010 00 1 101 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_ds_m 01100101 11 010 10 1 101 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_dd_m 01100101 11 010 11 1 101 ... ..... ..... @rd_pg_rn_= e0 =20 ### SVE Memory - 32-bit Gather and Unsized Contiguous Group =20 @@ -1517,10 +1517,10 @@ UADALP_zpzz 01000100 .. 000 101 101 ... ..... .= .... @rdm_pg_rn =20 ### SVE2 integer unary operations (predicated) =20 -URECPE 01000100 .. 000 000 101 ... ..... ..... @rd_pg_rn -URSQRTE 01000100 .. 000 001 101 ... ..... ..... @rd_pg_rn -SQABS 01000100 .. 001 000 101 ... ..... ..... @rd_pg_rn -SQNEG 01000100 .. 001 001 101 ... ..... ..... @rd_pg_rn +URECPE_m 01000100 .. 000 000 101 ... ..... ..... @rd_pg_rn +URSQRTE_m 01000100 .. 000 001 101 ... ..... ..... @rd_pg_rn +SQABS_m 01000100 .. 001 000 101 ... ..... ..... @rd_pg_rn +SQNEG_m 01000100 .. 001 001 101 ... ..... ..... @rd_pg_rn =20 ### SVE2 saturating/rounding bitwise shift left (predicated) =20 @@ -1847,16 +1847,16 @@ SM4EKEY 01000101 00 1 ..... 11110 0 ..... .= .... @rd_rn_rm_e0 RAX1 01000101 00 1 ..... 11110 1 ..... ..... @rd_rn_rm_e0 =20 ### SVE2 floating-point convert precision odd elements -FCVTXNT_ds 01100100 00 0010 10 101 ... ..... ..... @rd_pg_rn_e0 -FCVTX_ds 01100101 00 0010 10 101 ... ..... ..... @rd_pg_rn_e0 -FCVTNT_sh 01100100 10 0010 00 101 ... ..... ..... @rd_pg_rn_e0 -BFCVTNT 01100100 10 0010 10 101 ... ..... ..... @rd_pg_rn_e0 -FCVTLT_hs 01100100 10 0010 01 101 ... ..... ..... @rd_pg_rn_e0 -FCVTNT_ds 01100100 11 0010 10 101 ... ..... ..... @rd_pg_rn_e0 -FCVTLT_sd 01100100 11 0010 11 101 ... ..... ..... @rd_pg_rn_e0 +FCVTXNT_ds_m 01100100 00 0010 10 101 ... ..... ..... @rd_pg_rn_e0 +FCVTX_ds_m 01100101 00 0010 10 101 ... ..... ..... @rd_pg_rn_e0 +FCVTNT_sh_m 01100100 10 0010 00 101 ... ..... ..... @rd_pg_rn_e0 +BFCVTNT_m 01100100 10 0010 10 101 ... ..... ..... @rd_pg_rn_e0 +FCVTLT_hs_m 01100100 10 0010 01 101 ... ..... ..... @rd_pg_rn_e0 +FCVTNT_ds_m 01100100 11 0010 10 101 ... ..... ..... @rd_pg_rn_e0 +FCVTLT_sd_m 01100100 11 0010 11 101 ... ..... ..... @rd_pg_rn_e0 =20 ### SVE2 floating-point convert to integer -FLOGB 01100101 00 011 esz:2 0101 pg:3 rn:5 rd:5 &rpr_esz +FLOGB_m 01100101 00 011 esz:2 0101 pg:3 rn:5 rd:5 &rpr_esz =20 ### SVE2 floating-point multiply-add long (vectors) FMLALB_zzzw 01100100 10 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617160; cv=none; d=zohomail.com; s=zohoarc; b=Melo6couJtYCR9yZEeBpfcWo3JaO/IiK2P7gdomULhnPWmlM3gGmL0+KJ+bSTc0ZmR6lvKFdPjRM8SSPJTVH0Y9NLgtpfmz5ivnW1GA3W6/RC5u+XQ21Zghw8pnVTF7GqjvfciwxALmyycWyjZAKN6+czH6zz4vye/u7Df9V8YU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617160; 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=a0VjX09XRVlZNssyIpNmPffO8PV2GSj/dcv4OjuMNnI=; b=RMjVnebVhZ6mHLjw36eg1nVOwLCrSB7GD88nmuaLyY/9/SBzYqYFYYlbTX9f3h6rjNaupJzUEwxypHivy6ntrDUIZVZdwwzKbFGMklu4G7XjWsqHNPZfZnKeEG66s18WhXBFRNfUa6kwpCobeTX7KE74unwS2WrEbIIvJiyvYeI= 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 178061716009069.84534446488999; Thu, 4 Jun 2026 16:52:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHo8-0006eJ-T3; Thu, 04 Jun 2026 19:49: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 1wVHo5-0006bp-Hw for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:01 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo1-0007r6-Ri for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:01 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2bf237e1433so15377265ad.1 for ; Thu, 04 Jun 2026 16:48:57 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.48.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:48:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616936; x=1781221736; 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; bh=a0VjX09XRVlZNssyIpNmPffO8PV2GSj/dcv4OjuMNnI=; b=baR8jp9NxM1yXBqdhMu1iSp8AenI3DQsjHf0Xy2ZuSFkoFcb49uxMMw9Eih3aAGaGj SJZ355oLvOduf9XiNMnmiBNaaE6ZZSu3gKjG3aWkwUQSUAJdy2S/6PK9oe8XdHPL7tBC YbZGO4cqErm7SDH7pyJRKOVn6RQrzxki3EeIRkEIEijpNssTrK53A0fB2tdl80EPMKC9 e/b4DRnpGrqAX+i3630+oZrU6xJbKXv91XFCCVN/CWGBJEs6sY3/US48sxmTYOMg1f9P 2GdraEuGy9LmYAHUdvTy2lFJnwvoDybWW+J+XLQd9cymVs8o2ULovgnRLXno+oyTiZXN rxtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616936; x=1781221736; 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; bh=a0VjX09XRVlZNssyIpNmPffO8PV2GSj/dcv4OjuMNnI=; b=Urhhcxo+DfxpnqV/v0r5xTjUW0vC88hQ6wwp4ulfeaID6lDcz0+YItiN+nFxoHZZrb L/wQEiWwX99R6bdIib7xDdhLKCNDSd5hK7tZy0VyKK9hxl9yuGnXUU5VJbzTcbpGQ7Tv Gth0KtbrNerenyBPyUi4d2OTr5NDo85k0B4KO+3LmOKBV2HN3dImKDo7n+legWH9xcGD 9Sq0pvtvnp44jj11+aT8SjU7MUk4k13ENDUkppGCiYnf1doDcDMTGVejBjEy3BDkLusG ctreBVkWxjlzoDkG3KRYRBdu7Y/ZOJ9AKf7ImOwqmJKz4nWs5Ilm2LQEek3TipQNEy1k ePtw== X-Gm-Message-State: AOJu0YwwwUjV7/D4oM2z4BwlE2oH9U080s9XwmH9P/EITmOHE6FMO+aV ARf5Cr+fynvb2CjfB11DEnbY0Wkpw/cJx2/35Iwy5T/y+fT8gTMFFoBmLkcFNfcVc6z6HDUdTo+ 1kMMU5Yg= X-Gm-Gg: Acq92OFn/WWPoiIvUQ2/8GrZVDL+Z3JYhez5/P2nSVFHBpj62iuUNM/abZrVqxDrE2k mZ7XLLczE5ckvSjCll/s2xYImT3igGYXqKLofNQO++INPB3PUi15iA6bsnueuOaeiQ/umVHoExS Gc3+s+CcxikmdoitbrMU7WY5I57LlQEJRwoj7Fom0ji6hTnbnLdVW45wHg1IwKfdzjNaEyZc/DN ZWhzwtrHx54S0D2L+I2N1Pw/1F0kpKczH7YrfQD+H87TszHc/4NKD2B55PwoOz6F8gOLE2w7w23 Lvo6yBJvNTsxJfuy4gqwofz4Pj2oQzdGhduE0LJriUx+0EouiEvnKLtBV6kYuEeltEcMQiANcCu H2e8K2C25DnyM4mXoxtEzw3EoRcSS0ddrgv9XFM102woZxk/kAP1cvOcQBG++XvOX6U8d/P1Lpn 1rsHs/0DL03Tad6pUj+iuphTIHWSniYaMnqXLcyQY= X-Received: by 2002:a17:903:f8b:b0:2c0:cf44:3b3b with SMTP id d9443c01a7336-2c1e847d71dmr7768815ad.24.1780616936406; Thu, 04 Jun 2026 16:48:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 03/25] target/arm: Enable zeroing in DO_ZPZ macros in sve_helper.c Date: Thu, 4 Jun 2026 16:48:30 -0700 Message-ID: <20260604234852.573178-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.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: 1780617161700154100 Content-Type: text/plain; charset="utf-8" Use the low bit of simd_data to hold a 'zeroing' bit. The simd_data field is currently unused and always 0. Signed-off-by: Richard Henderson --- target/arm/tcg/sve_helper.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index a002006ea5..59e4bad05f 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -823,18 +823,20 @@ DO_ZPZW(sve_lsl_zpzw_s, uint32_t, uint64_t, H1_4, DO_= LSL) =20 #undef DO_ZPZW =20 -/* Fully general two-operand expander, controlled by a predicate. - */ +/* Fully general two-operand expander, controlled by a predicate. */ #define DO_ZPZ(NAME, TYPE, H, OP) \ void HELPER(NAME)(void *vd, void *vn, void *vg, uint32_t desc) \ { \ intptr_t i, opr_sz =3D simd_oprsz(desc); \ + bool zeroing =3D simd_data(desc) & 1; \ for (i =3D 0; i < opr_sz; ) { \ uint16_t pg =3D *(uint16_t *)(vg + H1_2(i >> 3)); \ do { \ if (pg & 1) { \ TYPE nn =3D *(TYPE *)(vn + H(i)); \ *(TYPE *)(vd + H(i)) =3D OP(nn); \ + } else if (zeroing) { \ + *(TYPE *)(vd + H(i)) =3D 0; \ } \ i +=3D sizeof(TYPE), pg >>=3D sizeof(TYPE); \ } while (i & 15); \ @@ -846,12 +848,15 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, uint3= 2_t desc) \ void HELPER(NAME)(void *vd, void *vn, void *vg, uint32_t desc) \ { \ intptr_t i, opr_sz =3D simd_oprsz(desc) / 8; \ + bool zeroing =3D simd_data(desc) & 1; \ TYPE *d =3D vd, *n =3D vn; \ uint8_t *pg =3D vg; \ for (i =3D 0; i < opr_sz; i +=3D 1) { \ if (pg[H1(i)] & 1) { \ TYPE nn =3D n[i]; \ d[i] =3D OP(nn); \ + } else if (zeroing) { \ + d[i] =3D 0; \ } \ } \ } @@ -4831,7 +4836,8 @@ DO_ZPZS_FP(sve_ah_fmins_h, float16, H1_2, helper_vfp_= ah_minh) DO_ZPZS_FP(sve_ah_fmins_s, float32, H1_4, helper_vfp_ah_mins) DO_ZPZS_FP(sve_ah_fmins_d, float64, H1_8, helper_vfp_ah_mind) =20 -/* Fully general two-operand expander, controlled by a predicate, +/* + * Fully general two-operand expander, controlled by a predicate, * With the extra float_status parameter. */ #define DO_ZPZ_FP(NAME, TYPE, H, OP) \ @@ -4839,6 +4845,7 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, = \ float_status *status, uint32_t desc) \ { \ intptr_t i =3D simd_oprsz(desc); \ + bool zeroing =3D simd_data(desc) & 1; \ uint64_t *g =3D vg; \ do { \ uint64_t pg =3D g[(i - 1) >> 6]; \ @@ -4847,6 +4854,8 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, = \ if (likely((pg >> (i & 63)) & 1)) { \ TYPE nn =3D *(TYPE *)(vn + H(i)); \ *(TYPE *)(vd + H(i)) =3D OP(nn, status); \ + } else if (zeroing) { \ + *(TYPE *)(vd + H(i)) =3D 0; \ } \ } while (i & 63); \ } while (i !=3D 0); \ --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617040; cv=none; d=zohomail.com; s=zohoarc; b=iZzDzscuUmRwOM9Cc9ILEXc4/8zrGcdDcTOqkQJaTU5rywNVP3nVNsKSyErcx0mvWpDOchSeoDEY3pJsWe7ND1vLUKrr4e2PvqT/2WsATJAlA3MP17Bd4OF8tfYMtFIIQ2PfSWIDVo2lEAv0VFwG5PVP5onRiiGnd+GwCfZPO84= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617040; 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=qhmzNQ0hN+2JOR8CyUmXzaKMbo6oKKtlmxC+yvJIhD4=; b=HVQtn19plavxsgRwE2ucngorTsPUfwsBEV/HYpSOyMWn53dXQ3G/wCf6p/jYLY7eLoHIQMNeasesYonqiT2Oe2hxWgPb4Qi2JpLN/7mMHlaLNStDscANuHHneB488KP8BD2hnW0TkRkHeY6Qdk7hGAlMbef6t0xzZ2tyo1B6cWU= 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 178061704001081.94743773452797; Thu, 4 Jun 2026 16:50:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoB-0006ic-9p; Thu, 04 Jun 2026 19:49:07 -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 1wVHo5-0006c0-Qh for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:01 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo2-0007rQ-I5 for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:01 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2bf0ddaf50fso9127455ad.1 for ; Thu, 04 Jun 2026 16:48:58 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.48.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:48:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616937; x=1781221737; 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; bh=qhmzNQ0hN+2JOR8CyUmXzaKMbo6oKKtlmxC+yvJIhD4=; b=TA/W6k9l7JWCVxWZzpw7trJBLh159BiWBQzTj5zXB5XwOBBYvvm7o4Ez5JPOE3XmqI PI3Ym64lVbkWEmJw74fRqjVP0EdQJ52obm/NWfNZL7ntvMiBvz5P02iiwdNJam+WMuOx bYid+1rO5DMZmm2W7R/K4J//gaEvp3rrpKEHV92i7RqYLK/YQGqUGya0ihnn12mtPUMj FWAb01mnHYsgmMD7W3pBsDCImgKdX5nT47HmhwaKnL28Lyacz8Oe47d9NJ6LTaLvqgoS uiRS0OmLWR5JRec4004TuDW6MllxdtV6cdcvZbQ6Ig3B1IQOLR2GN+eRk/YkogpDUQZA fDXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616937; x=1781221737; 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; bh=qhmzNQ0hN+2JOR8CyUmXzaKMbo6oKKtlmxC+yvJIhD4=; b=X6lRBql3hT8owfmH6PIoXuDlDWV1csroBpUjZqVNkztfpPmUyjOU7A9+sSZZfLmqzx gnzgSn8YtOItrDaBOd28VCkUusB3jtjnL47fKaycxfiwlrn0SQF3fe/uxPYPy+/CUF8g 4fYDD1G+e51UAjJjY6EhpYHsDz11/UK7d/tJg7s188n2kqmbHyrEN2on4JzNgPhr+K4x fx21287HakEKRr8XnhqywyuSmnyY4zoVk3AHjG0nb+aAaCguqmkxMQX2BMvTzw8hqCuk twTLgOZAt6gv6n/x8j5d3wz6/IjOqTRDwRKDmxmuhw/Ur3Vd++vIGJjJBSY3kwnVrrHG eMxg== X-Gm-Message-State: AOJu0YyqbVf8tndV4Kamx2krjmb3cF4h15soUrgUtVWNXY5xjAZFG/Rp eIXbCYikst+IyQFeJaf4h5Rl6v9t/PcO9fFHnXCu32kM00v31uBu4e/UVkwSEr8Tsoit3cQ3v9r suMgogQ8= X-Gm-Gg: Acq92OHYRLHhnV0kJFxCnYGNnT7GbogoNmEf4Z8RDoyYhjA2rRUEDVpBVmgxt5dSa1l ATSnwkXznIBo7DypEIyhcx1c0L2n2JWyR16pLl4YN/x8LQoVyb8OtBBJY3Bp3xRsyYye2qdtPJb GUZz3S+ofAH7pjeFrAI5wpaiAz8ZVYRwHZAgDWBADH2n929L4IxWKQzN/QOUo3t0bAo6ropd0UY PKiW8JRg6kbfmLhrm3xAf60WfVSmH+SggtBw/MKUvlTDg+/XcbMsX2n0oPggX30fu6DWdUKiHIZ f/oEQCcaYFDyxGRNwjopipkhnNpn3LLeJC2Mo+nKGrDLuSiWZNOhkzJDJDc3OEgXdmlB/V7BLqF iEbzX98UH5GvEacJ99VmlNGVpVFTiiQ5TKIAHxTzZhCqM9nkOzhjN+6xJlxTy9xoeXZm5ZBcUl6 2yV2DnnIWw/HAK+pHoNjf0HEr+ZhpbLMJH0btM8Xuz+037T6w4vA== X-Received: by 2002:a17:902:d4cd:b0:2b2:4260:109 with SMTP id d9443c01a7336-2c1e7f926d1mr6980885ad.23.1780616937037; Thu, 04 Jun 2026 16:48:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 04/25] target/arm: Expand DO_ZPZ in translate-sve.c Date: Thu, 4 Jun 2026 16:48:31 -0700 Message-ID: <20260604234852.573178-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.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: 1780617042181158500 Content-Type: text/plain; charset="utf-8" Prepare for adding zeroing instructions for some of these. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 84 +++++++++++++++++++++++++++------- 1 file changed, 67 insertions(+), 17 deletions(-) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 8b4a06a060..ea37c073c7 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -776,24 +776,74 @@ TRANS_FEAT(SEL_zpzz, aa64_sme_or_sve, do_sel_z, a->rd= , a->rn, a->rm, a->pg, a->e *** SVE Integer Arithmetic - Unary Predicated Group */ =20 -#define DO_ZPZ(NAME, FEAT, name) \ - static gen_helper_gvec_3 * const name##_fns[4] =3D { \ - gen_helper_##name##_b, gen_helper_##name##_h, \ - gen_helper_##name##_s, gen_helper_##name##_d, \ - }; \ - TRANS_FEAT(NAME, FEAT, gen_gvec_ool_arg_zpz, name##_fns[a->esz], a, 0) +static gen_helper_gvec_3 * const sve_cls_fns[4] =3D { + gen_helper_sve_cls_b, gen_helper_sve_cls_h, + gen_helper_sve_cls_s, gen_helper_sve_cls_d, +}; +TRANS_FEAT(CLS_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_cls_fns[a->es= z], a, 0) =20 -DO_ZPZ(CLS_m, aa64_sme_or_sve, sve_cls) -DO_ZPZ(CLZ_m, aa64_sme_or_sve, sve_clz) -DO_ZPZ(CNT_zpz_m, aa64_sme_or_sve, sve_cnt_zpz) -DO_ZPZ(CNOT_m, aa64_sme_or_sve, sve_cnot) -DO_ZPZ(NOT_zpz_m, aa64_sme_or_sve, sve_not_zpz) -DO_ZPZ(ABS_m, aa64_sme_or_sve, sve_abs) -DO_ZPZ(NEG_m, aa64_sme_or_sve, sve_neg) -DO_ZPZ(RBIT_m, aa64_sme_or_sve, sve_rbit) -DO_ZPZ(ORQV, aa64_sme2p1_or_sve2p1, sve2p1_orqv) -DO_ZPZ(EORQV, aa64_sme2p1_or_sve2p1, sve2p1_eorqv) -DO_ZPZ(ANDQV, aa64_sme2p1_or_sve2p1, sve2p1_andqv) +static gen_helper_gvec_3 * const sve_clz_fns[4] =3D { + gen_helper_sve_clz_b, gen_helper_sve_clz_h, + gen_helper_sve_clz_s, gen_helper_sve_clz_d, +}; +TRANS_FEAT(CLZ_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_clz_fns[a->es= z], a, 0) + +static gen_helper_gvec_3 * const sve_cnt_zpz_fns[4] =3D { + gen_helper_sve_cnt_zpz_b, gen_helper_sve_cnt_zpz_h, + gen_helper_sve_cnt_zpz_s, gen_helper_sve_cnt_zpz_d, +}; +TRANS_FEAT(CNT_zpz_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_cnt_zpz_f= ns[a->esz], a, 0) + +static gen_helper_gvec_3 * const sve_cnot_fns[4] =3D { + gen_helper_sve_cnot_b, gen_helper_sve_cnot_h, + gen_helper_sve_cnot_s, gen_helper_sve_cnot_d, +}; +TRANS_FEAT(CNOT_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_cnot_fns[a->= esz], a, 0) + +static gen_helper_gvec_3 * const sve_not_zpz_fns[4] =3D { + gen_helper_sve_not_zpz_b, gen_helper_sve_not_zpz_h, + gen_helper_sve_not_zpz_s, gen_helper_sve_not_zpz_d, +}; +TRANS_FEAT(NOT_zpz_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_not_zpz_f= ns[a->esz], a, 0) + +static gen_helper_gvec_3 * const sve_abs_fns[4] =3D { + gen_helper_sve_abs_b, gen_helper_sve_abs_h, + gen_helper_sve_abs_s, gen_helper_sve_abs_d, +}; +TRANS_FEAT(ABS_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_abs_fns[a->es= z], a, 0) + +static gen_helper_gvec_3 * const sve_neg_fns[4] =3D { + gen_helper_sve_neg_b, gen_helper_sve_neg_h, + gen_helper_sve_neg_s, gen_helper_sve_neg_d, +}; +TRANS_FEAT(NEG_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_neg_fns[a->es= z], a, 0) + +static gen_helper_gvec_3 * const sve_rbit_fns[4] =3D { + gen_helper_sve_rbit_b, gen_helper_sve_rbit_h, + gen_helper_sve_rbit_s, gen_helper_sve_rbit_d, +}; +TRANS_FEAT(RBIT_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_rbit_fns[a->= esz], a, 0) + +static gen_helper_gvec_3 * const sve2p1_orqv_fns[4] =3D { + gen_helper_sve2p1_orqv_b, gen_helper_sve2p1_orqv_h, + gen_helper_sve2p1_orqv_s, gen_helper_sve2p1_orqv_d, +}; +TRANS_FEAT(ORQV, aa64_sme2p1_or_sve2p1, gen_gvec_ool_arg_zpz, + sve2p1_orqv_fns[a->esz], a, 0) + +static gen_helper_gvec_3 * const sve2p1_eorqv_fns[4] =3D { + gen_helper_sve2p1_eorqv_b, gen_helper_sve2p1_eorqv_h, + gen_helper_sve2p1_eorqv_s, gen_helper_sve2p1_eorqv_d, +}; +TRANS_FEAT(EORQV, aa64_sme2p1_or_sve2p1, gen_gvec_ool_arg_zpz, + sve2p1_eorqv_fns[a->esz], a, 0) + +static gen_helper_gvec_3 * const sve2p1_andqv_fns[4] =3D { + gen_helper_sve2p1_andqv_b, gen_helper_sve2p1_andqv_h, + gen_helper_sve2p1_andqv_s, gen_helper_sve2p1_andqv_d, +}; +TRANS_FEAT(ANDQV, aa64_sme2p1_or_sve2p1, gen_gvec_ool_arg_zpz, + sve2p1_andqv_fns[a->esz], a, 0) =20 static gen_helper_gvec_3 * const fabs_fns[4] =3D { NULL, gen_helper_sve_fabs_h, --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617049; cv=none; d=zohomail.com; s=zohoarc; b=nN5MetmMSvE+EBUTM+MQPbKNOVIq3D4vQZ8yB77r1AUFLanW8wA065oNM4hmBNYIyIIVUJ50Hy3IfwmjPHJ2xUn7UMvHm0iLxODdbDbCo3PK2NerpGgF6ZSlFxUOxyBgcWo8DgdIcekeQ08Rq2I1ZZRXeAg4omhiwCyxCrxMt3Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617049; 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=9uZQxyhgyiLou14mlgeDj5cB6BxBZLZaIk+PvH3KSC8=; b=HLkWuqu1Y5Zjv1c4GlhpK5OkpWmYnp+lW4Xu2HGZvyqLotrM9FdoowIIJtAXFB1zR+AuYHf2YmlLfodQqwAiH9kZQOuBaf1KasGPaoeIXDhOGM6Sfa0p/Gdr2Upo2GASezs44QSPVb68+fyjFP8mgMMgZxJI4EalQq320prpZIQ= 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 1780617049665333.3728580679407; Thu, 4 Jun 2026 16:50:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHo9-0006fG-Hb; Thu, 04 Jun 2026 19:49: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 1wVHo7-0006cg-Mj for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:03 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo4-0007ri-TC for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:03 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2c132ac5ec2so12905295ad.1 for ; Thu, 04 Jun 2026 16:48:59 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.48.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:48:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616938; x=1781221738; 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; bh=9uZQxyhgyiLou14mlgeDj5cB6BxBZLZaIk+PvH3KSC8=; b=TiVmVKPt5EXtcTymNSBY3EGxi0Lt5feSjtaRoVIhc5vyJNuMnLBPOJ2xRIXyoGzld6 xeJ9iM+YzHsXbzmpeznGackdrH0f3QLoC16uNK4yPGqn4Sewkqry+rzThgpZ2FYD9SIE 6XYSLB6nsQ0WsR2C7yLE+XhFn/q1IBgAQ25JiS5fJRMjLiTxzLApD+NvgBeKtK0Dbjte mdzNqpgTX8GXMjaVxFG/H+FRTOaFgpVqRR0Z9vRSCm63cb7IRCQB9T70a0S/YBemjy1U o84LfIrEH7/SgK3fQJkepY9lwhGmeeEO0opqeSFqF21JniiIwOsCs4FqfB++oRkW/FAS WEdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616938; x=1781221738; 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; bh=9uZQxyhgyiLou14mlgeDj5cB6BxBZLZaIk+PvH3KSC8=; b=YoxbaLHrvnoGv8tZWyz80DJp1PJ/2QCYI0yELPXxBDeL+74OXXkqhv34Tm7/4aHh74 5KdutY68/BiA8HtaD1hfU1VyirYBj0KFRWmy30RMJjL5wmVdm7jUnAhUdZ8kqGzNakMx q++kWgdEFjyUGfxDGhqGGAjnIwyTCX5JnvbZulodEP9awRSkx1lRTeHJIcTIUwnrqApx AEvMoigsvkyMaXfknJvsAHLT6ZuliQzWI0I9zELrIjVxYVp+D2UMA17hrLLU3wRQNPGI ZREqP74KJz1idvE9qu3u1S5W8wZCJtxdtMMsZkba+qs1P1YRjGcx/1YvwOlmwKY6rkV/ uqVw== X-Gm-Message-State: AOJu0YxFNd24PUCM0cTEugRAzK8UYt785sl9PV0I+l7q03b2ObZF9emd Jq57Mjg2cBrI6RAajcpY8ptTfpNRLwM7YrQvN9TUzhYYhgx6KCrqmStx85oDbDIM8mWRZLMDlRt aaJnruKQ= X-Gm-Gg: Acq92OGiF6AuXBoyAcf/mfx/N+bpndRevgg3f7ce0CyVE3P0++LT8qAbPOjBWO372zz pEW774a0bJtDfXCG6cf5kKOpeei2wNVrAknb1Qy1M5tGKQUUVMc52oRKpTTdQI1ZT8OntIZ2sjG 8optyJOAPK+u3GEjwrclv9jUqp83E24JMLyeuXsPWWSNh2NU1oYhAdg7ft2OjfVcUKJ6TyWXzXU G8zDURE9582o8UHA895PDmKwDCsRzcWYZJR9nAhESggZcgjH6DR+eelnxgoxoqkaY26m7Xg7w9j 0hymTzmsVPsV/650naSYB7rexdkNxlGpLYTopcxCOlrMRzWLQznWjjLisdGLzjJfh+uB30aAj/i NYK++Kbz1rTqoCNXmDwiRt82IMpVQtDyMRXnByX54h4t6xEIgOYxEKfgeuuJ1O1mMRwVerakjkJ VHR1hkyKtRgoHnRaa/tHMLdRG+ppBhl8EIF+glXiiV4BL8V/dNTg== X-Received: by 2002:a17:902:d4c6:b0:2bf:160f:7043 with SMTP id d9443c01a7336-2c1e834a531mr7251435ad.34.1780616937997; Thu, 04 Jun 2026 16:48:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 05/25] target/arm: Implement SVE integer unary operations (predicated, zeroing) Date: Thu, 4 Jun 2026 16:48:32 -0700 Message-ID: <20260604234852.573178-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.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: 1780617050272158500 Content-Type: text/plain; charset="utf-8" This includes ABS, NEG, SXT{B,H,W}. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 15 +++++++++++++++ target/arm/tcg/sve.decode | 9 +++++++++ 2 files changed, 24 insertions(+) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index ea37c073c7..e090a0383d 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -811,12 +811,14 @@ static gen_helper_gvec_3 * const sve_abs_fns[4] =3D { gen_helper_sve_abs_s, gen_helper_sve_abs_d, }; TRANS_FEAT(ABS_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_abs_fns[a->es= z], a, 0) +TRANS_FEAT(ABS_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, sve_abs_fns= [a->esz], a, 1) =20 static gen_helper_gvec_3 * const sve_neg_fns[4] =3D { gen_helper_sve_neg_b, gen_helper_sve_neg_h, gen_helper_sve_neg_s, gen_helper_sve_neg_d, }; TRANS_FEAT(NEG_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_neg_fns[a->es= z], a, 0) +TRANS_FEAT(NEG_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, sve_neg_fns= [a->esz], a, 1) =20 static gen_helper_gvec_3 * const sve_rbit_fns[4] =3D { gen_helper_sve_rbit_b, gen_helper_sve_rbit_h, @@ -873,6 +875,8 @@ static gen_helper_gvec_3 * const sxtb_fns[4] =3D { }; TRANS_FEAT(SXTB_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sxtb_fns[a->esz], a, 0) +TRANS_FEAT(SXTB_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + sxtb_fns[a->esz], a, 1) =20 static gen_helper_gvec_3 * const uxtb_fns[4] =3D { NULL, gen_helper_sve_uxtb_h, @@ -880,23 +884,34 @@ static gen_helper_gvec_3 * const uxtb_fns[4] =3D { }; TRANS_FEAT(UXTB_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, uxtb_fns[a->esz], a, 0) +TRANS_FEAT(UXTB_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + uxtb_fns[a->esz], a, 1) =20 static gen_helper_gvec_3 * const sxth_fns[4] =3D { NULL, NULL, gen_helper_sve_sxth_s, gen_helper_sve_sxth_d }; TRANS_FEAT(SXTH_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sxth_fns[a->esz], a, 0) +TRANS_FEAT(SXTH_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + sxth_fns[a->esz], a, 1) =20 static gen_helper_gvec_3 * const uxth_fns[4] =3D { NULL, NULL, gen_helper_sve_uxth_s, gen_helper_sve_uxth_d }; TRANS_FEAT(UXTH_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, uxth_fns[a->esz], a, 0) +TRANS_FEAT(UXTH_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + uxth_fns[a->esz], a, 1) =20 TRANS_FEAT(SXTW_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, a->esz =3D=3D 3 ? gen_helper_sve_sxtw_d : NULL, a, 0) +TRANS_FEAT(SXTW_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + a->esz =3D=3D 3 ? gen_helper_sve_sxtw_d : NULL, a, 1) + TRANS_FEAT(UXTW_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, a->esz =3D=3D 3 ? gen_helper_sve_uxtw_d : NULL, a, 0) +TRANS_FEAT(UXTW_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + a->esz =3D=3D 3 ? gen_helper_sve_uxtw_d : NULL, a, 1) =20 static gen_helper_gvec_3 * const addqv_fns[4] =3D { gen_helper_sve2p1_addqv_b, gen_helper_sve2p1_addqv_h, diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index c7e633ec4f..31b65fab1b 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -411,6 +411,15 @@ UXTH_m 00000100 .. 010 011 101 ... ..... ....= . @rd_pg_rn SXTW_m 00000100 .. 010 100 101 ... ..... ..... @rd_pg_rn UXTW_m 00000100 .. 010 101 101 ... ..... ..... @rd_pg_rn =20 +ABS_z 00000100 .. 000 110 101 ... ..... ..... @rd_pg_rn +NEG_z 00000100 .. 000 111 101 ... ..... ..... @rd_pg_rn +SXTB_z 00000100 .. 000 000 101 ... ..... ..... @rd_pg_rn +UXTB_z 00000100 .. 000 001 101 ... ..... ..... @rd_pg_rn +SXTH_z 00000100 .. 000 010 101 ... ..... ..... @rd_pg_rn +UXTH_z 00000100 .. 000 011 101 ... ..... ..... @rd_pg_rn +SXTW_z 00000100 .. 000 100 101 ... ..... ..... @rd_pg_rn +UXTW_z 00000100 .. 000 101 101 ... ..... ..... @rd_pg_rn + ### SVE Floating Point Compare - Vectors Group =20 # SVE floating-point compare vectors --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617047; cv=none; d=zohomail.com; s=zohoarc; b=kWVk6zmmtcur3BcoZibO1VgfBSDyzdkHIJf4HWuxsV7W1UZaDM5Qm0kPzJ4lkKfiVR/kTHb7Fcw9yNcPuM6hrQntwojqAf2YWiaBrCe3cpR/91Xfd/Nu6DRpa97FWSdGdSDA59bOUHSPrvu6MBPIIPgINjJ4FJCdWP1XXgUQj8E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617047; 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=GnRR2OwqXTkVX+yGNuI1CmmR5VQnfJrJeFCD/rxXTNs=; b=SbNA9CjRbMF7HaIYQ8dCZHrUGfB0W8Tv2NWwVeBdyKmiFbvWUo2+thJ8yG+QkRw7CCFGH3+Efmzn+gl4ZAlQ+T4BSwDXNW3G+GTt3JExhy94LapY4erVeYbLHcK1BG0Yi7JB+va1Gf6I+vhCEqqspACoceqPCRLeh2w2Ej5IKuA= 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 1780617047694753.4842022788869; Thu, 4 Jun 2026 16:50:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoB-0006jK-OZ; Thu, 04 Jun 2026 19:49:07 -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 1wVHo8-0006dn-JC for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:04 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo4-0007s2-UX for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:04 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2c0c379e8ffso9065125ad.3 for ; Thu, 04 Jun 2026 16:48:59 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.48.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:48:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616939; x=1781221739; 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; bh=GnRR2OwqXTkVX+yGNuI1CmmR5VQnfJrJeFCD/rxXTNs=; b=UMDvEZD5apd7w1//ITIqIP9PAG1/H9VYT+US+JAfz2Q4PF28enTC0MKl4g01H7cMoT +Dv9RjOr+XdO+cg8kccoEjDC+Pc8gpY79G2lJZHSVlJvFW9BJcqV4zdGS6va+b76PYfV Cp/qXKXVurXP92Pgkw40JDGRXvVMEX9w95O6X4/YGu8LExq6d4AW/Uk9Z2uUWT04tacJ UwCP5kV9Witkt0PFq6UWXlz8FZM/0QhIL+GMhDaG9KYafuHNzwEWuNNNKPIc3OgVqJgq 2MPRfGLSZdNBN70ATfQ89W6WvoRZuby0m+ZIkWjQJlr7WYNMgWMtmuyPY3M3/gKPpCOi jFFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616939; x=1781221739; 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; bh=GnRR2OwqXTkVX+yGNuI1CmmR5VQnfJrJeFCD/rxXTNs=; b=ZBX6afnEtYaaZuFEZuJHw1v/7UAN1gE998opTTdcLvA7NFYU01hpd0vfEGk8g55pgm k4s+O/TcBtfRWvQ0BI+YVAQ4yep3X2OeY5BWf8wJigkf6fgbpZeTVjBLCWY+q0JMinm9 DG1qNBCSKnpCM3fAhYZWvhKR2ffzztxLibsip9JUQcz5VKOrA+bbFKAsESMQpLvXz6Dv RFrgsQCdyg8O9TvU6QcG129cBxPNKicl+0blIJuj4rcXzs5+99hFvymiz6Yum1VjeETK N7arEl4aZDDUgffsLtoKsT0+V02dp+gHppF1u5PvUqm3jLT+fbwGa5x+vdzDFKS6FyBZ k18A== X-Gm-Message-State: AOJu0YyiJDaGpmZQj5hNBNFQEO6HzZbxCVus11NhMzmGSBAQVhnP434M YFZqwEB6o0IWLKdNiWAmCrVPWSUmKCuim7u8ngToJ5SmU95Fnq1+5FbaSsMI7Kam6Vkof8kF01P ryzICDVw= X-Gm-Gg: Acq92OFnZCV/F28r59zM3E8z9y69tRMC9JgVynLyNftfK/dzP4QVaCU69/BzRq/9wK1 3TdP86dnALzSKhn5SlbmsULlBek/S08TL/5LwwU8bh1ReHAlHtCbPhgfMeEvLSfSY5ewRPmIUlt v4JoNPFg0kUJPLaVJv5qLKjneS1dA1iWkbqN+/ecNBjPqwCQXvhOcwPWOsf7mp8/JSXm3Tivsmw YxGY2jcfF9ctr32VnfSHJTWfXQy1MSEBNF2GEk1rCAplozA/7gZJHVRylZ2/DDaWaEaJcJG7KdJ PDRU0Scfc4gxty4Hl7V4VKLhAPkTu7DvU9oyolXr9a6jR24SpP45pzUwos5/rvRkfwkrV0QaQc9 oWAYp5iVUYP0PVc+jG0/bMzCN7HhEtGzQXE2T99cVLTGsumurg1FoNG8JTENgjdV2EaDJHCWPeH 9KyY6OS954U4Cx5Y3tJhsEtMkXolLE0X3cInVyHFU= X-Received: by 2002:a17:903:2c08:b0:2c0:bb11:19c8 with SMTP id d9443c01a7336-2c1e820db02mr7091005ad.36.1780616938584; Thu, 04 Jun 2026 16:48:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 06/25] target/arm: Implement SVE bitwise unary operations (predicated, zeroing) Date: Thu, 4 Jun 2026 16:48:33 -0700 Message-ID: <20260604234852.573178-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.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: 1780617050139154100 Content-Type: text/plain; charset="utf-8" This includes CLS, CLZ, CNT, CNOT, NOT, FABS, FNEG. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 21 ++++++++++++++++++--- target/arm/tcg/sve.decode | 8 ++++++++ 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index e090a0383d..2e138f9ac0 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -781,30 +781,41 @@ static gen_helper_gvec_3 * const sve_cls_fns[4] =3D { gen_helper_sve_cls_s, gen_helper_sve_cls_d, }; TRANS_FEAT(CLS_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_cls_fns[a->es= z], a, 0) +TRANS_FEAT(CLS_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, sve_cls_fns= [a->esz], a, 1) =20 static gen_helper_gvec_3 * const sve_clz_fns[4] =3D { gen_helper_sve_clz_b, gen_helper_sve_clz_h, gen_helper_sve_clz_s, gen_helper_sve_clz_d, }; TRANS_FEAT(CLZ_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_clz_fns[a->es= z], a, 0) +TRANS_FEAT(CLZ_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, sve_clz_fns= [a->esz], a, 1) =20 static gen_helper_gvec_3 * const sve_cnt_zpz_fns[4] =3D { gen_helper_sve_cnt_zpz_b, gen_helper_sve_cnt_zpz_h, gen_helper_sve_cnt_zpz_s, gen_helper_sve_cnt_zpz_d, }; -TRANS_FEAT(CNT_zpz_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_cnt_zpz_f= ns[a->esz], a, 0) +TRANS_FEAT(CNT_zpz_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, + sve_cnt_zpz_fns[a->esz], a, 0) +TRANS_FEAT(CNT_zpz_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + sve_cnt_zpz_fns[a->esz], a, 1) =20 static gen_helper_gvec_3 * const sve_cnot_fns[4] =3D { gen_helper_sve_cnot_b, gen_helper_sve_cnot_h, gen_helper_sve_cnot_s, gen_helper_sve_cnot_d, }; -TRANS_FEAT(CNOT_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_cnot_fns[a->= esz], a, 0) +TRANS_FEAT(CNOT_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, + sve_cnot_fns[a->esz], a, 0) +TRANS_FEAT(CNOT_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + sve_cnot_fns[a->esz], a, 1) =20 static gen_helper_gvec_3 * const sve_not_zpz_fns[4] =3D { gen_helper_sve_not_zpz_b, gen_helper_sve_not_zpz_h, gen_helper_sve_not_zpz_s, gen_helper_sve_not_zpz_d, }; -TRANS_FEAT(NOT_zpz_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_not_zpz_f= ns[a->esz], a, 0) +TRANS_FEAT(NOT_zpz_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, + sve_not_zpz_fns[a->esz], a, 0) +TRANS_FEAT(NOT_zpz_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + sve_not_zpz_fns[a->esz], a, 1) =20 static gen_helper_gvec_3 * const sve_abs_fns[4] =3D { gen_helper_sve_abs_b, gen_helper_sve_abs_h, @@ -857,6 +868,8 @@ static gen_helper_gvec_3 * const fabs_ah_fns[4] =3D { }; TRANS_FEAT(FABS_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, s->fpcr_ah ? fabs_ah_fns[a->esz] : fabs_fns[a->esz], a, 0) +TRANS_FEAT(FABS_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + s->fpcr_ah ? fabs_ah_fns[a->esz] : fabs_fns[a->esz], a, 1) =20 static gen_helper_gvec_3 * const fneg_fns[4] =3D { NULL, gen_helper_sve_fneg_h, @@ -868,6 +881,8 @@ static gen_helper_gvec_3 * const fneg_ah_fns[4] =3D { }; TRANS_FEAT(FNEG_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, s->fpcr_ah ? fneg_ah_fns[a->esz] : fneg_fns[a->esz], a, 0) +TRANS_FEAT(FNEG_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + s->fpcr_ah ? fneg_ah_fns[a->esz] : fneg_fns[a->esz], a, 1) =20 static gen_helper_gvec_3 * const sxtb_fns[4] =3D { NULL, gen_helper_sve_sxtb_h, diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 31b65fab1b..e79b5e84c1 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -400,6 +400,14 @@ NOT_zpz_m 00000100 .. 011 110 101 ... ..... ....= . @rd_pg_rn FABS_m 00000100 .. 011 100 101 ... ..... ..... @rd_pg_rn FNEG_m 00000100 .. 011 101 101 ... ..... ..... @rd_pg_rn =20 +CLS_z 00000100 .. 001 000 101 ... ..... ..... @rd_pg_rn +CLZ_z 00000100 .. 001 001 101 ... ..... ..... @rd_pg_rn +CNT_zpz_z 00000100 .. 001 010 101 ... ..... ..... @rd_pg_rn +CNOT_z 00000100 .. 001 011 101 ... ..... ..... @rd_pg_rn +NOT_zpz_z 00000100 .. 001 110 101 ... ..... ..... @rd_pg_rn +FABS_z 00000100 .. 001 100 101 ... ..... ..... @rd_pg_rn +FNEG_z 00000100 .. 001 101 101 ... ..... ..... @rd_pg_rn + # SVE integer unary operations (predicated) # Note esz > original size for extensions. ABS_m 00000100 .. 010 110 101 ... ..... ..... @rd_pg_rn --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617064; cv=none; d=zohomail.com; s=zohoarc; b=TnpT4OJ8u/KCuT2itFQ4vUxSh0oXpFHEKM8QKPgCPyArLoIVC50+jtblNOItTKgdQAAGdrE29YlvhkpafRdl2T3UjkjvbVyc6WcdXzM6p2t6JCrQiRw99Wo7xaNVNqZDIb5G77KOdPCla7hm5a9yO5EEEbHecR0vAzMxrnUiGJ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617064; 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=9F9kbLi16+GGnW73s9vC4HTWyng7AeCqWcgF5pO53eI=; b=mrn2hvZmlP3DoktGYBiHBHbYgQ1XBSYm/ayjroUtc0yrtEp1OtoHt76puvd3V/jqi4gqfEus7EHv2YFOiXRoFdOon1SYe1APksngOfeG2vlVnp+Dw18qy4fHWGiNP1fnAPZBJ2nWkpyjjhXiJG/4iifJagbQtdUg8lwYV+FdeDU= 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 1780617064844378.42218654377007; Thu, 4 Jun 2026 16:51:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHo9-0006ev-Aa; Thu, 04 Jun 2026 19:49: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 1wVHo7-0006cf-LW for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:03 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo4-0007sG-TU for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:03 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2c0b944f6edso13618515ad.2 for ; Thu, 04 Jun 2026 16:49:00 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.48.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:48:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616939; x=1781221739; 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; bh=9F9kbLi16+GGnW73s9vC4HTWyng7AeCqWcgF5pO53eI=; b=KVuJ6FYMliMf9rLXaKJUyyz9k+FoXW3zZzZHpD5viwjdeCNTqnuBv1qu9eSyuIlx3f 2dxQJe+80sszr5Qn/BG421Oq08XYw9D0VwhnZlt3b5CvCgt+lQx4AOHK+jMU+OmndUVW MItzq8OaJX3914pl1YbGkmECmnXmX52Lx4SG3/+kUO0+rfX9HX5ZJnbuoOiUxQGkqAKK TYivQFDUFgNO34qmwOJcnLf4doBhbUuxsBzM4zoqGAHm5jHy4te3jt3F/3+FF9gpbkbf vlIdZC8OdXCmzHHhRYrk7BYladTeB3enxiQ0qx82lGsuvlb1Yv0QZOmbxoyRoonq20gp U21w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616939; x=1781221739; 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; bh=9F9kbLi16+GGnW73s9vC4HTWyng7AeCqWcgF5pO53eI=; b=rPR1dRXOc1aGD1GgcYHw4AOP0p3ZdNmO5GOIWP5U29sfLqSperFe2ngzp7pbU6Hhwj a7t2mnLLNNpORNiBdDxWH35u5pvi5wnz0kB0Yavj9tf0t1IMKupjzSF/f8bVObm9ayh6 jUumnJdAZKkuzFSKqc751vVnAgyUQerYPqpKFxi+9hSHnzJ22b1DIy5dMXikcOsJtjof dBRwJsaZEpu78scMM+71cyRlPgt5rJZ20STpSKatLyBIOnz0t+dqOns93XASYyGo2k6/ LKpaS1p7N2Y6NCX6Z2CoKsE6cMRXYHI51S29CTWWNoPtt7O1eBNvTI+vC9Wmq4fJa49j CXtw== X-Gm-Message-State: AOJu0YzCgSQFluXbfngCQ2uJQxDCcjg6x4fyxBKTwTA4BvrN8n5rV0Ib TyeJiUOfoxFgeBboNXUONnVacY1mFGrHDxxWboLLYQUgRKk8WwDkVPb8rfd9EqGRDGVMkhAmxt3 QARaDynM= X-Gm-Gg: Acq92OEpXSAjU+2Jp7CsfTAw4iAO3YLtlA5pyMjkR2+8mCK9wykN8/mHIu+MVdzw1qW NHMS0OCCBEuwtfAZbQlrfNSZg6Ti1aDmQ98Brf7XJ1jYpELNSUi4M3SzZW4uWKPsP5bi/WzrqC5 5P28x7BUdqNOMMzXxTgW9UO9UaMnOxcm0fWchPQNbtngkh4MgrT6VJ+l84I7WGUw5p3l4fatV+w p83B6jZW74DZCi7/IU74Hg4ByZVismuEW4dr6E9q29J8KT3oOx8a3JCbGi16l5JfcCoSlsvZcf6 Jm65msm/1gT0v/qIcFk5MBpTODKEw4rsRFn2uY9+evOnunz3Osy5JzXR5kBVwtbLy+R66CpDvU1 FdJCkfjRxmwFY5iw8+OTaHAGLNMf2P+vRHoGMIeBhCULvOrCKnS6q2c76csIz1OucWIZldEzr11 bb4/qvFv/X5JmNDROFL9k7VBnkw6g4lPxn6ipA5jQ= X-Received: by 2002:a17:902:da86:b0:2c0:f807:56b6 with SMTP id d9443c01a7336-2c1e7b3578cmr6726935ad.4.1780616939307; Thu, 04 Jun 2026 16:48:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 07/25] target/arm: Implement SVE reverse within elements (zeroing) Date: Thu, 4 Jun 2026 16:48:34 -0700 Message-ID: <20260604234852.573178-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.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: 1780617066374154100 Content-Type: text/plain; charset="utf-8" This includes REVB, REVH, REVW, RBIT. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 7 +++++++ target/arm/tcg/sve.decode | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 2e138f9ac0..c3903d8fcc 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -836,6 +836,7 @@ static gen_helper_gvec_3 * const sve_rbit_fns[4] =3D { gen_helper_sve_rbit_s, gen_helper_sve_rbit_d, }; TRANS_FEAT(RBIT_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, sve_rbit_fns[a->= esz], a, 0) +TRANS_FEAT(RBIT_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, sve_rbit_f= ns[a->esz], a, 1) =20 static gen_helper_gvec_3 * const sve2p1_orqv_fns[4] =3D { gen_helper_sve2p1_orqv_b, gen_helper_sve2p1_orqv_h, @@ -3070,15 +3071,21 @@ static gen_helper_gvec_3 * const revb_fns[4] =3D { }; TRANS_FEAT(REVB_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, revb_fns[a->esz], a, 0) +TRANS_FEAT(REVB_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + revb_fns[a->esz], a, 1) =20 static gen_helper_gvec_3 * const revh_fns[4] =3D { NULL, NULL, gen_helper_sve_revh_s, gen_helper_sve_revh_d, }; TRANS_FEAT(REVH_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, revh_fns[a->esz], a, 0) +TRANS_FEAT(REVH_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + revh_fns[a->esz], a, 1) =20 TRANS_FEAT(REVW_m, aa64_sme_or_sve, gen_gvec_ool_arg_zpz, a->esz =3D=3D 3 ? gen_helper_sve_revw_d : NULL, a, 0) +TRANS_FEAT(REVW_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + a->esz =3D=3D 3 ? gen_helper_sve_revw_d : NULL, a, 1) =20 TRANS_FEAT(REVD_m, aa64_sme_or_sve2p1, gen_gvec_ool_arg_zpz, gen_helper_sme_revd_q, a, 0) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index e79b5e84c1..867ae2916e 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -730,6 +730,11 @@ REVW_m 00000101 .. 1001 10 100 ... ..... ....= . @rd_pg_rn RBIT_m 00000101 .. 1001 11 100 ... ..... ..... @rd_pg_rn REVD_m 00000101 00 1011 10 100 ... ..... ..... @rd_pg_rn_= e0 =20 +REVB_z 00000101 .. 1001 00 101 ... ..... ..... @rd_pg_rn +REVH_z 00000101 .. 1001 01 101 ... ..... ..... @rd_pg_rn +REVW_z 00000101 .. 1001 10 101 ... ..... ..... @rd_pg_rn +RBIT_z 00000101 .. 1001 11 101 ... ..... ..... @rd_pg_rn + # SVE vector splice (predicated, destructive) SPLICE 00000101 .. 101 100 100 ... ..... ..... @rdn_pg_rm =20 --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617139; cv=none; d=zohomail.com; s=zohoarc; b=Q8mBl8KpbdrnSK3TDN7AqqU4G5pNN1RQYPzaPmFEt+ouPmB8WWCPd3XgM9qC2LuetUF2uCdGla9xUyxvC4RjwZ33gyCiHvu11j1sQsdxu/be96iNxTKVeGYIpx6n1S74WAyi41jumdZta3gapVTrEtt1M2LXgEwIPmsTBA+uBws= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617139; 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=kMq64cpca08GVKd7Jpufwu6Mpqw06YbTJ94bxInMeec=; b=OasDech+/VT6FeDV9GkzszTvmwX6cad1V0C86mmF+5l5QXtByKseTlf2Cav6AjthTjHUJ+KhoRsihr1IBg7lV9DBa2zNQyATti/itmnk6oI4ekJM1pqckKKjtJ/s/1q+OiuzjJG2gm20d9+KgrVHyt71S6EL5qzFvTTp7r82g2w= 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 1780617139652921.9020013190739; Thu, 4 Jun 2026 16:52:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoC-0006jg-7Z; Thu, 04 Jun 2026 19:49: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 1wVHo8-0006eL-TO for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:04 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo5-0007sN-I9 for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:04 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2bf237e1433so15377585ad.1 for ; Thu, 04 Jun 2026 16:49:01 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.48.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:48:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616940; x=1781221740; 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; bh=kMq64cpca08GVKd7Jpufwu6Mpqw06YbTJ94bxInMeec=; b=PQkKpVsw47paIo5dC1xf/BkBr5pYk47FD7+5e+3zmjwWuz+mvXgLxaEavrALw6QzP8 LfZL/mTwDrLWJm6vkiKSaWW4bg1rYw1lazv2h7LaxmpTA72m7z4ZvifsegnuG63ZsJb7 muhwf6Xn3RtwWN1/khhTAMk/63qItB+8ftRcvShh2eBbco0x3aivI0bhQXnMN9xllDkV 1wp7Lo9YEuXIA/alZ0y3nBQOMnbVohv5cLLhRFiyTdU7awo+2QwQnO2JM8LEpPJFhHPq HEVwAS6VfDI7lM+XfpWXB+Xkd8xDpPlaxbU1fuEVKqWfnYq4jFy/+CbU1EFmDvsC0uJm Jdvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616940; x=1781221740; 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; bh=kMq64cpca08GVKd7Jpufwu6Mpqw06YbTJ94bxInMeec=; b=lYIh2U4XjjCTS7AxdKvewWh9Wj59caVtPKPu8WDOiflfwRGzvat51HviR5Y1FfJFS5 bDLRQWIILX5RqbWa10xRfQLKbzsY9iGxt9GhmS0Q/qsM6Fqd3NFaYzbzsGMuxcAMRxd2 ZkL7LSejm+Ppe4GkpXyyLVzxQib0UD+YTBjxvw2N5uSKNyDGK3j7Y5vIHKkwCqqZwV26 8ibN276xVW3RkAwvsVwDF3oMB6HYUJ+hDr10dI9elN5A58N2JAYT4hWI3bhE19lvMJqb NRy6e9O4t5Vw/ysmogzZJ95kyIF5MSlUYvClU+p7hX3NNvK1kNDRG4xs1SlAXlCrVvNt zD0Q== X-Gm-Message-State: AOJu0YxS5dkhlIsyrlhdcUOKduANyKN2gGAC5RhPCS//I06vbhaulTmb 7Jnjc3LfDOgwuim12+bdbcIwbx+qOda0TnUyEfFwILGELBwxvDCmm3iRRZkCcUa6/6rLsJrPuTk mipvzHnQ= X-Gm-Gg: Acq92OF2GoMGMOthqw6jnsrldXiclVHYhVjOmA/NqV2ymMEFuOE54c7EpALWSOpRnsL rJrNCK5ssPnB3bhONMJB8zFhmh2MCQftlDQ/BUpxYtMOTRPGBKbk+BzxNSAa5uRN1ilwZFqxad/ EYk1O0LHGWAgS06zJSku6/BQl+vW1IRitESltNiQcWDJ9g/9WnT2DjmiO3tMFjECYuhNnNHWg19 P8ZHbyQkuZFJXEkb2+LyMCJyvtV8g2TxLE35P4pUixV6jBgckZxj3Wju53dTG7dZeyqiQPDWFxT l/NxR65pvaR2C+pJHLQWX6zo/vzmfjU2Y4Ee3liKYtI6vqofnO6BUw7RJHn+q53IsBF4o+47dds ixLbYVRrsxR0a1e0RGa7xtquEGygceYTH3RGnBEu0BNZ6iRmhrlZQZGW/QLBhqKh8W6Axd/MPQK KU5AlBybZy5l8GM3ATLYbJcJ3EjhnxgoYaUwZd9dcaG9p+hyYvBQ== X-Received: by 2002:a17:902:e78c:b0:2b0:c59f:3b58 with SMTP id d9443c01a7336-2c1e80ff880mr7038795ad.9.1780616939934; Thu, 04 Jun 2026 16:48:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 08/25] target/arm: Implement SVE reverse doublewords (zeroing) Date: Thu, 4 Jun 2026 16:48:35 -0700 Message-ID: <20260604234852.573178-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.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: 1780617140588158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/sve_helper.c | 4 ++++ target/arm/tcg/translate-sve.c | 2 ++ target/arm/tcg/sve.decode | 1 + 3 files changed, 7 insertions(+) diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index 59e4bad05f..847c49d784 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -971,6 +971,7 @@ DO_ZPZ_D(sve_revw_d, uint64_t, wswap64) void HELPER(sme_revd_q)(void *vd, void *vn, void *vg, uint32_t desc) { intptr_t i, opr_sz =3D simd_oprsz(desc) / 8; + bool zeroing =3D simd_data(desc) & 1; uint64_t *d =3D vd, *n =3D vn; uint8_t *pg =3D vg; =20 @@ -980,6 +981,9 @@ void HELPER(sme_revd_q)(void *vd, void *vn, void *vg, u= int32_t desc) uint64_t n1 =3D n[i + 1]; d[i + 0] =3D n1; d[i + 1] =3D n0; + } else if (zeroing) { + d[i + 0] =3D 0; + d[i + 1] =3D 0; } } } diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index c3903d8fcc..ad9d30d92d 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -3089,6 +3089,8 @@ TRANS_FEAT(REVW_z, aa64_sme2p2_or_sve2p2, gen_gvec_oo= l_arg_zpz, =20 TRANS_FEAT(REVD_m, aa64_sme_or_sve2p1, gen_gvec_ool_arg_zpz, gen_helper_sme_revd_q, a, 0) +TRANS_FEAT(REVD_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + gen_helper_sme_revd_q, a, 1) =20 TRANS_FEAT(SPLICE, aa64_sme_or_sve, gen_gvec_ool_arg_zpzz, gen_helper_sve_splice, a, a->esz) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 867ae2916e..45f8633fd3 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -734,6 +734,7 @@ REVB_z 00000101 .. 1001 00 101 ... ..... .....= @rd_pg_rn REVH_z 00000101 .. 1001 01 101 ... ..... ..... @rd_pg_rn REVW_z 00000101 .. 1001 10 101 ... ..... ..... @rd_pg_rn RBIT_z 00000101 .. 1001 11 101 ... ..... ..... @rd_pg_rn +REVD_z 00000101 00 1011 10 101 ... ..... ..... @rd_pg_rn_= e0 =20 # SVE vector splice (predicated, destructive) SPLICE 00000101 .. 101 100 100 ... ..... ..... @rdn_pg_rm --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617040; cv=none; d=zohomail.com; s=zohoarc; b=kub8HtfDkyT3T7e8bTCvgS5HIATy8b2/UtGfrgneTLDiRdSE0g31SblBZOl6XQnEaV5gdB01wst7Wiffc/hEJG/0Vk+UC+aEAzUzw6RK8yDWpV5vauldNzwq/W80rG0fVtJHAwTURYhU8oNg8kWCR3gGnyv4g6a1HCoyLycnWgg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617040; 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=iZbZ68SsOMffdmPWgLqwXRMUNHW1rI65Hp4imBurWZ8=; b=KP1DByzO2P6jk0GYG9r2jD4FcyRLn2fjJNnWZJO/ND0jbR2vxwA6obraGGMA+Z8pJV2VTfNo9hn1K3LhTLyw7LSi+etB9S411qHyUWC7qLM+fKKjsLgr4rFce8Z3oPZmwhecLos3WtrrLbKefIIcfbFbQiGpsUAgzbWhDRpzBgE= 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 178061704032119.559631874403976; Thu, 4 Jun 2026 16:50:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoB-0006jR-Sz; Thu, 04 Jun 2026 19:49:07 -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 1wVHo9-0006fE-Fm for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:05 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo6-0007su-3B for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:05 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2bf125989f2so8617635ad.3 for ; Thu, 04 Jun 2026 16:49:01 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616941; x=1781221741; 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; bh=iZbZ68SsOMffdmPWgLqwXRMUNHW1rI65Hp4imBurWZ8=; b=wv5gGnWyuaqM0Ptu+KVhqAcNgGpWn58sA7aA10ZF388DWGg3Mz2YLtMzDk9QCNKlcB IYtPPkLNgRl4ra44HTLaP2/Sg1DrLxFa/rjLkIxu0TLyrUkoziIkWaXYesZephwhkxas kSn5/6SRabxat1fiUUd+E3DUVU/8uilRZm/+Cyk9PsqdRx0Tf+gMRulXWHwmQKhOsV9W aGduBey4nWC1DF7Z4/CdK1tEj/yOwa+0QZ2yqvk2Vljs9fTqlYAQChO3RgmSOekKGyoY C3qmaJrGtfChwqLiyLneR4RJnk1yeSGIvObbPCCWd+geK9KBIUU9ioK6TCgFGsXyRqmz tQfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616941; x=1781221741; 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; bh=iZbZ68SsOMffdmPWgLqwXRMUNHW1rI65Hp4imBurWZ8=; b=aHtAAHJ080YUW5vZCGCupIBORcWjaJnutJY/K0n45ygaCZgg9hGg+2vetaMMEcyaaR AQa1WVbaJxdYQRzo/zfunXx1YxGBHmpjtSowtp5+ihie2M4Rp9CviIc30NwCK2yAQV3L EfsLGi+qS9Ez6aQNL8ODd12IRdEJdJIDckox/KXrSqw1CCI7b50Fwkvi9Ba/Y7w8Kdcb JyroDhjWEj4Cz/rt2lugd8esSCALw5TPPLhAYMhVygl1GA8lSETjbaKdLNchstdZWmSh S8TTG9kmzxqSgSnsRhmF3nFjDm2yFCOUoYLpTEIzVsUlADWakH8DxqtmOVpEblny0qvj i/NQ== X-Gm-Message-State: AOJu0YzndO5bHdLzYULdojyAvFC+lsT7cE0bdF/n103chJCL4Q/Q4WlH dxX8bqAT8S1LJeYXOidlM5YUOoKA0VuJP3MJK2CVUQdTz5KjrQwKUcyid0ZEca4Lw7MDsxY5LOh e3W4LBUc= X-Gm-Gg: Acq92OHQ2PUCJjJ2FoTquXUQG7SRWnKmyjj3giL7Uv3Nvlx/ncH7zMnAwcMigZBk42M ZBr8DsUPHNNSXRN2OR01kumWszFSvOwG9NVj2ra/dpLEZ7181LaEsJvjyGwFFFjUqF1Jvp6wpdb vpKTLFCEa2zv6UX5BRH6L2UQlLUZ38qhLm4XaoKMX0iXmMILhxM8RuOtT2Z5ui3ZyIlMVRinopf b0Ozc8j0idAXBcgdha1iNYXJyAXTDwQWkRDMvXZyQ2Lig+z+u+QQ3OUTCscI0CXs+Hn6vhUG+r3 YCNgszs1hWzON+fJKJhstOjCscm4qXYxklPWrhOBVumrnzXxIicTqGrRt3FYvw72uuZXlYoVWc0 2gh02YRkA90jH6vP+/tQSHCyQm2qUgjiEJ28S18MuMnhN9na84oyC+B+tqQQ8wUrMUfCGItuhTF f5YU70yZXiBHmNGmd3FGAW4iNPxcItImOgXrQlTM3hhJBsTbBoew== X-Received: by 2002:a17:902:d58f:b0:2bf:195d:21d2 with SMTP id d9443c01a7336-2c1e7e44e91mr7549405ad.16.1780616940600; Thu, 04 Jun 2026 16:49:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 09/25] target/arm: Implement SVE2 integer unary operations (predicated, zeroing) Date: Thu, 4 Jun 2026 16:48:36 -0700 Message-ID: <20260604234852.573178-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.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: 1780617041991154100 Content-Type: text/plain; charset="utf-8" This includes URECPE, URSQRTE, SQABS, SQNEG. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 6 ++++++ target/arm/tcg/sve.decode | 5 +++++ 2 files changed, 11 insertions(+) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index ad9d30d92d..083b70b487 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -6791,21 +6791,27 @@ TRANS_FEAT(UADALP_zpzz, aa64_sme_or_sve2, gen_gvec_= ool_arg_zpzz, =20 TRANS_FEAT(URECPE_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, a->esz =3D=3D 2 ? gen_helper_sve2_urecpe_s : NULL, a, 0) +TRANS_FEAT(URECPE_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + a->esz =3D=3D 2 ? gen_helper_sve2_urecpe_s : NULL, a, 1) =20 TRANS_FEAT(URSQRTE_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, a->esz =3D=3D 2 ? gen_helper_sve2_ursqrte_s : NULL, a, 0) +TRANS_FEAT(URSQRTE_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, + a->esz =3D=3D 2 ? gen_helper_sve2_ursqrte_s : NULL, a, 1) =20 static gen_helper_gvec_3 * const sqabs_fns[4] =3D { gen_helper_sve2_sqabs_b, gen_helper_sve2_sqabs_h, gen_helper_sve2_sqabs_s, gen_helper_sve2_sqabs_d, }; TRANS_FEAT(SQABS_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, sqabs_fns[a->e= sz], a, 0) +TRANS_FEAT(SQABS_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, sqabs_fns= [a->esz], a, 1) =20 static gen_helper_gvec_3 * const sqneg_fns[4] =3D { gen_helper_sve2_sqneg_b, gen_helper_sve2_sqneg_h, gen_helper_sve2_sqneg_s, gen_helper_sve2_sqneg_d, }; TRANS_FEAT(SQNEG_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, sqneg_fns[a->e= sz], a, 0) +TRANS_FEAT(SQNEG_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, sqneg_fns= [a->esz], a, 1) =20 DO_ZPZZ(SQSHL, aa64_sme_or_sve2, sve2_sqshl) DO_ZPZZ(SQRSHL, aa64_sme_or_sve2, sve2_sqrshl) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 45f8633fd3..f1cf7a628d 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1545,6 +1545,11 @@ URSQRTE_m 01000100 .. 000 001 101 ... ..... ..= ... @rd_pg_rn SQABS_m 01000100 .. 001 000 101 ... ..... ..... @rd_pg_rn SQNEG_m 01000100 .. 001 001 101 ... ..... ..... @rd_pg_rn =20 +URECPE_z 01000100 .. 000 010 101 ... ..... ..... @rd_pg_rn +URSQRTE_z 01000100 .. 000 011 101 ... ..... ..... @rd_pg_rn +SQABS_z 01000100 .. 001 010 101 ... ..... ..... @rd_pg_rn +SQNEG_z 01000100 .. 001 011 101 ... ..... ..... @rd_pg_rn + ### SVE2 saturating/rounding bitwise shift left (predicated) =20 SRSHL 01000100 .. 000 010 100 ... ..... ..... @rdn_pg_rm --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617040; cv=none; d=zohomail.com; s=zohoarc; b=PVe+6tON36UBSsANgTtOHWMujhcH6hotNZi/OiuaJm8RMbcwF/XlIJjWgynS5/E275Cxft6fU7c6uO+oL9wkZdem0lfHO+Q2n6JajWQMbk/pvT7mBQCZHIbJ1wGiUNAwDOIjORqv7SpzyJLkB7qVzkufr+GOTbW5tSDl/jRjch4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617040; 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=HVdxUuVXoVTJSAA6YhnuFT2CqG+OhK5lpSAh/HDbipo=; b=Op1K6bxOkLmLFOy179qDKa3mLxaYt53kZXxKrjtyDsVMb3kSSB0cxvZRaOW4YMd3o2UJ1O6gWlWi6DMNEt1Hp+O4XRRrgkMAc0Zn9VyRkSKon6eLfd6BmalOFRUfM+U3dYQbrShmL0ow2z4JbEc+t9qvuJO5patatMA21dOVeWc= 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 1780617040538671.760334063413; Thu, 4 Jun 2026 16:50:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoD-0006lJ-G2; Thu, 04 Jun 2026 19:49:09 -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 1wVHoA-0006hA-9H for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:06 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo7-0007tT-9y for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:05 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2c0c2c7d45eso12274295ad.1 for ; Thu, 04 Jun 2026 16:49:02 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616941; x=1781221741; 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; bh=HVdxUuVXoVTJSAA6YhnuFT2CqG+OhK5lpSAh/HDbipo=; b=p4gDVhLYcX8jKTzd4fd+Aw6iarO3RdLgM2FSVIkXWNb2bJChVA0XXwYPm6Zc9yeaGN fY+v0AtHJarbDzgKE6MMC/tXRUNFvZcmp55Y7HUQQ8tdSfafSY6poAXY4t/pQKO6MtdN Cbp/A1SQjPado79/vRUAtb50s3552+SBSE8TjysrIB68dMBduBUyXNQ2Z6+zTbKXFFxX 8y8RXVNHdqfJcqnR3+rSAMGPJgSWCQmaRZdx5xXasaLGehVZqsvD3RkTZFwMlUNyf/d4 fRLka5K4w4paFy8UeukegAILzMo1nCFf1L0tNaHeeRV8l0c9xi0bvcRi6G4AI5x9OxC1 FVPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616941; x=1781221741; 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; bh=HVdxUuVXoVTJSAA6YhnuFT2CqG+OhK5lpSAh/HDbipo=; b=eMIae+kFevxLqnb+fvFOGHRQuAFSfCUnhtewAyTnLQaW/mNwrG97hzmRxIKDIImfT7 l8ayG17STP1GVMt0UG5iRk0makrtptCVi/iTn/v9pnsMI1J2xGtYp8IMhWtHY/j8OOTh 0cJQ99eiITnW6MvXCZ69WCAF1cgcsrg9a00/7ZhGkYy/wg0yxwKriXxw3fdaTMaPFy5I ihqhXx40T05ibSCy1HJ6u+gnySsrzbELJE39lRg/Ach/7Xd4ASgE6E4hCep+Pym1zkvb TMVaqfvDGKZR/f/sTJTR5XThvI472ax7Ro9jZQpy1JuMYoCuXI9O23YMZZPEGj4EbNLc K90w== X-Gm-Message-State: AOJu0YyZWQ92Pnl0Ast5rlqPafkQPmptq46h6poA48w8PQCnYwjlBV8a FemK1arpMleOOWZ+wBvk1osAXCzFVWDOZauO8/WDGB1rLeHv8N4nTEI7iYRvJpJQXjt3IIL3Gsw c4MO3H1Q= X-Gm-Gg: Acq92OEZRuwAeU0+DM1hSHJgKuIRnbmU66iT6I3FGvrcjczVOyQDF8CaBO2tgvq72uk xhBTmQp2jRRpJPdp+G1cmq6XPddF+XdfXck8GlOPbi52wb+d+AkTZKr7kIZ0Xy7jvvEfVp0DG5g Xg+fgh/zhpe8qWIBDd5VGpysqPntNCUW9SLraeYKmVeHhXzRpEkdr63n+vpkgunzHlpjIlIFeQQ yc9lc2lCAU7e3hzyFA1x+g4ABRiazwDl8vKIBjeZ/cuhpXhv7hQYtskfLZ86SNLn6T+Pwf1vrf+ sboYhJ9gH9f/wDyRZEAPUAz53jlpGjrCy6cJlFBvc2JZ5bkx1VDvFIxHEmA6IIKJ+R6IE0UcVMr BtrRIhFuEwFw78aPnval6itM7x3C7hh0+Q9KEqK06/g/y4dktz9rwX4cNgcAdLJLPEn5k7rQvk/ eieQ6+FuznbR1dmf73dNsnV397FtFpO/94wkfqanNSMlaGc1CBgA== X-Received: by 2002:a17:903:1205:b0:2c0:b6c7:2271 with SMTP id d9443c01a7336-2c1e80e3bc0mr7674155ad.4.1780616941330; Thu, 04 Jun 2026 16:49:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 10/25] target/arm: Add data argument to do_frint_mode Date: Thu, 4 Jun 2026 16:48:37 -0700 Message-ID: <20260604234852.573178-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.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: 1780617044046154100 Content-Type: text/plain; charset="utf-8" Prepare for needing a non-zero value. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 083b70b487..e9c0a73e90 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4656,7 +4656,8 @@ TRANS_FEAT(FRINTX_m, aa64_sme_or_sve, gen_gvec_fpst_a= rg_zpz, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64); =20 static bool do_frint_mode(DisasContext *s, arg_rpr_esz *a, - ARMFPRounding mode, gen_helper_gvec_3_ptr *fn) + ARMFPRounding mode, int data, + gen_helper_gvec_3_ptr *fn) { unsigned vsz; TCGv_i32 tmode; @@ -4676,22 +4677,22 @@ static bool do_frint_mode(DisasContext *s, arg_rpr_= esz *a, tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), vec_full_reg_offset(s, a->rn), pred_full_reg_offset(s, a->pg), - status, vsz, vsz, 0, fn); + status, vsz, vsz, data, fn); =20 gen_restore_rmode(tmode, status); return true; } =20 TRANS_FEAT(FRINTN_m, aa64_sme_or_sve, do_frint_mode, a, - FPROUNDING_TIEEVEN, frint_fns[a->esz]) + FPROUNDING_TIEEVEN, 0, frint_fns[a->esz]) TRANS_FEAT(FRINTP_m, aa64_sme_or_sve, do_frint_mode, a, - FPROUNDING_POSINF, frint_fns[a->esz]) + FPROUNDING_POSINF, 0, frint_fns[a->esz]) TRANS_FEAT(FRINTM_m, aa64_sme_or_sve, do_frint_mode, a, - FPROUNDING_NEGINF, frint_fns[a->esz]) + FPROUNDING_NEGINF, 0, frint_fns[a->esz]) TRANS_FEAT(FRINTZ_m, aa64_sme_or_sve, do_frint_mode, a, - FPROUNDING_ZERO, frint_fns[a->esz]) + FPROUNDING_ZERO, 0, frint_fns[a->esz]) TRANS_FEAT(FRINTA_m, aa64_sme_or_sve, do_frint_mode, a, - FPROUNDING_TIEAWAY, frint_fns[a->esz]) + FPROUNDING_TIEAWAY, 0, frint_fns[a->esz]) =20 static gen_helper_gvec_3_ptr * const frecpx_fns[] =3D { NULL, gen_helper_sve_frecpx_h, @@ -7998,9 +7999,9 @@ TRANS_FEAT(FCVTLT_sd_m, aa64_sme_or_sve2, gen_gvec_fp= st_arg_zpz, gen_helper_sve2_fcvtlt_sd, a, 0, FPST_A64) =20 TRANS_FEAT(FCVTX_ds_m, aa64_sme_or_sve2, do_frint_mode, a, - FPROUNDING_ODD, gen_helper_sve_fcvt_ds) + FPROUNDING_ODD, 0, gen_helper_sve_fcvt_ds) TRANS_FEAT(FCVTXNT_ds_m, aa64_sme_or_sve2, do_frint_mode, a, - FPROUNDING_ODD, gen_helper_sve2_fcvtnt_ds) + FPROUNDING_ODD, 0, gen_helper_sve2_fcvtnt_ds) =20 static gen_helper_gvec_3_ptr * const flogb_fns[] =3D { NULL, gen_helper_flogb_h, --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617121; cv=none; d=zohomail.com; s=zohoarc; b=S5Kg8Za7zCBbPpBhNmd48+ZtFODsZUuEZL3Kwix0dB5iN29p1izj2wbIMWjt1OUgUVPxl3HVmmltMF5Jv+0PGWCSNBubjNjgAZhYLeS0qCQPg33d/vF2O/rypaRXZ1sEzurZTvLH5REfa9pdQnbCyrUgIY+TAl3vgXTPzXWVyWY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617121; 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=00A7hgOZ4BJxydtU0VYApJHMDSvFHd62SnNXpfPSUCw=; b=a0Jgw/yvnwEBkonYW3lBzhRsel+MaTtD+o5nNYQhIq1Y1u0knMGuGQho7Jv+6VCVm0M4fbHd0X18nwsigytakhkkvU/1E3keYl96CxtB9I0aFbrH1UHl7zAAaKr70LIp8PwFg3rHCteNTO3zqWfTGhVtKKrWw2fygF2+06xGUjE= 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 1780617121770540.1625078695411; Thu, 4 Jun 2026 16:52:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoD-0006km-6Z; Thu, 04 Jun 2026 19:49:09 -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 1wVHoA-0006hx-T8 for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:06 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo7-0007tr-FN for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:06 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2c0c3184c71so10000055ad.1 for ; Thu, 04 Jun 2026 16:49:03 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616942; x=1781221742; 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; bh=00A7hgOZ4BJxydtU0VYApJHMDSvFHd62SnNXpfPSUCw=; b=Lx1pWSxjg2UyLhEBVffK6fRHna6jXQw7vuDXe0/PRojZBvdgJJaTZgzU76Pyw5ifYW WxXwVJX7aDF/NEfM+afkp2PyhBaTDJEq/im6QnIQ0FTudUGQJZulTi5Q+9MSNKJ6aS0h /IRja9SQmKlna0rrVmB+q1uNn8CxmCXUmSg+8ws9Iv4etQK15rPN4F2c4Fo4eqoNFKWu woxcRtdyDjNljFF8VuIa6HjaJs3SjfAxlsYKH+l3D+xw8BlDXk3kBTHzZEv0vPRGsRqF JG7M6B96bHjpVfQHNXKoLCMXFcPptKxxfdsC6RjENBnJejsuuICBfP+yJNoVSXoUSf7U jfzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616942; x=1781221742; 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; bh=00A7hgOZ4BJxydtU0VYApJHMDSvFHd62SnNXpfPSUCw=; b=N2rTNGPVsAo3YC42ZJicyODb7iJl2NPqF6MRczWxbsNpB3++ABs4AP21PJ/upzemDX 68UCblGLD5/7wbomtc4Y5p1fOXYtBhbFPYuNrSgz4aYxWmnw7ueU3bv0b95Dt7otW170 Oinu9NBXu+y0M3MP261oktHxKAfhZdOBAXEDxM9y+0+2Ad7SHnHFvdWSmg1TzUR389Zr xIeEsQxJCenuQVK2YICnkQjSae7v7eACvAD+jxUgj1r7BBaR10SE/0A7KMWu/Mq1dudL Mdi73NEaiES9aiYc8R0ADvhhhXparEP4TwCYZyalSDpXxyIryPFScymuW1tZyZXhgB/Y HwgQ== X-Gm-Message-State: AOJu0YyhKr1l1+EC8FNoUCZT8VSXAzIRsfKYGVVPHaODMyqLhiJg1wlc SdOi4MqK8WM5AEoeC221t1xx2gyi8KNT64PWbXxmT0axUcezp0falRZ7auZnChOeKoQxChgxf4L W30wqWcQ= X-Gm-Gg: Acq92OEzg4ajPJuRyDbGXI3Lxrft+aqLa+qn1D0WhrNNjunZIj+TLxhbOJ2rj+n0DJN n7NqULFsf5SSa2L3hbrwePLHW1N0czoFjcPAB7Qq3AWcVpEZZz37hTFsluV7fsQXXfvJ8BY2Kiq 7uAn4zYmfWTYQRAGoJzNmZAy1Y/fJ+BGBHLKvsPVroVHYCTBPXOkIyElD0mKz0lIYUzcbMMzK/X U32d4Tav1XcMbV8WuSI26LpMb2It+uZsqJATiLmEFx474pmTbBAU+I912ZkHHMJ6aEvIpEaYfkF B6EViuiNZh9dRGk/qW8Nwk4JAAcnNNgfTmeojCM3E4LiXCIP//fLKUcr5ENVb28HiFuFCDHmBqs qXGthI3co84mXYj2E3zZXzsvhilqJyYq2DZmW5Zqyn25kYrCnGP6pq1qZ8RfomEBVDm3khskaed bc6Dw0F8MYcPGyjGI+5FVrpIOUrNASDVt7YTRSKsEzoBUTfrdgQQ== X-Received: by 2002:a17:902:f64e:b0:2c0:ee6c:c53c with SMTP id d9443c01a7336-2c1e7b2f52dmr7355425ad.1.1780616941989; Thu, 04 Jun 2026 16:49:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 11/25] target/arm: Implement Floating-point round to integral value (predicated, zeroing) Date: Thu, 4 Jun 2026 16:48:38 -0700 Message-ID: <20260604234852.573178-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.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: 1780617123106154100 Content-Type: text/plain; charset="utf-8" This is the various FRINT rounding modes. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 17 +++++++++++++++++ target/arm/tcg/sve.decode | 8 ++++++++ 2 files changed, 25 insertions(+) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index e9c0a73e90..3b346aed35 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4644,6 +4644,9 @@ static gen_helper_gvec_3_ptr * const frint_fns[] =3D { TRANS_FEAT(FRINTI_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, frint_fns[a->esz], a, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) +TRANS_FEAT(FRINTI_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + frint_fns[a->esz], a, 1, + a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) =20 static gen_helper_gvec_3_ptr * const frintx_fns[] =3D { NULL, @@ -4654,6 +4657,9 @@ static gen_helper_gvec_3_ptr * const frintx_fns[] =3D= { TRANS_FEAT(FRINTX_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, frintx_fns[a->esz], a, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64); +TRANS_FEAT(FRINTX_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + frintx_fns[a->esz], a, 1, + a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64); =20 static bool do_frint_mode(DisasContext *s, arg_rpr_esz *a, ARMFPRounding mode, int data, @@ -4694,6 +4700,17 @@ TRANS_FEAT(FRINTZ_m, aa64_sme_or_sve, do_frint_mode,= a, TRANS_FEAT(FRINTA_m, aa64_sme_or_sve, do_frint_mode, a, FPROUNDING_TIEAWAY, 0, frint_fns[a->esz]) =20 +TRANS_FEAT(FRINTN_z, aa64_sme2p2_or_sve2p2, do_frint_mode, a, + FPROUNDING_TIEEVEN, 1, frint_fns[a->esz]) +TRANS_FEAT(FRINTP_z, aa64_sme2p2_or_sve2p2, do_frint_mode, a, + FPROUNDING_POSINF, 1, frint_fns[a->esz]) +TRANS_FEAT(FRINTM_z, aa64_sme2p2_or_sve2p2, do_frint_mode, a, + FPROUNDING_NEGINF, 1, frint_fns[a->esz]) +TRANS_FEAT(FRINTZ_z, aa64_sme2p2_or_sve2p2, do_frint_mode, a, + FPROUNDING_ZERO, 1, frint_fns[a->esz]) +TRANS_FEAT(FRINTA_z, aa64_sme2p2_or_sve2p2, do_frint_mode, a, + FPROUNDING_TIEAWAY, 1, frint_fns[a->esz]) + static gen_helper_gvec_3_ptr * const frecpx_fns[] =3D { NULL, gen_helper_sve_frecpx_h, gen_helper_sve_frecpx_s, gen_helper_sve_frecpx_d, diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index f1cf7a628d..099cd4e93d 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1240,6 +1240,14 @@ FRINTA_m 01100101 .. 000 100 101 ... ..... ..= ... @rd_pg_rn FRINTX_m 01100101 .. 000 110 101 ... ..... ..... @rd_pg_rn FRINTI_m 01100101 .. 000 111 101 ... ..... ..... @rd_pg_rn =20 +FRINTN_z 01100100 .. 011 000 100 ... ..... ..... @rd_pg_rn +FRINTP_z 01100100 .. 011 000 101 ... ..... ..... @rd_pg_rn +FRINTM_z 01100100 .. 011 000 110 ... ..... ..... @rd_pg_rn +FRINTZ_z 01100100 .. 011 000 111 ... ..... ..... @rd_pg_rn +FRINTA_z 01100100 .. 011 001 100 ... ..... ..... @rd_pg_rn +FRINTX_z 01100100 .. 011 001 110 ... ..... ..... @rd_pg_rn +FRINTI_z 01100100 .. 011 001 111 ... ..... ..... @rd_pg_rn + # SVE floating-point unary operations FRECPX_m 01100101 .. 001 100 101 ... ..... ..... @rd_pg_rn FSQRT_m 01100101 .. 001 101 101 ... ..... ..... @rd_pg_rn --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617164; cv=none; d=zohomail.com; s=zohoarc; b=WIcD2B5/h64M89qmpNWr0hh9FJtjG7XqbfI40lzhe3pr6LRHOqVcBMq4FQJiUKzbeJW/o03rfkE37+RXuFIfhJCB132E3BkopX6eMKz3Iix89/oFCtOuZc/o5SbjR669bUHh+3phr5sJLr6O0ZDMsxXAhxXbmBPs0ej3dYh9X9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617164; 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=HQuDkDowjaL4I0KT7PVxqCRwbKYWziEo/8pi/s1dqN8=; b=epgerOdAZ0xvGgK2bSC6cotjtI8gXklbZ+4DB3aqNEfKWYCWjAQHfiJD5oxOOy5/fIHCPLaX7gzrz3h1fSEVpFlwDJkmbi1D1+jT4Qd5EwG2V+nfkqUNm6sTPKfqLULGPZmZwku4S1+dEWo4dAGDORc6vAJXSuNRwqRniLNxblM= 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 1780617164032699.974001141169; Thu, 4 Jun 2026 16:52:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoE-0006n2-V7; Thu, 04 Jun 2026 19:49: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 1wVHoB-0006j4-HJ for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:07 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo8-0007uA-7F for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:07 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2c0c35980fdso13113285ad.2 for ; Thu, 04 Jun 2026 16:49:03 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616943; x=1781221743; 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; bh=HQuDkDowjaL4I0KT7PVxqCRwbKYWziEo/8pi/s1dqN8=; b=noCvzK0pyM7TMZNqcZ4tDMcrNhYvbPvIIrVneXEzx8dxTSLOV7ZMF6yDr9khks1LKf FS9V0m03NPvWQ8gM/y3q899M8blli+BnK7S+2YcjG+95162yjvSGhCD2Bj5KFhyd76/8 7oSo3dE5nQfFCmFbydGB82D6+OaKg9SrkZIb+3+V6P7p1WuhdnMZQa18bnN4lo68ZDnp s+u1RUq8q1J4rRR85IVTilKnYSlWaW49zrpzSVJHBqB8EeYjgHAxTYoP+9gKsifmIqSa HkLakqPpoC56f3jh8pN9pk+ejPH+l1M9yGd2ioEg9G3CTFongWTbqgJlzDKfPkmGZopG KhVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616943; x=1781221743; 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; bh=HQuDkDowjaL4I0KT7PVxqCRwbKYWziEo/8pi/s1dqN8=; b=Vai97OJvICxPBsPbh+w9i51n8hGK6Tt4TlfD8Hoh0CYLf48ssaHgeAuRPlWY9ArkUf Mypf9JyyoBH+uDBJk9xpwXS1vVdXAZF3vIWBwtHa3oS6llAJ5om67rNPkTrxo1+zSLvy /SKqU/JAGgLwWbyyzm/vtO+RCAoJv684PsOoFlH7zq6mNA7opy6WWHhltnOBwd+a/WZt e+OFD09MsgJ9KawowugUAwFCkBYq+MJH4+5fmmLv1NZ4nbcRPamN/11KzBSZNVQW7XRz b9B7o2hmyD/8FvxiU7x2d7I44Z/XB4uE9XwceWSLAc0sA8MnMrkuLh65sql5D52j1y4c UBrg== X-Gm-Message-State: AOJu0Yx+mwy0aTwtSX44MwIr/p1BD1IMFxYHpg6/Aktb5kyo5XKcEil7 d0j39NzwHmD43YsNnJIztOyCc7GFMv5pXymZ7ExF5gX0a1uSzromu23Zf8v3OYn5tF4Sp9bX1ds 5zBv3D24= X-Gm-Gg: Acq92OFsEhtf8ugVnCL0deSusqsA2g9mVIU8t7YjqTOz4jDP1ymH7gQ4DQ7mOnodea5 xyWNVUMag5Fg52MaaAGOLcq/Dz0QpfdQefU2fczG5qgi+UeLC4F0/+HBlp0e5AmkE1ixbFpvJLZ O6clLm3f4aQ0ut73q2D5X/ieeaKWpYJkvHFJQTox9/j59Oh1KBXu+EZcazTKia7aebaNY/pRaXf 2nyOZJ5U0bQQ6ihluabPHal0bel0a2fPnwGOnVYZem6tlp73h6c26C//+9ByAhK9+ayqm5XjiVW DxGFtrthwyJO4yJnC65v+aL7m5MHhE+BNtD6Bb3Mu7EEMHWYkhiLd7NwODYAI5+7T9kwmhjwaiT MU8SoySE+F6AGQCQFd6AXCD368wtQZVxPX/RLH+N7hf5u/Gc7zLuZbEDFc2d4nqbUcZ0sy0cC8q AwvnFq7yMQKgD0BS3ryjBjUKQaX5FA3RDaNVCeiZ0= X-Received: by 2002:a17:903:3805:b0:2c1:98b7:ecf3 with SMTP id d9443c01a7336-2c1e849577emr6640385ad.23.1780616942767; Thu, 04 Jun 2026 16:49:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 12/25] target/arm: Implement Floating-point convert (predicated, zeroing) Date: Thu, 4 Jun 2026 16:48:39 -0700 Message-ID: <20260604234852.573178-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.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: 1780617164655158500 Content-Type: text/plain; charset="utf-8" This is FCVTX, FCVT and BFCVT. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 22 ++++++++++++++++++++++ target/arm/tcg/sve.decode | 11 +++++++++++ 2 files changed, 33 insertions(+) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 3b346aed35..b35db9d3c8 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4588,21 +4588,40 @@ TRANS_FEAT(FCMLA_zzxz, aa64_sme_or_sve, gen_gvec_fp= st_zzzz, fcmla_idx_fns[a->esz =20 TRANS_FEAT(FCVT_sh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_sh, a, 0, FPST_A64) +TRANS_FEAT(FCVT_sh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvt_sh, a, 1, FPST_A64) + TRANS_FEAT(FCVT_hs_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_hs, a, 0, FPST_A64_F16) +TRANS_FEAT(FCVT_hs_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvt_hs, a, 1, FPST_A64_F16) =20 TRANS_FEAT(BFCVT_m, aa64_sme_sve_bf16, gen_gvec_fpst_arg_zpz, gen_helper_sve_bfcvt, a, 0, s->fpcr_ah ? FPST_AH : FPST_A64) +TRANS_FEAT(BFCVT_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_bfcvt, a, 1, + s->fpcr_ah ? FPST_AH : FPST_A64) =20 TRANS_FEAT(FCVT_dh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_dh, a, 0, FPST_A64) +TRANS_FEAT(FCVT_dh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvt_dh, a, 1, FPST_A64) + TRANS_FEAT(FCVT_hd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_hd, a, 0, FPST_A64_F16) +TRANS_FEAT(FCVT_hd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvt_hd, a, 1, FPST_A64_F16) + TRANS_FEAT(FCVT_ds_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_ds, a, 0, FPST_A64) +TRANS_FEAT(FCVT_ds_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvt_ds, a, 1, FPST_A64) + TRANS_FEAT(FCVT_sd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvt_sd, a, 0, FPST_A64) +TRANS_FEAT(FCVT_sd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvt_sd, a, 1, FPST_A64) =20 TRANS_FEAT(FCVTZS_hh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzs_hh, a, 0, FPST_A64_F16) @@ -8017,6 +8036,9 @@ TRANS_FEAT(FCVTLT_sd_m, aa64_sme_or_sve2, gen_gvec_fp= st_arg_zpz, =20 TRANS_FEAT(FCVTX_ds_m, aa64_sme_or_sve2, do_frint_mode, a, FPROUNDING_ODD, 0, gen_helper_sve_fcvt_ds) +TRANS_FEAT(FCVTX_ds_z, aa64_sme2p2_or_sve2p2, do_frint_mode, a, + FPROUNDING_ODD, 1, gen_helper_sve_fcvt_ds) + TRANS_FEAT(FCVTXNT_ds_m, aa64_sme_or_sve2, do_frint_mode, a, FPROUNDING_ODD, 0, gen_helper_sve2_fcvtnt_ds) =20 diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 099cd4e93d..889ff85f72 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1215,6 +1215,17 @@ FCVT_hd_m 01100101 11 0010 01 101 ... ..... ..= ... @rd_pg_rn_e0 FCVT_ds_m 01100101 11 0010 10 101 ... ..... ..... @rd_pg_rn_= e0 FCVT_sd_m 01100101 11 0010 11 101 ... ..... ..... @rd_pg_rn_= e0 =20 +FCVTX_ds_z 01100100 00 0110 101 10 ... ..... ..... @rd_pg_rn_= e0 + +FCVT_sh_z 01100100 10 0110 101 00 ... ..... ..... @rd_pg_rn_= e0 +FCVT_hs_z 01100100 10 0110 101 01 ... ..... ..... @rd_pg_rn_= e0 +BFCVT_z 01100100 10 0110 101 10 ... ..... ..... @rd_pg_rn_= e0 + +FCVT_dh_z 01100100 11 0110 101 00 ... ..... ..... @rd_pg_rn_= e0 +FCVT_hd_z 01100100 11 0110 101 01 ... ..... ..... @rd_pg_rn_= e0 +FCVT_ds_z 01100100 11 0110 101 10 ... ..... ..... @rd_pg_rn_= e0 +FCVT_sd_z 01100100 11 0110 101 11 ... ..... ..... @rd_pg_rn_= e0 + # SVE floating-point convert to integer FCVTZS_hh_m 01100101 01 011 01 0 101 ... ..... ..... @rd_pg_rn_= e0 FCVTZU_hh_m 01100101 01 011 01 1 101 ... ..... ..... @rd_pg_rn_= e0 --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617084; cv=none; d=zohomail.com; s=zohoarc; b=JDJTMauhK7VQRVxYoo9hBinsKIUxA/58dsJcYsd5SNJ+iPUH1qLVHbVTw0XnriueBrDJAoQuNl8WJtEAMgiSRmiBjF3fCyY/9eigGOV2N+wefrpCHTP/jwY/gp4WPCAK0AxyKjrabYJXcRgOVnwqB22FArDij2fX/fEU9HbodQA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617084; 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=DH7vrH7aOQYkFWuK7+yU89gRaaRlNsipaw6MSquJLEw=; b=caoMj8DiwD6tmV1528PIItWcKil4NJsbcz1na5nl7fQwmVUIfARqFyj+9Lbx9a7XyDQ+nZQxPwARYi/GmavaBPJeE7GXjsYYDb/BvavZ0JJfRJegW4P5ZvvRoL1xwfncNDWWF0e3zd2o2T6HzRONbiGvjltAfHkbNjGtd+eJ9Yc= 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 1780617084201859.0837070323955; Thu, 4 Jun 2026 16:51:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoG-0006pL-CK; Thu, 04 Jun 2026 19:49: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 1wVHoC-0006ji-EQ for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:08 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo9-0007v3-GG for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:08 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-36baec934b6so1431829a91.0 for ; Thu, 04 Jun 2026 16:49:04 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616944; x=1781221744; 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; bh=DH7vrH7aOQYkFWuK7+yU89gRaaRlNsipaw6MSquJLEw=; b=TkbYtB3T2vNB79UKXZNS23h8/1Xy9FoC8VtHPzUbchQiy05tJo8gznVCp3KtDWDG4G Tich6EwWbDqXyD8nOEpb2z7KCKA1vo2gAsou6mr7KtbPbw7hAMeUMsEvm1vIOTSUusS5 VDJ/V7EhcxZ04vTZBX6uPFA5tl3wp2hdGofaupmbG3Si4FSH0QFCOsHfKkbu+IgAmkwu 26VbNPFye24ph9xqPUSH0hbIdAuktEkgDbIMGIhxZvlFUo9YdWfNm/J5VzFi/+oAZ67h GDg9mGR/luiXLpJMN4/Ymc0WTDGNTtJrR9r3Pbfr9Tg/AOgUbJalKpMonhmnrIDuysA0 8YxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616944; x=1781221744; 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; bh=DH7vrH7aOQYkFWuK7+yU89gRaaRlNsipaw6MSquJLEw=; b=cKkScAwcbXXAZC1GBMPGEjv24XZT79WYceAwudSE01cD6ygiV+z0eXarZBVkEdUowm 8x5sFE7Esn0j4t9uqN0ILxdsZEq+87JRTswRPSCRmQDpNiTa+5rRKUFTX7GKUdKCCK76 VnJ7prnnYvD1O7wFLKFJHrBZ8AsttUegAIfxj6u35OjPaPIuqqxHNDNWZY8Oyo10AM/L z4VvlD2wry4scdU9I2v673z6vjzf2yfGC9J9eW7hzdo4CHBCJ/4nJDwuhwQW6sLtnPbU x3hTxpIsXYesr/RRttpjzkvOnUd8kLcNwhzstA6DTe2s2GtHlskzFSjx9BXOcDHyGrLo 7AQg== X-Gm-Message-State: AOJu0YzFXQoxIlBvFBSG1P3eAVcP27vvi6oeIUBZyYSrtYjbrTcDH9FN wl+nGPV0v2YUPYQJdnbU3qbw9Xwa5EiKekEAKRAi4sTI5kv9e9vyOEu1l6nXmcBGR0maf8L7Y9Q ivDEyh7c= X-Gm-Gg: Acq92OGMHgSUaVYZiY4mtZqX65ycfaePweKxyOkBZPHFonRrRg3h+uVQFQcN7MICK32 238OJlAcKZriGdXT8+Emv3BnBucIwOdaoFyteadGzItz4w1Lv0tF1I0WgKD4XwEzLHUvmIqUUfE PE+H0q9LYsg5LyEXfzDZm8v/gDlcUJ+WqUguBVI/UQMDFi0VQetAVvf6K946Sqe2iLohOgj5O5F 4DOQcY+I1QLFhcBh8WB9srzVeEmSVBGA/d/YjwbHzs+3iX/vvWrTCEZAlMZY/SCDzdh7yl5r5rb gQqQSTYob0+zSZqfM3x4R4SKbCGnQkoUIr2cMYssJA6BmXBghhDPSjGKXpOgBctmUUIwAADCbkx KUJn3rbRHFxB9ae+IAPEEKK1SCGqR2/27X0jXjP4v4HO5PUMGb4O8JdJ+1+eLqiO3La6oZ/zRm/ FnULNxbi+eiqCqUdtLn7Kk6bcbXR0wb3B84M9E2b8= X-Received: by 2002:a17:903:11c9:b0:2b9:6cde:c34b with SMTP id d9443c01a7336-2c1ec7982f5mr1451315ad.15.1780616943655; Thu, 04 Jun 2026 16:49:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 13/25] target/arm: Implement Floating-point square root (predicated, zeroing) Date: Thu, 4 Jun 2026 16:48:40 -0700 Message-ID: <20260604234852.573178-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.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: 1780617086402158500 Content-Type: text/plain; charset="utf-8" This is FRECPX and FSQRT. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 5 +++++ target/arm/tcg/sve.decode | 3 +++ 2 files changed, 8 insertions(+) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index b35db9d3c8..9e0945252d 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4736,6 +4736,8 @@ static gen_helper_gvec_3_ptr * const frecpx_fns[] =3D= { }; TRANS_FEAT(FRECPX_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, frecpx_fns[a->esz], a, 0, select_ah_fpst(s, a->esz)) +TRANS_FEAT(FRECPX_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + frecpx_fns[a->esz], a, 1, select_ah_fpst(s, a->esz)) =20 static gen_helper_gvec_3_ptr * const fsqrt_fns[] =3D { NULL, gen_helper_sve_fsqrt_h, @@ -4744,6 +4746,9 @@ static gen_helper_gvec_3_ptr * const fsqrt_fns[] =3D { TRANS_FEAT(FSQRT_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, fsqrt_fns[a->esz], a, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) +TRANS_FEAT(FSQRT_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + fsqrt_fns[a->esz], a, 1, + a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) =20 TRANS_FEAT(SCVTF_hh_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_scvt_hh, a, 0, FPST_A64_F16) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 889ff85f72..c39d80360f 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1263,6 +1263,9 @@ FRINTI_z 01100100 .. 011 001 111 ... ..... ...= .. @rd_pg_rn FRECPX_m 01100101 .. 001 100 101 ... ..... ..... @rd_pg_rn FSQRT_m 01100101 .. 001 101 101 ... ..... ..... @rd_pg_rn =20 +FRECPX_z 01100100 .. 011 011 100 ... ..... ..... @rd_pg_rn +FSQRT_z 01100100 .. 011 011 101 ... ..... ..... @rd_pg_rn + # SVE integer convert to floating-point SCVTF_hh_m 01100101 01 010 01 0 101 ... ..... ..... @rd_pg_rn_= e0 SCVTF_sh_m 01100101 01 010 10 0 101 ... ..... ..... @rd_pg_rn_= e0 --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617088; cv=none; d=zohomail.com; s=zohoarc; b=XkDDRQOPsgqmnIRMjvRcphPh4lR9Aorc328F/RVy7ymGTuJxDyEDJk6yC5D1gFB/eeE2EpHt93d+kDrcdsNguL4iGXT6AJ+/uLUXTRh2uFWyo3N7feYfHKJQGSrgXg0ecta0tvA4AQ0xJKxRr/jSwCspGlauWL0CaYjmLu1VUkM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617088; 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=CjJQQllfaq+hXjgsv5QuP5O1r1aavIvt6gWsZvDwTv8=; b=bu1TLCU7E7lrXVmtpttZNrUTFvQSnD1iE9Azs0lvK3Mh14eQpdasMAh35a0aP0uHXRJc+unKtRjgoNdUGmkWM91/chgde/qwuPLhrHGb/i6y5YZ7EoOXlnD8CwTipuRu0+XQGIiEvpBmxx5VqrnX36hD+9TbxlBMzeDO/iENwi8= 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 1780617088253206.8536709306337; Thu, 4 Jun 2026 16:51:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoE-0006mQ-EX; Thu, 04 Jun 2026 19:49: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 1wVHoD-0006kP-1D for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:09 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHo9-0007vL-Uf for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:08 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2bf2247e38eso13168655ad.3 for ; Thu, 04 Jun 2026 16:49:05 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616944; x=1781221744; 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; bh=CjJQQllfaq+hXjgsv5QuP5O1r1aavIvt6gWsZvDwTv8=; b=ljTLWp4lk7m9Zmr55B9MekqUloKRPanBQuROrA+tVKBxuWBE8oVj6MH33i4skAo4ET e+VVQ4KU24doJEbZeIhYLXk+gF0an2HYnIwB85nynkQtjRLsOQ0NEQSwO66YH98RFhFY D7OMmfCN1bMschRSEsE/U6sSQgtilvGGFjrevezNqpd+VqtlCadoXsf4OUPFQqtLSP5k iLI0kv690QzKM/iEMWpYFvGJxmVq/qAkw+GOsBTS15TtjpjHVGhq2CuouweFPt9P3Ayy PBltw28yxjyM8dOrD9m13GHDX8meBvzfS7kuhsX5SQc2oOLjJVfUn5QEZShH7iBd13lc B3Fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616944; x=1781221744; 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; bh=CjJQQllfaq+hXjgsv5QuP5O1r1aavIvt6gWsZvDwTv8=; b=JnKE4/3vRTCwwCztKUeEPGZB33llLtiedJ8dt3YQese1IyOm5ugOAwxRo6vv8OFPZ1 c7sxhdv1TFKzt2GTe8hNvR9S+HT74PYs6/x5iQj2qwGuyFQDcHLv2I6TBddpK7t0LmSE OPjMDcYrAnABLpqV3oHj61hXY0NtYfTbgiJ29digDhgfrp0RwmwZsfujl2nNW3Kd7Xr4 aXMnv23HKLqyoded3IYp/JSUkml+n5NAtewVcGw6ZULl4kH1RSTPl87Y6iTWBp6v4r+Z Jl8i0gkRcSJkCehNKi2jlufkHCSFEgIGfpSWDp+IorDyXLOD/MaskdJHnvRMaoi5Bloo 9OdQ== X-Gm-Message-State: AOJu0YxVu6DImYkPn8NeNhvqkOtYLIk/f0VM9P6YPSp4B/z0MTvLlEiG gZgit3b7uD2noXFo+6/zVNGZk4LN2u7XuqPQDtvddBDQXnpn4KAnq1QkozUTH+/6lMA6OapSMqi yx8wD+R4= X-Gm-Gg: Acq92OG5Snj3D2ShRf1kgMjIU7r1f0bj/x+8AB06io5mc17BeaR+QUYgaGfhGv1cUeO FtVYUq8HP0yDA8DB8qvbxherp1QcwSAkRE1eZBLRctm9Fv+6U1X5j/y59SUkeCcbljMJBfq7Lh0 5VfymMPBOhKswjEyJSm9mBpQYLxMQaRX/EsLGwYvu8LK42eACHXGccVuk3HDbDc4ts+vYb9PW6U EZbgYKZYLVqYyNzrlAe4Xtf71r9jWWoIJa4Ko/MmHULj/gSY2axAWRmvVweG98Vb+fqOLSt5//R jvdM1e18fCdEHn5NL4vgV1JyKOMKzy8pFB3LZ/YSgahOCjsnCc92u8hr2mQDfxqCyEZ1om71eI7 y6/9GU9s8ifB9Cb3CBorVBjnUiQZmycWfz8k/bY/BfsNLofz2fytSpupidBs/r2+MUegiSSTI9P R4sbtaB0eBkLmXO6EOIw4ygHmebqrQ+dmI/rgkIdg= X-Received: by 2002:a17:902:e5d2:b0:2c0:cb90:1dfc with SMTP id d9443c01a7336-2c1e8219fccmr7361495ad.12.1780616944460; Thu, 04 Jun 2026 16:49:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 14/25] target/arm: Implement SCVTF, UCVTF (predicated, zeroing) Date: Thu, 4 Jun 2026 16:48:41 -0700 Message-ID: <20260604234852.573178-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.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: 1780617090477158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 34 ++++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 16 ++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 9e0945252d..936396103f 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4784,6 +4784,40 @@ TRANS_FEAT(UCVTF_sd_m, aa64_sme_or_sve, gen_gvec_fps= t_arg_zpz, TRANS_FEAT(UCVTF_dd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_ucvt_dd, a, 0, FPST_A64) =20 +TRANS_FEAT(SCVTF_hh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_scvt_hh, a, 1, FPST_A64_F16) +TRANS_FEAT(SCVTF_sh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_scvt_sh, a, 1, FPST_A64_F16) +TRANS_FEAT(SCVTF_dh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_scvt_dh, a, 1, FPST_A64_F16) + +TRANS_FEAT(SCVTF_ss_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_scvt_ss, a, 1, FPST_A64) +TRANS_FEAT(SCVTF_ds_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_scvt_ds, a, 1, FPST_A64) + +TRANS_FEAT(SCVTF_sd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_scvt_sd, a, 1, FPST_A64) +TRANS_FEAT(SCVTF_dd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_scvt_dd, a, 1, FPST_A64) + +TRANS_FEAT(UCVTF_hh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_ucvt_hh, a, 1, FPST_A64_F16) +TRANS_FEAT(UCVTF_sh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_ucvt_sh, a, 1, FPST_A64_F16) +TRANS_FEAT(UCVTF_dh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_ucvt_dh, a, 1, FPST_A64_F16) + +TRANS_FEAT(UCVTF_ss_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_ucvt_ss, a, 1, FPST_A64) +TRANS_FEAT(UCVTF_ds_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_ucvt_ds, a, 1, FPST_A64) +TRANS_FEAT(UCVTF_sd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_ucvt_sd, a, 1, FPST_A64) + +TRANS_FEAT(UCVTF_dd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_ucvt_dd, a, 1, FPST_A64) + /* *** SVE Memory - 32-bit Gather and Unsized Contiguous Group */ diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index c39d80360f..7460eee4a9 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1283,6 +1283,22 @@ UCVTF_sd_m 01100101 11 010 00 1 101 ... ..... .= .... @rd_pg_rn_e0 UCVTF_ds_m 01100101 11 010 10 1 101 ... ..... ..... @rd_pg_rn_= e0 UCVTF_dd_m 01100101 11 010 11 1 101 ... ..... ..... @rd_pg_rn_= e0 =20 +SCVTF_hh_z 01100100 01 011 10 0 110 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_sh_z 01100100 01 011 10 1 100 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_ss_z 01100100 10 011 10 1 100 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_sd_z 01100100 11 011 10 0 100 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_dh_z 01100100 01 011 10 1 110 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_ds_z 01100100 11 011 10 1 100 ... ..... ..... @rd_pg_rn_= e0 +SCVTF_dd_z 01100100 11 011 10 1 110 ... ..... ..... @rd_pg_rn_= e0 + +UCVTF_hh_z 01100100 01 011 10 0 111 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_sh_z 01100100 01 011 10 1 101 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_ss_z 01100100 10 011 10 1 101 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_sd_z 01100100 11 011 10 0 101 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_dh_z 01100100 01 011 10 1 111 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_ds_z 01100100 11 011 10 1 101 ... ..... ..... @rd_pg_rn_= e0 +UCVTF_dd_z 01100100 11 011 10 1 111 ... ..... ..... @rd_pg_rn_= e0 + ### SVE Memory - 32-bit Gather and Unsized Contiguous Group =20 # SVE load predicate register --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617185; cv=none; d=zohomail.com; s=zohoarc; b=k4tJ+TmWmsFIKu1+RymU7yRAxdsTCaBHZaPkt8CU0x7rRpPBSd1luADw112ong0v5HNKhB74GrUzDv9kqMkMSzG+eMsoFr1jUIb37o9x296MRnhmFdBikbsrDBiT+kOGMLeTj1Pc1t2Rlpk+CGCnZSdCJvQ/e9dqXvIlvmwSEJQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617185; 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=hbbg58X/kK8O9e+ZYcVUv/9JtyhK4N5Lsaw183Rioac=; b=db6khWQfSGJbv219MhnDIsbdayP8cAtfjca/hZTO3tO+6wntGpFaWtfFbJTfzJrWQF0dswuyeary2z7Cyvnw9Y3IZL+Xui3Iu+g0m2335TiwE2vo+aQf118/itF2miPtqfRL4QVccERle5lmxWE6IWMw7rRL3Wh2y532F4o1w8g= 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 1780617185744285.7638148241691; Thu, 4 Jun 2026 16:53:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoH-0006qP-FY; Thu, 04 Jun 2026 19:49: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 1wVHoD-0006lE-Ax for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:09 -0400 Received: from mail-pl1-x62b.google.com ([2607:f8b0:4864:20::62b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHoA-0007vn-M9 for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:09 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2bf77d4a4e2so13994105ad.1 for ; Thu, 04 Jun 2026 16:49:06 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616945; x=1781221745; 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; bh=hbbg58X/kK8O9e+ZYcVUv/9JtyhK4N5Lsaw183Rioac=; b=zVWu4ZCanTu/DBN7mCqayn8WbkflFzUye3hQocNOFfZyX2FqcwDpYpabpjPsfQq+N+ qMi0Wjq3FJf6WniBKF14SV+ptukUVUTapglgOk2y8C0gqiQsfE7atYjgIaaAijUPQDz7 LOk92bg1teJJ+RoXU8hxW4b9s/nkR97TPvirPGAOUTspKH7UZsKu9O51keAulpuzDSbe QCWvGZB5jt7qc1f2kD41Jc/JJnQZB5ym0oigYYYC41jmjSJrWCnVonAvrlAjghpKNgXq tMjJNMgL5PJSDSBAvy9WwcMKMIou72h9OhiBoogOwkPrDPKopN68JfXkR5RWZUbzqCR9 FeOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616945; x=1781221745; 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; bh=hbbg58X/kK8O9e+ZYcVUv/9JtyhK4N5Lsaw183Rioac=; b=FlBTlD/m0cpqG1piOjKE4+lsCVSckBhk9o44ve5UXjwoR42zTpjVqEzn2MuuOgUeE4 dzBZuJV7uTTgk3WXWy60Wa3z3nXc2uunk1sjC+CI8uKw6E4JfTmCJ12IjefyuIsNyjai lSkjuTa2mFywzXSDFgkGbbjyl0zdHZWSVbRuD6GPNpsLMNI4qCRCGmuRF88Gaf7UUg7A djoKEHC2okPPB0bHICqFGeufSpK4oKG2T5PQbKlZkVW30MA3Zo7zcjuPqBW1bZzZWoFX 07T4LGZMwIDZzglR9i7HP3k7/P/Y+FR536yZEs/oUPyypzwC4UtceZflkRereaSU3XIU vucQ== X-Gm-Message-State: AOJu0YzEgHuznQOUQnI86oxkeIBaEzH0z4iyS/j4ahBWTwXzZnxOb3lU H4u+/DF7iEyIO3FP4SgxL6QUy+q3sUsytqTtw7PklDv0jGtNt+BK5SU/+658sPxWvHZFy8C4pr0 Zec1jimA= X-Gm-Gg: Acq92OE3zoe/bdUhGDfPR9E6QnvvdjB5FW8vHFZutPsx24qkARJBiycpYJNukXLFwb7 HQreOwICi92boSszCEYSNqzIyNnsoXcJYC4cAYhZQnjSeNALEEigTJlNDApL35O0TxO0Umm2hXd E1p/xyBTBeKWD0S+pvsAt5asjyMmxQ8m+v+L/KzMRE00Dmyt5gwCZlfkXRVbiqX1o/es8Ys1v1k jmL4tvzIJCYLn8dJcYqLg115nnQ77pADTOwp1hDEa/uUCOzwDangwCSOsTw4sOjUtE55gHbovXH /sROqdONNASYV+AYKbRJ8r9fYGjNiZN0cH/6wRlIez+GXmX+tDDM7jG8hWJ9VFs7GQRb9FQW174 ux6dv+qLNJ1MjYoc1C+VePWvkeiYoEWstqQSpO9h3UkXj+8/+FIZiECxvjgrbY7tB4gtGALzNHa I0XEbV9D1otZ1CEEi8BxouRxORKTmBH198dGQdYk8= X-Received: by 2002:a17:903:1209:b0:2bc:e299:4b3f with SMTP id d9443c01a7336-2c1ec80a4eamr1322845ad.10.1780616945238; Thu, 04 Jun 2026 16:49:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 15/25] target/arm: Implement FRINT{32,64}{X,Z} Date: Thu, 4 Jun 2026 16:48:42 -0700 Message-ID: <20260604234852.573178-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::62b; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62b.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: 1780617186733158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sve-defs.h | 9 ++++++++ target/arm/tcg/sve_helper.c | 5 +++++ target/arm/tcg/translate-sve.c | 36 ++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 20 ++++++++++++++++++ 4 files changed, 70 insertions(+) diff --git a/target/arm/tcg/helper-sve-defs.h b/target/arm/tcg/helper-sve-d= efs.h index f97c31763f..de2254bb19 100644 --- a/target/arm/tcg/helper-sve-defs.h +++ b/target/arm/tcg/helper-sve-defs.h @@ -1441,6 +1441,15 @@ DEF_HELPER_FLAGS_5(sve_frintx_s, TCG_CALL_NO_RWG, DEF_HELPER_FLAGS_5(sve_frintx_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst, i32) =20 +DEF_HELPER_FLAGS_5(sve2p2_frint32_s, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, fpst, i32) +DEF_HELPER_FLAGS_5(sve2p2_frint64_s, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, fpst, i32) +DEF_HELPER_FLAGS_5(sve2p2_frint32_d, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, fpst, i32) +DEF_HELPER_FLAGS_5(sve2p2_frint64_d, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, fpst, i32) + DEF_HELPER_FLAGS_5(sve_frecpx_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_5(sve_frecpx_s, TCG_CALL_NO_RWG, diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index 847c49d784..fa4bf02278 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -5017,6 +5017,11 @@ DO_ZPZ_FP(sve_frintx_h, uint16_t, H1_2, float16_roun= d_to_int) DO_ZPZ_FP(sve_frintx_s, uint32_t, H1_4, float32_round_to_int) DO_ZPZ_FP(sve_frintx_d, uint64_t, H1_8, float64_round_to_int) =20 +DO_ZPZ_FP(sve2p2_frint32_s, uint32_t, H1_4, helper_frint32_s) +DO_ZPZ_FP(sve2p2_frint64_s, uint32_t, H1_4, helper_frint64_s) +DO_ZPZ_FP(sve2p2_frint32_d, uint64_t, H1_8, helper_frint32_d) +DO_ZPZ_FP(sve2p2_frint64_d, uint64_t, H1_8, helper_frint64_d) + DO_ZPZ_FP(sve_frecpx_h, uint16_t, H1_2, helper_frecpx_f16) DO_ZPZ_FP(sve_frecpx_s, uint32_t, H1_4, helper_frecpx_f32) DO_ZPZ_FP(sve_frecpx_d, uint64_t, H1_8, helper_frecpx_f64) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 936396103f..842ef96221 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4730,6 +4730,42 @@ TRANS_FEAT(FRINTZ_z, aa64_sme2p2_or_sve2p2, do_frint= _mode, a, TRANS_FEAT(FRINTA_z, aa64_sme2p2_or_sve2p2, do_frint_mode, a, FPROUNDING_TIEAWAY, 1, frint_fns[a->esz]) =20 +TRANS_FEAT(FRINT32X_s_m, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2p2_frint32_s, a, 0, FPST_A64) +TRANS_FEAT(FRINT32X_d_m, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2p2_frint32_d, a, 0, FPST_A64) +TRANS_FEAT(FRINT64X_s_m, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2p2_frint64_s, a, 0, FPST_A64) +TRANS_FEAT(FRINT64X_d_m, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2p2_frint64_d, a, 0, FPST_A64) + +TRANS_FEAT(FRINT32X_s_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2p2_frint32_s, a, 1, FPST_A64) +TRANS_FEAT(FRINT32X_d_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2p2_frint32_d, a, 1, FPST_A64) +TRANS_FEAT(FRINT64X_s_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2p2_frint64_s, a, 1, FPST_A64) +TRANS_FEAT(FRINT64X_d_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2p2_frint64_d, a, 1, FPST_A64) + +TRANS_FEAT(FRINT32Z_s_m, aa64_sme2p2_or_sve2p2, do_frint_mode, + a, FPROUNDING_ZERO, 0, gen_helper_sve2p2_frint32_s) +TRANS_FEAT(FRINT32Z_d_m, aa64_sme2p2_or_sve2p2, do_frint_mode, + a, FPROUNDING_ZERO, 0, gen_helper_sve2p2_frint32_d) +TRANS_FEAT(FRINT64Z_s_m, aa64_sme2p2_or_sve2p2, do_frint_mode, + a, FPROUNDING_ZERO, 0, gen_helper_sve2p2_frint64_s) +TRANS_FEAT(FRINT64Z_d_m, aa64_sme2p2_or_sve2p2, do_frint_mode, + a, FPROUNDING_ZERO, 0, gen_helper_sve2p2_frint64_d) + +TRANS_FEAT(FRINT32Z_s_z, aa64_sme2p2_or_sve2p2, do_frint_mode, + a, FPROUNDING_ZERO, 1, gen_helper_sve2p2_frint32_s) +TRANS_FEAT(FRINT32Z_d_z, aa64_sme2p2_or_sve2p2, do_frint_mode, + a, FPROUNDING_ZERO, 1, gen_helper_sve2p2_frint32_d) +TRANS_FEAT(FRINT64Z_s_z, aa64_sme2p2_or_sve2p2, do_frint_mode, + a, FPROUNDING_ZERO, 1, gen_helper_sve2p2_frint64_s) +TRANS_FEAT(FRINT64Z_d_z, aa64_sme2p2_or_sve2p2, do_frint_mode, + a, FPROUNDING_ZERO, 1, gen_helper_sve2p2_frint64_d) + static gen_helper_gvec_3_ptr * const frecpx_fns[] =3D { NULL, gen_helper_sve_frecpx_h, gen_helper_sve_frecpx_s, gen_helper_sve_frecpx_d, diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 7460eee4a9..5c814c7769 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1259,6 +1259,26 @@ FRINTA_z 01100100 .. 011 001 100 ... ..... ..= ... @rd_pg_rn FRINTX_z 01100100 .. 011 001 110 ... ..... ..... @rd_pg_rn FRINTI_z 01100100 .. 011 001 111 ... ..... ..... @rd_pg_rn =20 +FRINT32X_s_m 01100101 00 010 001 101 ... ..... ..... @rd_pg_rn_= e0 +FRINT32X_d_m 01100101 00 010 011 101 ... ..... ..... @rd_pg_rn_= e0 +FRINT64X_s_m 01100101 00 010 101 101 ... ..... ..... @rd_pg_rn_= e0 +FRINT64X_d_m 01100101 00 010 111 101 ... ..... ..... @rd_pg_rn_= e0 + +FRINT32X_s_z 01100100 00 011 100 101 ... ..... ..... @rd_pg_rn_= e0 +FRINT32X_d_z 01100100 00 011 100 111 ... ..... ..... @rd_pg_rn_= e0 +FRINT64X_s_z 01100100 00 011 101 101 ... ..... ..... @rd_pg_rn_= e0 +FRINT64X_d_z 01100100 00 011 101 111 ... ..... ..... @rd_pg_rn_= e0 + +FRINT32Z_s_m 01100101 00 010 000 101 ... ..... ..... @rd_pg_rn_= e0 +FRINT32Z_d_m 01100101 00 010 010 101 ... ..... ..... @rd_pg_rn_= e0 +FRINT64Z_s_m 01100101 00 010 100 101 ... ..... ..... @rd_pg_rn_= e0 +FRINT64Z_d_m 01100101 00 010 110 101 ... ..... ..... @rd_pg_rn_= e0 + +FRINT32Z_s_z 01100100 00 011 100 100 ... ..... ..... @rd_pg_rn_= e0 +FRINT32Z_d_z 01100100 00 011 100 110 ... ..... ..... @rd_pg_rn_= e0 +FRINT64Z_s_z 01100100 00 011 101 100 ... ..... ..... @rd_pg_rn_= e0 +FRINT64Z_d_z 01100100 00 011 101 110 ... ..... ..... @rd_pg_rn_= e0 + # SVE floating-point unary operations FRECPX_m 01100101 .. 001 100 101 ... ..... ..... @rd_pg_rn FSQRT_m 01100101 .. 001 101 101 ... ..... ..... @rd_pg_rn --=20 2.43.0 From nobody Sun Jun 7 22:21:00 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780617188890725.4523600044425; Thu, 4 Jun 2026 16:53:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoH-0006pt-0v; Thu, 04 Jun 2026 19:49: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 1wVHoE-0006mA-3K for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:10 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHoB-0007wR-A2 for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:09 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2c0a5354da1so10500785ad.0 for ; Thu, 04 Jun 2026 16:49:06 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616946; x=1781221746; 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; bh=W6nA2YiQhG++AMTvXj+mmEfp459VqpwutOWbksti+JQ=; b=F/RaKhLtt9Fq0PIR56AArkzzKiUKE9kGDWbHeDQSUXEZ6AEOv4RegZyMdKLsqJFBx6 0CcMSie7TxaKU0rmqphFJ8iKzELrWAVnUXXhp9PeO0yXwFhrAvYGcZKHZgZQr+jALaE1 fjFC4RcURjwL7F8PjIk6DZC4QsXw7tUIjfHq3Tga+52k8S4sju34E5FQBqMTb17+MCXh YPTE/uegp8GH2mk416xuQZDQfePL57gUvmyIvR0eAqd0ll9PEUOFLMBqRi6zrwvGVlMa iYIE61glw13pggiuT1uGalrqqO8yXQcZHIi9ainkFNNovj8UZziLPRm3Q4biOmtQSqYz JlZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616946; x=1781221746; 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; bh=W6nA2YiQhG++AMTvXj+mmEfp459VqpwutOWbksti+JQ=; b=I9bnvi2qlyrsMSPoap/uEMChOmeMXtr2hIBLpZebmto3IQooj5binVDXoXuo1ueOAa xi2BSzbFJk+7OePSZAicTsm4gqRqXHAKG8sqwUjj4888P8Clk0bDbw3qA/0MsSnbL5rw O5T8R79to30e6tHee+Ki+kzRFenWlqbzafgrHVVp/G6/mZzUmIdoeC+AdlJyGQF3sb1j 4DjW9b/xyBbyPdt9xPiXRtm7LM8yuLUnm6xGZZBfhxknNEA2eUUmejs+XnbTX+MUrui7 uQVPT+ijEQ/DmTh3Yx52iTblQ3DMz5JEKv1zPQb5p/8IERWUnS/JMZ9OOvDhtd3+gijt V/hQ== X-Gm-Message-State: AOJu0YxD6cfS/fZcYUETy/FJGdp+8Pg7QjV5PP1Uy9Kt5FrhOXc/R6cD w8LN86GmMnU5WUjmrSGdzwVwISrELZ0U/Gpya7v5Gqz8w3fWpiebFhwcFx+6syMeNryTrABy/cL cza8ML6A= X-Gm-Gg: Acq92OG/c0uSJ7VHuMSHKI+Abe63MDvVpyOtLS0KxmCG8ByU/09k0SCxmCwa5h7hKiX 5RPVxln/J3eXelmu5Dn+SQrAKpH7yXV1LINSZOKMGZpnPMIB5i8EgAuyeOkef3D6gD/q8PFcTex uIKNMtvu8zj6tQ5ZFjrVPMdWtzcMagBExdQCA3mDEkqtZ2kMz45PdYxKkBEnQoBcIhNMOeo2e+9 CgSYkhmWuVF9jlUJcA3A6nexpX16tPSGMLT+z5eGqb2v7cIUBV+RxMTfypcIdxP1zli4/mT7B8L zVJ/SXL5c/gLI95JpwGrvv/kaS8/hQw0uoxHHJvclTi7/ohDSPcGECW1DyV/dvxIuEOFaCbUMh2 2lru9U1r1JJWRjgkx7HLuc83Rav0gZTIsvmiA/XWcSexC8YjwkLZY0SJsPrasiqtuH1lJoH0STZ 7LdbwBssGONP5gA12LfmmsRRzMJYY1nNzrrfRED04= X-Received: by 2002:a17:902:c403:b0:2c0:c262:b924 with SMTP id d9443c01a7336-2c1ec920ec1mr1487065ad.13.1780616945832; Thu, 04 Jun 2026 16:49:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 16/25] target/arm: Enable zeroing in DO_FCVT{N, L}T macros in sve_helper.c Date: Thu, 4 Jun 2026 16:48:43 -0700 Message-ID: <20260604234852.573178-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.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: fail (Header signature does not verify) X-ZM-MESSAGEID: 1780617190784158500 Content-Type: text/plain; charset="utf-8" Use the low bit of simd_data to hold a 'zeroing' bit. The simd_data field is currently unused and always 0. Signed-off-by: Richard Henderson --- target/arm/tcg/sve_helper.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index fa4bf02278..c2b3162084 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -8595,6 +8595,7 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, = \ float_status *status, uint32_t desc) = \ { = \ intptr_t i =3D simd_oprsz(desc); = \ + bool zeroing =3D simd_data(desc) & 1; = \ uint64_t *g =3D vg; = \ do { = \ uint64_t pg =3D g[(i - 1) >> 6]; = \ @@ -8603,6 +8604,8 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, = \ if (likely((pg >> (i & 63)) & 1)) { = \ TYPEW nn =3D *(TYPEW *)(vn + HW(i)); = \ *(TYPEN *)(vd + HN(i + sizeof(TYPEN))) =3D OP(nn, status);= \ + } else if (zeroing) { = \ + *(TYPEN *)(vd + HN(i + sizeof(TYPEN))) =3D 0; = \ } = \ } while (i & 63); = \ } while (i !=3D 0); = \ @@ -8617,6 +8620,7 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, = \ float_status *status, uint32_t desc) = \ { = \ intptr_t i =3D simd_oprsz(desc); = \ + bool zeroing =3D simd_data(desc) & 1; = \ uint64_t *g =3D vg; = \ do { = \ uint64_t pg =3D g[(i - 1) >> 6]; = \ @@ -8625,6 +8629,8 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, = \ if (likely((pg >> (i & 63)) & 1)) { = \ TYPEN nn =3D *(TYPEN *)(vn + HN(i + sizeof(TYPEN))); = \ *(TYPEW *)(vd + HW(i)) =3D OP(nn, status); = \ + } else if (zeroing) { = \ + *(TYPEW *)(vd + HW(i)) =3D 0; = \ } = \ } while (i & 63); = \ } while (i !=3D 0); = \ --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617162; cv=none; d=zohomail.com; s=zohoarc; b=PkdZ3tqd/Ke2fRfx2SnKUUmeQiBWyiXtvx0HrsZpccP7yP11AvREWM2lQ3/nVIcdTzcGL3ha1q9t6EJmFivWIrQNhQSg1RLbaP3HWsI/+MuBEy6Or8dpGR4SSoWnETSC/h+qsRFULPUw2W5AqluQoT5f5EaGEkQlZtpPKz6fFDs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617162; 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=vwe1BKhTDm6Lb2c1Tvgh4n00uncLiVqYDlZzQyMqaaU=; b=cepR0ztGRdS4slXIVXoRhebD+gdDg6kinBkReVn3SSzAqkbXga099CCi5MHZ0xkUHm1gnbM6PWBnY5njfIaXUFI8vvGdU7uOsW6Mj4+V2KEkpau3XQFyIqZ0Gw50P6hJQYmvrXNhizJ217KQHjSPD+ZC7I88tONjduHJojwHXkc= 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 1780617162674867.8721151589856; Thu, 4 Jun 2026 16:52:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoI-0006sN-Pb; Thu, 04 Jun 2026 19:49:14 -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 1wVHoE-0006mR-DJ for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:10 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHoB-0007wq-T5 for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:10 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2c0bb4a94b8so10408655ad.2 for ; Thu, 04 Jun 2026 16:49:07 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616946; x=1781221746; 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; bh=vwe1BKhTDm6Lb2c1Tvgh4n00uncLiVqYDlZzQyMqaaU=; b=CxHfxiG489zFpB7IAxQ6QyJBm8+0NAqrsIc4RczyxNYvBdoU4dQfzZ1qI9SAobw/lF Qt/CE1J5Z8cXJDk6TWZ0/AKJ8ZIrl5DROJS3FSmEf752KFHIGOxQAsOpFDsU15Gv/bUZ KR4JTe2NfwfU/l2EmV0Z0LelEOAGayVJYPwgjx4cpwHz4GkV0/smy6BciOda5PqltWg8 cTRlB8P2xSqzeAFbq2+dRq0Gj/fM33MNMS2trfZb0e8T3nCg6F2WeBIJykZQRZaVMprz SGZjN9XDYinlfs7rslhIVNr2Q+K7wyfDxB82LYamvB/NWi9nG68U21AG/P2P3W8Z5k82 vusg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616946; x=1781221746; 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; bh=vwe1BKhTDm6Lb2c1Tvgh4n00uncLiVqYDlZzQyMqaaU=; b=JzkwfslPMR+f7/yRSh75gsTxYpkvsO5FC+rpRKRMuNdXRAikYW/YaDRBWTfoGi1ufq n/fRQLUVmG8MwFFMoZTzAUhIVRSxxxPXWeYlZDU3JLnjzj+8M/SnVwqXNF+N9YEwAYFz IiONLlW/WgtF4M1ZnF+b8SbWTwz/2tp6PL4hMBTeIIc5vwHCnf05ylEQ7oqOCiUfMheQ Vg5suLQyF8O+9gPUkq6lNM5+YEEZfQ6yu7j+CJIOBRpP1AYF21RBgtX3xOvpY64m9RMm LaoYZywOOfwu0N0z2xsDABNNm9/SHKu4EnKNyArlzFbG8eNKS63EoDUDmEi2DQacqgYj 75lg== X-Gm-Message-State: AOJu0Yyo5DL2YltEeA68+CR606oTOddEiJhnvcH/Qfa/Onnl4vSkqybL h9EggPsVHdlnVK1ZrKc2aNBxEVIQuaW6cdtGsH8xGoaNr5L7BTS5N091mJjctHgBmkVpZOx2qJe nEp9MiKU= X-Gm-Gg: Acq92OGMA2iXo2DbFVsXnpEZMyEboKoTnyH96aVHTSN0oWE5jpUxrTkHghf9N/NuOyJ cC3gMS37bX0RAnHJl6BLh309xKAlZs5x1Qua2jWFn9vtT7Gbt6z1HEemUNp9AEERJJRMmK7fTO0 SPqoYXtjTGPWP5+LEzNDAbt38IW8Ky4UCPD0qttgWACXHoLC+HiqtNNsO0fiRdIytEL0T7Yb0Mo kyvkpOJpDBjytV2ZZcr7pNsT0xUE35oohx/tagSyoJjp10doGZEyOtNJ9s5ViZSejrBBsY7XGOo JO/VJX0o2gE9p4ppU/dCPR+Wg8k/+ewZgnKjfMLuoPOensVjAJ5a8AKi9mmDbrkpn/HhWDajj2Z aaM8UJmXhvIzYtPKWlXBgwEAaqbnxYuQUqdkLctFvitdAPKo1tgWq5SIR8q8YxbHzg4GA2IG7XI fsLRqUsm6T42ExYMnwFwhPV4mejm8td1Aj75Ahvuk= X-Received: by 2002:a17:903:240f:b0:2bc:db35:96c7 with SMTP id d9443c01a7336-2c1e822121cmr6643185ad.28.1780616946463; Thu, 04 Jun 2026 16:49:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 17/25] target/arm: Implement SVE floating-point convert (top, predicated, zeroing) Date: Thu, 4 Jun 2026 16:48:44 -0700 Message-ID: <20260604234852.573178-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.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: 1780617164667158500 Content-Type: text/plain; charset="utf-8" This includes FCVTXNT, BFCVTNT, FCVTNT, FCVTLT. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 13 +++++++++++++ target/arm/tcg/sve.decode | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 842ef96221..841f625c25 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8097,17 +8097,28 @@ static bool trans_RAX1(DisasContext *s, arg_RAX1 *a) =20 TRANS_FEAT(FCVTNT_sh_m, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, gen_helper_sve2_fcvtnt_sh, a, 0, FPST_A64) +TRANS_FEAT(FCVTNT_sh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2_fcvtnt_sh, a, 1, FPST_A64) TRANS_FEAT(FCVTNT_ds_m, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, gen_helper_sve2_fcvtnt_ds, a, 0, FPST_A64) +TRANS_FEAT(FCVTNT_ds_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2_fcvtnt_ds, a, 1, FPST_A64) =20 TRANS_FEAT(BFCVTNT_m, aa64_sme_sve_bf16, gen_gvec_fpst_arg_zpz, gen_helper_sve_bfcvtnt, a, 0, s->fpcr_ah ? FPST_AH : FPST_A64) +TRANS_FEAT(BFCVTNT_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_bfcvtnt, a, 1, + s->fpcr_ah ? FPST_AH : FPST_A64) =20 TRANS_FEAT(FCVTLT_hs_m, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, gen_helper_sve2_fcvtlt_hs, a, 0, FPST_A64_F16) +TRANS_FEAT(FCVTLT_hs_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2_fcvtlt_hs, a, 1, FPST_A64_F16) TRANS_FEAT(FCVTLT_sd_m, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, gen_helper_sve2_fcvtlt_sd, a, 0, FPST_A64) +TRANS_FEAT(FCVTLT_sd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve2_fcvtlt_sd, a, 1, FPST_A64) =20 TRANS_FEAT(FCVTX_ds_m, aa64_sme_or_sve2, do_frint_mode, a, FPROUNDING_ODD, 0, gen_helper_sve_fcvt_ds) @@ -8116,6 +8127,8 @@ TRANS_FEAT(FCVTX_ds_z, aa64_sme2p2_or_sve2p2, do_frin= t_mode, a, =20 TRANS_FEAT(FCVTXNT_ds_m, aa64_sme_or_sve2, do_frint_mode, a, FPROUNDING_ODD, 0, gen_helper_sve2_fcvtnt_ds) +TRANS_FEAT(FCVTXNT_ds_z, aa64_sme2p2_or_sve2p2, do_frint_mode, a, + FPROUNDING_ODD, 1, gen_helper_sve2_fcvtnt_ds) =20 static gen_helper_gvec_3_ptr * const flogb_fns[] =3D { NULL, gen_helper_flogb_h, diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 5c814c7769..673cbaae57 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1941,6 +1941,13 @@ FCVTLT_hs_m 01100100 10 0010 01 101 ... ..... ..= ... @rd_pg_rn_e0 FCVTNT_ds_m 01100100 11 0010 10 101 ... ..... ..... @rd_pg_rn_e0 FCVTLT_sd_m 01100100 11 0010 11 101 ... ..... ..... @rd_pg_rn_e0 =20 +FCVTXNT_ds_z 01100100 00 0000 10 101 ... ..... ..... @rd_pg_rn_e0 +FCVTNT_sh_z 01100100 10 0000 00 101 ... ..... ..... @rd_pg_rn_e0 +FCVTNT_ds_z 01100100 11 0000 10 101 ... ..... ..... @rd_pg_rn_e0 +BFCVTNT_z 01100100 10 0000 10 101 ... ..... ..... @rd_pg_rn_e0 +FCVTLT_hs_z 01100100 10 0000 01 101 ... ..... ..... @rd_pg_rn_e0 +FCVTLT_sd_z 01100100 11 0000 11 101 ... ..... ..... @rd_pg_rn_e0 + ### SVE2 floating-point convert to integer FLOGB_m 01100101 00 011 esz:2 0101 pg:3 rn:5 rd:5 &rpr_esz =20 --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617179; cv=none; d=zohomail.com; s=zohoarc; b=ZN/LI/jbrZdB9n1Ihl8gzLnk8z1GBx8jXlx+s8zG/DFbzKiI/rBTdBQMZU9iCY3bSVDFhBfW18/WTqCm5D+V4mmtIIl0BN42R/ENvnkD74cv0NjilK7xXqrXhvlCQWp4yGKBZDUU1mL6ig18hLL3W1II+4roFY9gSydhoU0enAQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617179; 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=6+w/sKT5/KeL0RQ3Jm1sYzGDykuGbRQbxTFr+VTCZiM=; b=fSaI8Q83GnUOePnTCf/u30VQ6SlduEm3hhrAjrlB1KL352mKzflsa4CCrMWlA38SYxogzKupjn0+RYKBxSMeVYRUbxDDj14khXsDmbmALpqNfxCINuS+Oh8RijwV/7LurRgL6Xa5Kac2CngF16gAqN/0IibHaLjIGIKIH6QAxZ4= 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 1780617179197482.22741738462605; Thu, 4 Jun 2026 16:52:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoI-0006sO-Qe; Thu, 04 Jun 2026 19:49:14 -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 1wVHoF-0006ni-97 for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:11 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHoC-0007xK-Dx for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:10 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2c0c2c7d45eso12274785ad.1 for ; Thu, 04 Jun 2026 16:49:08 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616947; x=1781221747; 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; bh=6+w/sKT5/KeL0RQ3Jm1sYzGDykuGbRQbxTFr+VTCZiM=; b=NxIDXPNriCpDjKtvlrzCIdzCggzo3ZBFpmrDFgpqkXYWgg5EBpJYSfrc7Jey4XZs8i FfWgkeW2Xs7PxoREK0mAgXRgUnFe3B6dS0KZLVUrVsq7IaBTroyZguyCvooQd+7fPWoa MEKeH41P0lvFaU26aHMhYi65QpxMJMpvCzf9zTl+w8YI4X45unmSMSMzOWLNH3WpVSml CZ4UnNSSlEgNlPDnT9fZ627FBrvfxjtIg4NbrnAjJeWAhNWvFFsvsZnn2ijlv84C1UZO eWBy6mwIxETRktnvzJouTKG13WRQHcPZO2FJeA2xa0mfvHZGeu+jt+lYF7miiNIg94vm UCRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616947; x=1781221747; 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; bh=6+w/sKT5/KeL0RQ3Jm1sYzGDykuGbRQbxTFr+VTCZiM=; b=MGHdWPQu6RG3UMXa86Y8iZV+f2o/PX8bROdYy/tKP9h5PYEhDxskdUT86dUGNUKUMi KQVpUzHKKI9IN4B66YJSSKEU+HzuP90yUNQvzdJchXIMOJIlDNoHJgmNUnL966Rw+350 0nLE1qtOnKdSB3qmYjxbwcV/pkNP3wvIPYMKsu5hYp77M7fLpZqMfkgfV/h1QSCBJjAX 2mL/5ze0V0HhqSb9z/RlRbeOV0gdNGt0sgWni1LN2/DXs49VTsd0uzLfuMrKbsoaclLc 5ZIrNOtlHwOgVPKvyWI2wvauIdvCViRAiFEBtv0OAbbUK0/Ak43K38gF9lJnbQ+E7xLQ Vipg== X-Gm-Message-State: AOJu0Yx6pqz/DXZyJbEXca73g1+fgv+p907PhnMkNcGcxldw9oay1HyF 5Ri5heJk9oo7Ym4aAyvUcajPR14r6JDroKAF/1obYAzzhyXeOPrFhH7j6J7biUYyWD80OaibJm4 fgxrhnIk= X-Gm-Gg: Acq92OHzQkTxFyZxB3xCPtQJUH24kjko8dOoL9dcZs34VdRAMUw+WS2v1mnsD6GoqTU Y5F02g7VwK6tJl+g0SyuAkOIZDbkuDOuCGn/9EV1TkUJvPpSHE1QqygqHeaR2edljvDYf/WVu+1 BWNcz2PtUFr8UBbK0Fwk0GZYfWVrIzkD31p3skvn8UkuCM6E6h2DHvPxPSkLtm3o2WfQAlfTfbK PzDP9CPkJ/mBifDY28sWccsGlNM+8w9a9EVdfWyHwGiZHHAWE1433sDwPZ3fNPbH5uI5JGidLtF hV4WYPmeNrYQWTp/34WnfAushvwarOI6nVXibQYgu3uU81ZCCyqquEMQf8L9Zeg+USQ016vhA2R tcM6AfZNB0iHbO69+ZXMC4W1QaM4fiAxUrvYX2BXqRdqOgdFNfavUiccpV8aRkXtXFtHn1Scyqd +HenYi2fJ92czLwRrqzOTKIcmgxDgUSLOYhBVvenV43bFtkq+N3g== X-Received: by 2002:a17:903:90f:b0:2c1:1a22:7c43 with SMTP id d9443c01a7336-2c1e8495360mr7219615ad.24.1780616947081; Thu, 04 Jun 2026 16:49:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 18/25] target/arm: Implement floating-point log and convert to integer (zeroing) Date: Thu, 4 Jun 2026 16:48:45 -0700 Message-ID: <20260604234852.573178-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.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: 1780617179832154100 Content-Type: text/plain; charset="utf-8" This is FLOGB, FCVTZS, FCVTZU. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 37 ++++++++++++++++++++++++++++++++-- target/arm/tcg/sve.decode | 16 +++++++++++++++ 2 files changed, 51 insertions(+), 2 deletions(-) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 841f625c25..315ebe82f9 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4654,6 +4654,37 @@ TRANS_FEAT(FCVTZS_dd_m, aa64_sme_or_sve, gen_gvec_fp= st_arg_zpz, TRANS_FEAT(FCVTZU_dd_m, aa64_sme_or_sve, gen_gvec_fpst_arg_zpz, gen_helper_sve_fcvtzu_dd, a, 0, FPST_A64) =20 +TRANS_FEAT(FCVTZS_hh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzs_hh, a, 1, FPST_A64_F16) +TRANS_FEAT(FCVTZU_hh_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzu_hh, a, 1, FPST_A64_F16) +TRANS_FEAT(FCVTZS_hs_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzs_hs, a, 1, FPST_A64_F16) +TRANS_FEAT(FCVTZU_hs_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzu_hs, a, 1, FPST_A64_F16) +TRANS_FEAT(FCVTZS_hd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzs_hd, a, 1, FPST_A64_F16) +TRANS_FEAT(FCVTZU_hd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzu_hd, a, 1, FPST_A64_F16) + +TRANS_FEAT(FCVTZS_ss_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzs_ss, a, 1, FPST_A64) +TRANS_FEAT(FCVTZU_ss_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzu_ss, a, 1, FPST_A64) +TRANS_FEAT(FCVTZS_sd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzs_sd, a, 1, FPST_A64) +TRANS_FEAT(FCVTZU_sd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzu_sd, a, 1, FPST_A64) +TRANS_FEAT(FCVTZS_ds_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzs_ds, a, 1, FPST_A64) +TRANS_FEAT(FCVTZU_ds_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzu_ds, a, 1, FPST_A64) + +TRANS_FEAT(FCVTZS_dd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzs_dd, a, 1, FPST_A64) +TRANS_FEAT(FCVTZU_dd_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + gen_helper_sve_fcvtzu_dd, a, 1, FPST_A64) + static gen_helper_gvec_3_ptr * const frint_fns[] =3D { NULL, gen_helper_sve_frint_h, @@ -8134,8 +8165,10 @@ static gen_helper_gvec_3_ptr * const flogb_fns[] =3D= { NULL, gen_helper_flogb_h, gen_helper_flogb_s, gen_helper_flogb_d }; -TRANS_FEAT(FLOGB_m, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, flogb_fns[a->= esz], - a, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64) +TRANS_FEAT(FLOGB_m, aa64_sme_or_sve2, gen_gvec_fpst_arg_zpz, + flogb_fns[a->esz], a, 0, a->esz =3D=3D MO_16 ? FPST_A64_F16 : F= PST_A64) +TRANS_FEAT(FLOGB_z, aa64_sme2p2_or_sve2p2, gen_gvec_fpst_arg_zpz, + flogb_fns[a->esz], a, 1, a->esz =3D=3D MO_16 ? FPST_A64_F16 : F= PST_A64) =20 static bool do_FMLAL_zzzw(DisasContext *s, arg_rrrr_esz *a, bool sub, bool= sel) { diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 673cbaae57..2795c2ec7f 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1242,6 +1242,21 @@ FCVTZU_sd_m 01100101 11 011 10 1 101 ... ..... .= .... @rd_pg_rn_e0 FCVTZS_dd_m 01100101 11 011 11 0 101 ... ..... ..... @rd_pg_rn_= e0 FCVTZU_dd_m 01100101 11 011 11 1 101 ... ..... ..... @rd_pg_rn_= e0 =20 +FCVTZS_hh_z 01100100 01 011 11 0 110 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_hh_z 01100100 01 011 11 0 111 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_hs_z 01100100 01 011 11 1 100 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_hs_z 01100100 01 011 11 1 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_hd_z 01100100 01 011 11 1 110 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_hd_z 01100100 01 011 11 1 111 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_ss_z 01100100 10 011 11 1 100 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_ss_z 01100100 10 011 11 1 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_sd_z 01100100 11 011 11 1 100 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_sd_z 01100100 11 011 11 1 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_ds_z 01100100 11 011 11 0 100 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_ds_z 01100100 11 011 11 0 101 ... ..... ..... @rd_pg_rn_= e0 +FCVTZS_dd_z 01100100 11 011 11 1 110 ... ..... ..... @rd_pg_rn_= e0 +FCVTZU_dd_z 01100100 11 011 11 1 111 ... ..... ..... @rd_pg_rn_= e0 + # SVE floating-point round to integral value FRINTN_m 01100101 .. 000 000 101 ... ..... ..... @rd_pg_rn FRINTP_m 01100101 .. 000 001 101 ... ..... ..... @rd_pg_rn @@ -1950,6 +1965,7 @@ FCVTLT_sd_z 01100100 11 0000 11 101 ... ..... ...= .. @rd_pg_rn_e0 =20 ### SVE2 floating-point convert to integer FLOGB_m 01100101 00 011 esz:2 0101 pg:3 rn:5 rd:5 &rpr_esz +FLOGB_z 01100100 00 011 1101 esz:2 pg:3 rn:5 rd:5 &rpr_esz =20 ### SVE2 floating-point multiply-add long (vectors) FMLALB_zzzw 01100100 10 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617089; cv=none; d=zohomail.com; s=zohoarc; b=UNKDpgHkYSLrh5Ia5vRwuU9K31GrNbUTWP32kBaJUGupdry/U0+j3T7GAezgL4Qe3AETgu89hIkg6QMCfpZcCx6Wi5BPR/E+n/2WGRXd0NMVTKXBFuaaRcorff/ieCzl7CafI1fFmG6ENfnlg7L3PZLdath6QXDrLziYqMFM0Ec= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617089; 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=0r7wpsbVgy960OZdgGRejoA9UrlzPFOcs7JjOtmCmrI=; b=ANXNDVl8slJQZd9NyN1lIrL3wxqwN3TA7nTV83Gifdm6wbEHic9OT32LNezVVHpbNU141K1M73VYjJYIr6qfd4mYzcWM3LEqdiHpN4J3GCE4CxlP0miPCg0bcMsj44o2p/iPYVvYI+u8iJ4hCWz6qrgFzcRYZWHLrDnqPB7ELJY= 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 178061708997839.926288101520186; Thu, 4 Jun 2026 16:51:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoJ-0006tJ-9V; Thu, 04 Jun 2026 19:49:15 -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 1wVHoF-0006or-RP for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:11 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHoD-0007xa-2m for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:11 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2c0bd02d97eso14960745ad.2 for ; Thu, 04 Jun 2026 16:49:08 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616948; x=1781221748; 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; bh=0r7wpsbVgy960OZdgGRejoA9UrlzPFOcs7JjOtmCmrI=; b=AQ2f2lDMh7CHUyy5mShWX2AA+MMApO3yT5FKjQrizYxS6ZXC77WIczfrzCFmNvThcY K0FLShBCjYQ5Z02a5keRyJTJhV3XImFRWFd9rnxUjP0yFqUvJy0PWpnQFy2tRxZWZRuR +SQ2oH/XbonpfEZ5B+JPUYXAAPHrS87SXqRPd2Q1C1ELU2gFiKrztIQETFrKQ0++h67g qlNPKnzfm1UGTM/Ac/aAuBMNZotQ7gzFDXjY2WWU0PZ38WaOyrg4drHi4Pm0IDN9pKAR ZrA7kZoWmO+Sfq8DdpB00vJyWxGdNfzFsnTcW6iukgvMR8YJa6SwFEgACHuqeq/K0Sj1 nJUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616948; x=1781221748; 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; bh=0r7wpsbVgy960OZdgGRejoA9UrlzPFOcs7JjOtmCmrI=; b=HYLjX3uThPClOBfmWelL40e7pfuoHIVkTc56wcGmQKrnBjybUr1Xa8sx8Db46/q0Mf 0QviKz/0w11GJLDtOq6OvA29LW77xMf8YPflMjMoKMKX1ezl2eSV94Xflr8y+GqgTjml fk+LSpHyJlp2F9Xm2nY6zA83q1sC8QhHM8as/VXvCAqz2/OkKpKa1JqwtrIiDKGcSfqU fuolg4b2gVKLODUFGAOAi51Yr+yzQGZsOaafBeR/xxHzEZYy+rEQ10kMdHn5YTKVLPbx 1E4GDXOLQ6P/MVMSD5aTw0qU9+9Gnv+mrR3t/SaIwaIMXyC71d28NMjITGaOGC99UO5S jfDw== X-Gm-Message-State: AOJu0YztxAEaZUbL1Vmu/HYwGeOzZnKouE+lomUR0gzuhYuYi91LD2SC 9kn9VqgvYcShc0EDhJHdMmKQLzxCW0cpYoFtrQQ+XIyidY8g4MQ2CLq4k/tX0jg4w1ElThs+RnY b8jpvU4c= X-Gm-Gg: Acq92OGc3/prjdP9uIl+ZzlrzBM8VPY6tqjBDM79GpYK+Eo1aYLtRQQehAHKNrVjEFy XdLTwNyzggi3JEJILIAmNUJy8CnsLEbkdGGB91nSOi255estO3ytXGHJeyj1vJL2gqAY+YVLXWo pzLiaN94G4fnr1ZZNiYzjJUzFy0TnXlA04qfsSyV45TTjaTG2G7Wbhlboe0EreabRCYYgQuW/RX ruZ5e8h48MgzujzpXFFQTToT+6bIE9hXsl/60RargbfjcxNRZ6hDpHK/LEJnDqVdVFGuGynEJU4 IjU07d04Q34XQMnTCpDDsxXeKKtKSsdKAYun0ILa7tU1o5tnDOo9rKsVBXhvPjKF3iTk/TNUh4n e/K41Bxrc7UruZu38tpzjzu0ViJpfWSjk0V+iEuH9adaYg7ZZ+Iixc03r2qvbYDrFksJZRlJaMB YBC3mmBaiXakdKos6l4MK2EpNMPryXGCQQC5BN3kA= X-Received: by 2002:a17:902:f70f:b0:2bf:356f:4e0c with SMTP id d9443c01a7336-2c1e80d2996mr7718075ad.1.1780616947659; Thu, 04 Jun 2026 16:49:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 19/25] target/arm: Implement EXPAND Date: Thu, 4 Jun 2026 16:48:46 -0700 Message-ID: <20260604234852.573178-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.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: 1780617092784154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sve-defs.h | 5 +++++ target/arm/tcg/sve_helper.c | 28 ++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 7 +++++++ target/arm/tcg/sve.decode | 2 ++ 4 files changed, 42 insertions(+) diff --git a/target/arm/tcg/helper-sve-defs.h b/target/arm/tcg/helper-sve-d= efs.h index de2254bb19..75c0fc919d 100644 --- a/target/arm/tcg/helper-sve-defs.h +++ b/target/arm/tcg/helper-sve-defs.h @@ -3203,3 +3203,8 @@ DEF_HELPER_FLAGS_6(sve2_famin_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_6(sve2_famin_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, fpst, i32) + +DEF_HELPER_FLAGS_4(sve2p2_expand_b, TCG_CALL_NO_WG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sve2p2_expand_h, TCG_CALL_NO_WG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sve2p2_expand_s, TCG_CALL_NO_WG, void, ptr, ptr, ptr, i= 32) +DEF_HELPER_FLAGS_4(sve2p2_expand_d, TCG_CALL_NO_WG, void, ptr, ptr, ptr, i= 32) diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index c2b3162084..a13ccf4b85 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -8669,3 +8669,31 @@ void HELPER(pext)(void *vd, uint32_t png, uint32_t d= esc) do_whilel(vd, mask, MIN(b_count, vl), vl); } } + +#define DO_EXPAND(NAME, TYPE, H) \ +void HELPER(NAME)(void *vd, void *vn, void *vg, uint32_t desc) \ +{ \ + intptr_t oprsz =3D simd_oprsz(desc); \ + ARMVectorReg tn =3D *(ARMVectorReg *)vn; \ + intptr_t i =3D 0, j =3D 0; \ + do { \ + uint16_t pg =3D *(uint16_t *)(vg + H1_2(i >> 3)); \ + do { \ + TYPE nn =3D 0; \ + if (pg & 1) { \ + nn =3D *(TYPE *)((void *)&tn + H(j)); \ + j +=3D sizeof(TYPE); \ + } \ + *(TYPE *)(vd + H(i)) =3D nn; \ + i +=3D sizeof(TYPE); \ + pg >>=3D sizeof(TYPE); \ + } while (i & 15); \ + } while (i < oprsz); \ +} + +DO_EXPAND(sve2p2_expand_b, uint8_t, H1) +DO_EXPAND(sve2p2_expand_h, uint16_t, H1_2) +DO_EXPAND(sve2p2_expand_s, uint32_t, H1_4) +DO_EXPAND(sve2p2_expand_d, uint64_t, H1_8) + +#undef DO_EXPAND diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 315ebe82f9..3101f572fa 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -6956,6 +6956,13 @@ static gen_helper_gvec_3 * const sqneg_fns[4] =3D { TRANS_FEAT(SQNEG_m, aa64_sme_or_sve2, gen_gvec_ool_arg_zpz, sqneg_fns[a->e= sz], a, 0) TRANS_FEAT(SQNEG_z, aa64_sme2p2_or_sve2p2, gen_gvec_ool_arg_zpz, sqneg_fns= [a->esz], a, 1) =20 +static gen_helper_gvec_3 * const expand_fns[4] =3D { + gen_helper_sve2p2_expand_b, gen_helper_sve2p2_expand_h, + gen_helper_sve2p2_expand_s, gen_helper_sve2p2_expand_d, +}; +TRANS_FEAT_STREAMING_IF(EXPAND, aa64_sme2p2_or_sve2p2, aa64_sme2p2, + gen_gvec_ool_arg_zpz, expand_fns[a->esz], a, 0) + DO_ZPZZ(SQSHL, aa64_sme_or_sve2, sve2_sqshl) DO_ZPZZ(SQRSHL, aa64_sme_or_sve2, sve2_sqrshl) DO_ZPZZ(SRSHL, aa64_sme_or_sve2, sve2_srshl) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 2795c2ec7f..5ec1d420c2 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -742,6 +742,8 @@ SPLICE 00000101 .. 101 100 100 ... ..... .....= @rdn_pg_rm # SVE2 vector splice (predicated, constructive) SPLICE_sve2 00000101 .. 101 101 100 ... ..... ..... @rd_pg_rn =20 +EXPAND 00000101 .. 110 001 100 ... ..... ..... @rd_pg_rn + ### SVE Select Vectors Group =20 # SVE select vector elements (predicated) --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617200; cv=none; d=zohomail.com; s=zohoarc; b=P+arQDRrQr4b1vYuP0h75CuUj/GnAjMy2jUOgapIq5+vafXhUirDpv/QGOcnsthwpsB5CBCViarC+cfUSrt5rPkE992VXZb7wqXV01xyxJ2JMYnNWgbyg/l14rlruKOyUEwjhXF5oh31K1/vj+/y/qNjNPFF+ITyd/3wV2h9QaA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617200; 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=YyZd4Axcmi17hT9uRHYw5WxR8cxng914FVY4xY+poHg=; b=N8up4SsAxkjufLDlZ84mODtXcIuohSYTwpqdhIvoQoKaJ/pulik7lshCNJJGBgLK/QjfguPvCbjiKrJgzliwx4DzQJHxiiANdJIo6Aag4PhJB6zcxNtTxgvbcBxnVJlFQyt5SrIhxKoXV38lQyt51Br195VvaUx/dwZgGO66qUE= 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 1780617200476189.11347464283745; Thu, 4 Jun 2026 16:53:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoN-0006wA-7D; Thu, 04 Jun 2026 19:49:19 -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 1wVHoG-0006pQ-IJ for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:12 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHoD-0007y1-SE for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:12 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2c0b944f6edso13619445ad.2 for ; Thu, 04 Jun 2026 16:49:09 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616948; x=1781221748; 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; bh=YyZd4Axcmi17hT9uRHYw5WxR8cxng914FVY4xY+poHg=; b=U+k2ZDT6eS2l/G//mMcUW+he53jk7GbVp32dz+VPXDBBi4X8zpbl3ByyYoUVD29vST BF/pJSB46arOvbxIUO+wskDz3lGxgYGtt5StyoGrLPKTjjlA5/HLwknAbWNRzKOKEQ86 hDu2Z2rO16yKaoHpn5WdXqnRpmgRdMf2JkuSfYgfk+14x4ZCve3izvs9nOUg3giO67Ib b4FRiEvAHCBi5Ov3KAgU90HqS2D7p1rVQxEJik0KIu6nkGdRJo6LoJUwVjC/nKigUDmh n+SN9Wn5/0g9aGTT4gzVp8UzU8uZkaIUVqI5EJdFJRxG8wODfPF64oact/6BbibBKba4 EPFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616948; x=1781221748; 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; bh=YyZd4Axcmi17hT9uRHYw5WxR8cxng914FVY4xY+poHg=; b=TjUtaOq2tM56MvGI0TutO97bjHRBJzyQTH0+40qfG1jwf3Fna+S1WMpMvfts84SQaN AHmd5iuzK78bOwcz7o0kStNmOw3dH3UejUpsHwVEWjwZOLewiBEhW6Uur/XNeqll+mdv P7x6TbSN2DanYBw4sqcud95QdyC8lJf+JgD/Od4dDrdBqIS6jG4MfiUPzxngBbd5NB4K 4pEuqgm5l+7JS303VG9eLv7X+aj0bgeYHOpD5hF4INeCECrddKRx8zlFVArgeHcDqR3m ZAF48s15yLYSsDuJqPkM4Ojejw6ySY56rkzk2Tf+TWtFnpJz7LL5J2cAKA2sXM7D0jqy Wb8g== X-Gm-Message-State: AOJu0YywYEZCGVoNfAfrMBycNnhPmHSuYbzNGMwfZQNmYvJpGCVNK6Ii KgNFP5JSRBtl479pA/tUFy7R0+EeLxUkXVM9v6TBiAw0X22hzHaU0zVHc66JG9ONXvvjTsjfxgv 7Gs5f+6c= X-Gm-Gg: Acq92OFkOgE7Z/9TvXH5nj0cSTWfjf8+cCnh3j229YnEaV3mZaZmdCLZOCT1NoohqID sF3F5DVlZ68i+KpZY97TSAMT3dnv91v3Ene1l8IbA3NqvZn7ao67411Eh6IvGNeKaFpU1yr6alT dcqKoX1KUr6pIgJo7oHrWW8vjKoUHzqeW3N40Ygc+taVuEquWwGW6f4SSorzNEN7yz9oi2aX8bm uSyGVwuIbVabVCWwrn9N8amMs9vwL0E89zHMXCyX+dWtYE+W9mCBguwgNpI9ubpbeMNycSeqkWA yh/NJFLo1jW9xk/mC7+M+fTo2nIS2GzjOz+JRxzu7KduNgLAH3aJrgQRy/kLKmnxjmn5xc3C7jG UGDTJn6uAriBT4beX14LpKj8Mg0FRCy7rAH4nyxuAvzZtQo4YJh350aB4JUdjWrG8VPCNd/4//a 5OQ8ttH/bC7tFUdEUxKp/FcAvnuAr1xnZFMGp4Bd/P0/e0wWUb+w== X-Received: by 2002:a17:902:e5ce:b0:2bd:5ab:af95 with SMTP id d9443c01a7336-2c1e77d145fmr7615235ad.0.1780616948316; Thu, 04 Jun 2026 16:49:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 20/25] target/arm: Generalize sve_compact_[sd] Date: Thu, 4 Jun 2026 16:48:47 -0700 Message-ID: <20260604234852.573178-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.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: 1780617200861158500 Content-Type: text/plain; charset="utf-8" Implement with a DO_COMPACT macro and general purpose predicate handling. Signed-off-by: Richard Henderson --- target/arm/tcg/sve_helper.c | 51 +++++++++++++++---------------------- 1 file changed, 21 insertions(+), 30 deletions(-) diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index a13ccf4b85..40cf567b0d 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -3637,39 +3637,30 @@ DO_TRN(sve2_trn_q, Int128, ) #undef DO_UZP #undef DO_TRN =20 -void HELPER(sve_compact_s)(void *vd, void *vn, void *vg, uint32_t desc) -{ - intptr_t i, j, opr_sz =3D simd_oprsz(desc) / 4; - uint32_t *d =3D vd, *n =3D vn; - uint8_t *pg =3D vg; - - for (i =3D j =3D 0; i < opr_sz; i++) { - if (pg[H1(i / 2)] & (i & 1 ? 0x10 : 0x01)) { - d[H4(j)] =3D n[H4(i)]; - j++; - } - } - for (; j < opr_sz; j++) { - d[H4(j)] =3D 0; - } +#define DO_COMPACT(NAME, TYPE, H) \ +void HELPER(NAME)(void *vd, void *vn, void *vg, uint32_t desc) \ +{ \ + intptr_t i =3D 0, j =3D 0, oprsz =3D simd_oprsz(desc); = \ + do { \ + uint16_t pg =3D *(uint16_t *)(vg + H1_2(i >> 3)); \ + do { \ + if (pg & 1) { \ + *(TYPE *)(vd + H(j)) =3D *(TYPE *)(vn + H(i)); \ + j +=3D sizeof(TYPE); \ + } \ + i +=3D sizeof(TYPE); \ + pg >>=3D sizeof(TYPE); \ + } while (i & 15); \ + } while (i < oprsz); \ + for (; j < oprsz; j +=3D sizeof(TYPE)) { \ + *(TYPE *)(vd + H(j)) =3D 0; \ + } \ } =20 -void HELPER(sve_compact_d)(void *vd, void *vn, void *vg, uint32_t desc) -{ - intptr_t i, j, opr_sz =3D simd_oprsz(desc) / 8; - uint64_t *d =3D vd, *n =3D vn; - uint8_t *pg =3D vg; +DO_COMPACT(sve_compact_s, uint32_t, H1_4) +DO_COMPACT(sve_compact_d, uint64_t, H1_8) =20 - for (i =3D j =3D 0; i < opr_sz; i++) { - if (pg[H1(i)] & 1) { - d[j] =3D n[i]; - j++; - } - } - for (; j < opr_sz; j++) { - d[j] =3D 0; - } -} +#undef DO_COMPACT =20 /* Similar to the ARM LastActiveElement pseudocode function, except the * result is multiplied by the element size. This includes the not found --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617122; cv=none; d=zohomail.com; s=zohoarc; b=UG/uYJvR86fiFfAw3DIkim3253pRG6LaUOuTBBPoWUomw10KVNFCSm+qmkVyOBp7bfhTUlCq+UPHTJURkyGPilG5N6cB+uWH8dqwwt39Y+QvRVJoNA8Ee39D46A8Kn2Km7WyQqJemigmlK7tFBSQJ/z0i0onrxXBSPgbcnH5Q7I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617122; 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=L0FW3DsjEZddqvM23thQ90y+i9n6EfT233NwS1iXpUQ=; b=TtlJzotsRm88h+k3DYihZ1ejnZaArddOHTQRxpwotV30poCQ0KZxGEJr0pbqzZ+VBV3VI6jFXqt1eeELlpItVmq4H2aL+LrdYgzgMUqgOruajemQn/8TUPQoKoQPIecgKxYz9d1e9hd4t5MxHgNz5Zz8cm7Nb5uuqk6j5QwJI9s= 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 1780617122007330.41603075046555; Thu, 4 Jun 2026 16:52:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoJ-0006tt-Rw; Thu, 04 Jun 2026 19:49:15 -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 1wVHoG-0006pq-UJ for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:12 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHoE-0007yh-Dh for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:12 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2c0c1e0d00bso12820745ad.0 for ; Thu, 04 Jun 2026 16:49:10 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616949; x=1781221749; 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; bh=L0FW3DsjEZddqvM23thQ90y+i9n6EfT233NwS1iXpUQ=; b=dm5FnQAIFU1poQBOyAb5/Sa7DajX8mMcOu1GObUHhZ0+qjVqkgW5kE17Eqq7h7Il88 N658XT5nMSli6XbQRKcjDIoS4/61m86mK2VlfAadRf8XJt0qiRGioMhs/iSvL3TUGcH7 3QE0Q02aFiDsaKoMCI2DmZb4ha358j2sZ8jfzW9n/OakhCLrGprotJyuzaCA2yONjZEm mw2+4ZTf6+ojxmxnPuiqxjfnQZSImtD4+Sfde0/EK0X/7ddemtrT4dJoHqPfJCO3n72b eOKWVdvADVEHPuz4evULIREFTvFbZDvPOj3Oxg2BWq1Kj4HTRJIE6A3i0Pnw6RlBYxqx 7mwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616949; x=1781221749; 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; bh=L0FW3DsjEZddqvM23thQ90y+i9n6EfT233NwS1iXpUQ=; b=MVZQB+CBSH59BbAwGaVgpn1Tm0JjCovnCQeMHjOXBftjdJFObytNh56vJAwxO6i+0p aeQonRKl3llkpjmhH6VxuUzOlQHXvxEIeTbLGdFeVC96NR9YnFZd7oSd6zFsVIFNWdCO dMEWsWlnSMnZOsMM0d88KQI6WXR3UB4h2C8MdgfLyxKiNETQYHm6U4QDgQ3L2ReRQtJG YBr9gPHAiq4ZLEHaMbO2rklz+UPUbhGO435yqtGIo68Th085lO4kJxAx2fDARLagkxKe w7BdCHKK+5bxdIjfmoKnylkF6UXx3QqabudV91aBcM+yHooqldZSaZDr2XKLTcWQi2xC NgoQ== X-Gm-Message-State: AOJu0YxsnEN2ALA5q8vrlLOffqC0L9wsre64fs7z2A+wrLC/6Z0Q9Jxg llw74tcF0nFXhRCgM+r9gKsSbfBnoOlaRLQ+Grob3OFIbjoT3/PcKRhGBtyfj8l0JnKt5GBuM+d QUUKPxy8= X-Gm-Gg: Acq92OHCy3ZYrOPYu8N/MxEnZvVzBMPlQtxvhtM1E+L5vplfN49XAxGZXiVXDowRUm7 0Z5sqFwU26lfV0irR49RSD+jMq4b/vBmdA/diRchNTdgeWQ80+8iJ5t88yBzFi/N5XeEBdA18Gt UnkCOR/prNE6qGBwEzlpNbhN6maFeE/PxxoGwgnGvwxU8ijOTPmy6wKXJgJTn94C0/7GZ5ubEIB /sECemxv8f/JNvUoBsW5DM1Xmr2RIfMVa4my5HOsl/fKnbZk8/nHbX8CHbNqXEAJooQu7TiUFs7 OlpSn5Zt7Ew2LABmbsIN5nyGsBWB9C4R/OZWOwqhEevBzZfBWm00O/V3VCaRigMmJyUcV9X3RFm NbY6aV6BXt9nSYtaA02Dd7oACdyy3iNcU7uX49b5I7waxOdiHxwRKgcxCewpkYWsmATxJ64NaJu HAD4hRDZ4y8gfimYRRfNbYS36w4MF50vJbYRMnlM0= X-Received: by 2002:a17:903:3504:b0:2c0:c37d:dfc3 with SMTP id d9443c01a7336-2c1e820e96emr6903765ad.15.1780616949027; Thu, 04 Jun 2026 16:49:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 21/25] target/arm: Implement COMPACT for byte/halfword Date: Thu, 4 Jun 2026 16:48:48 -0700 Message-ID: <20260604234852.573178-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.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: 1780617123166154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sve-defs.h | 2 ++ target/arm/tcg/sve_helper.c | 2 ++ target/arm/tcg/translate-sve.c | 22 +++++++++++++++++----- target/arm/tcg/sve.decode | 1 - 4 files changed, 21 insertions(+), 6 deletions(-) diff --git a/target/arm/tcg/helper-sve-defs.h b/target/arm/tcg/helper-sve-d= efs.h index 75c0fc919d..11342e1e59 100644 --- a/target/arm/tcg/helper-sve-defs.h +++ b/target/arm/tcg/helper-sve-defs.h @@ -733,6 +733,8 @@ DEF_HELPER_FLAGS_4(sve_trn_s, TCG_CALL_NO_RWG, void, pt= r, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sve_trn_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sve2_trn_q, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) =20 +DEF_HELPER_FLAGS_4(sve2p2_compact_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= i32) +DEF_HELPER_FLAGS_4(sve2p2_compact_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= i32) DEF_HELPER_FLAGS_4(sve_compact_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) DEF_HELPER_FLAGS_4(sve_compact_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i3= 2) =20 diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index 40cf567b0d..3f99a362c3 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -3657,6 +3657,8 @@ void HELPER(NAME)(void *vd, void *vn, void *vg, uint3= 2_t desc) \ } \ } =20 +DO_COMPACT(sve2p2_compact_b, uint8_t, H1) +DO_COMPACT(sve2p2_compact_h, uint16_t, H1_2) DO_COMPACT(sve_compact_s, uint32_t, H1_4) DO_COMPACT(sve_compact_d, uint64_t, H1_8) =20 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 3101f572fa..325fc28fb3 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -2769,11 +2769,23 @@ TRANS_FEAT_NONSTREAMING(TRN2_q, aa64_sve_f64mm, do_= interleave_q, *** SVE Permute Vector - Predicated Group */ =20 -static gen_helper_gvec_3 * const compact_fns[4] =3D { - NULL, NULL, gen_helper_sve_compact_s, gen_helper_sve_compact_d -}; -TRANS_FEAT_NONSTREAMING(COMPACT, aa64_sve, gen_gvec_ool_arg_zpz, - compact_fns[a->esz], a, 0) +static bool trans_COMPACT(DisasContext *s, arg_COMPACT *a) +{ + static gen_helper_gvec_3 * const fns[4] =3D { + gen_helper_sve2p2_compact_b, gen_helper_sve2p2_compact_h, + gen_helper_sve_compact_s, gen_helper_sve_compact_d + }; + + if (!dc_isar_feature(aa64_sme2p2, s)) { + if (!(a->esz >=3D MO_32 + ? dc_isar_feature(aa64_sve, s) + : dc_isar_feature(aa64_sve2p2, s))) { + return false; + } + s->is_nonstreaming =3D true; + } + return gen_gvec_ool_arg_zpz(s, fns[a->esz], a, 0); +} =20 /* Call the helper that computes the ARM LastActiveElement pseudocode * function, scaled by the element size. This includes the not found diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 5ec1d420c2..a3eefd60e5 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -693,7 +693,6 @@ TBXQ 00000101 .. 1 ..... 001 101 ..... .....= @rd_rn_rm ### SVE Permute - Predicated Group =20 # SVE compress active elements -# Note esz >=3D 2 COMPACT 00000101 .. 100001 100 ... ..... ..... @rd_pg_rn =20 # SVE conditionally broadcast element to vector --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617131; cv=none; d=zohomail.com; s=zohoarc; b=jX9uyIDwKkq6cbHryLXs6E7kUfrdXq2LrSbgslWF7aCoLCnPTP/5bnSyDz6r34PRWHzt7uEdbbgGg0MRiBEjlkC88VowTliNif6rKqgN5NvfnJvnJFuwXPsUksmHU9VmTz+gnD/3g3DL2m6NWSjInVegYpIONE9JjpH2iOFZ9pg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617131; 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=0S4mgAnLz7VaCxx4V6clCkrHPo+LDsuEwWJQq3WHbB0=; b=h1eRhX/0mbYcFdbnfOPySr8af7fyJm3o+Ic6YEIBneLCYtk/RDelcX0i0Fbxzio5rBxUUdrI0ILy9EIItNStUAWr0+sIzoVQr6PjB0OSWbyw36xlzH8pjPiAJnyC7n9USwPZtQGA6/HieI/ERslYtW1EsZBHdGpuEe7ttBdv83I= 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 1780617131127195.43643369509186; Thu, 4 Jun 2026 16:52:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoM-0006up-6l; Thu, 04 Jun 2026 19:49: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 1wVHoH-0006qQ-Eo for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:13 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHoF-0007z9-7s for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:13 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2bf20f6be6bso9649565ad.3 for ; Thu, 04 Jun 2026 16:49:10 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616950; x=1781221750; 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; bh=0S4mgAnLz7VaCxx4V6clCkrHPo+LDsuEwWJQq3WHbB0=; b=a7TefrPGvBSUKQAK7oeB2LQCOoKBcOlTXmMzoiCSHx3XwXWxsUwCfR8lCh0C3UlVFK 6JvAOu7eJjoFhLrF3egI5ZeBJ8WLJdJyyvvZ4XFxAz2qLOLd+hz0TGPY1ysq8VINuyjN vUMEBhzS+hBFDMTIL5QaUBuGgrpMCeBNehNiseo+KBtP5kyC4Bm7TEbBnt1N6UK/KD+9 +T/KO5jpsrMqaZrDN/ORotuBiWlZ08La1S+aEyAfhyz9qfVMCPJNCVk2zvbqh/gBZoCd 7uE/AhE83+NBfq9p5aTXKS4kDw4culX6dPy51UecS0kuRGsAyQMJdP1AzXxYrnnkuRe7 JaEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616950; x=1781221750; 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; bh=0S4mgAnLz7VaCxx4V6clCkrHPo+LDsuEwWJQq3WHbB0=; b=cm+dPvrS9OTUHxwpBopnXFCnRtMoMAdoFv0munUNiFutckfJSbhja7X1/Zo9Y2FBW1 +N4DUrgWbmXKN7CIXBWuEG/rz6D+n936vOR5CB3Rhw/MRCKoz9Nbtk1c/1cwqnrbLCiu 4jgQF5kBGA/o5baQOukOD5pQ9pSYZOdYAu0qxmVEUV4bFan7Pw/c07FtDmkogODll3SR hNigC05iCsLm2Z2W2/FdpOeXzsTrhXKGSdk6hCfzAAsUQbXUtpo5fcM1LZoNgVQ0LwUq nDag2a0CBcUqzTBVS+IpOmVUTt46GUnDtXbvBNNLZKQTG0h8I6t8RBbtesYwsCPXwGIt hW9A== X-Gm-Message-State: AOJu0Yy9l1sFM95KJIyj9Al6wEwYBqYVh+81ciY1BuGEvr7yhzOyySMX x5PP1KM0NJPbmzSLqZanMecxZ/Gdn9VJFshSnTHA1SPIE0Wy06AE9NIVtZQpgOs372QM5lL19Rv AKvlAOPs= X-Gm-Gg: Acq92OH/Yp/ToLZNmd0U1b4WBmYgXwi3pdqHldnMDmiQdmK51KwZX0pV4zzB9rw+e9s PU3sMvY/JrQ03Pv453+PzlF6CZwgl32GT2EfJT0HXXNn4hycYrxhilogdsq2+tSFjkKre/U2XoB idQZnPaF1wxsBpt2cLCUXK34fwpBmSQKJJddcX64VzRAnyP1H1+We6kPTzLVQRqSX5hpLZgTA16 k7NdjChdfo1QuX+/RdYEZoIR2o6rH7bLYC78iX1ZErOageGw/xHfGBAqY5yXh5okC0ilYJHvKrR xwt3NUXNVKXYD1zm5Lr+u6IO9wFP2k2iS6EPJ4i2O2sF2rS2RrtUTTpq+ArlFot/XjTY5HraY2c e3SOBtcliwGzAMaIH2JOh4n8KxCaQRm8MCxN08qgC/6AntJgd9Pbi/Spbj6kEoX5TaNZdasRHc2 EhCNyYIILSBlvhPixVJT0MDYWt4t462sHpjb8BSck= X-Received: by 2002:a17:902:ccc3:b0:2b4:59bf:5728 with SMTP id d9443c01a7336-2c1e80ec2abmr7532215ad.25.1780616949749; Thu, 04 Jun 2026 16:49:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 22/25] target/arm: Implement FIRSTP, LASTP Date: Thu, 4 Jun 2026 16:48:49 -0700 Message-ID: <20260604234852.573178-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.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: 1780617132657158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sve-defs.h | 3 ++ target/arm/tcg/sve_helper.c | 30 +++++++++++++++++ target/arm/tcg/translate-sve.c | 56 ++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 3 ++ 4 files changed, 92 insertions(+) diff --git a/target/arm/tcg/helper-sve-defs.h b/target/arm/tcg/helper-sve-d= efs.h index 11342e1e59..440a868cea 100644 --- a/target/arm/tcg/helper-sve-defs.h +++ b/target/arm/tcg/helper-sve-defs.h @@ -961,6 +961,9 @@ DEF_HELPER_FLAGS_4(sve_brkns, TCG_CALL_NO_RWG, i32, ptr= , ptr, ptr, i32) DEF_HELPER_FLAGS_3(sve_cntp, TCG_CALL_NO_RWG, i64, ptr, ptr, i32) DEF_HELPER_FLAGS_2(sve2p1_cntp_c, TCG_CALL_NO_RWG_SE, i64, i32, i32) =20 +DEF_HELPER_FLAGS_3(sve2p2_firstp, TCG_CALL_NO_RWG_SE, i64, ptr, ptr, i32) +DEF_HELPER_FLAGS_3(sve2p2_lastp, TCG_CALL_NO_RWG_SE, i64, ptr, ptr, i32) + DEF_HELPER_FLAGS_3(sve_whilel, TCG_CALL_NO_RWG, i32, ptr, i32, i32) DEF_HELPER_FLAGS_3(sve_whileg, TCG_CALL_NO_RWG, i32, ptr, i32, i32) =20 diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index 3f99a362c3..57c7823feb 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -4302,6 +4302,36 @@ uint64_t HELPER(sve2p1_cntp_c)(uint32_t png, uint32_= t desc) return count >> p.lg2_stride; } =20 +uint64_t HELPER(sve2p2_firstp)(void *vn, void *vg, uint32_t pred_desc) +{ + intptr_t words =3D DIV_ROUND_UP(FIELD_EX32(pred_desc, PREDDESC, OPRSZ)= , 8); + intptr_t esz =3D FIELD_EX32(pred_desc, PREDDESC, ESZ); + uint64_t *n =3D vn, *g =3D vg, mask =3D pred_esz_masks[esz]; + + for (intptr_t i =3D 0; i < words; ++i) { + uint64_t t =3D n[i] & g[i] & mask; + if (t) { + return (ctz64(t) + i * 64) >> esz; + } + } + return -1; +} + +uint64_t HELPER(sve2p2_lastp)(void *vn, void *vg, uint32_t pred_desc) +{ + intptr_t words =3D DIV_ROUND_UP(FIELD_EX32(pred_desc, PREDDESC, OPRSZ)= , 8); + intptr_t esz =3D FIELD_EX32(pred_desc, PREDDESC, ESZ); + uint64_t *n =3D vn, *g =3D vg, mask =3D pred_esz_masks[esz]; + + for (intptr_t i =3D words - 1; i >=3D 0; --i) { + uint64_t t =3D n[i] & g[i] & mask; + if (t) { + return ((clz64(t) ^ 63) + i * 64) >> esz; + } + } + return -1; +} + /* C.f. Arm pseudocode EncodePredCount */ static uint64_t encode_pred_count(uint32_t elements, uint32_t count, uint32_t esz, bool invert) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 325fc28fb3..912290f460 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -3481,6 +3481,62 @@ static bool trans_SINCDECP_z(DisasContext *s, arg_in= cdec2_pred *a) return true; } =20 +static bool do_firstp_lastp(DisasContext *s, arg_rpr_esz *a, bool firstp) +{ + if (sve_access_check(s)) { + unsigned psz =3D pred_full_reg_size(s); + TCGv_i64 v =3D cpu_reg(s, a->rd); + + if (psz <=3D 8) { + uint64_t psz_mask; + + tcg_gen_ld_i64(v, tcg_env, pred_full_reg_offset(s, a->rn)); + if (a->rn !=3D a->pg) { + TCGv_i64 g =3D tcg_temp_new_i64(); + tcg_gen_ld_i64(g, tcg_env, pred_full_reg_offset(s, a->pg)); + tcg_gen_and_i64(v, v, g); + } + + /* + * Reduce the pred_esz_masks value simply to reduce the + * size of the code generated here. + */ + psz_mask =3D MAKE_64BIT_MASK(0, psz * 8); + tcg_gen_andi_i64(v, v, pred_esz_masks[a->esz] & psz_mask); + + if (firstp) { + tcg_gen_ctzi_i64(v, v, -1); + } else { + tcg_gen_clzi_i64(v, v, 64); + tcg_gen_subfi_i64(v, 63, v); + } + tcg_gen_sari_i64(v, v, a->esz); + } else { + TCGv_ptr t_pn =3D tcg_temp_new_ptr(); + TCGv_ptr t_pg =3D tcg_temp_new_ptr(); + unsigned desc =3D 0; + TCGv_i32 t_desc; + + desc =3D FIELD_DP32(desc, PREDDESC, OPRSZ, psz); + desc =3D FIELD_DP32(desc, PREDDESC, ESZ, a->esz); + + tcg_gen_addi_ptr(t_pn, tcg_env, pred_full_reg_offset(s, a->rn)= ); + tcg_gen_addi_ptr(t_pg, tcg_env, pred_full_reg_offset(s, a->pg)= ); + t_desc =3D tcg_constant_i32(desc); + + if (firstp) { + gen_helper_sve2p2_firstp(v, t_pn, t_pg, t_desc); + } else { + gen_helper_sve2p2_lastp(v, t_pn, t_pg, t_desc); + } + } + } + return true; +} + +TRANS_FEAT(FIRSTP, aa64_sme2p2_or_sve2p2, do_firstp_lastp, a, true) +TRANS_FEAT(LASTP, aa64_sme2p2_or_sve2p2, do_firstp_lastp, a, false) + /* *** SVE Integer Compare Scalars Group */ diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index a3eefd60e5..bdc2b7f0c0 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -852,6 +852,9 @@ BRKN 00100101 0. 01100001 .... 0 .... 0 ....= @pd_pg_pn_s CNTP 00100101 .. 100 000 10 .... 0 .... ..... @rd_pg4_pn CNTP_c 00100101 esz:2 100 000 10 000 vl:1 1 rn:4 rd:5 =20 +FIRSTP 00100101 .. 100 001 10 .... 0 .... ..... @rd_pg4_pn +LASTP 00100101 .. 100 010 10 .... 0 .... ..... @rd_pg4_pn + # SVE inc/dec register by predicate count INCDECP_r 00100101 .. 10110 d:1 10001 00 .... ..... @incdec_pred= u=3D1 =20 --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617186; cv=none; d=zohomail.com; s=zohoarc; b=aRMVtUBwT/XGr+8+Oqe7p2bUQpglw/G4/aFkPGrc7eN0T0vj4VTBZCoSriGOaTZ3/jXlqyxwXjnDNhxmXnYwM30Hu++zz3PrVhPbb48epa8aDp/nRIQVFOPpmuMtr3vpZgzsuG2vB1rEYRgZ3OVDXinJ19uG+E8/J5u3l1H806M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617186; 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=t5keFFD8RhaG/QP5KTy8CIfk9qHLYNxUXSARl0rphmE=; b=LyKSrxA09l8UcoFCDwhb4ILWk6/93yH5ztJ/1olWD4mfbQmTZCSLZygTPLFa58dZXrpzK00FV0D6z31ABonObgaThWp5vQh0fqBTVXH2u6qRQojaXr1Uy+Cbj0PAugxcVprFSeXJONbJFM/+U6I5jif0qgzEs69l3RkvPd4q0NU= 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 1780617186394950.890583423893; Thu, 4 Jun 2026 16:53:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoN-0006wB-7J; Thu, 04 Jun 2026 19:49:19 -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 1wVHoI-0006rv-C3 for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:14 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHoF-0007zN-PQ for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:13 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2bf55c39e16so10737795ad.0 for ; Thu, 04 Jun 2026 16:49:11 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616950; x=1781221750; 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; bh=t5keFFD8RhaG/QP5KTy8CIfk9qHLYNxUXSARl0rphmE=; b=Y78SSrkfljpVgy+WXvEVnRcBAK3+b5CNu6o01RUucNW08FcAjKUwzf/Ajk2T4LS26M 91djaKjphjXCsSc3R3PkZZS6cHl7huHCghQQwXYag8WkQ2Fe9LPNSwrUXBNfbnQJ3nf8 adCkEtG6MiIcB7MxIKjjLUurEIj6lFFavpX/lirRlw2PDfI69Kn2SDO1WiQhykpFON/q mqAr9ZSUNcMVGIH5A0POimJIZiscmBTUexlZ6PApdnLNXtUCBW1vYvn6oZInW9823s56 mmgxaxdsx/1mrDYCOFvImJA3h5pr+/0vKvVCx3A2neDgbRBVFphbnwpbbwqY2aDMJXeW zVgQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616950; x=1781221750; 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; bh=t5keFFD8RhaG/QP5KTy8CIfk9qHLYNxUXSARl0rphmE=; b=cs8tyDrQ1COtWBPVSah2mN5VQdBrcQummWVXJAL+sUJ/1bhm0GtiIp7uBBd2786Ane 8Jaw7mIa9NLqVq58rx/PD+lnVkllQJBd8bUvVnXV97N3i4Mj/hq/F1jGfFjxXDJ1pmtn Oh1trsTyaIa5A7TsxZoB+0EqX8WMO/CQIjqRPlGya1O9PVDnjbWW5bIuoP4fCSWu8saw 1yavJ12YfJvasfUW4TgJeZqmPm4bS0yl8mWH78wrdhoWI4TCnfwI7dHeEmEW5AK7kh19 sPilqghYHT7Sfd6A9NhvK7GhTJ1ZVB03lFKnsjqMUok9yEpZniEkwqAarsiSg3gjl8ac sI1w== X-Gm-Message-State: AOJu0YzmpW5h7PWb8lFSDF3DRfWpSi5Kx3ZnpjHavDCVx+dFl8h6ey04 20GcBcgfNW/QGTL9iAGPZXO2gQL/FvskRMjZ7ZRh2tM44qr779nO27/i3q4DIH8f/lPrVPywH36 mzUOGvM0= X-Gm-Gg: Acq92OH5gK7XVVVH4jmtMxEb7QxoK07cjYcBwiIZfqgCU5Y0RM49O3q/NEr09RXWPAY caRdEfcJwRTZiHhptmxg1i6vs8vMvmXnZVHrwzfDPKsRDDgn3k9AJhkgx1wkiHPBdg88ecba0uk wmwD4DwoQso9R5PLjxHkNf2pTBjkgBTi0po9JoJYv/5m9QJR0N9LCNoWydbR2UjGk8UkNboOqy/ rkCmwgy8t8V9NIfGIfI7kIlO8q1v1bfDRIWul0ZeitRd/pI25ON03gGToRwP5RrYfSAC6ywuVZz ZgrjnUDq17d9Q939SwJOPjiPrCC3Hk/bCXYpgm1bxuzUkEHbiP2SXOSYMGxJcb9kIp2OFqDYY53 OOUB81sEKR9UqTm42lYS9fMM9KpnIX0S+y8YZ9h9uHCX5hnpFxPxscmJIj5gY651nXLWYwNlZL7 oLtDPWEKXkWmj67wWtEmTWHpEk33LWF0OmSpAqISI= X-Received: by 2002:a17:902:f706:b0:2bc:977b:846d with SMTP id d9443c01a7336-2c1ec66cf3bmr1723805ad.5.1780616950329; Thu, 04 Jun 2026 16:49:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 23/25] target/arm: Enable FEAT_SVE2p2 for -cpu max Date: Thu, 4 Jun 2026 16:48:50 -0700 Message-ID: <20260604234852.573178-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.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: 1780617186761158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 2 +- docs/system/arm/emulation.rst | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 4887a3a7b7..c4d2d35741 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -173,6 +173,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_cmpbr, ARM_HWCAP_A64_CMPBR); GET_FEATURE_ID(aa64_f8mm8, ARM_HWCAP_A64_F8MM8); GET_FEATURE_ID(aa64_f8mm4, ARM_HWCAP_A64_F8MM4); + GET_FEATURE_ID(aa64_sve2p2, ARM_HWCAP_A64_SVE2P2); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 15c1ece4b7..38e5a8d912 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1359,7 +1359,7 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64MMFR4, t); =20 t =3D GET_IDREG(isar, ID_AA64ZFR0); - t =3D FIELD_DP64(t, ID_AA64ZFR0, SVEVER, 2); /* FEAT_SVE2p1 */ + t =3D FIELD_DP64(t, ID_AA64ZFR0, SVEVER, 3); /* FEAT_SVE2p2 */ t =3D FIELD_DP64(t, ID_AA64ZFR0, AES, 2); /* FEAT_SVE_PMULL128 */ t =3D FIELD_DP64(t, ID_AA64ZFR0, BITPERM, 1); /* FEAT_SVE_BitPerm */ t =3D FIELD_DP64(t, ID_AA64ZFR0, BFLOAT16, 2); /* FEAT_BF16, FEAT_EBF= 16 */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 64b2a87e1a..868ba37e3a 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -178,6 +178,7 @@ the following architecture extensions: - FEAT_SVE_SM4 (Scalable Vector SM4 instructions) - FEAT_SVE2 (Scalable Vector Extension version 2) - FEAT_SVE2p1 (Scalable Vector Extension version 2.1) +- FEAT_SVE2p2 (Scalable Vector Extension version 2.2) - FEAT_SPECRES (Speculation restriction instructions) - FEAT_SSBS (Speculative Store Bypass Safe) - FEAT_SSBS2 (MRS and MSR instructions for SSBS version 2) --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617181; cv=none; d=zohomail.com; s=zohoarc; b=jdCKyD12+9cUnuG5pET/Kmcmp13PyzQrCSXFtk0O9WcDF/avB+tiqGQXabNmW86VzGfxTjsb3eeW34PkJxiuNqqenMINTMh9CLMEpfvSPpoJH/ndR0SJn1POkVdUfqflOpGwb1OnvTdJ+rYrs0Wuhie2BsprriFmbzIVgVozvZM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617181; 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=k+L/AvZa0gLJ2Kl37DyNIwhexBKjBiOGoa6I6mtkDLA=; b=ZW7jQM5Ju9o3RLQ6YG6gSafGwxYIp1TJdgGCvJ95bNCnZqxsWlhkXPytiVrZmwY7waUO6gfwj9SHSdrII+g0OTAcKHi3+BJIso47NxHLi9yQwgcALt0Sj/noqbiW7oQ/9DXZv+T8xTR1/NkD7oJ3IDHf079hJCsqz3NsFa/xsH8= 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 1780617181634308.0053357352202; Thu, 4 Jun 2026 16:53:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoO-0006wb-7M; Thu, 04 Jun 2026 19:49: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 1wVHoI-0006sK-Lc for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:14 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHoG-0007zr-Fp for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:14 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2bf22d29dabso9414275ad.2 for ; Thu, 04 Jun 2026 16:49:12 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616951; x=1781221751; 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; bh=k+L/AvZa0gLJ2Kl37DyNIwhexBKjBiOGoa6I6mtkDLA=; b=ed9UfvpLClHYHx2bLhN+9tXMsQvdUpjUpUR30yVgHdfjQ0pYL3HbhtbhR0OGapib9d VbfDpLCIY8nh4PLNNeyZK2tCaIHLx9IP5xawE9/cRjeCpEoQ7tZ+JM3Aii08ijBq1xON +hz3M9otse+qPHCsQnOwIieCTKFphNVyizKIhDRHNZxM49iOYlbU7waHktoeEP037pkI 6dP1aRmRB3hywZBNtSRso21ban2MI1oSa7/rMm5VB9CaOVL36fhrDZ7r/dN13QQRXkmO HvWj840eAcsDgL7us+TnfTa4QhsDzQv3rCSI37T+rVJAz+UNU1U9NsM0O5BKeigo6Iea +Ihw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616951; x=1781221751; 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; bh=k+L/AvZa0gLJ2Kl37DyNIwhexBKjBiOGoa6I6mtkDLA=; b=lwUknH77Ecg2ZP9MFObpz7/iZ4Vm4hZKi+5BzVWT2NM2V2X+GyUm1snvrrCy1ICMg3 A9zoCDScX0aMnPW42b39FJVnarPXvRRk8GXzAGH3YO/l/XHnNryEvZh8lvbE3ikVxZal LZRJ01mz7nsFkWqquh+AJe6uHVfeo08oTr8hAhacshdj6N7IpKC7rH6+LkEVEctbwlQT 59BFqUMff5D4tLnTEJvV6PyTtR7jMrjPCiD9Mf1gXMZ56ysXAE+b+afZ9DikXDrkdn22 ij+3kWqazn5S4rHTRuWwKM8DslN00JUrJbE/dgGT0/XhmDX+AnqGnEY7FjXyBRwImFad yzfQ== X-Gm-Message-State: AOJu0YxNpF5n7MqdP1Qy3LXwHv2axqXNTg2kYcAD382pE6wVAelYXafQ jriHAq5lK0gfQCkcsJwkLpUIUAlx4UoGuo0D79yDDXdU5STBUe+oUm2kOwseSdZabFcxSWao4Mz yErt7d/U= X-Gm-Gg: Acq92OEdcw89H9IS7uwqHgCXuII+wMrmr3xq5qHf/OHCPisI79wBjGCqWzLbm8qgqJj RMVCUx5ju8t/AMnHc/mMMpdWt8HeCuRN3lAZ+WqU/+OedqwtI2uc6grn6pQaqw0Z5aSexg81ofe HkDUIsCy9GyjIvyfJ7jYdETqbnI/lj9zUvTz1gc7ZexjHmnO6C7j0wi38ycXT4wy7WYgfMPsIcO 3us9htkgpBVBfNFauwWShs3oklxSwCQS3Hn0wcD6E6/1i96GUxGjJF5ByOebqJuD9wtF3APHyT2 nbrfUjeZgWm7olO9qkYIXVQlZWxV/OkYHSfQVoiH45Z467h98fX4vvbNmBzdwmcUwUmfGK2bT9H zwOsfSpmUkjR4N1S6zDP6wmU/L9ftQDowmQgHV6kvdptwgDVr0Ajkx5pZGYOLwl4GpTgSi1Us9z S3rFqXu6GAZ/T7UhYBiAfrREGE7bUb8u7L0KJyhU5UvuPYtY2cNA== X-Received: by 2002:a17:902:cf03:b0:2c1:e9f8:758d with SMTP id d9443c01a7336-2c1e9f87925mr4762735ad.22.1780616950958; Thu, 04 Jun 2026 16:49:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 24/25] target/arm: Implement FEAT_SSVE_AES Date: Thu, 4 Jun 2026 16:48:51 -0700 Message-ID: <20260604234852.573178-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.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: 1780617184002154100 Content-Type: text/plain; charset="utf-8" Enable FEAT_SVE_AES instructions in streaming mode. Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + target/arm/tcg/translate-sve.c | 20 +++++++++++--------- docs/system/arm/emulation.rst | 1 + 5 files changed, 19 insertions(+), 9 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 49c8606809..a2c7fa90aa 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1560,6 +1560,11 @@ static inline bool isar_feature_aa64_sve_b16b16(cons= t ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64ZFR0, B16B16); } =20 +static inline bool isar_feature_aa64_ssve_aes(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, AES); +} + static inline bool isar_feature_aa64_ssve_f8fma(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8FMA); diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index c4d2d35741..5bb4a2a3d7 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -174,6 +174,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_f8mm8, ARM_HWCAP_A64_F8MM8); GET_FEATURE_ID(aa64_f8mm4, ARM_HWCAP_A64_F8MM4); GET_FEATURE_ID(aa64_sve2p2, ARM_HWCAP_A64_SVE2P2); + GET_FEATURE_ID(aa64_ssve_aes, ARM_HWCAP_A64_SME_AES); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 38e5a8d912..106feb28ca 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1378,6 +1378,7 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64DFR0, t); =20 t =3D GET_IDREG(isar, ID_AA64SMFR0); + t =3D FIELD_DP64(t, ID_AA64SMFR0, AES, 1); /* FEAT_SSVE_AES */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP2, 1); /* FEAT_SSVE_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP4, 1); /* FEAT_SSVE_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8FMA, 1); /* FEAT_SSVE_FP8FMA */ diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 912290f460..ff7ff0bc82 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -7169,7 +7169,7 @@ static bool do_trans_pmull(DisasContext *s, arg_rrr_e= sz *a, bool sel) if (!dc_isar_feature(aa64_sve2_pmull128, s)) { return false; } - s->is_nonstreaming =3D true; + s->is_nonstreaming =3D !dc_isar_feature(aa64_ssve_aes, s); } return gen_gvec_ool_arg_zzz(s, fns[a->esz], a, sel); } @@ -8174,15 +8174,17 @@ TRANS_FEAT(SDOT_zzzz_2s, aa64_sme2_or_sve2p1, gen_g= vec_ool_arg_zzzz, TRANS_FEAT(UDOT_zzzz_2s, aa64_sme2_or_sve2p1, gen_gvec_ool_arg_zzzz, gen_helper_gvec_udot_2h, a, 0) =20 -TRANS_FEAT_NONSTREAMING(AESMC, aa64_sve2_aes, gen_gvec_ool_zz, - gen_helper_crypto_aesmc, a->rd, a->rd, 0) -TRANS_FEAT_NONSTREAMING(AESIMC, aa64_sve2_aes, gen_gvec_ool_zz, - gen_helper_crypto_aesimc, a->rd, a->rd, 0) +TRANS_FEAT_STREAMING_IF(AESMC, aa64_sve2_aes, aa64_ssve_aes, + gen_gvec_ool_zz, gen_helper_crypto_aesmc, + a->rd, a->rd, 0) +TRANS_FEAT_STREAMING_IF(AESIMC, aa64_sve2_aes, aa64_ssve_aes, + gen_gvec_ool_zz, gen_helper_crypto_aesimc, + a->rd, a->rd, 0) =20 -TRANS_FEAT_NONSTREAMING(AESE, aa64_sve2_aes, gen_gvec_ool_arg_zzz, - gen_helper_crypto_aese, a, 0) -TRANS_FEAT_NONSTREAMING(AESD, aa64_sve2_aes, gen_gvec_ool_arg_zzz, - gen_helper_crypto_aesd, a, 0) +TRANS_FEAT_STREAMING_IF(AESE, aa64_sve2_aes, aa64_ssve_aes, + gen_gvec_ool_arg_zzz, gen_helper_crypto_aese, a, 0) +TRANS_FEAT_STREAMING_IF(AESD, aa64_sve2_aes, aa64_ssve_aes, + gen_gvec_ool_arg_zzz, gen_helper_crypto_aesd, a, 0) =20 TRANS_FEAT_NONSTREAMING(SM4E, aa64_sve2_sm4, gen_gvec_ool_arg_zzz, gen_helper_crypto_sm4e, a, 0) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 868ba37e3a..a42cfeae47 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -166,6 +166,7 @@ the following architecture extensions: - FEAT_SME_F64F64 (Double-precision floating-point outer product instructi= ons) - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) - FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) +- FEAT_SSVE_AES (Streaming SVE Mode Advanced Encryption Standard and 128-b= it polynomial multiply long instructions) - FEAT_SSVE_FP8DOT2 (SVE2 FP8 2-way dot product to half-precision instruct= ions in Streaming SVE mode) - FEAT_SSVE_FP8DOT4 (SVE2 FP8 4-way dot product to single-precision instru= ctions in Streaming SVE mode) - FEAT_SSVE_FP8FMA (SVE2 FP8 multiply-accumulate to half-precision and sin= gle-precision instructions in Streaming SVE mode) --=20 2.43.0 From nobody Sun Jun 7 22:21:00 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=1780617188; cv=none; d=zohomail.com; s=zohoarc; b=kAQIItbSJdnfxXDMlrT2A1a2fsMSFUAMYF4I2bIShOXndQz0mB0JeCNt7aBbhZAHZA5PeA1daWXmUbE1fvRlu1qHTdb2g92ATzJ3NYCrno5CKsHMCuD83gRgcev2NczsTqPyxq8u3zLDQW+R7dkDpBulZR0K3VsYSI/yM9iPCzA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780617188; 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=CYh5LzAhOZD5isybeA4Rz2JQCXMIBKO7pEbfbYnzmSI=; b=lNYMTUrDvLoWfiPyMRBHHVWYjJGeCIV2ebuhtWkSGb5u8q8Igi1ZBG1TQxP6QRePsIIzuDFe6Ddh7HgdETSrsU2lzuWZ+GCKumzNrHZevvLU8jQ+G0KGjW8EM+Vj8n3nuDut9WnzXryT7OssjpkvVUpUnQiPFutWU8P4454xHig= 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 1780617188365845.6815544528862; Thu, 4 Jun 2026 16:53:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wVHoO-0006wZ-6P; Thu, 04 Jun 2026 19:49: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 1wVHoJ-0006tQ-CT for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:15 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wVHoH-000809-11 for qemu-devel@nongnu.org; Thu, 04 Jun 2026 19:49:15 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2c0aa420401so9825875ad.3 for ; Thu, 04 Jun 2026 16:49:12 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c1664950aesm66541465ad.69.2026.06.04.16.49.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Jun 2026 16:49:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780616952; x=1781221752; 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; bh=CYh5LzAhOZD5isybeA4Rz2JQCXMIBKO7pEbfbYnzmSI=; b=nOSQcT+IQ4T2cg8WYmj8p1MyrlCZFBi2//CBLna6OQsbl06jKobkvJ3wwxwh4kqaLY ma6bGAucF3BqNcw/XzqcBra7QSte4Q3oiJNYna0GIBeiTGDKoxo4Drn4+5ZMzfw6qQKe JNvPLXmb057uJb0y4ZeY9p/QZv/0kLsXdlZnXJpLnbFPvPbvJB8ff+Poz8vxhBJh33u6 8mkXLBiBLlHcMs4rJPUoY07VRbH6p8NAyOV2XdGuK9LDGDGBdydthexHRvbTZmyHMURb uXi0+juWdHizHJsbdbAULbblo10N+EW6C71mE+O5jcqmRXIWwmXM5YJn8oFDUfW//QNa 8iEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780616952; x=1781221752; 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; bh=CYh5LzAhOZD5isybeA4Rz2JQCXMIBKO7pEbfbYnzmSI=; b=soZmHsqX5mRTFR0UEhxvWwC5BMWziCI7ga5QGVkiiEkH5geQssxadlncvFFPy8cRho J91BHRRXZbHDJnDHms2FD7YeXuA+Kvc6oLxEH3e1l1LwNheb9dE4misL9pPDkAegFXKc fbEsumYl3KGBVf0ZNnElNUQNwM1m5OzZa37Hi4hdtqd/PCAo+2iU28vRgO+jtR1H+WIg npoIui4hjtMzccJbVqwHzfrRRDeV3GqeOi/Y7bE1bBkFkLADu9r6TMw8JDecyTMjtmtM 8Uigv4IjF9KlwO1dthczWsTGY+U9xv0FXbf8CmsR3OPGS+Lds2G9egP9TY1X8NvVU0+n Kyvw== X-Gm-Message-State: AOJu0YxDd9n/vASZBruIW/1w6Yln0hd4uMHkDy1jyLGu4U19TZIbwvSt kEe8xVvTLs16nEZOZjHpRu4KgfrfBVVGtusekOKP3iIXpgv/X2F68DU0+TyVzCimgRI6g1A4ua6 CjqBZQ9w= X-Gm-Gg: Acq92OH59mE9g6rxXrEWwEUGeIzg/2l2HVYKBkgFVWoGfcLwrv81YMbHooQta4RD5Xo P0I824vphUwE7VzY7BbxCSrxhR2Z9ynVyPchcHBeMipNeN3UvA2SkTR5H9kr0b4JKsyy6janSMM G9v5hNHJEGAW3cEkhVVDSFk9JKp8IcN3KvSFzN10h4E0EdLzLxpW0GLlseD+ULtU8ziFAW4EjKM +CWkb/5FwEc0yvNdff/KlvtBfuKhUh7ETmrdTJb71CNU2YXCvuxb0A3hdDW9zZQI1xzPdrT/Tlv hkHgkqX6rbfXQ2SjePGvpJQ/ckv3DKAZnj93yWvmj4Op4JAw1hH1EyZxuEBJjrIKYHg9uIOEgbZ pQ0Fs/SwvyMwoX6mo9QuBUsGuxJLYBrJ1BbSNjUMBE2JcneA6jfqTV+k3lvJfdWaw1tWFfDUM3q H/BYrDlQ3Q/iF/GhkJEvnzsFCrw+eWz/ENBWxZKcoSfGrwLvv4CA== X-Received: by 2002:a17:903:2a87:b0:2bf:13b0:f8ed with SMTP id d9443c01a7336-2c1e7b2ce09mr9063815ad.3.1780616951573; Thu, 04 Jun 2026 16:49:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 25/25] target/arm: Use expand_pred_N for helper_sve_not_zpz_N Date: Thu, 4 Jun 2026 16:48:52 -0700 Message-ID: <20260604234852.573178-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260604234852.573178-1-richard.henderson@linaro.org> References: <20260604234852.573178-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::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.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: 1780617188824158500 Content-Type: text/plain; charset="utf-8" These is a bitwise operation; with expand_pred_N, we can always operate on uint64_t. Signed-off-by: Richard Henderson --- target/arm/tcg/sve_helper.c | 43 ++++++++++++++++++++++++++++++++----- 1 file changed, 38 insertions(+), 5 deletions(-) diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index 57c7823feb..9c0477a0af 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -917,12 +917,45 @@ DO_ZPZ(sve_ah_fneg_h, uint16_t, H1_2, DO_AH_FNEG_H) DO_ZPZ(sve_ah_fneg_s, uint32_t, H1_4, DO_AH_FNEG_S) DO_ZPZ_D(sve_ah_fneg_d, uint64_t, DO_AH_FNEG_D) =20 -#define DO_NOT(N) (~N) +static inline void +sve_not_zpz(uint64_t *d, uint64_t *n, uint8_t *pg, uint32_t desc, + uint64_t (*expand)(uint8_t)) +{ + intptr_t opr_sz =3D simd_oprsz(desc) / 8; + bool zeroing =3D simd_data(desc) & 1; =20 -DO_ZPZ(sve_not_zpz_b, uint8_t, H1, DO_NOT) -DO_ZPZ(sve_not_zpz_h, uint16_t, H1_2, DO_NOT) -DO_ZPZ(sve_not_zpz_s, uint32_t, H1_4, DO_NOT) -DO_ZPZ_D(sve_not_zpz_d, uint64_t, DO_NOT) + if (zeroing) { + for (intptr_t i =3D 0; i < opr_sz; ++i) { + uint64_t p =3D expand(pg[H1(i)]); + d[i] =3D ~n[i] & p; + } + } else { + for (intptr_t i =3D 0; i < opr_sz; ++i) { + uint64_t p =3D expand(pg[H1(i)]); + d[i] =3D (~n[i] & p) | (d[i] & ~p); + } + } +} + +void HELPER(sve_not_zpz_b)(void *vd, void *vn, void *pg, uint32_t desc) +{ + sve_not_zpz(vd, vn, pg, desc, expand_pred_b); +} + +void HELPER(sve_not_zpz_h)(void *vd, void *vn, void *pg, uint32_t desc) +{ + sve_not_zpz(vd, vn, pg, desc, expand_pred_h); +} + +void HELPER(sve_not_zpz_s)(void *vd, void *vn, void *pg, uint32_t desc) +{ + sve_not_zpz(vd, vn, pg, desc, expand_pred_s); +} + +void HELPER(sve_not_zpz_d)(void *vd, void *vn, void *pg, uint32_t desc) +{ + sve_not_zpz(vd, vn, pg, desc, expand_pred_d); +} =20 #define DO_SXTB(N) ((int8_t)N) #define DO_SXTH(N) ((int16_t)N) --=20 2.43.0