From nobody Tue Jun 9 23:12:53 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=1781033211; cv=none; d=zohomail.com; s=zohoarc; b=VIJMzZFYEeA+4uOnaCeQaEyMannNDY+y0j24LRXNX0239zO24vGeI7ha6QuEK58x7UnI0GjPMbj62fIJHSy1gfc49O5aiJLMSbHOF56LpnNhL7UfXo0EAe72faxAEJY0nN4WEWrK//P5s6GOyyL0kIhKuq42d7IgaSiwNjVs+ys= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033211; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QhdSt/yYvJaGMbP1xd4fHeyPmVI1491cJ0UqIh8obAI=; b=V1qsnnF4nRH4j/1zIkUb8t+M6bRJeWSM6XH1OJDCDV4zNLW+9eHfC0owGWYukY5lL2ZKEhBW/TgzXtGwBBGFExqzBvpUsJeuK73cR4wtjM66pxOlkJgAPlPE63OWJJQIebLoJ0VrVRGtGa/KWJLLpuVzygtm0oTz91aJOAPI5d0= 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 1781033211161742.7356088926964; Tue, 9 Jun 2026 12:26:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX23h-0004aA-BA; Tue, 09 Jun 2026 15:24:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX21Z-0003KQ-Sq for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:11 -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 1wX21G-0003z5-P2 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:00 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2bf20f6be6bso46963205ad.3 for ; Tue, 09 Jun 2026 12:21:13 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032872; x=1781637672; 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=QhdSt/yYvJaGMbP1xd4fHeyPmVI1491cJ0UqIh8obAI=; b=kXRlwwS3WHmDg23tHwMHGpjoqbgLeGBwUh0jH1mhXS71LjNhbQZqKyw17JyZ/g+0ip A2L2FijJFv5E0uV5iDyfP4Qa9e1Tl4iO8tSo/Reyc/Q2yYYy1Q0P7sqtN6usGIajHqm/ ibfn3MzO9XwRITKbfC1L9wQDxksg08cnePEdWOyiaD9bgbQCkjHk7bZg3A5KmHetUcN4 Ou0iVALQc1qqKp3e1ScwP66ZXUu3XsFqpRBOJWAIxQqF3sqc56aeTZ89cjnsrGePEThb ChWA6mPTBM899PauMqPGNfhlwPVIMnqxOnj+brRjq1irXKIkhakcC/diVK6vsX3QTGAS dAWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032872; x=1781637672; 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=QhdSt/yYvJaGMbP1xd4fHeyPmVI1491cJ0UqIh8obAI=; b=Vpto8ChSe4Eoj77bqDMZ6EQYspbFle//u9UZ7I2Or/mt493OdMk7D6almU4cX4Z9Nc 604811geL4HQTywWHFubQgFvy8yF6ckuEci1/Kqcfsyzzybj+FfkqbCf79CgeMBGu90I aiiC2nSHxgicpRlA9owD6dB6WZFakL92qjux/Y5pz41oByFHPluOi0kGbaQSAMn83mVC YQhPEYUBSsTs+SEoVYKRdMLg6fvGQTqGY5uE4EyFyvesbbK2VSnbWCpLXJgS5U5P8lk7 1kJJgWRT+aw+7FPLNx+VBtZ9FWf2N9nXlgnizGSnUtXq3PYFvSgIyDDbOsiQjT8hjzbL 5hOA== X-Gm-Message-State: AOJu0Yxu7d/DtgoRsKq1N/7Ff/VAEYi25R5VHe4AkYj9K3luBUUa3Jgv uC1KDwwsnsZ/CpzRQtzuB++oHlpxNPmcIOldLF+hWQB4TO2dLdqSvPjy7r30SDIVWV0RqS94Gl8 eJfOvFbA= X-Gm-Gg: Acq92OHRKSFtRwEq6NbtEi2mJDLvDi7XgkChDyyMM70IlhOekRJc/QveqiDMR3+AvJR bs2y/M8OoayR6SmjojhbmnbRHP7vF9nDRqC4dSBD/wxF8ClDTAW1gLfS7W5zkwwTC2UsnYE+tb9 dXbI8I0cpNCRoOngOMcPdiQmb07Dx1iqTHOBo6N7n8Mx3DsqrORzCT9Jv8vyTiHUJkKRjr4ieXg lg0OPzXbfdPogEGxLyyKk9QxqVDGRsDSeHccS3Wh8nQH5t6Gc31GNsop2+RXHgaqK4meg2J/eB6 ozHxzNuM+PbkfvPfz+0Nq0wENUMcq9+GQ5yWsHpm30c9tCv0jrbqeQ+kVaxpEPIR6FDpl5N6tx8 eE8YB6kUAGyydxhT+qSbMIKOvtSL+Ax9eIagOgmQmiOqNwapQ7XJldN+MZRq6WUmu3i3mryn1iH qeYNt3HAitoHXSBhJwaIojqgeWqmUw7ptkOn5oSeM= X-Received: by 2002:a17:903:1aed:b0:2c2:245a:3364 with SMTP id d9443c01a7336-2c2245a35e2mr171679575ad.32.1781032871887; Tue, 09 Jun 2026 12:21:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v10 01/45] target/arm: Use FloatParts64 in bfdotadd_ebf Date: Tue, 9 Jun 2026 12:20:25 -0700 Message-ID: <20260609192110.752384-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::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=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: 1781033212717158500 Use softfloat-parts.h so that we can more naturally perform the required operations witha single rounding step. This happens to also simplify the NaN detection step. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20260517002550.321291-9-richard.henderson@linaro.org> --- target/arm/tcg/vec_helper.c | 78 +++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index 91e98d28ae..12fb62958f 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -22,6 +22,7 @@ #include "helper.h" #include "tcg/tcg-gvec-desc.h" #include "fpu/softfloat.h" +#include "fpu/softfloat-parts.h" #include "qemu/int128.h" #include "crypto/clmul.h" #include "vec_internal.h" @@ -2895,61 +2896,62 @@ float32 bfdotadd(float32 sum, uint32_t e1, uint32_t= e2, float_status *fpst) float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, float_status *fpst, float_status *fpst_odd) { + /* Unpack two BFloat16 into two Float32, trivially. */ float32 s1r =3D e1 << 16; float32 s1c =3D e1 & 0xffff0000u; float32 s2r =3D e2 << 16; float32 s2c =3D e2 & 0xffff0000u; float32 t32; =20 + /* + * Compare f16_dotadd() in sme_helper.c, but here we have + * bfloat16 inputs. In particular that means that we do not + * want the FPCR.FZ16 flush semantics, so we use the normal + * float_status for the input handling here. + */ + FloatParts64 p1r =3D float32_unpack_canonical(s1r, fpst); + FloatParts64 p1c =3D float32_unpack_canonical(s1c, fpst); + FloatParts64 p2r =3D float32_unpack_canonical(s2r, fpst); + FloatParts64 p2c =3D float32_unpack_canonical(s2c, fpst); + + int all_mask =3D (float_cmask(p1r.cls) | float_cmask(p1c.cls) | + float_cmask(p2r.cls) | float_cmask(p2c.cls)); + /* C.f. FPProcessNaNs4 */ - if (float32_is_any_nan(s1r) || float32_is_any_nan(s1c) || - float32_is_any_nan(s2r) || float32_is_any_nan(s2c)) { - if (float32_is_signaling_nan(s1r, fpst)) { - t32 =3D s1r; - } else if (float32_is_signaling_nan(s1c, fpst)) { - t32 =3D s1c; - } else if (float32_is_signaling_nan(s2r, fpst)) { - t32 =3D s2r; - } else if (float32_is_signaling_nan(s2c, fpst)) { - t32 =3D s2c; - } else if (float32_is_any_nan(s1r)) { - t32 =3D s1r; - } else if (float32_is_any_nan(s1c)) { - t32 =3D s1c; - } else if (float32_is_any_nan(s2r)) { - t32 =3D s2r; + if (unlikely(all_mask & float_cmask_anynan)) { + if (unlikely(all_mask & float_cmask_snan)) { + if (p1r.cls =3D=3D float_class_snan) { + t32 =3D s1r; + } else if (p1c.cls =3D=3D float_class_snan) { + t32 =3D s1c; + } else if (p2r.cls =3D=3D float_class_snan) { + t32 =3D s2r; + } else { + t32 =3D s2c; + } } else { - t32 =3D s2c; + if (p1r.cls =3D=3D float_class_qnan) { + t32 =3D s1r; + } else if (p1c.cls =3D=3D float_class_qnan) { + t32 =3D s1c; + } else if (p2r.cls =3D=3D float_class_qnan) { + t32 =3D s2r; + } else { + t32 =3D s2c; + } } /* * FPConvertNaN(FPProcessNaN(t32)) will be done as part * of the final addition below. */ } else { - /* - * Compare f16_dotadd() in sme_helper.c, but here we have - * bfloat16 inputs. In particular that means that we do not - * want the FPCR.FZ16 flush semantics, so we use the normal - * float_status for the input handling here. - */ - float64 e1r =3D float32_to_float64(s1r, fpst); - float64 e1c =3D float32_to_float64(s1c, fpst); - float64 e2r =3D float32_to_float64(s2r, fpst); - float64 e2c =3D float32_to_float64(s2c, fpst); - float64 t64; - /* * The ARM pseudocode function FPDot performs both multiplies - * and the add with a single rounding operation. Emulate this - * by performing the first multiply in round-to-odd, then doing - * the second multiply as fused multiply-add, and rounding to - * float32 all in one step. + * and the add with a single rounding operation. */ - t64 =3D float64_mul(e1r, e2r, fpst_odd); - t64 =3D float64r32_muladd(e1c, e2c, t64, 0, fpst); - - /* This conversion is exact, because we've already rounded. */ - t32 =3D float64_to_float32(t64, fpst); + FloatParts64 tmp =3D parts64_mul(&p1r, &p2r, fpst); + tmp =3D parts64_muladd(&p1c, &p2c, &tmp, 0, fpst); + t32 =3D float32_round_pack_canonical(&tmp, fpst); } =20 /* The final accumulation step is not fused. */ --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033346; cv=none; d=zohomail.com; s=zohoarc; b=HRxQUY69ZXmA8P9QY+XhPzqRhDHwTqMpl6CMj2b506y3Mc24PM9YryVoaRUFWx/3IIx7YlF47jGE22BdyN4bljE4XyLFFQppV0iL5tC7OuaEnHNQea5BETCgX0f91DGEwRewQSorTWZuIC3hw1S+pzsV3Mai8+GOd0RJGop1Log= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033346; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=X3KKJ7J3R4+CnAV2Vfwd1LHSE2hHDpi2i4scacdU0+A=; b=ILI/gl2SKU2u9z6j+85Z+oc+vkaVEy2wVR9R3w5KZ8cpOiRXEN6i1KA9OvkpEQJJuFBgfnA/3j1ByLgQaN4sKRQEQ+tbbY1kRHgomVt6nlVsGkWkjOiaMe7rJAuVUtSg5uywtPf4rb1GeQacF59Hjb+z+EgqFFlRSs2WI1/jR4M= 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 1781033346414263.06820103096425; Tue, 9 Jun 2026 12:29:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX26F-0000FO-Pj; Tue, 09 Jun 2026 15:27:01 -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 1wX21p-0003Xo-LM for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:30 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21e-0003zP-DM for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:20 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2bf0ddaf50fso41436605ad.1 for ; Tue, 09 Jun 2026 12:21:13 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032873; x=1781637673; 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=X3KKJ7J3R4+CnAV2Vfwd1LHSE2hHDpi2i4scacdU0+A=; b=J+b5MMOq7mUTVYo9pQePU3WTjb64dbT3huoEwdNxcAa2nVPqywyv+MtOc31Kp4r9I7 juGhBk09ayBRe1PF3aR7GOd1+9eZGgmEi8PUvskE/2pvMjYqbbkF7b34C1aMQ3ZrLtZ8 Vg4MOpvBPgs3C3hCpj7bcwlYO1M1EU4EsVyrKaLhu2qEUBcgNS0ihLbqVJex6kmiViDS 50vj0eW3bDEElmKaSmfTGV2N1mVAHrZI7N06R0TPFWA14E/31g+eiBvFEBwDa8mp4/Qc IONIbuWWzFJ6bnES9O22V7fBl3xYY0OpYeGdH9Ew8mIZLs3GRhf1+R/O9EMX5LiHmT9I l6aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032873; x=1781637673; 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=X3KKJ7J3R4+CnAV2Vfwd1LHSE2hHDpi2i4scacdU0+A=; b=HuMDyAUH9nmNVHUPFCg7Qk+kG7yqId+gwhHI5WRgHkTjr1oCP/IGWOjDzRYlLSG76v I6LlRAEF+ULJvtAk2gcLmCluCj8DWlJjgGsMkJYFVCOymVB3HIBkQa/GEgxGrknsMJFM X7VkreZ28Qb3HmYYmGADHprq3NngYNjYMmrpyi1lX3vYS1tMIrCz02c/5XwNJ74hTUmZ yn8W8YfWaHbTI93H8evUFcyzpAmwWX57fkib1Luqq0Es2FrYlMmfJ0tRDRFehvdBuC4Q pHokTAMJMnCKzjO8kusmtPsgph7ALaCE6OEfg9FNSZEtlScI/+/RJ5Q2FUypAteI6WCp L74A== X-Gm-Message-State: AOJu0Yx2J5ptdEyNgIeoxHpYdWNQXQzwkTgC4zYPiDpu/51MBFs3sMJW TJTk6KTee3ZN/GrHCNQwlMrFHBCI9cOyg+fPVdZ/geZWd2MX8J9LopGirU9Po9nQvAqoMijoh59 tvhuzRTc= X-Gm-Gg: Acq92OGpwdj3FPWXSarozmDz8pHYQWpuq+GrZs0gUjQ78XzgyKUOztqTrLnZy3QLznc Aa1Gsymr5PB5jUE+Zx28+3+fUDKmso3jiH4hAdeVvbIf7a5I0bSrmZDgdDW7m2HW2yLc/Tn4EFB 3Gy3827j5RmpzEloO3CYlYyfiROoR/wFIvQ3WvlZDI7rXrlD8InB7pXLdoAFfoP4sWDFLMChix6 HXwsKGHXjFbSmpCFYcmdofKZHakVor/RFBaFi5c5Tco4JTHcQlfA3AxsdPq5nbtGiAeED6f2mzd 9crwp1wu+19i/1L/xjFnasWbO6ztKDieoOmEocPd2FzcVmjw7mcJKyVlRNk2reZp1quQ1JXq1lK j9kbnvlC4XEP8bseogWopuWeLTpYU2eVg6jzebIVlxl8BtRI2FQ5XROW4K62fyQ5T5NmD7p6LqF SMNpt0GBqr7ZUlV0juOojHpEP+nCYaijJ9mubsSJA= X-Received: by 2002:a17:903:138a:b0:2b4:6d92:b002 with SMTP id d9443c01a7336-2c1e820e32cmr227853125ad.37.1781032872703; Tue, 09 Jun 2026 12:21:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v10 02/45] target/arm: Drop oddstatus from is_ebf and bfdotadd_ebf Date: Tue, 9 Jun 2026 12:20:26 -0700 Message-ID: <20260609192110.752384-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.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: 1781033347373158500 This argument is no longer used. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Message-Id: <20260517002550.321291-10-richard.henderson@linaro.org> --- target/arm/tcg/vec_internal.h | 12 +++------ target/arm/tcg/sme_helper.c | 6 ++--- target/arm/tcg/vec_helper.c | 50 +++++++++++++++-------------------- 3 files changed, 29 insertions(+), 39 deletions(-) diff --git a/target/arm/tcg/vec_internal.h b/target/arm/tcg/vec_internal.h index 84f7f15228..06fef2a209 100644 --- a/target/arm/tcg/vec_internal.h +++ b/target/arm/tcg/vec_internal.h @@ -271,7 +271,6 @@ float32 bfdotadd(float32 sum, uint32_t e1, uint32_t e2,= float_status *fpst); * @sum: addend * @e1, @e2: multiplicand vectors * @fpst: floating-point status to use - * @fpst_odd: floating-point status to use for round-to-odd operations * * BFloat16 2-way dot product of @e1 & @e2, accumulating with @sum. * The @e1 and @e2 operands correspond to the 32-bit source vector @@ -280,23 +279,20 @@ float32 bfdotadd(float32 sum, uint32_t e1, uint32_t e= 2, float_status *fpst); * Corresponds to the ARM pseudocode function BFDotAdd, specialized * for the FPCR.EBF =3D=3D 1 case. */ -float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, - float_status *fpst, float_status *fpst_odd); +float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, float_status *= fpst); =20 /** * is_ebf: * @env: CPU state * @statusp: pointer to floating point status to fill in - * @oddstatusp: pointer to floating point status to fill in for round-to-o= dd * * Determine whether a BFDotAdd operation should use FPCR.EBF =3D 0 - * or FPCR.EBF =3D 1 semantics. On return, has initialized *statusp - * and *oddstatusp to suitable float_status arguments to use with either - * bfdotadd() or bfdotadd_ebf(). + * or FPCR.EBF =3D 1 semantics. On return, has initialized *statusp as sui= table + * for float_status arguments to either bfdotadd() or bfdotadd_ebf(). * Returns true for EBF =3D 1, false for EBF =3D 0. (The caller should use= this * to decide whether to call bfdotadd() or bfdotadd_ebf().) */ -bool is_ebf(CPUARMState *env, float_status *statusp, float_status *oddstat= usp); +bool is_ebf(CPUARMState *env, float_status *statusp); =20 /* * Negate as for FPCR.AH=3D1 -- do not negate NaNs. diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 0055e97a2b..376fbd48d4 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -1429,9 +1429,9 @@ static void do_bfmopa_w(void *vza, void *vzn, void *v= zm, uint32_t desc, uint32_t negx, bool ah_neg) { intptr_t row, col, oprsz =3D simd_maxsz(desc); - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (row =3D 0; row < oprsz; ) { uint16_t prow =3D pn[H2(row >> 4)]; do { @@ -1452,7 +1452,7 @@ static void do_bfmopa_w(void *vza, void *vzn, void *v= zm, uint32_t m =3D *(uint32_t *)(vzm + H1_4(col)); =20 m =3D f16mop_adj_pair(m, pcol, 0); - *a =3D bfdotadd_ebf(*a, n, m, &fpst, &fpst_odd= ); + *a =3D bfdotadd_ebf(*a, n, m, &fpst); } col +=3D 4; pcol >>=3D 4; diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index 12fb62958f..bd8ae5d6a4 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -2845,7 +2845,7 @@ DO_MMLA_B(gvec_usmmla_b, do_usmmla_b) * BFloat16 Dot Product */ =20 -bool is_ebf(CPUARMState *env, float_status *statusp, float_status *oddstat= usp) +bool is_ebf(CPUARMState *env, float_status *statusp) { /* * For BFDOT, BFMMLA, etc, the behaviour depends on FPCR.EBF. @@ -2865,11 +2865,7 @@ bool is_ebf(CPUARMState *env, float_status *statusp,= float_status *oddstatusp) *statusp =3D env->vfp.fp_status[is_a64(env) ? FPST_A64 : FPST_A32]; set_default_nan_mode(true, statusp); =20 - if (ebf) { - /* EBF=3D1 needs to do a step with round-to-odd semantics */ - *oddstatusp =3D *statusp; - set_float_rounding_mode(float_round_to_odd, oddstatusp); - } else { + if (!ebf) { set_flush_to_zero(true, statusp); set_flush_inputs_to_zero(true, statusp); set_float_rounding_mode(float_round_to_odd_inf, statusp); @@ -2893,8 +2889,7 @@ float32 bfdotadd(float32 sum, uint32_t e1, uint32_t e= 2, float_status *fpst) return t1; } =20 -float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, - float_status *fpst, float_status *fpst_odd) +float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, float_status *= fpst) { /* Unpack two BFloat16 into two Float32, trivially. */ float32 s1r =3D e1 << 16; @@ -2964,11 +2959,11 @@ void HELPER(gvec_bfdot)(void *vd, void *vn, void *v= m, void *va, intptr_t i, opr_sz =3D simd_oprsz(desc); float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (i =3D 0; i < opr_sz / 4; ++i) { - d[i] =3D bfdotadd_ebf(a[i], n[i], m[i], &fpst, &fpst_odd); + d[i] =3D bfdotadd_ebf(a[i], n[i], m[i], &fpst); } } else { for (i =3D 0; i < opr_sz / 4; ++i) { @@ -2987,14 +2982,14 @@ void HELPER(gvec_bfdot_idx)(void *vd, void *vn, voi= d *vm, intptr_t eltspersegment =3D MIN(16 / 4, elements); float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t m_idx =3D m[i + H4(index)]; =20 for (j =3D i; j < i + eltspersegment; j++) { - d[j] =3D bfdotadd_ebf(a[j], n[j], m_idx, &fpst, &fpst_odd); + d[j] =3D bfdotadd_ebf(a[j], n[j], m_idx, &fpst); } } } else { @@ -3021,17 +3016,16 @@ void HELPER(sme2_bfvdot_idx)(void *vd, void *vn, vo= id *vm, uint16_t *n0 =3D vn; uint16_t *n1 =3D vn + sizeof(ARMVectorReg); uint32_t *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t m_idx =3D m[i + H4(idx)]; =20 for (j =3D 0; j < eltspersegment; j++) { uint32_t nn =3D (n0[H2(2 * (i + j) + sel)]) | (n1[H2(2 * (i + j) + sel)] << 16); - d[i + H4(j)] =3D bfdotadd_ebf(a[i + H4(j)], nn, m_idx, - &fpst, &fpst_odd); + d[i + H4(j)] =3D bfdotadd_ebf(a[i + H4(j)], nn, m_idx, &fp= st); } } } else { @@ -3054,9 +3048,9 @@ void HELPER(gvec_bfmmla)(void *vd, void *vn, void *vm= , void *va, intptr_t s, opr_sz =3D simd_oprsz(desc); float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (s =3D 0; s < opr_sz / 4; s +=3D 4) { float32 sum00, sum01, sum10, sum11; =20 @@ -3068,20 +3062,20 @@ void HELPER(gvec_bfmmla)(void *vd, void *vn, void *= vm, void *va, * i j i k j k */ sum00 =3D a[s + H4(0 + 0)]; - sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 0)], m[s + H4(0 + 0= )], &fpst, &fpst_odd); - sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 1)], m[s + H4(0 + 1= )], &fpst, &fpst_odd); + sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 0)], m[s + H4(0 + 0= )], &fpst); + sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 1)], m[s + H4(0 + 1= )], &fpst); =20 sum01 =3D a[s + H4(0 + 1)]; - sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 0)], m[s + H4(2 + 0= )], &fpst, &fpst_odd); - sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 1)], m[s + H4(2 + 1= )], &fpst, &fpst_odd); + sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 0)], m[s + H4(2 + 0= )], &fpst); + sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 1)], m[s + H4(2 + 1= )], &fpst); =20 sum10 =3D a[s + H4(2 + 0)]; - sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 0)], m[s + H4(0 + 0= )], &fpst, &fpst_odd); - sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 1)], m[s + H4(0 + 1= )], &fpst, &fpst_odd); + sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 0)], m[s + H4(0 + 0= )], &fpst); + sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 1)], m[s + H4(0 + 1= )], &fpst); =20 sum11 =3D a[s + H4(2 + 1)]; - sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 0)], m[s + H4(2 + 0= )], &fpst, &fpst_odd); - sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 1)], m[s + H4(2 + 1= )], &fpst, &fpst_odd); + sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 0)], m[s + H4(2 + 0= )], &fpst); + sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 1)], m[s + H4(2 + 1= )], &fpst); =20 d[s + H4(0 + 0)] =3D sum00; d[s + H4(0 + 1)] =3D sum01; --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033206; cv=none; d=zohomail.com; s=zohoarc; b=IwcxPRxjjhqvJXvhBhTTZqROuYUXdDjFKZuEofpcq7PWooy87iA7gQuaIklQ79RNx6v+NHvJrZbRFOENbR+CMIlORfy3K1k9GOZF4bXBh3Mi9XP0UIMApTe+PExJgpETq2wKWS9wodsYF7yq8U13JdFgmBySkXSfFb9VUrEgFtw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033206; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QL0iVLIn2tMUwkCsFfINMahk/u5B3KJfS/VipMkllMo=; b=SsFPHMwzE7nN90Zz1Tp5+Vu8wptnLUCr+TXdISHbc45rBIm+COS5YZegIpjpx5tCpBEh2z3PT9BI71kKuwlIR09HAeWJu4vm9Yxl2EH8bCABKLxQ92jTMZyosZsObpib6cX6rYbkPK4aOWWLTmrhnsbm3Z+RVcqchr0cvXfNhrc= 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 1781033206496205.53981792358604; Tue, 9 Jun 2026 12:26:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX23j-0004iT-Uy; Tue, 09 Jun 2026 15:24:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX21q-0003YJ-AF for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:30 -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 1wX21e-0003zc-UH for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:22 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2c0c1e0b0faso41204975ad.0 for ; Tue, 09 Jun 2026 12:21:14 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032873; x=1781637673; 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=QL0iVLIn2tMUwkCsFfINMahk/u5B3KJfS/VipMkllMo=; b=mxnqq8xcNrB6C+OiYybCYK7+u1qaZ9XBrACQPyFu529haDyLxiuSxtVjh5bTMCesde WgxiF0WEWoEn2wkhxsaUmd9eh+F3VK/TIpIXmlfXubaplL8KDBLRzeXdeY464yuBcJZU t28KG8M5a5j3vB3tKvXlpwhInwrRuVMLrhIqWjR5ozkGdgaMN53n0A16PpNlu0tJaiGo cfOr6KjamzOmCngVTVsWFAqV5RkthieQidbiydhBvd29BgfV5QfnlCnoqIG1pMZZq9tq NpIYiZreQNw6OnpsnJj7H5Oxiwp1Y9yU+lMHw2rGA/AaM//881QZi33t9d3FLcPJ3etx o4YA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032873; x=1781637673; 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=QL0iVLIn2tMUwkCsFfINMahk/u5B3KJfS/VipMkllMo=; b=VV1xVmygvnsecF7xls7FvwMDOqEinX6R+SJ0AYVIiZlE/fh/zY68wiBIODF8/ciF7w 9KeP0IztwLeo6NK2Bq0D9wQlGgn7RoRiPrsvG/UsF9d0rhayL2JizCb6Vz+lmv7WmfpL KqsQ49j7YwHO0rB5VC5YbMGu28X8aGjO6h0OIayvys5T0vexEJtdh0aTRBnD92OPGqG4 v8NcPOeFStj1gai2gjTicehNrI5MxB+3csSPXDCl4pwYpL58zhzHhzZszsNt8h7XhobB Ntc/uBzub56WwyAe8rF5VlG6nNGF3b2YZJfeVMUGGcA5T2V8624A/w95iKrI8cQXBDWt dbeA== X-Gm-Message-State: AOJu0Ywx2/H/tGRmZfanKlRYLZHGXTFpB57H6/twyFz3u/tHghixKZyo 2U1rEAeLtPp+x/dbLfDY3saAErbTD48I4c5WfaycMtmBv3LlrJioZ5yAuBvZqakM2TGQ/gPN/RC F6Mv9P1c= X-Gm-Gg: Acq92OGVxnvyV4jlKH70BMz1jPYR2pz/YsQ8B7pYbeYbIjJZQe0tn5LBd1PhE8RU0Tg hvzFriEX9lBe0cf+uEHcLjIa7u1W8nCHjkRoQOZj9mqEcAEK954LTiSJrprH5Ee+pi1AsAcxFA0 AThIJzvixUG9gJnHTgGXYV/hqwZpNgAzBSoxZIysbnRbwnHcaqWJLhdURJoMh7fb1egws/k63Dg 7UBsaCghp21bF9tb0Yxyvh4rycwTZYwBjQNZLg3tpUlOL0rmdSkjGov++yH4cdVwS8DyN2WyMzz v4y3kBXPjE98HkSGY+Ig6LLowzyoUnkBlaLqHROUZpIOmXtGHvW7L9aiWdx/lHUYw5f5m0Y3DVY fuscTg+xvKBzjxQaddU2ITlO7glPCQc6DkAaB3I4nAkBYLJLNgfyOoMwii3VzCpzFwGMeiyj0yi +RvS2qthbmP9LG0Cem0gKdoG+pjdQlmP71xAAsc0s= X-Received: by 2002:a17:903:1965:b0:2bf:172d:ef7e with SMTP id d9443c01a7336-2c1e8346fefmr243826295ad.34.1781032873440; Tue, 09 Jun 2026 12:21:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v10 03/45] target/arm: Use FloatParts64 in f16_dotadd Date: Tue, 9 Jun 2026 12:20:27 -0700 Message-ID: <20260609192110.752384-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::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: 1781033208743158500 Use softfloat-parts.h so that we can more naturally perform the required operations witha single rounding step. This happens to also simplify the NaN detection step. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-Id: <20260517002550.321291-11-richard.henderson@linaro.org> --- target/arm/tcg/sme_helper.c | 97 +++++++++++++++---------------------- 1 file changed, 40 insertions(+), 57 deletions(-) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 376fbd48d4..f508baed8a 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -27,6 +27,7 @@ #include "accel/tcg/helper-retaddr.h" #include "qemu/int128.h" #include "fpu/softfloat.h" +#include "fpu/softfloat-parts.h" #include "vec_internal.h" #include "sve_ldst_internal.h" =20 @@ -1221,18 +1222,15 @@ static inline uint32_t bf16mop_ah_neg_adj_pair(uint= 32_t pair, uint32_t pg) } =20 static float32 f16_dotadd(float32 sum, uint32_t e1, uint32_t e2, - float_status *s_f16, float_status *s_std, - float_status *s_odd) + float_status *s_f16, float_status *s_std) { /* - * We need three different float_status for different parts of this + * We need two different float_status for different parts of this * operation: * - the input conversion of the float16 values must use the * f16-specific float_status, so that the FPCR.FZ16 control is appl= ied * - operations on float32 including the final accumulation must use * the normal float_status, so that FPCR.FZ is applied - * - we have pre-set-up copy of s_std which is set to round-to-odd, - * for the multiply (see below) */ float16 h1r =3D e1 & 0xffff; float16 h1c =3D e1 >> 16; @@ -1240,48 +1238,48 @@ static float32 f16_dotadd(float32 sum, uint32_t e1,= uint32_t e2, float16 h2c =3D e2 >> 16; float32 t32; =20 + FloatParts64 p1r =3D float16_unpack_canonical(h1r, s_f16); + FloatParts64 p1c =3D float16_unpack_canonical(h1c, s_f16); + FloatParts64 p2r =3D float16_unpack_canonical(h2r, s_f16); + FloatParts64 p2c =3D float16_unpack_canonical(h2c, s_f16); + + int all_mask =3D (float_cmask(p1r.cls) | float_cmask(p1c.cls) | + float_cmask(p2r.cls) | float_cmask(p2c.cls)); + /* C.f. FPProcessNaNs4 */ - if (float16_is_any_nan(h1r) || float16_is_any_nan(h1c) || - float16_is_any_nan(h2r) || float16_is_any_nan(h2c)) { + if (unlikely(all_mask & float_cmask_anynan)) { float16 t16; =20 - if (float16_is_signaling_nan(h1r, s_f16)) { - t16 =3D h1r; - } else if (float16_is_signaling_nan(h1c, s_f16)) { - t16 =3D h1c; - } else if (float16_is_signaling_nan(h2r, s_f16)) { - t16 =3D h2r; - } else if (float16_is_signaling_nan(h2c, s_f16)) { - t16 =3D h2c; - } else if (float16_is_any_nan(h1r)) { - t16 =3D h1r; - } else if (float16_is_any_nan(h1c)) { - t16 =3D h1c; - } else if (float16_is_any_nan(h2r)) { - t16 =3D h2r; + if (unlikely(all_mask & float_cmask_snan)) { + if (p1r.cls =3D=3D float_class_snan) { + t16 =3D h1r; + } else if (p1c.cls =3D=3D float_class_snan) { + t16 =3D h1c; + } else if (p2r.cls =3D=3D float_class_snan) { + t16 =3D h2r; + } else { + t16 =3D h2c; + } } else { - t16 =3D h2c; + if (p1r.cls =3D=3D float_class_qnan) { + t16 =3D h1r; + } else if (p1c.cls =3D=3D float_class_qnan) { + t16 =3D h1c; + } else if (p2r.cls =3D=3D float_class_qnan) { + t16 =3D h2r; + } else { + t16 =3D h2c; + } } t32 =3D float16_to_float32(t16, true, s_f16); } else { - float64 e1r =3D float16_to_float64(h1r, true, s_f16); - float64 e1c =3D float16_to_float64(h1c, true, s_f16); - float64 e2r =3D float16_to_float64(h2r, true, s_f16); - float64 e2c =3D float16_to_float64(h2c, true, s_f16); - float64 t64; - /* * The ARM pseudocode function FPDot performs both multiplies - * and the add with a single rounding operation. Emulate this - * by performing the first multiply in round-to-odd, then doing - * the second multiply as fused multiply-add, and rounding to - * float32 all in one step. + * and the add with a single rounding operation. */ - t64 =3D float64_mul(e1r, e2r, s_odd); - t64 =3D float64r32_muladd(e1c, e2c, t64, 0, s_std); - - /* This conversion is exact, because we've already rounded. */ - t32 =3D float64_to_float32(t64, s_std); + FloatParts64 tmp =3D parts64_mul(&p1r, &p2r, s_f16); + tmp =3D parts64_muladd(&p1c, &p2c, &tmp, 0, s_f16); + t32 =3D float32_round_pack_canonical(&tmp, s_f16); } =20 /* The final accumulation step is not fused. */ @@ -1293,9 +1291,6 @@ static void do_fmopa_w_h(void *vza, void *vzn, void *= vzm, uint16_t *pn, uint32_t negx, bool ah_neg) { intptr_t row, col, oprsz =3D simd_maxsz(desc); - float_status fpst_odd =3D env->vfp.fp_status[FPST_ZA]; - - set_float_rounding_mode(float_round_to_odd, &fpst_odd); =20 for (row =3D 0; row < oprsz; ) { uint16_t prow =3D pn[H2(row >> 4)]; @@ -1319,8 +1314,7 @@ static void do_fmopa_w_h(void *vza, void *vzn, void *= vzm, uint16_t *pn, m =3D f16mop_adj_pair(m, pcol, 0); *a =3D f16_dotadd(*a, n, m, &env->vfp.fp_status[FPST_ZA_F16], - &env->vfp.fp_status[FPST_ZA], - &fpst_odd); + &env->vfp.fp_status[FPST_ZA]); } col +=3D 4; pcol >>=3D 4; @@ -1357,15 +1351,12 @@ void HELPER(sme2_fdot_h)(void *vd, void *vn, void *= vm, void *va, bool za =3D extract32(desc, SIMD_DATA_SHIFT, 1); float_status *fpst_std =3D &env->vfp.fp_status[za ? FPST_ZA : FPST_A64= ]; float_status *fpst_f16 =3D &env->vfp.fp_status[za ? FPST_ZA_F16 : FPST= _A64_F16]; - float_status fpst_odd =3D *fpst_std; float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; =20 - set_float_rounding_mode(float_round_to_odd, &fpst_odd); - for (i =3D 0; i < oprsz / sizeof(float32); ++i) { d[H4(i)] =3D f16_dotadd(a[H4(i)], n[H4(i)], m[H4(i)], - fpst_f16, fpst_std, &fpst_odd); + fpst_f16, fpst_std); } } =20 @@ -1379,17 +1370,14 @@ void HELPER(sme2_fdot_idx_h)(void *vd, void *vn, vo= id *vm, void *va, bool za =3D extract32(desc, SIMD_DATA_SHIFT + 2, 1); float_status *fpst_std =3D &env->vfp.fp_status[za ? FPST_ZA : FPST_A64= ]; float_status *fpst_f16 =3D &env->vfp.fp_status[za ? FPST_ZA_F16 : FPST= _A64_F16]; - float_status fpst_odd =3D *fpst_std; float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D (uint32_t *)vm + H4(idx); =20 - set_float_rounding_mode(float_round_to_odd, &fpst_odd); - for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t mm =3D m[i]; for (j =3D 0; j < eltspersegment; ++j) { d[H4(i + j)] =3D f16_dotadd(a[H4(i + j)], n[H4(i + j)], mm, - fpst_f16, fpst_std, &fpst_odd); + fpst_f16, fpst_std); } } } @@ -1402,24 +1390,19 @@ void HELPER(sme2_fvdot_idx_h)(void *vd, void *vn, v= oid *vm, void *va, intptr_t eltspersegment =3D MIN(4, elements); int idx =3D extract32(desc, SIMD_DATA_SHIFT, 2); int sel =3D extract32(desc, SIMD_DATA_SHIFT + 2, 1); - float_status fpst_odd, *fpst_std, *fpst_f16; float32 *d =3D vd, *a =3D va; uint16_t *n0 =3D vn; uint16_t *n1 =3D vn + sizeof(ARMVectorReg); uint32_t *m =3D (uint32_t *)vm + H4(idx); =20 - fpst_std =3D &env->vfp.fp_status[FPST_ZA]; - fpst_f16 =3D &env->vfp.fp_status[FPST_ZA_F16]; - fpst_odd =3D *fpst_std; - set_float_rounding_mode(float_round_to_odd, &fpst_odd); - for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t mm =3D m[i]; for (j =3D 0; j < eltspersegment; ++j) { uint32_t nn =3D (n0[H2(2 * (i + j) + sel)]) | (n1[H2(2 * (i + j) + sel)] << 16); d[i + H4(j)] =3D f16_dotadd(a[i + H4(j)], nn, mm, - fpst_f16, fpst_std, &fpst_odd); + &env->vfp.fp_status[FPST_ZA_F16], + &env->vfp.fp_status[FPST_ZA]); } } } --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033411; cv=none; d=zohomail.com; s=zohoarc; b=K9hO+7BDoEhlbJ6UR4ezQ/6N4yMzOaschzlHD6ZxzZA2fEZ1VBkgkMAAh+ppcCEjkPnwojYKLMSRDL9sqBia4asWwROScuVDi2u/cXPd0K5jls/P4PAncOdPZOf7OTwrJo6fwrW9VMw1bnmxR3+uhLlygr3MlVnWpRrwaqdpb3A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033411; 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=xVjmzdyr5Lm6lgVp2HxXwqT/cVK11tOws/vdOSgu1Mg=; b=gauxWt3SOPBd28GG5XGXge9M6XIgKo3O5IF6vPbf3kpn+V10rhvsipXGM8O9HvFDrtO4MKY90bKt8hVX4dmFpUWy3J/4et0zVMM1SVbBaG0haAhYlsp5K9Vo1fYYUUz7KFw07Ovw1yqr8xrU1TYha654qkU3QjPVcu7fkTozT8o= 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 1781033411386651.6077055591479; Tue, 9 Jun 2026 12:30:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX260-0007Rg-Ns; Tue, 09 Jun 2026 15:26:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX21q-0003YG-7h for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:30 -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 1wX21f-0003zr-Uf for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:22 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2bf55c39e16so27452415ad.0 for ; Tue, 09 Jun 2026 12:21:15 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032874; x=1781637674; 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=xVjmzdyr5Lm6lgVp2HxXwqT/cVK11tOws/vdOSgu1Mg=; b=nnSj6WRduA9Ydh66/gVZtZznGi3hELQ+au8hIBaoEixVOdPEak5ls5Tf8lK1fz4m6I dBe+MaqIA9HaDRu+ivL5QB033bBzk86G2rdA16+Yxy4hgleKSUcY+lTZwQkjNlGmxiGL MC2EZGuturPltHVPgpp6U6JE7kEm2SFEu/Ypn032rwzVnvqL7myu+mzNa5rX2SviP+0Y C6mW9eXR8jCyEAOQvcgo+JyOay3jdnX8+DAu6yWE831NlwErKzuRBm78jUlWp7qcLQ+6 la3oN5V+hNzJpW+0Jb2IRUmhV0q0zsGE5bXA98a0qGDg2quawkjbiNOx4YkGLkt+GSxW vQ4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032874; x=1781637674; 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=xVjmzdyr5Lm6lgVp2HxXwqT/cVK11tOws/vdOSgu1Mg=; b=ejpAu9Q8nLxlBP1ANKpQIoaZavAMTAmxuzLYeLOi97PQ0YunC1X5+mQkgQ0ZlP+MN+ PIUyiz7gZe5Ixz2DfCBp8sGdvOhxzQWCXJlIUlX2s/MAwxwvwICmqdAQ/JbrDv5MS4os P8R2son4YspW9x14IzVu/d/dDFuRrdF4aRL/VG1BiehABsSBsxDXRLAJEupH4AOTCXBJ t9qtLiefVRUggtwF7GlGwTem2XNmH3g+tWze6tDKG+qgwwdq5wwaFBwrjOXFUPsgO+mu u9ZnQys38teLBnR9ZL+0wwab2FWm7EGjuPMxFISGEMTBxhiHlc7pw4/9q6NagBLaFR9r PyKA== X-Gm-Message-State: AOJu0Yyf4HPQdFoM9LD9FMLc0LtJ2ehX+kuwnHU7HWwSHSSy4j3w/iBi ROW7Zt+l1xLsTmHEYRmzDUr2Cc2gaY2vSmmHkGsD8V3YCFM6ngvs80stmfqM77oYa89DAGjDi9w hk41ZvzU= X-Gm-Gg: Acq92OGr/r03yBBFzNOgEjRzpK7K7AREEzFqJEwHF0oRYo1PphYKSOSox+vaOySK3WE VvUXiN7rIjpKCle/3URGkTjBKm/ffi3S0HE6LCVs+3DOvc8UpEQpQtNS6sKht4KAjDX6vCK/f2m DlyRui3g914cbv2NDU1ySsfN/v8EB7QqRD8O/J8HseCEiRpj4n8mIC1LkgAv4MxFO8tTxVXDQH0 n99fpq39kI46hoMBpv2kefLfpNkwdMEKkaZNqj/mjMKmc+4kLt8pbCCN5WAxbEOQy1QPDh/jcAb G/lIyE5kxEz+F4nZSY+9/KDnNRLLgnCQILO6kL9CLz+jIL6RPoQMGokbo3+oEaY3eJbbSFVkTcB e23jfBV0azf4BND+7st5aMXx1g8vw90bq1hfkRna2iKPQcSmpHHPzaJaY//r/jQ9HaGZPEp3wI0 /MPiSYo2KsbU/9+6NuBlnzlJAsrqJKR1O+IphPECo= X-Received: by 2002:a17:903:1b6c:b0:2ba:6601:8e3d with SMTP id d9443c01a7336-2c1ec513601mr183184395ad.9.1781032874135; Tue, 09 Jun 2026 12:21:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 04/45] target/arm: Generalize TRANS_FEAT_STREAMING_SME2 Date: Tue, 9 Jun 2026 12:20:28 -0700 Message-ID: <20260609192110.752384-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033411758158500 Content-Type: text/plain; charset="utf-8" Rename to TRANS_FEAT_STREAMING_IF and add a new parameter. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/translate.h | 6 +++--- target/arm/tcg/translate-sve.c | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index d4bcc5bad4..beaffe914e 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -877,12 +877,12 @@ static inline void gen_restore_rmode(TCGv_i32 old, TC= Gv_ptr fpst) =20 /* * For SVE insns which are only valid in Streaming SVE mode when - * SME2 is implemented + * FEAT_STREAM is implemented. */ -#define TRANS_FEAT_STREAMING_SME2(NAME, FEAT, FUNC, ...) \ +#define TRANS_FEAT_STREAMING_IF(NAME, FEAT, FEAT_STREAM, FUNC, ...) \ static bool trans_##NAME(DisasContext *s, arg_##NAME *a) \ { \ - s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); \ + s->is_nonstreaming =3D !dc_isar_feature(FEAT_STREAM, s); \ return dc_isar_feature(FEAT, s) && FUNC(s, __VA_ARGS__); \ } =20 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index fb9d379184..997d6b0451 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4261,9 +4261,9 @@ static gen_helper_gvec_4_ptr * const sve2_famax_zpzz_= fns[4] =3D { gen_helper_sve2_famax_s, gen_helper_sve2_famax_d }; -TRANS_FEAT_STREAMING_SME2(FAMAX, aa64_sme2_or_sve2_faminmax, - gen_gvec_fpst_arg_zpzz, - sve2_famax_zpzz_fns[a->esz], a) +TRANS_FEAT_STREAMING_IF(FAMAX, aa64_sme2_or_sve2_faminmax, aa64_sme2, + gen_gvec_fpst_arg_zpzz, + sve2_famax_zpzz_fns[a->esz], a) =20 static gen_helper_gvec_4_ptr * const sve2_famin_zpzz_fns[4] =3D { NULL, @@ -4271,9 +4271,9 @@ static gen_helper_gvec_4_ptr * const sve2_famin_zpzz_= fns[4] =3D { gen_helper_sve2_famin_s, gen_helper_sve2_famin_d }; -TRANS_FEAT_STREAMING_SME2(FAMIN, aa64_sme2_or_sve2_faminmax, - gen_gvec_fpst_arg_zpzz, - sve2_famin_zpzz_fns[a->esz], a) +TRANS_FEAT_STREAMING_IF(FAMIN, aa64_sme2_or_sve2_faminmax, aa64_sme2, + gen_gvec_fpst_arg_zpzz, + sve2_famin_zpzz_fns[a->esz], a) =20 typedef void gen_helper_sve_fp2scalar(TCGv_ptr, TCGv_ptr, TCGv_ptr, TCGv_i64, TCGv_ptr, TCGv_i32); --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033040; cv=none; d=zohomail.com; s=zohoarc; b=JGtYwJ5+Yb63oMsIc5YRqZzwHAIy5veaHaGMa9WAfpmiyQd/jduOxA6fUQFQe/dmDulVXNrKwzjKDKaL2OVuK2SqcywdAF3ER7BgfdAHgyHl9PCXM/q8dCrL6XkYb11+M/h/W3JraM1XCRsDvDIXngYp1n4UeEvQRPiZJVEjINY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033040; 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=qxJlZl6n8F/qIy1kJwiEnWFNrPr1p3ske2PZwKnmD7Q=; b=YWpE5JnWOBDbEI3zxIeUChkSxFjwSepz00E3mxruTi+N9P/7HdEDTn3FswL3CjLLZzstszM4L/k66UpZntyZCxWsGtUIQqyP7vLjb9PDZRah0Bsha0RByNjtNQMEkUj4NQDHmbnueTmR4d1jaYkhF/zOEO3F0eMFOzBBb4ZNVc8= 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 1781033040104185.30582082280273; Tue, 9 Jun 2026 12:24:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX22R-0003dh-D8; Tue, 09 Jun 2026 15:23: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 1wX21C-0003Cg-Bw for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:21:58 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX20t-0003zw-DW for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:21:35 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2c0c2c7d45eso53589555ad.1 for ; Tue, 09 Jun 2026 12:21:15 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032875; x=1781637675; 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=qxJlZl6n8F/qIy1kJwiEnWFNrPr1p3ske2PZwKnmD7Q=; b=xC9sfD4wz33+MK2lSFcwryHr3uSrufASx2/X6y3/hsmu3AvZTL6y3yyC4RSQOIxuB8 HimgpsY0EzA0/JknNyZXQUwZH9sBOqTTu8sPB7BTg1LfJboZiNQWHtAMg5/eiNyA+ZmK nCRWiVtRA1k1ZNAx8lbbeAShwbAyntON/7Y8V4IeXyZ79wpoifQuIX0jGclqhPExWilv f0LfAOEQA9+kRYwYtq4k8auJ3TSU0F/GP+55wzhkdchpRcK/IJ1QPwHJErohcwWtoAgK lNfqYcvbBKw+Fi9vg01pp6umlnRmI7iR5NPlgjYsHpB6TGLuIzN+nO+//1OCjGvN77gH Maag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032875; x=1781637675; 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=qxJlZl6n8F/qIy1kJwiEnWFNrPr1p3ske2PZwKnmD7Q=; b=QAp6SSaB8sfagBzIq2DhGTBmugC2HfjlnJpPv+4sUJDwIBRPGQYG0us6yh9Y+kgdNu vlzdd07m2fUEYE9PP1l0VhxivXULtiEysfc33K1sIh/u122Vg/JJHDfTsbac5ECNfTAT spQrCJr3DbpxvM9T33EQyfMK4vKEpnLiIGorLgH38toAJo8MmrQQL8Ey9tov2536/jQ4 w7YIw3e6Hqn1rQfHc0yp/ha/OkpHtewgfWOvnh7Ex4hkmyGUUZmOTTs91+c4F/1Df7GV EQTEhM51MH3Sh6dEjXZJLArHrGyhz7ndJt3eWa59t2LER1OUp0+W77btTM0R5RcVwIxp KzLA== X-Gm-Message-State: AOJu0YytZVJPm/Jv60jRUWz6f9+rtOTdwZRW83MCvTb8WtQM7uqhyiia VIG9FFvspebM/f3s8DwYc5bhv7YzSD73ffzy+Xvzwu+ZUlqa1OVOslQxnsEZIGufxw1cZXyK6uE +iFybgnY= X-Gm-Gg: Acq92OHhAVmCQuhuyA4/zJubCHM9HNCv/gvsHqNOn1u3oWiytQDyqqqeKQj/cVi8qjN CAeF7Y4tmb+sxabu9cj7aZEXM7Oz4sIdGRF47pf8bwGsIAqOilEYmtTrgVgYl99H+QA65xsYmya SHzSziZ/ROEirrLhTU/vxe9Zbc3cfMxH3PIIPxW6bm49RS4VBhrGKUaTWrjgd/ziR+tRk8AHkeL GVPpxyymXtVq4aoGWYJw92W3+87/kOZiO4mwv74We6bMhMysZMb+Poc7sQnwAp7E2WX3ZipOBxv m4Eezz1NeL96VdYNYWi0uwCT2LYaU+DlDShC87PdgAYr/hasfm9OgmWaypDzwSOn3nAbaqquiBa IMMk9usnZV0DgehbPVpIX9Gru3PMFHmL83m/98vr3bRF8bAFlttByq8OZtgRUyOrSfOiBD7WY7x SPqIVhgKxcJIJ1I+R0XDgWY8u/Eoar+NN0y3KZ7wo= X-Received: by 2002:a17:903:3bc7:b0:2bd:c925:3a16 with SMTP id d9443c01a7336-2c1e80e3bcbmr254403755ad.2.1781032874861; Tue, 09 Jun 2026 12:21:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 05/45] target/arm: Introduce arm_init_fp_status Date: Tue, 9 Jun 2026 12:20:29 -0700 Message-ID: <20260609192110.752384-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.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: 1781033042071158500 Content-Type: text/plain; charset="utf-8" Create a function to set all default controls for a float_status. Other settings for specific FPST will be set afterward. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index a13e6dae2a..b75c6a6622 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -304,6 +304,13 @@ static void cp_reg_check_reset(gpointer key, gpointer = value, gpointer opaque) assert(oldvalue =3D=3D newvalue); } =20 +static void arm_init_fp_status(float_status *s) +{ + memset(s, 0, sizeof(*s)); + arm_set_default_fp_behaviours(s); + /* We want 0 for all other settings. */ +} + static void arm_cpu_reset_hold(Object *obj, ResetType type) { CPUState *cs =3D CPU(obj); @@ -626,20 +633,16 @@ static void arm_cpu_reset_hold(Object *obj, ResetType= type) env->sau.ctrl =3D 0; } =20 + for (int i =3D 0; i < FPST_COUNT; i++) { + arm_init_fp_status(&env->vfp.fp_status[i]); + } + set_flush_to_zero(1, &env->vfp.fp_status[FPST_STD]); set_flush_inputs_to_zero(1, &env->vfp.fp_status[FPST_STD]); set_default_nan_mode(1, &env->vfp.fp_status[FPST_STD]); set_default_nan_mode(1, &env->vfp.fp_status[FPST_STD_F16]); set_default_nan_mode(1, &env->vfp.fp_status[FPST_ZA]); set_default_nan_mode(1, &env->vfp.fp_status[FPST_ZA_F16]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_A32]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_A64]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_ZA]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_STD]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_A32_F16]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_A64_F16]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_ZA_F16]); - arm_set_default_fp_behaviours(&env->vfp.fp_status[FPST_STD_F16]); arm_set_ah_fp_behaviours(&env->vfp.fp_status[FPST_AH]); set_flush_to_zero(1, &env->vfp.fp_status[FPST_AH]); set_flush_inputs_to_zero(1, &env->vfp.fp_status[FPST_AH]); --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033405; cv=none; d=zohomail.com; s=zohoarc; b=RUepcJMaXQyBViZZTRwQbBt9Srh0WP+UCmmIsBbEjm7rMp6EZWexO+AKdE2C7iljL+rbpgmpLKv8O/3UuQNwW7O/4ojvbOBdTMPIp142I2rknzZ/BNA/8gjBT/KxAISuaCJrBZ6ABKAk3fnJt/IvWmRMG1wFEHgucIAfhm88S+0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033405; 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=1USoF+ld0og+49mB5GQHpfwuEC2KNiIk/lt+yiqX4XM=; b=Oc+5m1Kv9XPSe9crf+NE1mHOkNgDnhEMLnU7gVANXgD5E7mwR8M65uie5zp13iD94siyQhp6jzCcXloS97v6AGX3IXgMQQ8a5l8zSxiE+fbDHjp1q9y4t5ausJs7fSrK79OMYLTtWQGt7PIx+/RBHWKOZffBPqO8fa45qFHV5sI= 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 1781033405118237.4930279271514; Tue, 9 Jun 2026 12:30:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX26U-0001MX-Nu; Tue, 09 Jun 2026 15:27: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 1wX21q-0003YK-Aa for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:30 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21h-00040A-7A for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:23 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-c85a2c012e5so2125072a12.1 for ; Tue, 09 Jun 2026 12:21:16 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032875; x=1781637675; 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=1USoF+ld0og+49mB5GQHpfwuEC2KNiIk/lt+yiqX4XM=; b=vFAha7YMDjNELUDFQgvam83IDu//DmzFBWfh/MmIENlHfC35iSKtgdFtJqJ9r4nDoU W/phREN5qdqrCLFSqgVcmxfbXTHaH568b4Vukqq+iSeG6W7yBf1JBzcau6VJj5kPUsq+ WVGfx3uIwm7+BW8+g//1S1/cX0oUae1q4lGCchIFGQnuaJO+MDsWexdm3qIqaJ9H+ERX rAu99NfJN3360xauSRGuUtq04xhobRyQYNc8MLB5k0cQ6ayOxDoVSWPjewXpHIRQWWAp 0n4MxEdEBTdvKyymVAmvHEZo5jZBM4U+CIMfRy0zAh5G4tHw3Dug2+9NoVFQ2f/2bQEQ bAig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032875; x=1781637675; 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=1USoF+ld0og+49mB5GQHpfwuEC2KNiIk/lt+yiqX4XM=; b=PlUvom8qYlee6xJ5hSNQ1Eq214GpTUoBfrOk+XO5uwMJcFEpznRsRWAprxwjLdsHVV zmiUPaCMCpHZtDx0T468FfAdWz40pxwxQ3FWqy16zF9I/ELoE4ooW6Yue11qpXTSYBow E+ig5PbWrWLiVOYIacNJ2QrHGrXR7phqBy+DfJ/f3uIW5YGNAIsCKQC+aYNsERjzajnz KkjxCfcWIb+UXAUhZP4O/7I65zKfTHz6/fu1KjCTWmeQIi64U8riaYfN/5C82K55gV+I UzjQqacDyN2haRadpp7XWqCHaWcLHAbZgK9tgqLkf4J0+HgYl0+LejbTwIcJWXZQn2Ta 1Jww== X-Gm-Message-State: AOJu0YwH0Ktnoi/xhZBydpbb1kjd3FaJUILJ97X0hdPzGrRtDI/WFTDR AMkdTg7AJ+I476VN2OXSRB3/qfHUGnMWKCWdnaCHrMFygFgt++iKiuP9iuuO9BmgynLamJBao+5 TeWR302k= X-Gm-Gg: Acq92OGx2dQqMsrGCeXiAnJ2WEx2VYxEjfLNT3ckuT61q/xTxFVmIQMyXm8sQZyszH7 MwtSuyvKewOSKpuzYR+3fKG8btHLHbvRJ7mCTwFjjwwezUtsOCv4bI93hOb1qXyHIjQKBsZm74C Fz7NWRJ0coKAwTh+Rwk6xlxEzGjURHJW4H61JWIcZgKauCoaWiSoilmSAnSKArE81oqVj2cV4W0 yG/hN3JaSfUhI3oGlt7NGnY3wI3NprFVV+8ZCk5O7i6edlRYYd+WVCDDt5EZfaZom9k8eh5ZHmQ q5aVgtdos+VP5llW2PwqZ/Z+yrNmLiC5bL/1ynrhxrJKDjmJbSE6nz7gc4ghwYo3/nGU+GGo4tL SVMFVTouUste8DfDUkdBrLe1DbVtv30imLHM5onvC9gm9VFyS0OOIpFNy0hfL0NPiSJvS9m91aV mFzwO2C64+qqwdRLTV/MYt+0HK7s/i0x9S+aZaUmM= X-Received: by 2002:a17:903:987:b0:2bf:128d:f7ff with SMTP id d9443c01a7336-2c2a1be668cmr50234615ad.16.1781032875550; Tue, 09 Jun 2026 12:21:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 06/45] target/arm: Set e4m3_nan_is_snan Date: Tue, 9 Jun 2026 12:20:30 -0700 Message-ID: <20260609192110.752384-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781033405897158500 Content-Type: text/plain; charset="utf-8" The unique e4m3 nan encoding is SNaN for Arm. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index b75c6a6622..77133b8b4a 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -308,6 +308,7 @@ static void arm_init_fp_status(float_status *s) { memset(s, 0, sizeof(*s)); arm_set_default_fp_behaviours(s); + set_float_e4m3_nan_is_snan(true, s); /* We want 0 for all other settings. */ } =20 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033458; cv=none; d=zohomail.com; s=zohoarc; b=LKKakU3jlL8TaldRLTOPde+QggC4A048JfyuCRTLgVZMldEd0yH6RnH8DrShLrMGs1Dzrpubps0KUBeLx9hqzcSP2BJxh6DVq2l0Y1lSNIoNU86WBFaFsA4FcIzrUb/PI4SU4U4rDPcKat0MVD2Wdm6HkCUUIKAdHArFtOimTmI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033458; 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=3gYBbtUGELx0hsEbLr99DHr0CBTTSqCEowLfHMa0ccI=; b=f9SO92bURAThRt6zNQZARtOix6LilIL8fOeCzwGGUlVEEFFUSO0lKbNr0TTp2wH+QdrtonNgWRlPYN8+EsgX/Kzo078F+aCBKg8l5YRlUSzIumtMDP1p6QOc6wkp/jbnQPsWtre4m5/mOIjXGOorWXZ/ijNY6auVL14BNZbsK0g= 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 178103345859328.84419818508809; Tue, 9 Jun 2026 12:30:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX260-0007Rl-OD; Tue, 09 Jun 2026 15:26:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX21s-0003ZC-Dt for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:31 -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 1wX21h-00040s-QD for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:24 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2c0b9328c4aso41501595ad.0 for ; Tue, 09 Jun 2026 12:21:17 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032876; x=1781637676; 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=3gYBbtUGELx0hsEbLr99DHr0CBTTSqCEowLfHMa0ccI=; b=C506bQjvqN17NbgJWml+cge1chJDUoYYGg+zj2O3iVEpnivv4sROHulFPxb3RsIEsX V+5LYW4yZZY10URLgSFpmFC/Jf1C4mbD5+m5KMS3+JRC0IY1bGAGejwiCWYMsoGAjfFQ 0nRAAvL6nEwtXhv0Lv7vJZjlcvZXLRI93MtKbOl1RBD6kXYWpo340GI2oMH2+FhV81v1 MVTU53LlJ4PRPq8ZM2R/0AJvRDvsFp7MXinf00yjjoGgpWRh23Z8xn7PIwAQsO5eLu6d arx47AFLFzrESwvwd84XAokmpjK0Hb0Rtlhp5Bcu03OYtX0xlprP/Jep9iq2LjF13vEs Uk5w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032876; x=1781637676; 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=3gYBbtUGELx0hsEbLr99DHr0CBTTSqCEowLfHMa0ccI=; b=jsPJEKYTeiCxP8AgUXQTksn9WScPnESe1/+vOFcNddxofWokLI3ABbIduXrOwvQBa4 eX0R150F3B96O0mlTTmuv7NyO/Yks4Pbuv6glIe6eUqlB+Cds1smPkGbAG7XxqKhbXgp tvNsHiX0cScLz5NOw3nQupmPC8iqKiiG0YevuECEyaaF3bW99F26iDRFQxTHIW/XTktz 23tBQu09LTH0pzwJlt7UsIrVbgTpnzj5SMB+6x7bm1ZCTDcWyJW0erL0r3bEX2KzskLW ET4kbBlcIMFQGp3M8PdHkHr3Io0vOYIZ/0cTzWi/fHMctHnmdrVvC7Uu2LR6Y6o9wVBu UM3g== X-Gm-Message-State: AOJu0YwBwlYf/eBFjUxTgpXaiK/dIkyd/ahwY3P3qYYePPp2PzN63Thc pSJi6Xp9kYaS4+ySXBp3T9KoT+9M2XOLjtpy4ka/GfK3xibC0gHuK2zdfyvL2v5qryEtlPrCaM/ GtHKdKVY= X-Gm-Gg: Acq92OGralOK1El+jTiIZKz1WtSQwR7VFc8EdTEPe3OcueJ4+Cpwdja7FPArwCJFm8l KwNigR/Ni+Bh1qjs3Fs3810LqCtoYCrHghA7UTaKhYQI9obtT9hgacdYnQG/rcWffrgOUbPciCH hdf2B3ayBgEJhk2wpwV/Kh33bTLQLKNwVfCTBkZSgx9pcu5YP7ngNTR0gsD3wijQAE3/G0JBq+p rDsHFtuG+5gC17bstHIV12Cn+yNQ+DuQaf72qZSwOwz7L//F9iEzgK/5RwCeBppbggwsrq1O2a+ G0GjkmgU4ItJTPlhnoZLWbyHvZhjpW1wrh2KML24L6hNsfoe8+HfKVrbYciVsxB4CAQc4tzR9xw hpUVyjhR1DxDW1q6alnHEd75+MweQUWcLac6KRdTwvQEhu8VD9f0pd3S8fuuE4Q+cuE3j+H/SJ7 vn6Iol5Ah5bpNsd8CGdc783cWjJsMMBMH+TSMRrnY= X-Received: by 2002:a17:903:11c9:b0:2c2:21e9:5a7d with SMTP id d9443c01a7336-2c2a1cb65cemr50263385ad.34.1781032876353; Tue, 09 Jun 2026 12:21:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 07/45] target/arm: Implement BF1CVTL, BF1CVTL2, BF2CVTL, BF2CVTL2 for AdvSIMD Date: Tue, 9 Jun 2026 12:20:31 -0700 Message-ID: <20260609192110.752384-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033460254158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/helper-fp8.h | 14 ++++ target/arm/tcg/helper-fp8-defs.h | 6 ++ target/arm/tcg/translate-a64.h | 1 + target/arm/tcg/fp8_helper.c | 124 +++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 34 +++++++++ target/arm/tcg/a64.decode | 3 + target/arm/tcg/meson.build | 1 + 7 files changed, 183 insertions(+) create mode 100644 target/arm/helper-fp8.h create mode 100644 target/arm/tcg/helper-fp8-defs.h create mode 100644 target/arm/tcg/fp8_helper.c diff --git a/target/arm/helper-fp8.h b/target/arm/helper-fp8.h new file mode 100644 index 0000000000..c45211ba22 --- /dev/null +++ b/target/arm/helper-fp8.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef HELPER_FP8_H +#define HELPER_FP8_H + +#include "exec/helper-proto-common.h" +#include "exec/helper-gen-common.h" + +#define HELPER_H "tcg/helper-fp8-defs.h" +#include "exec/helper-proto.h.inc" +#include "exec/helper-gen.h.inc" +#undef HELPER_H + +#endif /* HELPER_FP8_H */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h new file mode 100644 index 0000000000..0caaf63749 --- /dev/null +++ b/target/arm/tcg/helper-fp8-defs.h @@ -0,0 +1,6 @@ +/* + * AArch64 FP8 helper definitions + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/translate-a64.h b/target/arm/tcg/translate-a64.h index 9c45f89305..35f8d4f82e 100644 --- a/target/arm/tcg/translate-a64.h +++ b/target/arm/tcg/translate-a64.h @@ -25,6 +25,7 @@ TCGv_i64 read_cpu_reg_sp(DisasContext *s, int reg, int sf= ); void write_fp_dreg(DisasContext *s, int reg, TCGv_i64 v); bool logic_imm_decode_wmask(uint64_t *result, unsigned int immn, unsigned int imms, unsigned int immr); +bool fpmr_access_check(DisasContext *s); bool sve_access_check(DisasContext *s); bool sme_enabled_check(DisasContext *s); bool sme_enabled_check_with_svcr(DisasContext *s, unsigned); diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c new file mode 100644 index 0000000000..bb3e8dae5f --- /dev/null +++ b/target/arm/tcg/fp8_helper.c @@ -0,0 +1,124 @@ +/* + * AArch64 FP8 Operations + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "cpu.h" +#include "internals.h" +#include "tcg/tcg-gvec-desc.h" +#include "fpu/softfloat.h" +#include "fpu/softfloat-parts.h" +#include "helper-fp8.h" +#include "vec_internal.h" + +#define HELPER_H "tcg/helper-fp8-defs.h" +#include "exec/helper-info.c.inc" + +typedef enum FPMRType { + OFP8_E5M2 =3D 0, + OFP8_E4M3 =3D 1, +} FPMRType; + +typedef struct FP8Context { + float_status stat; + ARMFPStatusFlavour fpst; + FPMRType f8fmt; + int scale; + bool high; +} FP8Context; + +static FP8Context fp8_start(CPUARMState *env, uint32_t desc, + FPMRType f8fmt, int scale) +{ + ARMFPStatusFlavour fpst =3D extract32(desc, SIMD_DATA_SHIFT + 2, 4); + + FP8Context ret =3D { + .stat =3D env->vfp.fp_status[fpst], + .fpst =3D fpst, + .f8fmt =3D f8fmt, + .scale =3D scale, + .high =3D extract32(desc, SIMD_DATA_SHIFT + 1, 1), + }; + + set_flush_to_zero(0, &ret.stat); + set_flush_inputs_to_zero(0, &ret.stat); + set_default_nan_mode(true, &ret.stat); + set_float_rounding_mode(float_round_nearest_even, &ret.stat); + + return ret; +} + +static void fp8_cvt_finish(CPUARMState *env, FP8Context *c) +{ + /* FP8 convert insns don't update FPSR.IDC */ + int e =3D get_float_exception_flags(&c->stat); + float_raise(e & ~float_flag_input_denormal_used, + &env->vfp.fp_status[c->fpst]); +} + +static FP8Context fp8_src_start(CPUARMState *env, uint32_t desc, int scale= _mask) +{ + bool issrc2 =3D extract32(desc, SIMD_DATA_SHIFT, 1); + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType f8fmt =3D (issrc2 + ? FIELD_EX64(fpmr, FPMR, F8S2) + : FIELD_EX64(fpmr, FPMR, F8S1)); + int scale; + + scale =3D fpmr >> (issrc2 ? R_FPMR_LSCALE2_SHIFT : R_FPMR_LSCALE_SHIFT= ); + scale =3D -(scale & scale_mask); + + return fp8_start(env, desc, f8fmt, scale); +} + +/* + * Invalid input format: we could take one of the usual set of + * CONSTRAINED UNPREDICTABLE options for use of a reserved value, + * but choose to take the additional option provided by the FPMR + * register specification, of treating the input as if it were an SNaN. + * + * One of the uses of the input will convert to default nan (because + * all fp8 operations use default_nan_mode) and raise invalid (which + * the operation might suppress by not updating IOC). + */ +static FloatParts64 fp8_invalid_input(uint8_t x, float_status *s) +{ + return (FloatParts64){ .cls =3D float_class_snan }; +} + +typedef FloatParts64 fp8_input_fn(uint8_t x, float_status *s); + +static fp8_input_fn * const fp8_input_fmt[8] =3D { + [0 ... 7] =3D fp8_invalid_input, + [OFP8_E5M2] =3D float8_e5m2_unpack_canonical, + [OFP8_E4M3] =3D float8_e4m3_unpack_canonical, +}; + +static bfloat16 fcvt_fp8_to_b16(uint8_t x, fp8_input_fn *f8fmt, + int scale, float_status *s) +{ + FloatParts64 p =3D f8fmt(x, s); + p =3D parts64_scalbn(&p, scale, s); + return bfloat16_round_pack_canonical(&p, s); +} + +void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn, scratch[16]; + bfloat16 *d =3D vd; + + if (vd =3D=3D vn) { + n =3D memcpy(scratch, vn, 16); + } + n +=3D ctx.high * 8; + + for (size_t i =3D 0; i < 8; ++i) { + d[H2(i)] =3D fcvt_fp8_to_b16(n[H1(i)], input_fmt, ctx.scale, &ctx.= stat); + } + + fp8_cvt_finish(env, &ctx); + clear_tail(vd, 16, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 3c091ccc56..5c6e88e0bc 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -22,6 +22,7 @@ #include "helper-a64.h" #include "helper-sme.h" #include "helper-sve.h" +#include "helper-fp8.h" #include "translate.h" #include "translate-a64.h" #include "tcg/tcg-op.h" @@ -1457,6 +1458,24 @@ static bool fp_access_check(DisasContext *s) return fp_access_check_only(s) && nonstreaming_check(s); } =20 +/* + * Check that FPMR access is enabled, for an indirect reference by a + * vector instruction. See CheckFPMREnabled(). + */ +bool fpmr_access_check(DisasContext *s) +{ + if (s->fpmr_el) { + /* + * While denied direct access to the FPMR raises SystemRegisterTrap + * and targets a specific EL, denied indirect access to the FPMR + * results in a simple UNDEFINED to the default exception level. + */ + unallocated_encoding(s); + return false; + } + return true; +} + /* * Return <0 for non-supported element sizes, with MO_16 controlled by * FEAT_FP16; return 0 for fp disabled; otherwise return >0 for success. @@ -10695,6 +10714,21 @@ static bool trans_FCVTL_v(DisasContext *s, arg_qrr= _e *a) return true; } =20 +static bool do_f8cvt(DisasContext *s, arg_qrr_e *a, + gen_helper_gvec_2_ptr *fn, bool issrc2) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_2_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + tcg_env, 16, vec_full_reg_size(s), + issrc2 | (a->q << 1) | (FPST_A64 << 2), fn); + } + return true; +} + +TRANS_FEAT(BF1CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, fa= lse) +TRANS_FEAT(BF2CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, tr= ue) + static bool trans_OK(DisasContext *s, arg_OK *a) { return true; diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index d8a3269573..e30c7e5ca9 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1921,6 +1921,9 @@ URSQRTE_v 0.10 1110 101 00001 11001 0 ..... ...= .. @qrr_s =20 FCVTL_v 0.00 1110 0.1 00001 01111 0 ..... ..... @qrr_sd =20 +BF1CVTL 0.10 1110 101 00001 01111 0 ..... ..... @qrr_h +BF2CVTL 0.10 1110 111 00001 01111 0 ..... ..... @qrr_h + &fcvt_q rd rn esz q shift @fcvtq_h . q:1 . ...... 001 .... ...... rn:5 rd:5 \ &fcvt_q esz=3D1 shift=3D%fcvt_f_sh_h diff --git a/target/arm/tcg/meson.build b/target/arm/tcg/meson.build index 9b859892ed..573e8b5af4 100644 --- a/target/arm/tcg/meson.build +++ b/target/arm/tcg/meson.build @@ -41,6 +41,7 @@ arm_ss.add(when: 'TARGET_AARCH64', if_true: files( 'sme_helper.c', 'sve_helper.c', 'vec_helper64.c', + 'fp8_helper.c', )) =20 arm_common_system_ss.add(when: 'CONFIG_ARM_V7M', if_true: files('cpu-v7m.c= ')) --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033341; cv=none; d=zohomail.com; s=zohoarc; b=a03IRPDUlLjtMysgympRlopzXbaLFOZP0kNm1mrhXkb+kuAyQJRzKxhPZigyeTkN9Eogpq/e1WZhCMv00duC7z1UzxZpkRaR0kQTa64MKgeRLKvB97NeRRc0vCAHDtiG24tmmTDWghzGT2jOJ2iddUDN9I0XXoijo3eC6d+9xu4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033341; 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=giMwesWh9NCdYz1zhq/Gz+wrqIEKpyXE05tOlN6Ru/Y=; b=TtDsgFEZrJyI+2f1IXkoD9e9VsB3lfIkOT7z5N2peyTZU1hjnR5TaJPE4QwsdhBJHTUQMewjkM+2xKUDZOgNzEb+KwpZKayY3XXEvhzOXCRIxpqnkM0LJDTxEXcjudz8B3g4SF2237Itye6byJJa4fdz230ncHMW/Roe9+3LB4s= 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 1781033341987432.29239049879084; Tue, 9 Jun 2026 12:29:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX26N-0000Vu-9c; Tue, 09 Jun 2026 15:27: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 1wX21e-0003Pl-CI for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:16 -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 1wX21b-000429-Iu for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:13 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2bf36a6905cso42573275ad.3 for ; Tue, 09 Jun 2026 12:21:18 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032877; x=1781637677; 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=giMwesWh9NCdYz1zhq/Gz+wrqIEKpyXE05tOlN6Ru/Y=; b=wRsCGhgjkrwKFFyRndqcnEB/dO3ek1AFp59jRUHpaTLJf+9sCqQQxf9sk942DAFlIn Thz6ADDjgf407leLEM9IdwxoYcWFOVaWtpHlpLz16gGAuDOD1bwYCwysTmpt8sn9jLsG SPTg/Fv+guBN8TBPYEsR0TgByUlY2bkDCAMgxY7z/Iy7VNWFJWMRwiq5TfQQRBDpSmJo 40rJ+SggUX7bcQDSkXQBpNronf/29as8nD4JhnEmc04cGRUVRFIvNh8UnRVl51TsE+2Y Oj5yy+EBoJpXj7o1LMnSJQPxMU/WQsZWAU6OCAiiOShgqXSomoeC6Bzf3fjpmo1pCYrt jTmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032877; x=1781637677; 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=giMwesWh9NCdYz1zhq/Gz+wrqIEKpyXE05tOlN6Ru/Y=; b=PTi0q7vxXNqwtArUt1znO7riF4xKIOUK6cSpFoWvAQkoiwBDxscvgtocOcGkZlYM89 dK62UAKc6fk3lBqUOPx81XLz2MRgRrIUFtHx0TPlenVTw8IFa2T5lnXsGtT0REa9RI6E hkQwqZPL7IO/4F7b5LbbUCA2bxC4p1xTlHJcM1GcCUZlaKEFbJUjBuXIR8GQkpd6Fh0B Pc5ymHIgAoaaJoKSnOZ3xNH6Cne7DRSQqVQN/8sVA3uEKiadRXZT1c5EW/Di6RZhAcnV r+AZcpsyX0G/Rj5HmpI8dgXzw6FTHkb7YLzg4r5W8DxTOpdYyRxnoxu8EuiSExjKrsiq cXKQ== X-Gm-Message-State: AOJu0Yz7jBwgx0gpvX3aVz6kuQgnvcV7fKo3lPt8RIBdb9yRapYb+sFh a2bjvBNiXDpkqCJVLWTQYsE8mJXJIj9Q0PHNkT0m29m50pnKQeiwLiouCJlB4HoCjGso7putz0g e83iLeNg= X-Gm-Gg: Acq92OEIvrzLYFsk6NnhUHTs45lIa5DLH9//r/SiOmcG+rTOs0cfPO/CA0q9wLZmLvL ju7Ztf/4VXj9cUtr/TkdvKxCNWBFesOkRF+m5WCZkl0BL2vbcV1TS8ML0/EkgqFe9PZhvV2p6M2 wPoyqtNnibzFTMwMjhs0OAGLrzRlkFkDm+SeJpaEDFWzWDpVSvpzE2bnQ4y+6bPsYYGjI7fgwrX 7sBEC4/4qTWS26fjxHAmz6FmNlvwp6blycwMJq8aB47F3FtF2ZDFABEqs5qEPfzxohRup4C6zg7 v1LOimJmucqZIugghIpGc24+1k3CTh8ivEOhO9TSVxC+/atUpQCwlqC88KxlyVE/1IJYPR90HAR xOswCjrCI8RSDgWm4Gm7H6DkGyBcSD/ZxwchnWwNNu/1DQg3rpW/ULEFhJjXgbTGI4ky2Lr5WXy xVZnTSS7K+t2rXroJBaGV8r8/MMPv4BJG/HGjQ0Po= X-Received: by 2002:a17:903:3bc5:b0:2bf:2015:5b94 with SMTP id d9443c01a7336-2c2a1bafec0mr53911555ad.3.1781032877110; Tue, 09 Jun 2026 12:21:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 08/45] target/arm: Implement BF1CVT, BF1CVTLT, BF2CVT, BF2CVTLT for SVE Date: Tue, 9 Jun 2026 12:20:32 -0700 Message-ID: <20260609192110.752384-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033343624154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 6 ++++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/translate-sve.c | 23 +++++++++++++++++++++++ target/arm/tcg/sve.decode | 6 ++++++ 5 files changed, 52 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 38a695ded7..70649fe894 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1653,6 +1653,12 @@ isar_feature_aa64_sme2_or_sve2_faminmax(const ARMISA= Registers *id) return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_faminma= x(id); } =20 +static inline bool +isar_feature_aa64_sme2_or_sve2_f8cvt(const ARMISARegisters *id) +{ + return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_f8cvt(i= d); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 0caaf63749..18ff483bb0 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -4,3 +4,4 @@ */ =20 DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index bb3e8dae5f..c62fb2ffd6 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -122,3 +122,19 @@ void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) fp8_cvt_finish(env, &ctx); clear_tail(vd, 16, simd_maxsz(desc)); } + +void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMState *env, uint32_t des= c) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d =3D vd; + size_t nelem =3D simd_oprsz(desc) / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + d[H2(i)] =3D fcvt_fp8_to_b16(n[H1(2 * i + ctx.high)], + input_fmt, ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 997d6b0451..718a21de70 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -21,6 +21,7 @@ #include "cpu.h" #include "helper-sme.h" #include "helper-sve.h" +#include "helper-fp8.h" #include "translate.h" #include "translate-a64.h" #include "tcg/tcg-op.h" @@ -4068,6 +4069,28 @@ TRANS_FEAT(FRSQRTE, aa64_sme_or_sve, gen_gvec_fpst_a= h_arg_zz, s->fpcr_ah && dc_isar_feature(aa64_rpres, s) ? frsqrte_rpres_fns[a->esz] : frsqrte_fns[a->esz], a, 0) =20 +static bool do_f8cvt(DisasContext *s, arg_rr_esz *a, + gen_helper_gvec_2_ptr *fn, bool issrc2, bool isodd) +{ + if (fpmr_access_check(s) && sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_2_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + tcg_env, vsz, vsz, + issrc2 | (isodd << 1) | (FPST_A64 << 2), fn); + } + return true; +} + +TRANS_FEAT_STREAMING_IF(BF1CVT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_bfcvt, false, false) +TRANS_FEAT_STREAMING_IF(BF2CVT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_bfcvt, true, false) +TRANS_FEAT_STREAMING_IF(BF1CVTLT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_bfcvt, false, true) +TRANS_FEAT_STREAMING_IF(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_bfcvt, true, true) + /* *** SVE Floating Point Compare with Zero Group */ diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 078a085a79..e7984fa8e0 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -108,6 +108,7 @@ # Two operand @pd_pn ........ esz:2 .. .... ....... rn:4 . rd:4 &rr_esz @rd_rn ........ esz:2 ...... ...... rn:5 rd:5 &rr_esz +@rd_rn_e0 ........ .. ...... ...... rn:5 rd:5 &rr_esz es= z=3D0 @rd_rnx2 ........ ... ..... ...... ..... rd:5 &rr_esz rn= =3D%rn_ax2 =20 # Two operand with governing predicate, flags setting @@ -1090,6 +1091,11 @@ FMINQV 01100100 .. 010 111 101 ... ..... ..= ... @rd_pg_rn FRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn FRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn =20 +BF1CVT 01100101 00 001 000 001110 ..... ..... @rd_rn_e0 +BF2CVT 01100101 00 001 000 001111 ..... ..... @rd_rn_e0 +BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 +BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 + ### SVE FP Compare with Zero Group =20 FCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033236; cv=none; d=zohomail.com; s=zohoarc; b=OVJbfwhe3xf5wIApm+QcmYUsaS9kdGyz+iR2ZkF1hdH7512FpXPSd0bPBACi5nIrgygQKRWE9d1jirxqYfi4i8NtIeDHs2/q1Rt3v7EHee8v7JU7aHkvPAb3JyVjQid4i0eh+Qr0vQWFk91VgFbwWolZiJhnKbMcCRXgQ65jSmM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033236; 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=NmWu/sDAtkDjl8gAPTj3dJ28zzesg5TWuoVZT/pgdHk=; b=XoPKeIOnX7lBqssiymxvFv+0uh4VKKFlEu2x4dtuR0EgauFNEQ/vvTyUeokWnxSSGqSxCdqlIaS0yHfCuEpK/bittfYttW6S2Am/AlmYEj7V6M85wkUC3ANeRxTay9Q5Tk5pzbchu7m3kR5fPI8t3lfZYsjGqfDNmkTrMhEBILw= 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 1781033236904907.2281741148832; Tue, 9 Jun 2026 12:27:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX25s-0006ry-RE; Tue, 09 Jun 2026 15:26:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX21s-0003Z8-D9 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:31 -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 1wX21j-000430-7Z for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:25 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2c0c3315c5dso62661915ad.3 for ; Tue, 09 Jun 2026 12:21:18 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032878; x=1781637678; 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=NmWu/sDAtkDjl8gAPTj3dJ28zzesg5TWuoVZT/pgdHk=; b=F7giLOIALRnhJGUCKYqpJpoIXmnZiHm2+EVrMpQuVHbVsExr4U93WGw8zNz6O7j1wx JshxmK3Vp3WZJdYxbUM92GxmgE1LmTL13yqikDNO6s1v0HucyvrBbJ75pa2XWP4mwtsd EB5/kvM1Y22eJ4xVaENFM98kfWMNIKGJcsUINRoW7LkQDALcGB1a7DB/rqUfHZf8oNtW dnc7OF/HoTL5Y7bJWwTwZO6cOt7q/Bk/fY7oQqLwuMAKLkDrPBlPF8awzMPck9rTGdi0 u0OgRJmVKOqKaX6jyp267rCssxcg7OLfEkTp6n65hgrlvmzm44fBwuIGVzdMSNwXtjEa jhTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032878; x=1781637678; 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=NmWu/sDAtkDjl8gAPTj3dJ28zzesg5TWuoVZT/pgdHk=; b=CcWCTGFwpzQX4f3O/+9thrRhLhHa3HT1Al5qNSeodWSf2QkP1iRjoBWSkXWmXBWz0v cDOITZSzAwI3pDM6pXmybULzVsm1AtpHkK0QNelyi7TSzJpuLuEnT5NC7QpdEtP8jGK7 6EqfPy5dtVBPaU9aKYw4AqtL+dK/WiuU1SNgGt6gPUz6RhL3ZfgLDvFifMsg0/QCO8lZ EioMYQOJXkjW104HEj3Oo4DW1oOxBf8f2/7UPWZqaFG/ssIyN54BC47gk+gh+Jo+9BCG Ia3cHuNnKgBbQUuzM7cQisgevTrkZRuqnkxvFJVd7V6PPx/m1d8B5hV0gT+WPDvE4vgT Z+pA== X-Gm-Message-State: AOJu0YyXk46ohdFfn0nnFq6k1XozkZeEDM9B8RLBw/uHwGYX7CubD6fD 5MKaxZ1OUDZWK+NsZBQoIgPwi/eIqziNXD5HjTrDeAFga4guEnVnggZcppXvWhJeS7cvRvfsX4/ /vzq8crY= X-Gm-Gg: Acq92OEnVyKLvfBjVn/5VPKt86a22VXyemvhVP5zBYaPLZv2nbCsOCk5C4dazjgj9V8 hLEip9rm4HU8MteO1S3AUgs1Y8K26wZgqRjw980q34Kr10/QcdrZa4uR7McSAToq8ku3+7LNJVL 7wyOiYlBBPu9UMbnilvgCm6rrOavoN38+YE6PlC8lpbj594rFXEccB13r8nezzY44/oaSO0KkGT NDJxAnd04YIAK/UXM18ml7TFTT2kkdeee97U1Y/BmryPMZkIZi1YmGdEwIuOPUGgkNsyHb4h8U+ LSgFATj4v/pGWHEpEon+JSoIUyhOAu0Qiw6NNuZuw2DcTVs4FTwxePT+ui1/uliNl9AtJ9Ewe2c Dem7HNwrP/csbY+ii8Su/kgRJJjmANu49zD54b7Ul6z8bYXw/whUpLFIgdC7fyTYPM1eeue42Ys Z1RAWjjB7X4P012gDWt2sS9OMygkuJ7LGpn13n6qE= X-Received: by 2002:a17:902:ef08:b0:2b9:6458:1a2c with SMTP id d9443c01a7336-2c1e820e30bmr273218515ad.13.1781032877829; Tue, 09 Jun 2026 12:21:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 09/45] target/arm: Rename SME BFCVT patterns to BFCVT_hs Date: Tue, 9 Jun 2026 12:20:33 -0700 Message-ID: <20260609192110.752384-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033238812158500 Content-Type: text/plain; charset="utf-8" The existing pattern is BFCVT (single-precision to BFloat16). In preparation for introducing more insns of the same name, append the operand sizes. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sme-defs.h | 2 +- target/arm/tcg/sme_helper.c | 2 +- target/arm/tcg/translate-sme.c | 4 ++-- target/arm/tcg/sme.decode | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index c551797c6f..01aad4c231 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -250,7 +250,7 @@ DEF_HELPER_FLAGS_5(sme2_umlsll_idx_d, TCG_CALL_NO_RWG, = void, ptr, ptr, ptr, ptr, DEF_HELPER_FLAGS_5(sme2_usmlall_idx_s, TCG_CALL_NO_RWG, void, ptr, ptr, pt= r, ptr, i32) DEF_HELPER_FLAGS_5(sme2_sumlall_idx_s, TCG_CALL_NO_RWG, void, ptr, ptr, pt= r, ptr, i32) =20 -DEF_HELPER_FLAGS_4(sme2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) +DEF_HELPER_FLAGS_4(sme2_bfcvt_hs, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i= 32) DEF_HELPER_FLAGS_4(sme2_bfcvtn, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_4(sme2_fcvt_n, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_4(sme2_fcvtn, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index f508baed8a..07f86ddad9 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -1725,7 +1725,7 @@ DO_MLALL_IDX(sme2_sumlall_idx_s, uint32_t, int8_t, ui= nt8_t, H4, H1, +) #undef DO_MLALL_IDX =20 /* Convert and compress */ -void HELPER(sme2_bfcvt)(void *vd, void *vs, float_status *fpst, uint32_t d= esc) +void HELPER(sme2_bfcvt_hs)(void *vd, void *vs, float_status *fpst, uint32_= t desc) { ARMVectorReg scratch; size_t oprsz =3D simd_oprsz(desc); diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 82aa14131b..652a72e972 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1448,8 +1448,8 @@ static bool do_zz_fpst(DisasContext *s, arg_zz_n *a, = int data, return true; } =20 -TRANS_FEAT(BFCVT, aa64_sme2, do_zz_fpst, a, 0, - s->fpcr_ah ? FPST_AH : FPST_A64, gen_helper_sme2_bfcvt) +TRANS_FEAT(BFCVT_hs, aa64_sme2, do_zz_fpst, a, 0, + s->fpcr_ah ? FPST_AH : FPST_A64, gen_helper_sme2_bfcvt_hs) TRANS_FEAT(BFCVTN, aa64_sme2, do_zz_fpst, a, 0, s->fpcr_ah ? FPST_AH : FPST_A64, gen_helper_sme2_bfcvtn) TRANS_FEAT(FCVT_n, aa64_sme2, do_zz_fpst, a, 0, diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index ee874be1a6..7a8e1abb59 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -789,7 +789,7 @@ SUB_aaz_d 11000001 111 000010 .. 111 ...00 11 ...= @az_4x4_o3 @zz_4x2_n1 ........ ... ..... ...... .... . ..... \ &zz_n n=3D1 zd=3D%zd_ax4 zn=3D%zn_ax2 =20 -BFCVT 11000001 011 00000 111000 ....0 ..... @zz_1x2 +BFCVT_hs 11000001 011 00000 111000 ....0 ..... @zz_1x2 BFCVTN 11000001 011 00000 111000 ....1 ..... @zz_1x2 =20 FCVT_n 11000001 001 00000 111000 ....0 ..... @zz_1x2 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033155; cv=none; d=zohomail.com; s=zohoarc; b=Nw9doLSh177XKG2cS1FEUkHK9StfVBz8gm+DBCb9tB0wKHg6j7tbD43Q3/gzhLoN+r7AUvspnmxSN4K4XA8H2VTlXZwjZoHXq+PjxKiOw/iYQltTkLO7I9QoGXhxPo33y8mnamm05c+jI5U9MfkIRNP2BLhBxC0VH3bQjzfbpnY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033155; 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=ckaQZDadZRoEOPVRpAH1puA8ceVmvpoZOVmAYQNozxM=; b=Snmx2LsqYhNlxtMUObSAS2YPKJDaYeVrljWdBra/MskA6G0M0x2zNGDE715Sf7Q4F4GBlRgaQYfk1hG9/i/1R9E6w34bAvOHkh2ncq8Ewb2DNQ5djvIss6v566FuSBTwSepkT9h9ksbsGhhftqszRn6hHJE9oAzaJb85qaBfmEE= 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 1781033155945116.02156032373841; Tue, 9 Jun 2026 12:25:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX23l-0004qI-4x; Tue, 09 Jun 2026 15:24:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX21a-0003Kn-GB for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:11 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21S-00043E-6J for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:07 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2bf0ddaf50fso41437245ad.1 for ; Tue, 09 Jun 2026 12:21:19 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032879; x=1781637679; 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=ckaQZDadZRoEOPVRpAH1puA8ceVmvpoZOVmAYQNozxM=; b=MQFjpd/NXCq5CK+rk24AHXNuveJIdMn4uoG8PXdFN86ylkoub1NT+8fkAoaxYw4465 UBt5iX+1WWU+aeU85znOCc85jHPccRiCHveHlVRCICVd5TfOcTt8JOOvAJGhcRAiuNPG TV1EJWEtdy/SXcARlali0h7BtuV2SwsQ03UFBUEPYMhHkY7Roivu/J8i5+wkEWN8FJvk Til9rLik1tbdtddg2tKHnEA8rX1gaLEUPNrLezvPkG3TgWF2gomxTrSxtijmtrGyMwMd FHSUoOocDmIqk134wVlBz0tTjXesjNdqAjO5K8IIZuNHVD3QjHZ8tY1Atx/miFBVF6Tl oFew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032879; x=1781637679; 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=ckaQZDadZRoEOPVRpAH1puA8ceVmvpoZOVmAYQNozxM=; b=j1DxD83A9LtQUD3wtlofIcWkL0O6vdBvVLq+IzWAYOE+eGQCBCHet0S0ajr3mvxDiR lD55z/WEm1psVRtdYkMrmj1FJCjtul6+4zmV+sfASYzC1ysHvztlXgqOFxCyenloci5a Cnv3SVaVgjqQxn0WRD/WML2REuhIRgrZ9LDecgFHIv080rkHlk8psu19zR/9P5LrkxZH JbpQSRkHsNexGGAHw5j1SO1yeUYy7tGweiWbmjr+q7zWiCShVG539WW0yQ4BmkclkQhs Cu7cMTmAFxmOmVj7iFpCiolVBDX65fP96J9Jqkr//OmkZ0TtMSgMFgh+4olDR8aaZsyC 0LSA== X-Gm-Message-State: AOJu0Ywcsxi2uExsEdF+g0WUXauA3n4VkWAm93a1y7dj2rU/wtESIh2P eD3lWoMKiihWhA5Pn5bYuUEZ1v6WXzfgiwvYDcgSpSgLtaP4RjsPXcZdhKjz8OprmWIa8LFicST 9igl8DVw= X-Gm-Gg: Acq92OEQf7LJOZG7lKNuf2Pja+R/xmLx+vRzbTBfLhkjVVYohAWog6AA6evSGzIGuJl vmgFOoa80npuRSXDFg69i2NVTksnmnHc9ligSyoiTYDjXuSN3UjjcxxpZl7pimPDpOV00H4H+fh /2Ojtlte77aYgf8H67bBN6FLhs229Y8H0TeHI59ecRAVPHcKdWquQaHdxH1WYNb+wh6lCunrUHW 5pHgkFjXwDGiRAGuHsj+sv3WEI5nsWJnTwme2jQvfA8VL0HTG2hkSIU3xaVGXqel0jKDkpXR9gu PsdEQc6PqXVOECqt1ts0RrRI/+1o8dJHjagB8lkp6lFro1OUfHoKeTOlYTk64YlR3uKLHCBKBqU Ez6Cd9J0MNSeyqvdw1L56se0NW2Sbw5FbT3mLmbMPNgJ+WBmosMBtNGZSLsxLEeFOuj52d+G3kY ElWGZSNyOxyEaOhezoun803CJlbWDQHVXAEuzYIeA= X-Received: by 2002:a17:902:da8a:b0:2bf:305a:310d with SMTP id d9443c01a7336-2c1e7f92548mr258381085ad.24.1781032878561; Tue, 09 Jun 2026 12:21:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 10/45] target/arm: Implement BF1CVT, BF1CVTL, BF2CVT, BF2CVTL for SME Date: Tue, 9 Jun 2026 12:20:34 -0700 Message-ID: <20260609192110.752384-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.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: 1781033158590154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 19 +++++++++++++ target/arm/tcg/sme.decode | 5 ++++ 4 files changed, 73 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 18ff483bb0..966f83d796 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -5,3 +5,5 @@ =20 DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) +DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index c62fb2ffd6..aad03b0817 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -138,3 +138,50 @@ void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMStat= e *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +void HELPER(sme2_bfcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vectors_overlap(vd, 2, vn, 1)) { + n =3D memcpy(&scratch, vn, oprsz); + } + + for (size_t i =3D 0; i < nelem; ++i) { + d0[H2(i)] =3D fcvt_fp8_to_b16(n[H1(i)], input_fmt, + ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + d1[H2(i)] =3D fcvt_fp8_to_b16(n[H1(i + nelem)], input_fmt, + ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} + +void HELPER(sme2_bfcvtl_hb)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + uint8_t e0 =3D n[H1(2 * i + 0)]; + uint8_t e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D fcvt_fp8_to_b16(e0, input_fmt, ctx.scale, &ctx.stat); + d1[H2(i)] =3D fcvt_fp8_to_b16(e1, input_fmt, ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 652a72e972..19a13a6506 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -22,6 +22,7 @@ #include "helper-a64.h" #include "helper-sme.h" #include "helper-sve.h" +#include "helper-fp8.h" #include "translate.h" #include "translate-a64.h" #include "tcg/tcg-op.h" @@ -1532,6 +1533,24 @@ TRANS_FEAT(UUNPK_4bh, aa64_sme2, do_zz, a, 0, gen_he= lper_sme2_uunpk4_bh) TRANS_FEAT(UUNPK_4hs, aa64_sme2, do_zz, a, 0, gen_helper_sme2_uunpk4_hs) TRANS_FEAT(UUNPK_4sd, aa64_sme2, do_zz, a, 0, gen_helper_sme2_uunpk4_sd) =20 +static bool do_f8cvt(DisasContext *s, arg_zz_n *a, + gen_helper_gvec_2_ptr *fn, bool issrc2) +{ + if (fpmr_access_check(s) && sme_sm_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + tcg_gen_gvec_2_ptr(vec_full_reg_offset(s, a->zd), + vec_full_reg_offset(s, a->zn), + tcg_env, svl, svl, + issrc2 | (FPST_ZA << 2), fn); + } + return true; +} + +TRANS_FEAT(BF1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 0) +TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 1) +TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) +TRANS_FEAT(BF2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 1) + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 7a8e1abb59..df9586c1a5 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -853,6 +853,11 @@ UUNPK_4bh 11000001 011 10101 111000 ....0 ...01 = @zz_4x2_n1 UUNPK_4hs 11000001 101 10101 111000 ....0 ...01 @zz_4x2_n1 UUNPK_4sd 11000001 111 10101 111000 ....0 ...01 @zz_4x2_n1 =20 +BF1CVT 11000001 011 00110 111000 ..... ....0 @zz_2x1 +BF2CVT 11000001 111 00110 111000 ..... ....0 @zz_2x1 +BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 +BF2CVTL 11000001 111 00110 111000 ..... ....1 @zz_2x1 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033347; cv=none; d=zohomail.com; s=zohoarc; b=X6Zb4mBfvgV+AD6Yo+5qC9WJ5l4J9SPLm4ly3SH2+L6hiXYQyxgXNpWXb4a/s4BlgTpNj6j/8Ng5brELe0aC3EZ3jm451c6NaPUtnfj61gjpW+meG4nuAf1DHBScKDlGGWszR9L0CXtsd6aXTxNe6TWQWmCsCtqkMTi807FZsno= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033347; 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=eidadIHZOQyB/SuKSXnQnTco+rbFHJLAnIxWl8Mn6gM=; b=LmVeGYARHZderJMSRGlNnzrI+OPfpbsgVBCTqmHy6szS9S4HYnQZ5/DjhUfww1A0hbY/V2l9FfA1evIL5INQdyfxZNfsovtaD6ukwz7vvDPHIa+E7/NYLl/MUENTukP2PqtMIfjYoJfK6rqECL2z7V0xzo0OmS1ibngCUKMR5QM= 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 1781033347842715.0405031216468; Tue, 9 Jun 2026 12:29:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX283-0002rv-Ho; Tue, 09 Jun 2026 15:28:54 -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 1wX21u-0003a9-Vh for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:36 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21k-00043P-MF for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:27 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2c0c3184c71so45838535ad.1 for ; Tue, 09 Jun 2026 12:21:20 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032879; x=1781637679; 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=eidadIHZOQyB/SuKSXnQnTco+rbFHJLAnIxWl8Mn6gM=; b=N1EXkTvh0CDr5Q2d+Ed3xQQ17GmPLttTYlG+9RwCzS9tthehy4v8eyJ/5GWuMCsCCy 7sJdP5MRh0yMBr4zIPdI4oKB38m/AOpF3dYxeGT8sHWcVHcXE17AMR0VSl9+TaflpiCH Zai0qCrYqv+brlMoy+YTMs3l+X7EfnTTV1bmVvGfgdyc5eUVttI5lSAoqu/QhhvurbtG k3toZFqOKIBXbcoTPYvIPt3QfNY5VNnbR/e4mrYwWW+8Bwa9FCX1rOkmVhNzxiEQrqqt 85yKfTE+oMrqcCF14FN/nGIrlrSA6FHHoZGJcRM4pflXPQBHOdgdOi0ngdRX2Ie8Shw2 sLyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032879; x=1781637679; 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=eidadIHZOQyB/SuKSXnQnTco+rbFHJLAnIxWl8Mn6gM=; b=BKTSjKbJfrAegB3/vmknFsEReERo+9Up0F039M4PmJF7QQicH2gPHSzh1MGaf/wb6n /KdT8+bUvc7a5RiwcJw6vKYe0f5FgsvMdPG2DUvHs9oPF/+8OyRh/F/w/CFPbzrT0ykx AUr9n74SbaQrs8bZ91hvULx55tkdvnsDAv4VMFPQka+LWnX/sHLus6UYpPpmrqGgE+kD Z8hetA49qndQb4jRiW79l1Ig0bevBqvEvzYoHClq/qGxIXjq6qPht2Ao9iaq1PgYjG8p 1iAA3oUJHKMNx8RTWEq8CjS9ohmCp3HUEFASkW5/YZVgoB7fSRsHdffWIZJhf437b58U 31bQ== X-Gm-Message-State: AOJu0Yx9HdZ4Tj4yhZgrIANEgm1Ssxlzo0l58wVRhpZZEpEwAUXnIT43 4e3huBGvHboyRi7HuqeQZqJIUirwDWSehYrD02j7CRJvZiJuNGsxEW4uAFi9DVoriID5ezXVJnv 7vhNOGOA= X-Gm-Gg: Acq92OGVapffUSlIY6GiqCiy0Jwx3hqzjsiQjIw6y32CTNhBj2nvvugDIs25LI8JVeX 1adH3qPj2SJFprt1BxaclILbT4gemAS/3uH+eFY/qtKZr0mctdg9kFZcAh+tXd3RnrWd80+O6XL P2tdCcpThKkWLAMgwnIL4bxEnFCKxNvDRbz/1myLc2/S8OWoS7FNGZB5TVwOCaYw0Sukp+t55Be i/P/HBhp18lSqFvKmXSsHFANVCYRwTCNobREaweoTTYSyVZKvtE017IH5uQ7B3Kn87MkzNT2a6J Rg0GkPmrgV2QwXEwc7C7nckVj45lsTy5l6FZX0P/rxfUw6GRGTQ8yRp6VAfi9oJo+jVjkBHsmD+ 8DfkP1ZGUr5bjJUnwK+aQ3jexsVIw2HRLnTnYluDlN9fhVgLZ90RbpUHgdjl96HLj3XZv70f/Gm le53nC0i1Kw52E+2BoZKkv59hnB0ZlM62gXXqiNlbV/QEdbKcYog== X-Received: by 2002:a17:902:fc47:b0:2c0:eee2:fc45 with SMTP id d9443c01a7336-2c1e7b2f6c7mr266954695ad.4.1781032879185; Tue, 09 Jun 2026 12:21:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 11/45] target/arm: Implement F1CVTL, F1CVTL2, F2CVTL, F2CVTL2 for AdvSIMD Date: Tue, 9 Jun 2026 12:20:35 -0700 Message-ID: <20260609192110.752384-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.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: 1781033349431158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 29 +++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 3 +++ target/arm/tcg/a64.decode | 3 +++ 4 files changed, 37 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 966f83d796..718463422b 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -7,3 +7,5 @@ DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, p= tr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) + +DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index aad03b0817..0f3c279696 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -103,6 +103,14 @@ static bfloat16 fcvt_fp8_to_b16(uint8_t x, fp8_input_f= n *f8fmt, return bfloat16_round_pack_canonical(&p, s); } =20 +static float16 fcvt_fp8_to_f16(uint8_t x, fp8_input_fn *f8fmt, + int scale, float_status *s) +{ + FloatParts64 p =3D f8fmt(x, s); + p =3D parts64_scalbn(&p, scale, s); + return float16_round_pack_canonical(&p, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -123,6 +131,27 @@ void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) clear_tail(vd, 16, simd_maxsz(desc)); } =20 +void HELPER(advsimd_fcvtl_hb)(void *vd, void *vn, + CPUARMState *env, uint32_t desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn, scratch[16]; + float16 *d =3D vd; + + if (vd =3D=3D vn) { + n =3D memcpy(scratch, vn, 16); + } + n +=3D ctx.high * 8; + + for (size_t i =3D 0; i < 8; ++i) { + d[H2(i)] =3D fcvt_fp8_to_f16(n[H1(i)], input_fmt, ctx.scale, &ctx.= stat); + } + + fp8_cvt_finish(env, &ctx); + clear_tail(vd, 16, simd_maxsz(desc)); +} + void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMState *env, uint32_t des= c) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 5c6e88e0bc..5266bbc413 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10726,6 +10726,9 @@ static bool do_f8cvt(DisasContext *s, arg_qrr_e *a, return true; } =20 +TRANS_FEAT(F1CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_fcvtl_hb, f= alse) +TRANS_FEAT(F2CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_fcvtl_hb, t= rue) + TRANS_FEAT(BF1CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, fa= lse) TRANS_FEAT(BF2CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, tr= ue) =20 diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index e30c7e5ca9..3c806259f9 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1921,6 +1921,9 @@ URSQRTE_v 0.10 1110 101 00001 11001 0 ..... ...= .. @qrr_s =20 FCVTL_v 0.00 1110 0.1 00001 01111 0 ..... ..... @qrr_sd =20 +F1CVTL 0.10 1110 001 00001 01111 0 ..... ..... @qrr_h +F2CVTL 0.10 1110 011 00001 01111 0 ..... ..... @qrr_h + BF1CVTL 0.10 1110 101 00001 01111 0 ..... ..... @qrr_h BF2CVTL 0.10 1110 111 00001 01111 0 ..... ..... @qrr_h =20 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033216; cv=none; d=zohomail.com; s=zohoarc; b=iZFdC/C5C7IknERGJHiqxzvcvlaIH4H0qcBGwrbqEDQwEHVyOZN2oc302RbWQVciM5QJ7deS2J7A3ZxYaNRTFWFO4LYVXjtscPo2ldBMwntr/7G5a1OnSdLxdGhGBI/ys85UyoRhW6S7hV3W8FSVezhnnPMc4r+EaOX7gwwXNEY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033216; 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=fg24Nf8kQbJKUwBDXjXMzbe46wddllhWV3XxPVAUUWA=; b=dHWJZ+FqlhSGTQXaxFjXKejjg01y0cpe1NnaOC/AfotmWDsChCDwqCqqw5JTQpBkgBSh2jLU0y4HmffiruGYk1rPZ+XqzPYMxqSJ5B6Gkk/o/CRYiAFMQUc/aan5pk/SVLdplKwtrrK8/42sGR4qTpPamUiY5+GCsMzPgoSeewI= 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 1781033216796780.5301759887432; Tue, 9 Jun 2026 12:26:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX266-0007zs-8T; Tue, 09 Jun 2026 15:26:50 -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 1wX21u-0003a8-Sp for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:36 -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 1wX21l-00043f-Ez for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:27 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2c0c1e0d00bso57645035ad.0 for ; Tue, 09 Jun 2026 12:21:21 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032880; x=1781637680; 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=fg24Nf8kQbJKUwBDXjXMzbe46wddllhWV3XxPVAUUWA=; b=yCh+vPVQM6ZGQleyXQVY/GWmnuhjARtyoGBM6kfkeV2vGefhNYWgdfMbfXCHJpruWZ VneVX/cqAcgDVur0TMPyAfuMqqrsM2ExOHKrVSVHNkk1kmKj6Uet0sCnxtt/q+LDfMn2 qB+cV3rVJ7dmKvvZHfYJbm0qCZdCsY4yqelZshWzy3K/FO0kz0LTXZ8NRHpcnZWeyGL4 7g3HPGwlpmgTFi2Kw97v7ioThQl3+Qu60Vd3VBhy4A4ls9YLpSd5wGW3f/l++kHuGQgy LVZf7lk5hFouqBiQVLlXFuqUWAskfsVLw6URm7UwlsS2pTsW2lhC7Ob7l2z5mIeZuhao pAhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032880; x=1781637680; 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=fg24Nf8kQbJKUwBDXjXMzbe46wddllhWV3XxPVAUUWA=; b=m1+nw5rrpxQAF/CO3/y1IyZfz/InT9Z6qRTpU3XNaBD4JQoxFomJE8fZwDlmtcbx+9 OT6pWFadB4Fsxku0KspoGnlXbNFS5naINjOfI/COoavQL3PP34ipnh3K2PIc7gUiBV3z LI071lh6YuqUteK9C+sUaeMN3I553Sm6WHK25udRJ8/iYq3AgnesIc5qIKr21AU+HWlN PZhoMRrtdhvAqwlbQ4noEzfroyBGv6V+mu96GIQFR00+3TDE9LRKXuVTpwuaayapx3X2 s6miV9tkOc71+Bk2IG3b+2euec5i/qJW3C4zi9i93AQ73Nu849DBTnHHB/VUZYvw2C8f vupA== X-Gm-Message-State: AOJu0Ywjz0aL0iDgFYa/YTFc2oQy87bWNF0P1MWtE6OPJX5d+PvlqS74 +pYX2tUFsDcrlcC93W5HDNgOLMF3EG38URq0Mp9CXvvihY6adD514fullXs4f5hQj5Py2POvEIf rGp0/8Dg= X-Gm-Gg: Acq92OFth6AKrX5FZdqkYrhaij7R+Qz/ZLAh5ChI37Y4CcosIykBr1S+sXdnXrmWqYD qSAUIiA72/dlO9THe37Se2nbq0gBkFLI39N3ULJgm8667gkRh1altlymII+D0LRzRzlMkguMq/I 56uiENmZRgL0dxDaJjLG8UfUBFAgiIfX3mKuyCrZDo2bVp4VEm2YCSJyYK2qURIgfja0FxCmKrn W+tEPiyWMHs5VBpsO0GT4E3n3iR6IYq4Slhkx0pb5nJGUJX0G4PX9n1f7rw/LqRvpG5K+hFQrfe O1+NqnlrJOTfoarqt1SmbaCJzwitLJwU4IXEvD+eciCKezvPgqxyRt3lU1Cm8VvxSFISghedGb2 dIbyoudNpcYKJtDkynYv2EPgMglrMxKvF6iSyLunSy97v0kNf57ZypLgWc5279eKzzjEM10vU0b RTpaVFeX9h24IF4B/emsbh0bWvzk/Me+PLX2bKvMA= X-Received: by 2002:a17:903:228b:b0:2c0:d4a8:85d0 with SMTP id d9443c01a7336-2c1e85ac3e2mr257713125ad.32.1781032880142; Tue, 09 Jun 2026 12:21:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 12/45] target/arm: Implement F1CVT, F1CVTLT, F2CVT, F2CVTLT for SVE Date: Tue, 9 Jun 2026 12:20:36 -0700 Message-ID: <20260609192110.752384-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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=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: 1781033217606154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/translate-sve.c | 9 +++++++++ target/arm/tcg/sve.decode | 5 +++++ 4 files changed, 31 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 718463422b..3021dafd44 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -9,3 +9,4 @@ DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, pt= r, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) +DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 0f3c279696..75c89203fe 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -168,6 +168,22 @@ void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMStat= e *env, uint32_t desc) fp8_cvt_finish(env, &ctx); } =20 +void HELPER(sve2_fcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t d= esc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d =3D vd; + size_t nelem =3D simd_oprsz(desc) / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + d[H2(i)] =3D fcvt_fp8_to_f16(n[H1(2 * i + ctx.high)], + input_fmt, ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} + void HELPER(sme2_bfcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 718a21de70..c47e79637e 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4082,6 +4082,15 @@ static bool do_f8cvt(DisasContext *s, arg_rr_esz *a, return true; } =20 +TRANS_FEAT_STREAMING_IF(F1CVT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_fcvt_hb, false, false) +TRANS_FEAT_STREAMING_IF(F2CVT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_fcvt_hb, true, false) +TRANS_FEAT_STREAMING_IF(F1CVTLT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_fcvt_hb, false, true) +TRANS_FEAT_STREAMING_IF(F2CVTLT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_fcvt_hb, true, true) + TRANS_FEAT_STREAMING_IF(BF1CVT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, do_f8cvt, a, gen_helper_sve2_bfcvt, false, false) TRANS_FEAT_STREAMING_IF(BF2CVT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index e7984fa8e0..ca110f4bc1 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1091,6 +1091,11 @@ FMINQV 01100100 .. 010 111 101 ... ..... ..= ... @rd_pg_rn FRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn FRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn =20 +F1CVT 01100101 00 001 000 001100 ..... ..... @rd_rn_e0 +F2CVT 01100101 00 001 000 001101 ..... ..... @rd_rn_e0 +F1CVTLT 01100101 00 001 001 001100 ..... ..... @rd_rn_e0 +F2CVTLT 01100101 00 001 001 001101 ..... ..... @rd_rn_e0 + BF1CVT 01100101 00 001 000 001110 ..... ..... @rd_rn_e0 BF2CVT 01100101 00 001 000 001111 ..... ..... @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033415; cv=none; d=zohomail.com; s=zohoarc; b=gJKwkKEwpDJOjsWKhzIWDQTNDN4ae60K4Fr8CN7FQ4Kg3YzaAanuk/JTKE0cVmutcK+ZogXomdrqHQISkeKVcul9uePF+2+cqDcUdkxXj6m6f52fZER6TX+inhhGmGAZ7KN6HsNf0yHZJKXOyo+miS7aXtv+lB67IUN1tDre9wI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033415; 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=uDfZ/KInlh81InM9nuy8bZqiPaTOHjk9ccDXH7TAHCI=; b=nbMaPQnL11tNdUq5b9OYkaXXZLeBXrrLdjxE0NG2NbVgHGTPOo2Birkfr9p+2ZPu7m5DTDIm4ALQbmvtB3OgQM1JUKNq+aSinXy6aAAckz6ROw9EAUApNe9FX34/sQVK1Cb9XkN8AtC+QPLgSQnxMmPhJkPyMpkTFaTEGowjrmE= 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 1781033415428292.1539272574513; Tue, 9 Jun 2026 12:30:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX288-0003BU-Ho; Tue, 09 Jun 2026 15:28:56 -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 1wX21v-0003aO-3Z for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:36 -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 1wX21m-00043n-1v for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:28 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2c0c3543590so40299705ad.2 for ; Tue, 09 Jun 2026 12:21:21 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032881; x=1781637681; 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=uDfZ/KInlh81InM9nuy8bZqiPaTOHjk9ccDXH7TAHCI=; b=GRt1TATuev//wW9b7FH1j3z40Gd6HKa8oKBhwvL/GBC6YjWs8kVXgOncfDg+iRyR7T zIeF5WKioYLgBlH4jHBtpDAo0jtO3bxM0B466fDKssEw6EEqIN/A5/0ZRURYCC9D+iqv HAFKb1WsaWuKm3F4V+OLUZj2PGFu3qYc6ywQlCsf6FRqfLhlsTLb1d/PKI4ezIQ8YPAW /zUJPtBTx/pOzcELQuKL2FUOsW4tZQoXgIdzsGjqihzXcwXoDmOtc+Sxmz2vAJtiaAcl 2LUhfBRxIe84hnlEMrXauRyuMSMKLtCUnhO9jQGPpuV9saTc9FzwTrLyFmmslXZ0WYo3 JfpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032881; x=1781637681; 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=uDfZ/KInlh81InM9nuy8bZqiPaTOHjk9ccDXH7TAHCI=; b=c8Ns3mifmizhdrxujNU4+HxJ0ElV3uL6hawquCpRb0NhJPjF+V3IbX1UAcwG56l5hK 7jJXlUMewsEhWf8oLMN4aW70kb8sXwJ7p5oerAweNER0vSmnFj5lP9HqagyMIkB286sk 2Kk6lNcWFCs2RxAXeX4Y0wYpruOaNIt1jDK71QVWDxyKAVZkuyAli81IZFTcJk9T82H0 x8Sm2gpHxi3Hj2h4gfhiDrtaxPkgyG6VCN5I/eQ77CBiJQNAyJEDNr27Rqt/S4TcbCFB phUAye9j/z6npgQ1bpoLHEmk0J+uPeaUTmHbwcPnLHniJcCieE7CGqQ603034oJr0aoq V4pg== X-Gm-Message-State: AOJu0YyIJjdFqba1EX2H+hruF4a5nBYTPql0IClvRu5AEAuKCv1WhGNP S4xUqGnlBY3iaBceCgcjP4frJFsV22cAkpUHcEQYmsFVTOjCiQQ1+i0HjZpMbbBYef643AeTarf o1zwEcKQ= X-Gm-Gg: Acq92OEqsOJ/q5ii8F++D5nx3V2YDVnK1zbGanpxNGDZ15pSrsCB8/OCJ9u2Yv04TWh z/32GopO2R6I0LjjMiWnMYq557xZTwGoEg8XAaZEHh+DDVe5XHShxcdPJ2ruWX1IF71tzB769iZ PJY8V+dClYky5sommhpfTcT8ViTcIQPmqwxezNJWtPddZ64aKHGf7XFfor3UadZhXR9s77/9vbU S11hUx0U6Kr14XtbtfmpUprB0Y5IndtJyrLXCiHpOVs9A/H5rq09EBdn6PHdNmiVvsoAxWF1m69 3QhbFjPW3RWS7GyR9+iIBVfY3LWL2yKvFKMblsrbvGE5EPmoWN0j0P+PSg0zL9QQK2TqqF3Hog/ G3bDMj2lVs+Mua9lOUdPagfwWnYk/hD9eHnciJnY8Gt3DJ8BhfHRm3s25lhZDFvS4h/0m4jnH/b wkop8Tl8uooUNJJUYbKyrjKfvDEbACmL//IANFVVU= X-Received: by 2002:a17:902:c947:b0:2c0:d2a1:70b9 with SMTP id d9443c01a7336-2c1e776ff40mr263329855ad.0.1781032880762; Tue, 09 Jun 2026 12:21:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 13/45] target/arm: Implement F1CVT, F1CVTL, F2CVT, F2CVTL for SME Date: Tue, 9 Jun 2026 12:20:37 -0700 Message-ID: <20260609192110.752384-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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=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: 1781033415895158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 5 ++++ target/arm/tcg/sme.decode | 5 ++++ 4 files changed, 59 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 3021dafd44..b5dc2b7064 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -10,3 +10,5 @@ DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void,= ptr, ptr, env, i32) =20 DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 75c89203fe..e2330177ec 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -211,6 +211,33 @@ void HELPER(sme2_bfcvt_hb)(void *vd, void *vn, CPUARMS= tate *env, uint32_t desc) fp8_cvt_finish(env, &ctx); } =20 +void HELPER(sme2_fcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t d= esc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vectors_overlap(vd, 2, vn, 1)) { + n =3D memcpy(&scratch, vn, oprsz); + } + + for (size_t i =3D 0; i < nelem; ++i) { + d0[H2(i)] =3D fcvt_fp8_to_f16(n[H1(i)], input_fmt, + ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + d1[H2(i)] =3D fcvt_fp8_to_f16(n[H1(i + nelem)], input_fmt, + ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} + void HELPER(sme2_bfcvtl_hb)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -230,3 +257,23 @@ void HELPER(sme2_bfcvtl_hb)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +void HELPER(sme2_fcvtl_hb)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + uint8_t e0 =3D n[H1(2 * i + 0)]; + uint8_t e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D fcvt_fp8_to_f16(e0, input_fmt, ctx.scale, &ctx.stat); + d1[H2(i)] =3D fcvt_fp8_to_f16(e1, input_fmt, ctx.scale, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 19a13a6506..c0fe77242b 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1546,6 +1546,11 @@ static bool do_f8cvt(DisasContext *s, arg_zz_n *a, return true; } =20 +TRANS_FEAT(F1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_hb, 0) +TRANS_FEAT(F2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_hb, 1) +TRANS_FEAT(F1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtl_hb,= 0) +TRANS_FEAT(F2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtl_hb,= 1) + TRANS_FEAT(BF1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 0) TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 1) TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index df9586c1a5..d6192eb59d 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -853,6 +853,11 @@ UUNPK_4bh 11000001 011 10101 111000 ....0 ...01 = @zz_4x2_n1 UUNPK_4hs 11000001 101 10101 111000 ....0 ...01 @zz_4x2_n1 UUNPK_4sd 11000001 111 10101 111000 ....0 ...01 @zz_4x2_n1 =20 +F1CVT 11000001 001 00110 111000 ..... ....0 @zz_2x1 +F2CVT 11000001 101 00110 111000 ..... ....0 @zz_2x1 +F1CVTL 11000001 001 00110 111000 ..... ....1 @zz_2x1 +F2CVTL 11000001 101 00110 111000 ..... ....1 @zz_2x1 + BF1CVT 11000001 011 00110 111000 ..... ....0 @zz_2x1 BF2CVT 11000001 111 00110 111000 ..... ....0 @zz_2x1 BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033254; cv=none; d=zohomail.com; s=zohoarc; b=PylSJffuW3MI4bb7uFozzRu/9zQ7oyLCEk8LUoKlJHeAYTnJbYAos+HCcfI+ivWFXObjRJTZCf1fV7kob42rFP+BWuZzQohP7vFV4vg8RlKHUwWcpenXmwUMSXDYfcXRmJDWyL08lB42tqZiLvWVpS0oYDZJFa1JlAwBu3iBqh8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033254; 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=MMaHyAebFECdFjBC3H7M5y4njmFLKyoCbfp3BK4IlGg=; b=hSnkUTIJ+eg7IlJCCzzGGCcK6comS4bEI4l8EeZ5mucxLSKliqW9Vd+gBi/sfBHiu2lEpNxpVrdLTvpwRpbskOSzhhEGCHTK5py+Fs9KGUUTobmhLokVy0bSKBD4XwVG2Fz5Kc8NXjw81rXCZFSlY16vrdC2tM86y8+0DLgSYdY= 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 1781033254347229.8102022945602; Tue, 9 Jun 2026 12:27:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX25T-0006D4-Fe; Tue, 09 Jun 2026 15:26: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 1wX21g-0003T3-Cp for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:19 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21d-000445-7f for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:15 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2c168baac83so28127295ad.2 for ; Tue, 09 Jun 2026 12:21:22 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032882; x=1781637682; 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=MMaHyAebFECdFjBC3H7M5y4njmFLKyoCbfp3BK4IlGg=; b=Fj6ihClIsKfi+dus61bifzNhXvxk/XH8aP6wS2AJYblBXO1LOOIAOmMqfLPHAcf1xg fORYNggxNGSeC1gQMOMuTBD/Dm4PAAU1KyZ/46C+Ki5QTrrtNGCGwulr+fw+xa+ufzok pl+b4PP9sQNPfmVyKya3FtWErNcw8DE/oNhOsuUAQp7zewqxrHH/8kM2xRPEbs8WJXdj IQU8nlH55ALKo4pMpag+0OfBANqu9Um50vSJK9Xblrx/Czi0d612akLOjrAF5znVIm89 9gktjh8K9w3aMOoKu2Bde3ZNstuayo40RVcq+rf+3R5Yi5KklC5qDcEK0FEANgiWrfPW VOzw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032882; x=1781637682; 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=MMaHyAebFECdFjBC3H7M5y4njmFLKyoCbfp3BK4IlGg=; b=sw18pht/GG1pGznJKQfoIO+ETzLc8K9HQV53pjJ/2ey+l9Jv/fQFNe0Vj9EPCJBhty 2kYqsOWym9UNPsdYgJggOCc57OSoH9GPI1Xc6wzvqAc4Tsbzk6VwhkUp+5431MWrjvur gp2pI5RdoftSv5cOiitQ8Jv42WYYiZVW6F7qZkrxk5JfsIKNyuLrTtTXefLPVHM0VCtd EzIB6asic8isajC1zLsatKFW+QudHMfzHwLJ9kUBTT5HOfuDvEiw48qse3h+gxGdsoqY OCjyUd8Go9AWg+fl+THJ68G0okYKkHf0GD3DVKJz1JoB4338eqa3ZbTd/H5A4J+u7Sh4 BocA== X-Gm-Message-State: AOJu0YzelJBRFyIiDLLU3YyuHJQsY3P57Cy7iipNpt8fdAL0hu6bXDO+ +KTSVIUbd3sN1DiZgLk5cSvXd3YA2EeC31bzwxw6qqLjr2DcKs+f/3MyNcYynirerGVQiuKXdJ5 60YvjDF8= X-Gm-Gg: Acq92OEgsO8nJkD3iNj0OS4FFFwH9CAsV+QgsISixKDOY5fseoFJo1aPC6kbYYVM27J OeAC+Wr/O44hVOn8hIKV/OB3xcRddicSPRIWtuvNbzUDIExAfaw4xTIQ5J3ryJ30Fh2BBQUQ5hQ 6hTh9oT51C4tYgnSfjPNSzulg64wskb7WQLZmfBKFErxTzcSO63ur0sk88x3XbhTDkWaRsOPYD3 dUncUar/1ATx9/0gINIrDSAJ4n8ugTYGY1HavJcAq17HEr5FO+W9aFhQh5wcmoUUs1kkosmJvez ENiWAxbZpsBSbLqT+vRswVNDt/TZcmeQEMeyliBG73O9Xf+dwDSBedCiUtCYAMpCaO9ROAELjLK xT/RgZoXd7g4KMqq1+QmdysrvFIXaG/FffPXMXA3exTDP6g7sUZVwY9VQhFmWytGi5wsa5vA9nX Wf1z6NXkYwDLDaSUheZi8iy+5ZiT4yBAMMc7MHmmo= X-Received: by 2002:a17:903:1450:b0:2b2:67ca:5ff9 with SMTP id d9443c01a7336-2c1e7798fb2mr239722025ad.0.1781032881428; Tue, 09 Jun 2026 12:21:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 14/45] target/arm: Implement BFCVTN for SVE Date: Tue, 9 Jun 2026 12:20:38 -0700 Message-ID: <20260609192110.752384-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.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: 1781033254959158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 + target/arm/tcg/fp8_helper.c | 92 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 3 ++ target/arm/tcg/sve.decode | 2 + 4 files changed, 99 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index b5dc2b7064..bbc8d69e28 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -12,3 +12,5 @@ DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) + +DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index e2330177ec..ffeaf02f97 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -72,6 +72,17 @@ static FP8Context fp8_src_start(CPUARMState *env, uint32= _t desc, int scale_mask) return fp8_start(env, desc, f8fmt, scale); } =20 +static FP8Context fp8_dst_start(CPUARMState *env, uint32_t desc, bool is_f= 16) +{ + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType f8fmt =3D FIELD_EX64(fpmr, FPMR, F8D); + int scale =3D (is_f16 + ? FIELD_SEX64(fpmr, FPMR, NSCALE_F16) + : FIELD_SEX64(fpmr, FPMR, NSCALE)); + + return fp8_start(env, desc, f8fmt, scale); +} + /* * Invalid input format: we could take one of the usual set of * CONSTRAINED UNPREDICTABLE options for use of a reserved value, @@ -111,6 +122,64 @@ static float16 fcvt_fp8_to_f16(uint8_t x, fp8_input_fn= *f8fmt, return float16_round_pack_canonical(&p, s); } =20 +/* + * Invalid output format: we could take one of the usual set of + * CONSTRAINED UNPREDICTABLE options for use of a reserved value, + * but choose to take the additional option provided by the FPMR + * register specification, of setting the result to 0xff and + * signaling Invalid Operation. + */ +static uint8_t fcvt_fp8_invalid_output(FloatParts64 *p, int scale, + bool saturate, float_status *s) +{ + float_raise(float_flag_invalid, s); + return 0xff; +} + +static uint8_t fcvt_fp8_e4m3_output(FloatParts64 *p, int scale, + bool saturate, float_status *s) +{ + *p =3D parts64_scalbn(p, scale, s); + /* + * Saturating Inf -> Max handled in uncanon_e4m3_overflow + * because there is no infinity encoding. + */ + return float8_e4m3_round_pack_canonical(p, s, saturate); +} + +static uint8_t fcvt_fp8_e5m2_output(FloatParts64 *p, int scale, + bool saturate, float_status *s) +{ + /* + * Because e5m2 has an infinity encoding, we need to handle + * saturation conversion of Inf -> Max manually. + */ + if (unlikely(p->cls =3D=3D float_class_inf)) { + if (saturate) { + /* maximum or minimum normal value for E5M2 */ + return 0x7b | (p->sign << 7); + } + } else { + *p =3D parts64_scalbn(p, scale, s); + } + return float8_e5m2_round_pack_canonical(p, s, saturate); +} + +typedef uint8_t fcvt_fp8_output_fn(FloatParts64 *, int, bool, float_status= *); + +static fcvt_fp8_output_fn * const fcvt_fp8_output_fmt[8] =3D { + [0 ... 7] =3D fcvt_fp8_invalid_output, + [OFP8_E5M2] =3D fcvt_fp8_e5m2_output, + [OFP8_E4M3] =3D fcvt_fp8_e4m3_output, +}; + +static uint8_t fcvt_b16_to_fp8(bfloat16 x, fcvt_fp8_output_fn *f8fmt, + int scale, bool saturate, float_status *s) +{ + FloatParts64 p =3D bfloat16_unpack_canonical(x, s); + return f8fmt(&p, scale, saturate, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -277,3 +346,26 @@ void HELPER(sme2_fcvtl_hb)(void *vd, void *vn, CPUARMS= tate *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +void HELPER(sve2_bfcvtn_bh)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint16_t *n0 =3D vn; + uint16_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + + for (size_t i =3D 0; i < nelem; ++i) { + bfloat16 e0 =3D n0[H2(i)]; + bfloat16 e1 =3D n1[H2(i)]; + d[H1(2 * i + 0)] =3D fcvt_b16_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D fcvt_b16_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index c47e79637e..6b2875a451 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4100,6 +4100,9 @@ TRANS_FEAT_STREAMING_IF(BF1CVTLT, aa64_sme2_or_sve2_f= 8cvt, aa64_sme2, TRANS_FEAT_STREAMING_IF(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, do_f8cvt, a, gen_helper_sve2_bfcvt, true, true) =20 +TRANS_FEAT_STREAMING_IF(BFCVTN, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, fal= se) + /* *** SVE Floating Point Compare with Zero Group */ diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index ca110f4bc1..b6ef8ed8de 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1101,6 +1101,8 @@ BF2CVT 01100101 00 001 000 001111 ..... ....= . @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 =20 +BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 + ### SVE FP Compare with Zero Group =20 FCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033045; cv=none; d=zohomail.com; s=zohoarc; b=cfq7A5/8vNNwGSdB1QPeWwmGBEMZwGdjn4sxyUc7dmUo+ZU4Ek/DSOSw7kxyir8pO+KxNpWNuKRQseMitXGs5/2PmOgt+JjDtlf3NdNAbzwGirdDH00Nc+tpTT4IfWBnhoubb5XnBPkyrnw1xgLXQKQ6BWFWAcIfe3xMrjHGzUs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033045; 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=FDxUg/mo/tbA5dQbgvqIVl1Z85CmD8z4LHfJdkAjRh8=; b=fYcozGSrtXbK2znWCEylP9rafbP64hjipW5IYPduv9r9Iecv5eBQrsopcaN3ZYN1uj6nCaqMmz3e/G+DBvB9OASTZ12iL1Bp+PDE0Wi+cZ6WLhK1q/BhMUzq61PAwXHt+uFSWrGxKLZFM20DjDfhJ0F3SJG5CcK1tF3voeaaoeo= 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 1781033045303941.8919878282787; Tue, 9 Jun 2026 12:24:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX23D-00047w-Os; Tue, 09 Jun 2026 15:23:51 -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 1wX21D-0003Dh-47 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:21:57 -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 1wX20x-00044C-Bt for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:21:39 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2c0c2c7e0c5so40496475ad.1 for ; Tue, 09 Jun 2026 12:21:23 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032882; x=1781637682; 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=FDxUg/mo/tbA5dQbgvqIVl1Z85CmD8z4LHfJdkAjRh8=; b=eW6q7BWp4H9mP4wLuumkAs3NKVzydKKLQRvIgpFtN5MFpT/WwHEFw1kc8hwBtVGTU8 YNP0SIGxqt/17GB8w3m3WzWz9zLgV1opVra5xbzaJ0i0MlewsHeB9woycAG3oOvlRHsg 0tCIo0u9F0UiNGSO8Frlhd0mGUCGeTVuUScwV/61TYVhQfO7RHF7+neDUQFBf8kUUdQD 9nvI/hPO3bkb25YcbTSbAdH/LjmdfVfmWH0cLEtZ8An2h2sr/BY5TwEw3H3huBVITyQf 4awvD6e9ApvoNbbYPKFZpTMH49qC+H3/hXHAgJaeYj9fwh6Bvfhbe4H6ZnbKwrm9Voav wJLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032882; x=1781637682; 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=FDxUg/mo/tbA5dQbgvqIVl1Z85CmD8z4LHfJdkAjRh8=; b=D56CyA063tbzfYOLLZG4aldqs/U4cDdsapWp0naxzMu8na/kc4iMZPgwC4xidp4ie4 f+OGqjqkMYogQDCNu9c7BBlPxZ035s55zXtD845FRV7KP8Ei1U/eoH4t31teeUqpVLpT eUBZeZqlILBe44pduxB3Kql/tipE5ql360spWAp40kUDhwwMP9tZplfiY/uYVk0VZgwF qbdpAYw882GTxkLSbQ6tm5f8LmaObaZ4GyxRJtBKliMbcJ2cL1/klT33hu/HMQq2PZRO VZOi0fsKsrMZmPiQPvu4eDX4gKy+yYygszW0lkvD58ZlcEsUF9VAUukhE4rZa1SvqP1q mh/g== X-Gm-Message-State: AOJu0YwBtjktB2t8wAxnebK+IgcX16DzciZVs6Dv5dTxyvij7YZ2mEqq j2BiJl+2zgjeqL1p5wrW69hL8zxra1AnbmggqHipCA1namrgx5L7O1sQDgNEToekcz04WhNz5qK fLJVToLk= X-Gm-Gg: Acq92OErJp8dJPsXNlSlPTtcA/cpeqiKQ+8/euqN/3KkKTA8hNbX2zJAdRXnlg5merM 8kLldsI170L4HHrGUxnq1AnQ4TZZXaCJG7z0VT8PGgJeIcxRQThoC/4fNcNER3EX6boKKEOWoZC 67vp398HSHHDZlDG6LBFxB75xlKbBCbf2hiWHuAjuL9jFiT3H8Nsi5LUiA7tUOaK/x+2Sy93Zbi jIJ/gofix+BGZfWkyut92pgIHHr4Jm3aZMhrsiQcoGNhl3jiheTgdbzukiZDarBoTNyR17oJ6kp QfUXQtehhFf6tt4uy689Ur7VnzOdIpHcdyt6DQMGzBswtvNFk3gPRav0WgU/KYnmsAFuJxq53Hg Dms5IC4n8uFzEa0i3yTWTQ3P8Ew2OJ65l+ok3O0qgExSll4DlYw1kHA6QzgSnE8f0Hn6yGqsz3F aNWp8FpBZU/foruMc6BXYhIrJBN1oA+E379Jj7tPM= X-Received: by 2002:a17:903:2381:b0:2c2:27be:39a7 with SMTP id d9443c01a7336-2c2a1c9ac2emr52031735ad.29.1781032882318; Tue, 09 Jun 2026 12:21:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 15/45] target/arm: Implement FCVTN (16- to 8-bit fp) for AdvSIMD Date: Tue, 9 Jun 2026 12:20:39 -0700 Message-ID: <20260609192110.752384-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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=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: 1781033047092154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 37 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 15 +++++++++++++ target/arm/tcg/a64.decode | 2 ++ 4 files changed, 56 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index bbc8d69e28..6530d1a6da 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -14,3 +14,5 @@ DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, p= tr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) + +DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index ffeaf02f97..8e7982a888 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -180,6 +180,13 @@ static uint8_t fcvt_b16_to_fp8(bfloat16 x, fcvt_fp8_ou= tput_fn *f8fmt, return f8fmt(&p, scale, saturate, s); } =20 +static uint8_t fcvt_f16_to_fp8(float16 x, fcvt_fp8_output_fn *f8fmt, + int scale, bool saturate, float_status *s) +{ + FloatParts64 p =3D float16_unpack_canonical(x, s); + return f8fmt(&p, scale, saturate, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -369,3 +376,33 @@ void HELPER(sve2_bfcvtn_bh)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +void HELPER(gvec_fcvt_bh)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, true); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint16_t *n =3D vn; + uint16_t *m =3D vm; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vd =3D=3D vm) { + m =3D memcpy(&scratch, vm, oprsz); + } + + for (size_t i =3D 0; i < nelem; ++i) { + d[H1(i)] =3D fcvt_f16_to_fp8(n[H2(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + d[H1(i) + nelem] =3D fcvt_f16_to_fp8(m[H2(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 5266bbc413..9415419f19 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6605,6 +6605,21 @@ static gen_helper_gvec_3_ptr * const f_vector_fscale= [3] =3D { }; TRANS_FEAT(FSCALE, aa64_f8cvt, do_fp3_vector, a, 0, f_vector_fscale) =20 +static bool trans_FCVTN_bh(DisasContext *s, arg_qrrr_e *a) +{ + if (!dc_isar_feature(aa64_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, a->q ? 16 : 8, vec_full_reg_size(s), + FPST_A64 << 2, gen_helper_gvec_fcvt_bh); + } + return true; +} + static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2) { if (fp_access_check(s)) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 3c806259f9..b08895d917 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1212,6 +1212,8 @@ FAMIN 0.10 1110 1.1 ..... 11011 1 ..... ...= .. @qrrr_sd FSCALE 0.10 1110 110 ..... 00111 1 ..... ..... @qrrr_h FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ..... @qrrr_sd =20 +FCVTN_bh 0.00 1110 010 ..... 11110 1 ..... ..... @qrrr_h + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033342; cv=none; d=zohomail.com; s=zohoarc; b=ef2K9jKWcI7k+sHkNCq2CJ437bfC5yDrA0bDOqNQIucEWy7hMuJyCbmP5w0vqkelgpD+mJKkHL/Ik7S7jjBBpKOKSFYkVOO4S7u57U8YXVm5/VxFG7K+DYsfcg47l27A6qm5whnzH+NEcKHqp1uz4d/XqXBMH3KX01GSt6/BH84= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033342; 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=ybfc9/84kaK89cj9awAqOn1QSIiEVQTPnx128PRnNeE=; b=YhOi3DsGgPXT/4CKu5hwWavi7i6AU3vHhkq8GEiKdbPbLqSTyIYjJXbxLWv4UjQXtF5nBOmnBUErzUlEBj0PC8CNj9iIoGfGhtW8QzssEet80NptlgGZpQZ9zhQ79Pm1oLvgXNymNNB4UD7oZ75G5NOt6kHjBpgBXOUk1vryd4o= 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 1781033342013279.77488826254216; Tue, 9 Jun 2026 12:29:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX270-0001pn-G2; Tue, 09 Jun 2026 15:27:50 -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 1wX21v-0003aI-3A for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:36 -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 1wX21o-00044P-HP for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:28 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2bf2247e38eso61964475ad.3 for ; Tue, 09 Jun 2026 12:21:24 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032883; x=1781637683; 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=ybfc9/84kaK89cj9awAqOn1QSIiEVQTPnx128PRnNeE=; b=hd8D7rBSZltuNZk27FzH4LAnLlIAAcifd1M6UMbh6Zc0xUtgPT5UvGHIyJ9UBfl1Pj Gw2C3dKEPNlEXexmGSJb1m0t/GYE8Moc8rutbyiql8lrHp1tscWK5sL/PVuaWyxoeMpg 8gOiKH4Bnhd7xW+suDA0apuYxi9y9gpfDuv6kcmeuCip2Jcz2q+Otz5wMTqeQgjEolIO YUSKTdPajAdGnytKURfOL5mqqnu1M5Fv8P6kce3OC1zqrCI1jUPdEpCileVC3kBhHzqA s4WlXnFR5cGGjU6i4qyBAeJvFZBroIhHajr0Yvzbc8++gKfoTSM88JjL4MuWZH2fLTn/ CW7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032883; x=1781637683; 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=ybfc9/84kaK89cj9awAqOn1QSIiEVQTPnx128PRnNeE=; b=gMmXll1JE+y5MGTh01rLpIQdlYeI3zXgz3phND1QblucL4qwIIfBRxdZPq2OMAzxYf 0350JkVxkRtyY/lnUOrfvCbFJ66I7C20wjuVNg42B36DBY6f7YBGD7htKeUA0NAl7mxQ KHTVwuiSDeDBCy1AkUBbgrEqwXaVZq8ormeG/oHeBeASBgFYFpI0czPC0Di6Xrbc061J nsL7hgMvfZ1T5xmLQH5qQzN5E/a/QPsWMUT1id34582HfcZtpD5iP549T4InwPymXnkQ q6I6Hs4xGUqtarN5r017iyjZZxTyRyBtI8CAY7soo47oEJTShiXHNEI/rQFMnBveow0M 2veQ== X-Gm-Message-State: AOJu0YyMcBKBjhkGDxGgQQ4xMT8W/SoOc4AGmxaLa/YzZCEhd1KgojiW VRJ4Sc+b1NQxkLfFnqVNW7cMBR153weCFf2P5IXVGUrxGd53orQsLTJnUcIwVU1Kd740kaXsDTu unebV42c= X-Gm-Gg: Acq92OElQqxUK2+rw/h95s6E6jgU5x1/noh/vE/b2JSorStZgNlPZ/IqN+RTSCHMGNS XUXwgcIU6bPVEWXwezHRv91uwy7ZdR7u0f3aAITxq0ArufSE5DcwCw+dioXDQpZ9OXI/GunrWsJ bbWzaH9U6uhkwk2sx8dhtcyEA9YyG68SrfuuIEmz0VSB5xWSMzSKCuip4i1VJJeG52Y6cn1XzhU TYS6WrhzuIp3wkqd52TVhJrnvU9u6ekPnhTBgPzk8watn1UWFblwrGCh/tunobt09kyqjrzbXJB 1K/bEeE4PHdPBvKPHOrfxQVFToXhdo8Fn1lElBDfCO7WF5o7svgHSivILMen9PqPaStN7tK3g4t J7Gk6dlM4gSjGf6BibAgTXDNwM1LsP2cSWTM/LSn2TPVFYy6D2VGe4N31c/UxbDnOwgQwSdALT5 EkP4MHnLG0PGy/JZQZRymk50UipAGOSpmLGydeL2I= X-Received: by 2002:a17:903:3847:b0:2c0:c262:b917 with SMTP id d9443c01a7336-2c1e80e429amr255049135ad.5.1781032882959; Tue, 09 Jun 2026 12:21:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 16/45] target/arm: Implement FCVTN, FCVTN2 (32- to 8-bit fp) for AdvSIMD Date: Tue, 9 Jun 2026 12:20:40 -0700 Message-ID: <20260609192110.752384-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033343427158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 33 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 16 ++++++++++++++++ target/arm/tcg/a64.decode | 1 + 4 files changed, 52 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 6530d1a6da..023a49e12f 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -16,3 +16,5 @@ DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) + +DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 8e7982a888..0b86ed9eb9 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -187,6 +187,13 @@ static uint8_t fcvt_f16_to_fp8(float16 x, fcvt_fp8_out= put_fn *f8fmt, return f8fmt(&p, scale, saturate, s); } =20 +static uint8_t fcvt_f32_to_fp8(float32 x, fcvt_fp8_output_fn *f8fmt, + int scale, bool saturate, float_status *s) +{ + FloatParts64 p =3D float32_unpack_canonical(x, s); + return f8fmt(&p, scale, saturate, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -406,3 +413,29 @@ void HELPER(gvec_fcvt_bh)(void *vd, void *vn, void *vm, fp8_cvt_finish(env, &ctx); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n =3D vn, *m =3D vm, scratch[4]; + uint8_t *d =3D vd + 8 * ctx.high; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + + if (vd =3D=3D vm) { + m =3D memcpy(scratch, vm, 16); + } + + for (size_t i =3D 0; i < 4; ++i) { + d[H1(i + 0)] =3D fcvt_f32_to_fp8(n[H4(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + for (size_t i =3D 0; i < 4; ++i) { + d[H1(i + 4)] =3D fcvt_f32_to_fp8(m[H4(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); + clear_tail(vd, ctx.high ? 16 : 8, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 9415419f19..75be92ce15 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6620,6 +6620,22 @@ static bool trans_FCVTN_bh(DisasContext *s, arg_qrrr= _e *a) return true; } =20 +static bool trans_FCVTN_bs(DisasContext *s, arg_qrrr_e *a) +{ + if (!dc_isar_feature(aa64_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, 16, vec_full_reg_size(s), + (a->q << 1) | FPST_A64 << 2, + gen_helper_advsimd_fcvt_bs); + } + return true; +} + static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2) { if (fp_access_check(s)) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index b08895d917..610047846f 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1213,6 +1213,7 @@ FSCALE 0.10 1110 110 ..... 00111 1 ..... ...= .. @qrrr_h FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ..... @qrrr_sd =20 FCVTN_bh 0.00 1110 010 ..... 11110 1 ..... ..... @qrrr_h +FCVTN_bs 0.00 1110 000 ..... 11110 1 ..... ..... @qrrr_h =20 ### Advanced SIMD scalar x indexed element =20 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033211; cv=none; d=zohomail.com; s=zohoarc; b=XOjScQiXPDeKmZInG1Q6zfME7nyQ613bBP7SLqdnnKSxEW8eR01I7un+ebzYWlphKTw0qEqoHSbVlLHzB1ymWxLqGkDpWnzgdsqQbtbJ9Jguqc7XqQkJJY05Ra1KIA0+t95ps49gUQy1LkNBgIwvwgegfysZJAmWORs9x0dFb1M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033211; 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=xoKh6IursYqEAyOMk/XX4xNNJvsNskRUZIgXPcmISBc=; b=lY7q49WPaiMBeQ+9jjhdoMkDJ86EckszEgIw95ipeslt2QCLx+VSGuCjs2VAGbjciEejDMGluNwZAYo5y1PPnKhC/JJMwSncUCgDZZXPSaAuIw5DstJucluzxpNuWyAP4RZwgf53EwH+ZM21ZqfmOs4WhkNNZcUnRlAsWiqg6yQ= 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 1781033211414192.43427272131078; Tue, 9 Jun 2026 12:26:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX25z-000738-Qw; Tue, 09 Jun 2026 15:26:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX21v-0003aK-2b for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:36 -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 1wX21p-00044c-8W for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:30 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2c0c2d792c8so40178005ad.1 for ; Tue, 09 Jun 2026 12:21:24 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032884; x=1781637684; 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=xoKh6IursYqEAyOMk/XX4xNNJvsNskRUZIgXPcmISBc=; b=LD6/0xptYxZ5dkOMrjwdO1D7RAgRaoQ5qrp8D9WWzc18i8Sb6Bp8uv8bBng4kmg10o 0E49N9P5tn9hRmYajSdPjC4HHQc8EKvg0UURfs4CjfkD9o7U+QYBeAe9Ed/5y5qYO/Wz hMIQy6Wanj/cyccV8nb9j3+RsernzgKoH1wVDXJuQXUqA1tCj6DSfptRS8SFBlKp4FDq MDs0i796bZXPfukB1M1bnT7aI5AqafksB9e8d+HvzRIqyRpUpDc5AgHyRERH+1VpT5F5 2XqtlZTH5CoVjwiKgBZdoxy5GWxVTQBdd4aiZPsK8Ujg/w0oRMoffx/5vsFjmdhXfZkS aMYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032884; x=1781637684; 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=xoKh6IursYqEAyOMk/XX4xNNJvsNskRUZIgXPcmISBc=; b=dcmKVIpZU7qRH1jQC+6It/xQh78PLz5bGbF5kfYwDn6v5nuRwEdlS0xdioKnzEoNKH 5jJhMKUFHxNITxq6mDn9QbNYjPq/qdrZqYQsoAb20V4w1hssRTiFHmTf3Xi/CfPNXOFO Gm2NnipBZcXbENW6onNyXMr+D+e0V/UUrfFoG1PWpYRUDHMLqHedeKHqnTdMe6Lumyh+ g6qnFs4D97RyDoTZCCzGPHzRg1ABZv6WrdirhWCXFqUbO1d+EEqI92hTfWHerEKv7WaR OObBVhHVo52lA86CFxUNaaIqKymqB38J8NNitm6qD5tJFVIskK7tHmBI7ML9s4QneKZr MMGA== X-Gm-Message-State: AOJu0YwUnibMVZO1oICbg7M3K/TBxXFkKepjdC3xlN7GrvsAk6m4u/z8 TKgY+NTGdNLAyI17xGMlmm83v03R3MvtscbsIcQhNNDKhXTTRnnewLGCRuBII6HnSdex7dhYrrp AZ3FuRPo= X-Gm-Gg: Acq92OG9vjN13ugoAmfGPLt4y9a4wwZd0ChTHK2izztpIr4lxs8RhqmpQu9MpXdY6P2 GBlTbdYu5zPvaWbeUjOAQFvFD/lr89JZ485yQ8o+OigJt0sm1FUC3VEB+PdIH7fIs0nAerUvx8u vD5BCNblV8L8/VJZuEsVhYQuW4tkaXyWPj0xTvMmgCgH4iJus9dV8gHUlDoY8P3R6tjoQbDC23A XtHNJ2zeFzctd5qYhPiXgPQlSHhyLePGq6SY893gtkm5doIqaB3Ylj50AJeihX2dS90HYQ2Z3eu D78/tpbJ3rw/O6FozWw4OyB3pjn7v3IHlddSBVQwgxfhzoEHtTdQeTWJ6+zpmGDBDHx343KtPEF zsHfDH8Mo5VLDplRxduha7BZEhLFJ27k3ZzhLFI9sdkTHEDPcWtPQgALv9Vw8kELKlmKz3wjDh5 4oxwcN7RBQRXAy1qJkVHM+VPGZZMi2kHsM9zfbuaE= X-Received: by 2002:a17:902:d58f:b0:2bf:195d:21d2 with SMTP id d9443c01a7336-2c1e7e44e91mr256257695ad.16.1781032883535; Tue, 09 Jun 2026 12:21:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 17/45] target/arm: Implement FCVTN (16- to 8-bit fp) for SVE Date: Tue, 9 Jun 2026 12:20:41 -0700 Message-ID: <20260609192110.752384-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033212686158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 23 +++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 2 ++ target/arm/tcg/sve.decode | 1 + 4 files changed, 27 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 023a49e12f..e67fb191c2 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -16,5 +16,6 @@ DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 0b86ed9eb9..8295725b83 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -414,6 +414,29 @@ void HELPER(gvec_fcvt_bh)(void *vd, void *vn, void *vm, clear_tail(vd, oprsz, simd_maxsz(desc)); } =20 +void HELPER(sve2_fcvtn_bh)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, true); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint16_t *n0 =3D vn; + uint16_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + float16 e0 =3D n0[H2(i)]; + float16 e1 =3D n1[H2(i)]; + d[H1(2 * i + 0)] =3D fcvt_f16_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D fcvt_f16_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} + void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void *vm, CPUARMState *env, uint32_t desc) { diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 6b2875a451..446fedb5b9 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4100,6 +4100,8 @@ TRANS_FEAT_STREAMING_IF(BF1CVTLT, aa64_sme2_or_sve2_f= 8cvt, aa64_sme2, TRANS_FEAT_STREAMING_IF(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, do_f8cvt, a, gen_helper_sve2_bfcvt, true, true) =20 +TRANS_FEAT_STREAMING_IF(FCVTN, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_fcvtn_bh, false, fals= e) TRANS_FEAT_STREAMING_IF(BFCVTN, aa64_sme2_or_sve2_f8cvt, aa64_sme2, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, fal= se) =20 diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index b6ef8ed8de..806953bc35 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1101,6 +1101,7 @@ BF2CVT 01100101 00 001 000 001111 ..... ....= . @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 =20 +FCVTN 01100101 00 001 010 001100 ....0 ..... @rd_rnx2 e= sz=3D1 BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 =20 ### SVE FP Compare with Zero Group --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033373; cv=none; d=zohomail.com; s=zohoarc; b=AzyuXwN/xmfyeWeSq8Gwg/XOhehKM9036jspv2zTuMNIB9bMHyOVDPSotpRJWyK4BUyatXpb6fNjStfHOO7sR8RGsAQizFrhLnJ7PKyTNsSiuJbM9kMD+KDyph/vzF4U2VEGVi/OX33oNTlMK1h6ntG9gmIBxxpuTVZNBWGYwGc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033373; 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=Lboo0C2JmHk88RK4dY8S0NhcoYqtPxPXM8Pg2zgFeUM=; b=HHGmHsGfYKgEMpwvGzJguKW4Qq4hjyFsiJO9evshZgEeoVV0HO+Ehk1ySYn8Tapl2a8tT+y2Hi87h/JvHw2ng8PEUVpWA1dbKAdYaraT2kqczfwSRrcLKm+gM44JbD32su6wZI5X/h0jJn3l0YsAacXIkQhFFHSoAU53wKXd2qQ= 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 1781033373743753.6760580540146; Tue, 9 Jun 2026 12:29:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX27B-00026L-3Y; Tue, 09 Jun 2026 15:27:57 -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 1wX220-0003d4-Un for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:43 -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 1wX21p-00044q-Q3 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:31 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2c0bd02d97eso66979465ad.2 for ; Tue, 09 Jun 2026 12:21:25 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032884; x=1781637684; 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=Lboo0C2JmHk88RK4dY8S0NhcoYqtPxPXM8Pg2zgFeUM=; b=zU19aPolb051OX0IHC7hapncdBqMJlXcilW91Kn24BXU89Hl5BJTOu2/RbEMhGr2GI HW+xHIxSkjuDg94n4Se3VCJnkGLNg1o2D6ETD1cAPZ1xhDB1qQAbpWiR4q9FwuDlnidr VQhiMHthzuEKxoUkCR5KyobnP27/ofy8aDBc5dAt/ClJnsJULhPYRn7WYzI+MkNjk+o4 k4zF+D8qqC397xJ9yhP4L7FFl6bX91dc7GgZ0QTxqgQXWKKxx1EHZJnshssEBZj6Y4qj g2bQRHZwyzEHmNpmglja9o3iBkg+M2EkC656tZBPb3Ywx+7OT2jsAc/72kMPX7q6LdYz MBig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032884; x=1781637684; 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=Lboo0C2JmHk88RK4dY8S0NhcoYqtPxPXM8Pg2zgFeUM=; b=Y+WP0JD5FSOP/dpbR1TdlRZwdXyelP8DPWreHWKq17YoSYydQ4SLk5+xLCsPt7Bh2w rUv+/9l7HkPw87fmvcuPjHHGgyxgeEpBoFlvhi4+QWKCxFwY7CxONv20ATzKkityElR2 0hn6gfxeC/X1mb9poFFhEIEqlxYH0JeUcW9to8z+EGmOZy80oW+H8NQAls1Kln2wBRyG qILmlG8BqZ4SjadzkdhSCynut27jb4roJl/Sng/bkXs9/DjRGrWEz954OgCkgqs07QKu 4YTH0SwAP8v1YzKAgJhOtBWFUYv0B2g0JYQzJAj+vdrxQLCk+5+8APDcW+oxgiGmOriK obKg== X-Gm-Message-State: AOJu0YzQnB0BfZ5wLnBKejvaWL8uUBtWNNG4GRinnNq0FHVL/XBTVyTB 1uaBxRjWvZLo0qTYdZEJ6SQvY2QJ7UYlA9oPSnL9l0Y+Bi8hJlxjMOTryeLXcq+8tkgV6W4WsTY A+QL6dZs= X-Gm-Gg: Acq92OFGbleHDSxDdvHKbk+C/RIq/N6rzInVomsmcTTu/1SfOdKkq8QpyAcWgQ0STVW 3xBh8ixIY2NbKMXkkHpMWblceheY7eBimHJDxwmB24+Kv3KJ2KmEsIO67jhVAUUQ0Leq47gGE4B IgogTcSWoC+H2l9PJ9Ph+uwA8buNB6gHYUxRpoj1V6v7vETKobVXYmzQhC8oDO4N8IPK+ZMxL1E C2OtLTnQGAOWJdIQ3XNtOueuYk1pGDh90XGvi7KMdfHgVrScAhjaEqbyTg2Pk4M4dZ3KeghUXPo k44X5GSvcWzTSLSgG2Pg5Ocn/SaJbob+MfXxCP4+12SDkprxfwACTjK3DXfxQjt7tIeFElrEcxv w675zFiLONY+U+BZJ4MNnnDKaxL2gSN21W+edSInpG7JG1FlCK2+J0YfI2qeneE+pApHR87RHS6 iYPha58hevTYukaZpwim2fSeqVbqLYVyq+YeSoeeA= X-Received: by 2002:a17:902:fc50:b0:2c1:6e2a:40b with SMTP id d9443c01a7336-2c1e80d2ae2mr243006105ad.2.1781032884251; Tue, 09 Jun 2026 12:21:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 18/45] target/arm: Implement FCVTNB, FCVTNT for SVE Date: Tue, 9 Jun 2026 12:20:42 -0700 Message-ID: <20260609192110.752384-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033376085154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 4 +++ target/arm/tcg/sve.decode | 2 ++ 4 files changed, 55 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index e67fb191c2..5863a6dbb8 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -19,3 +19,5 @@ DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) +DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 8295725b83..3bd57ff350 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -462,3 +462,50 @@ void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void = *vm, fp8_cvt_finish(env, &ctx); clear_tail(vd, ctx.high ? 16 : 8, simd_maxsz(desc)); } + +void HELPER(sve2_fcvtnb_bs)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint16_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H4(i)]; + float32 e1 =3D n1[H4(i)]; + /* Zero-extend uint8_t to clear the odd lanes. */ + d[H2(2 * i + 0)] =3D fcvt_f32_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H2(2 * i + 1)] =3D fcvt_f32_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} + +void HELPER(sve2_fcvtnt_bs)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H4(i)]; + float32 e1 =3D n1[H4(i)]; + d[H1(4 * i + 1)] =3D fcvt_f32_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D fcvt_f32_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 446fedb5b9..065f16d899 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4104,6 +4104,10 @@ TRANS_FEAT_STREAMING_IF(FCVTN, aa64_sme2_or_sve2_f8c= vt, aa64_sme2, do_f8cvt, a, gen_helper_sve2_fcvtn_bh, false, fals= e) TRANS_FEAT_STREAMING_IF(BFCVTN, aa64_sme2_or_sve2_f8cvt, aa64_sme2, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, fal= se) +TRANS_FEAT_STREAMING_IF(FCVTNB, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_fcvtnb_bs, false, fal= se) +TRANS_FEAT_STREAMING_IF(FCVTNT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_fcvtnt_bs, false, fal= se) =20 /* *** SVE Floating Point Compare with Zero Group diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 806953bc35..72755b27af 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1103,6 +1103,8 @@ BF2CVTLT 01100101 00 001 001 001111 ..... ....= . @rd_rn_e0 =20 FCVTN 01100101 00 001 010 001100 ....0 ..... @rd_rnx2 e= sz=3D1 BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 +FCVTNB 01100101 00 001 010 001101 ....0 ..... @rd_rnx2 e= sz=3D2 +FCVTNT 01100101 00 001 010 001111 ....0 ..... @rd_rnx2 e= sz=3D2 =20 ### SVE FP Compare with Zero Group =20 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033846; cv=none; d=zohomail.com; s=zohoarc; b=HdnpqxKegOf6TB/0mKEfMuwPv+bdoEyc+WhAnTqYy9glqxAX5l4ih5fygXYqb6/O5JMrgiyfIpEyFcjXK4BP1nIFIMTqz2RpNjYJCK+xF3ZV8GnKJxDboSmGlGtjO6E0KcDyosOLWn4ywHy0myg38J6YYxQQcqYw43XoF4jx2dI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033846; 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=ti3Lzz7ZpcUNrArVEJRLWhneqvaOUMGJ0jgbnQ7/QBQ=; b=Gm+4Isg3qGAnyQwUn3DlnLC+4nKeSyMDNJsuZEQKSt/tutI7tVhPj5KDlp5FzwciQq3NJR3kj5V/Cc4AE8XO0x5jGqr8gEV9EeXFqUmuy+xkSQIq4bUgAgJAmhSaod8esX9aU3eIgxqqdFisKAPhuS+lPRdtIFNAZRiT2VVIohY= 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 1781033846274464.1868276515993; Tue, 9 Jun 2026 12:37:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX28V-0004wx-Im; Tue, 09 Jun 2026 15:29:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX220-0003d3-Ua for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:43 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21q-00045A-Pv for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:32 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2bf237e1433so66139525ad.1 for ; Tue, 09 Jun 2026 12:21:26 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032885; x=1781637685; 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=ti3Lzz7ZpcUNrArVEJRLWhneqvaOUMGJ0jgbnQ7/QBQ=; b=iNVVRQ1JhxcrlioiljvsXjpg9hKwpZnQ5SSMjIdfeD1XrKzHN48M4ZBksZAY1sPqoF GCc6iWvAGw9z7v8lyxCerKN6JdEAkCVj+TOnevQTyAJei1vIun9Pr6p1tcpWOKuJcLh9 NoaP55Kg1zHnjibhjz5HluLaB36cfWP0fOZDTG1SfFu+H6KokciZXimTxaLJ5MUAnlOG 0CpHYXMHF+TkSM3MQHHuggTs2n9wrvcYNYty51+Rs1YfSNCTPfIIKwcdl3Y7Kri5ZoD4 wbg4HobJFlh8IfXa7uChm2nCa4Nl+teVqNX5vYfoI3Cdac+zNWmOp3xSUYAfUs7GmTHv inSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032885; x=1781637685; 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=ti3Lzz7ZpcUNrArVEJRLWhneqvaOUMGJ0jgbnQ7/QBQ=; b=j18WLdqZDVvVZsvuIvV+h3YLsWpes8friL5lBiWenbQ2TsJJvw3yKcEmoQmfTTpj1o NG09xDXSQ7a2qnduvtcZUDR8W7axDxZKI3JcZoyMvCEvVA0kBa6p+i2I7MPp2xlJg3+r 1iE+/jyTN73o/7LWSd2C+3DtkWRXmKiAP/UyGGDJocdBSq5NT9NDenGM4AXaALouY6iD K8hQi+JGeuupRZ/epjcxe3bCaYkWSnOp9oxIRAOh3lAqzAa7om5VqfCXkgLr6/qOjNlH LD+3vGkSCvhyy0joKKG33Ic7CrjhbS5QuiWe9v9oQkLzd9QqGRqQqro2DgyDDcn+x/Mn Sfbw== X-Gm-Message-State: AOJu0YwMPGsyFnCF3z19ryMZ0ylRxwhqv00EkcFk21cyjhtRQNnjOstG p863/9a9o6OadqBzIvxpToOy1E5EgSRMZMCTfRhbaDorVfRFIutkXamvfR4I5BDMNrUnZ1zWzyh vhZ9xoKo= X-Gm-Gg: Acq92OExXxztbmBYvVuOthB5CKCrn+KtlIFQLMZETizG3qe9O6LYvhBw4i/EXwOzGUT +xWZetinvfNdSTvma0W+3apKsLJR9pnp6VDcq8b2IFpyyB4eUS4wN9xGVU4clHDVdwefjtYYnSv CDpwMJ8411Csq2fAHkxj3PQLrhs9NnaszsM+QXADMi1x7pTbM/430w6dxqqHoX5CyoKdMTExbhu ugpUT9yRLlnSgrVYv78mWl7AyXHQp2CVB1j7eUGiQaByoXU3G5wmnYkSs2cm3wXxi68XxZEIKdg X1+St1RAKLItnzlQZ7LR0T6eWM+i7Loi1+Iw+PNIiAeDtooy2JwOjWq60lJ7Q1C7nQbdy1S5nLY XfRNXpwK3Xu9ca4OUxXHa1NC0vzogGlJ6u06L47QJp/PkyA1Kg8VURoc+8oglan7g0GtV2RUOyd 8mkGy92QAH2oS5lw21FCp1fiY5UKGiknPx4kmj+Co= X-Received: by 2002:a17:902:f711:b0:2c0:ab82:6ba7 with SMTP id d9443c01a7336-2c1e85ad8d7mr257081585ad.33.1781032885143; Tue, 09 Jun 2026 12:21:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 19/45] target/arm: Implement FCVT (FP16 to FP8) for SME Date: Tue, 9 Jun 2026 12:20:43 -0700 Message-ID: <20260609192110.752384-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.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: 1781033848083158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sme.c | 16 ++++++++++++++++ target/arm/tcg/sme.decode | 2 ++ 2 files changed, 18 insertions(+) diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index c0fe77242b..49eee95d88 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1556,6 +1556,22 @@ TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen= _helper_sme2_bfcvt_hb, 1) TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) TRANS_FEAT(BF2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 1) =20 +static bool trans_FCVT_bh(DisasContext *s, arg_zz_n *a) +{ + if (!dc_isar_feature(aa64_sme2_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && sme_sm_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->zd), + vec_full_reg_offset(s, a->zn), + vec_full_reg_offset(s, a->zn + 1), + tcg_env, svl, svl, + FPST_ZA << 2, gen_helper_gvec_fcvt_bh); + } + return true; +} + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index d6192eb59d..a02bcc0e22 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -863,6 +863,8 @@ BF2CVT 11000001 111 00110 111000 ..... ....0 = @zz_2x1 BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 BF2CVTL 11000001 111 00110 111000 ..... ....1 @zz_2x1 =20 +FCVT_bh 11000001 001 00100 111000 ....0 ..... @zz_1x2 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033412; cv=none; d=zohomail.com; s=zohoarc; b=gbbvXRNg03oEAeDd9BovgCDpXfR4UYZdZPDo+loUHvY1tx6Mh7futYcNckXaXyl4e+R02QzcwMSm4ocFIEdcPqOcl6sbW9GIgxWZtb7SJjFHkzNmF+XGDJvy7ZEguN9iFREcDud/Ea5KRbmGbYr4U/lB45cCNMuOZstEhhWa2aA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033412; 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=LPaxOES8BeN1kH/RpqJI24oCM++1OiCO9eL0RFjE2rc=; b=i6eM7/KOJQCEaniEeK1v0dvYm/5uvDzj3VbD4hmS3eYvLSySHdwvJFWkOhvoEDCPAKlm7TDXjbFKCV90kfE5fFQVwuknnMCOI/NYoOr5J1O1lT5jHSICZs1j2uDIwxhsUeCZbmXko28MktQkHPrmXLIQfP/4lhSUMRSwgmSDKto= 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 1781033411978514.9823297410478; Tue, 9 Jun 2026 12:30:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX26T-0001Bx-D0; Tue, 09 Jun 2026 15:27: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 1wX21q-0003YB-3q for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:30 -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 1wX21e-00045D-OP for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:20 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2c0c32f6ce1so41249835ad.2 for ; Tue, 09 Jun 2026 12:21:26 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032886; x=1781637686; 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=LPaxOES8BeN1kH/RpqJI24oCM++1OiCO9eL0RFjE2rc=; b=B7MXSOUehkU5NS0vmkG12jSvSFxhCM2vxryYlVn3iAgHL0Efi+54fdTbagJRiWUTD9 LI0j5oKwefjg0bnO1Y+/kK3Kj6Pvf36QBbdX1PkSFJ2VN0+PsYQ4cxJAYmCbOZq7jxLX RGyjdaXNY1nmOxLU/s/Y1scHNZUlkpO8k/SzEuNvM9OdhqCuYtxnWPStlbgqc8iFjpYX ndUJ+mVKZt/+d4/U2uY0w3pKVgJ/N4qjpSZbhFYNEcLhcgdhS8dwOdXFYKdsNzFo1IWC TFjYXgZQRJbSFk6ELvtA2Yc3gHOeWzutYVYK6dmCXHiyQ1ucnYNzX8aGbCqIKQJq1IOd i1Lw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032886; x=1781637686; 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=LPaxOES8BeN1kH/RpqJI24oCM++1OiCO9eL0RFjE2rc=; b=AwHma1ASvaJjEmIjg9251iKsYv1fPXeTXh9UcchfglRnMOkKDPgjEenO6oOQIlzJRA 4JljHWFq0zUbzc1zG43JPbW+0WUN9Ks8kSiOI7et+vzGCpg3AihAwoavBLc759xAav/R Ld1/fshHarjwvQ0tPJNZac9dIMfA0TUa9KEF5LyBoxbZZHMMRedWhkCbZfvVfA/xlSH6 uY64yKyXnikJ0cHGSDdm/bHRBm9Ge/H034NkmQc29XebXDGtvdqm/b51SvbLqvfMYiMX kqYl0jiqzpe4b7JIcWxulFzVFBnPf9oW5b+AVIplmGe5gld4pegqof1Xsic8INRZi4Qd qgtA== X-Gm-Message-State: AOJu0YyRLtNbVWo4IjWen4C7H/oekxW3gwUctvBgL1HKB7yChbkGbROZ lfL+u882D5t8B0HIelODHOfiBQJs8GSOVinZ2pds99PaK/p2/W4ODPaKCIdHjGf+CSxpBRhTsLE zefeuBT8= X-Gm-Gg: Acq92OFjF2VrVbyVc1aeqLic7QU5UIkVt4yxS5e1pscQVsnTieRkqmsLrnMSdU53s4S HROb9Xo8TGNfZXUFGenD+t4vxLadZ19iam7VLh+Ea3TuXf2SPYiSbczCxeVFBwEwblp2U9Ibqfn JiEH8TCYwlXLaeaUrGnWMvbrmF61Z7mYqXKsrtj79ukYng1Zp/j3dLi1063jXLiHl2CNlY81xH+ AtzO5EcLunAFH1JlYaFUsnXk8Z31cr/nfiX5A9xG+V9rhB3OkneocYqyvwCE5/goql//JkXt44n VAeMKGwuSLm/1eyJjy9xkRdMWipDtVoZhD4eaNuhf0XacTzb49oaXTHGb/0G+4ohd/9rcmpwajo gdBxdCwH/9ULPK3fG7PXp0S36jtyGUk7T3GTyp/C0ujoqxoSofXLe+L/F7aucbiZi6+gnxqZcK2 QqPFWYUf98uARUxcHbbY0H77XunnDzrGmYrGfwOTc= X-Received: by 2002:a17:903:2451:b0:2c0:d99a:2fc with SMTP id d9443c01a7336-2c1e78e4e7fmr247941285ad.2.1781032885762; Tue, 09 Jun 2026 12:21:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 20/45] target/arm: Implement FCVT, FCVTN (FP32 to FP8) for SME Date: Tue, 9 Jun 2026 12:20:44 -0700 Message-ID: <20260609192110.752384-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033414709154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 59 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 3 ++ target/arm/tcg/sme.decode | 3 ++ 4 files changed, 67 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 5863a6dbb8..36ae977431 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -21,3 +21,5 @@ DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sme2_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvtn_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 3bd57ff350..a39dc6f859 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -509,3 +509,62 @@ void HELPER(sve2_fcvtnt_bs)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +void HELPER(sme2_fcvt_bs)(void *vd, void *vn, CPUARMState *env, uint32_t d= esc) +{ + ARMVectorReg scratch[4]; + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n =3D vn; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + size_t stride =3D sizeof(ARMVectorReg) / 4; + + if (vectors_overlap(vd, 1, vn, 4)) { + n =3D memcpy(scratch, vn, sizeof(scratch)); + } + + for (size_t i =3D 0; i < nelem; i++) { + for (size_t j =3D 0; j < 4; j++) { + d[H1(i + nelem * j)] =3D fcvt_f32_to_fp8(n[H4(i) + stride * j], + output_fmt, ctx.scale, + osc, &ctx.stat); + } + } + + fp8_cvt_finish(env, &ctx); +} + +void HELPER(sme2_fcvtn_bs)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint32_t *n2 =3D vn + sizeof(ARMVectorReg) * 2; + uint32_t *n3 =3D vn + sizeof(ARMVectorReg) * 3; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H4(i)]; + float32 e1 =3D n1[H4(i)]; + float32 e2 =3D n2[H4(i)]; + float32 e3 =3D n3[H4(i)]; + + d[H1(4 * i + 0)] =3D fcvt_f32_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 1)] =3D fcvt_f32_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 2)] =3D fcvt_f32_to_fp8(e2, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D fcvt_f32_to_fp8(e3, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_cvt_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 49eee95d88..76bbacfb6e 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1572,6 +1572,9 @@ static bool trans_FCVT_bh(DisasContext *s, arg_zz_n *= a) return true; } =20 +TRANS_FEAT(FCVT_bs, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_bs,= 0) +TRANS_FEAT(FCVTN_bs, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtn_b= s, 0) + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index a02bcc0e22..2b9e41a75a 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -865,6 +865,9 @@ BF2CVTL 11000001 111 00110 111000 ..... ....1 = @zz_2x1 =20 FCVT_bh 11000001 001 00100 111000 ....0 ..... @zz_1x2 =20 +FCVT_bs 11000001 001 10100 111000 ...00 ..... @zz_1x4 +FCVTN_bs 11000001 001 10100 111000 ...01 ..... @zz_1x4 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033150; cv=none; d=zohomail.com; s=zohoarc; b=WJzirm9K6nUcAYYZhRNYFPhJxUB811gn2yvXgd9kik/wfK5AVEPe1eg6BStBSeregeGDJjDH2GhTGytBOZFByha4FXs4gVb7YaMx8qKm5ebjmELkD5xzRb71gRsNlh2mZ6vI3mdG7eP9SokJgvCW2eNb0o1DKrJ6b+wKRSfTk+8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033150; 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=A1o6+n12B2vkAS9xyzM8Cq/o5UoPYgn4RqpkahMy+yU=; b=XJkm+PpQ774l8K8+Z7oBFUBBqMThWlArQctOx/dyWHRBxH8ytK9M8B98ckZ8nIvcTXlpiA0YEAzZGnQEbQ5y+2dWmQXpVmRlQC4P/JmptW+eiDWHrp77mncgStE/COmDR6JVwOuugQkFgKDLlhBLTGNb2kowB+Fsa3XV6QUGb5w= 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 17810331501908.504832095014649; Tue, 9 Jun 2026 12:25:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX23E-00049m-Su; Tue, 09 Jun 2026 15:23:54 -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 1wX21D-0003Dg-39 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:21:58 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX20x-00045R-4W for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:21:39 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2bf125989f2so44084095ad.3 for ; Tue, 09 Jun 2026 12:21:27 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032886; x=1781637686; 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=A1o6+n12B2vkAS9xyzM8Cq/o5UoPYgn4RqpkahMy+yU=; b=fqJ5YkkHuOF5mDQugLJnhcKXOrJA1AY7ZmiMMzK0Uwww3MibjrtuKCJ4A11JJ13AeC PKKcm+OipROeBgqfNqSmOlshl6eGTTzvHeKS2dEdUZ4eTlgo9hPRTfP5HH6MmK5YqBN8 qf1AKnQqWmMMz1bmP83QTKMxhbUJbXk+4hpC27zp+DxRzxGys7+wd+FgMSsGtmChbwbw gtqznvUhV/U9UmpdRiUB+1eIilTCSTePuFIgb1OfstlNmgxXvyVofBiEetq1mOafURiZ L6N62jgw8Am7JRs5RBT57gJt5Z6ZgOahGSCcRzf1WXK8FlXV7Lqq5FNkH3qNAGLe4kJs 9QAw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032886; x=1781637686; 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=A1o6+n12B2vkAS9xyzM8Cq/o5UoPYgn4RqpkahMy+yU=; b=phlBsMU7WdjKehdl2BwwgcBxsbYKiN3p6GcBBXmLtycsHByp+jmrnKePsXpks0GL9B Q6Nw0kx8rOTnsvF5mqRYGk/WRg0omdRZupM1H7atx0GfTvfd18SRvtfL6jQIVErKnV/X Y78g8NulgxLM3XyeYPqCnlg2zhQAZKqZb56eOatgtAAaTS8Uu8I0pZsX0vWBEssTUMku 0ROHDw+3DIzz3m1SiHfM5fFRHDpS+g8Qsz1BZBPalekyBNu+zhaWmoES4o8FAcEUitfV PQBnqNa4tF91p4yS4vdfLavZI1FvKqekRzxXq7sPJSgTx+vT+5SHEUE56x534GW+d8jM o7FA== X-Gm-Message-State: AOJu0YwLaFuBHYoj5QYtVDygs3AMWzEnB6AvSRVJsMDlJJDCUWZegBqu mxjasTBfBXxMNUK0+tclC6AhYyLn7gyvfEaUFAQj4Dneb3CAn2h1uRpY4GO1PR1CfCAu+TNXx1i B/BdU144= X-Gm-Gg: Acq92OG9fI/XJjxIQb0i0YqzoZR8VZdecbVXui/x+wDSz4Vzo1HCX3elBJw2fZYyXVc jQ6s/oEq6LSplBzWLXdHcNoYpMlrEBFA0GT1G6gWuIM6AfO4F7Uez0Jfpkvteiz8ixapAGNLLhJ JARojHzS0BDYjoksM1rxPbmvuwWd53AQDCZoRTyitqr5ptSIU1zQF/SICKP7qkucc6ze/mvUo7O MCycu44Ndcju3CqfysfQnpoTxkIKQ9G0VZvCesQDL0RoLT3MH3pc7ulc784EWtqgLjlwYP9esQi dIxpt9bFoi7b7x+xCOhEYM3ii7q5f/bAra8D6vRIdjq8sgrb+RTGoOT1zJKs9P5GLnMF47xefjr M0ddHYHe79pEMKc8Nxh/3oDXy8XmeB1JdNAWN2QiYDuBoyoR562UAqbO89zV3EdrZcGEr4TfoWA pyVuFIa+ZmqPIvFtACuR6ji1VBVmW3KARoX0806GA= X-Received: by 2002:a17:903:a46:b0:2c0:c37d:dfc1 with SMTP id d9443c01a7336-2c1e820e316mr166308985ad.34.1781032886433; Tue, 09 Jun 2026 12:21:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 21/45] target/arm: Implement LUTI2, LUTI4 for AdvSIMD Date: Tue, 9 Jun 2026 12:20:45 -0700 Message-ID: <20260609192110.752384-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.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: 1781033152697154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-defs.h | 5 ++++ target/arm/tcg/translate-a64.c | 38 +++++++++++++++++++++++++ target/arm/tcg/vec_helper.c | 52 ++++++++++++++++++++++++++++++++++ target/arm/tcg/a64.decode | 6 ++++ 4 files changed, 101 insertions(+) diff --git a/target/arm/tcg/helper-defs.h b/target/arm/tcg/helper-defs.h index a05f2258f2..05ccf795e8 100644 --- a/target/arm/tcg/helper-defs.h +++ b/target/arm/tcg/helper-defs.h @@ -1122,3 +1122,8 @@ DEF_HELPER_FLAGS_4(sme2_luti4_2s, TCG_CALL_NO_RWG, vo= id, ptr, ptr, env, i32) =20 DEF_HELPER_FLAGS_4(sme2_luti4_4h, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_4s, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) + +DEF_HELPER_FLAGS_4(gvec_luti2_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_4(gvec_luti2_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_4(gvec_luti4_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_4(gvec_luti4_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 75be92ce15..b076605429 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -5488,6 +5488,44 @@ static bool trans_TBL_TBX(DisasContext *s, arg_TBL_T= BX *a) return true; } =20 +static bool do_lut_1(DisasContext *s, arg_rrx_e *a, gen_helper_gvec_3 *fn) +{ + if (fp_access_check(s)) { + gen_gvec_op3_ool(s, true, a->rd, a->rn, a->rm, a->idx, fn); + } + return true; +} + +TRANS_FEAT(LUTI2_1b, aa64_lut, do_lut_1, a, gen_helper_gvec_luti2_b) +TRANS_FEAT(LUTI2_1h, aa64_lut, do_lut_1, a, gen_helper_gvec_luti2_h) +TRANS_FEAT(LUTI4_1b, aa64_lut, do_lut_1, a, gen_helper_gvec_luti4_b) + +static bool trans_LUTI4_2h(DisasContext *s, arg_rrx_e *a) +{ + if (!dc_isar_feature(aa64_lut, s)) { + return false; + } + if (fp_access_check(s)) { + /* + * (Ab)use preg_tmp to merge two disjoint 128-bit quantities + * into a sequential 256-bit table. + */ + QEMU_BUILD_BUG_ON(sizeof_field(CPUARMState, vfp.preg_tmp) < 32); + unsigned tmp_ofs =3D offsetof(CPUARMState, vfp.preg_tmp); + unsigned rn0_ofs =3D vec_full_reg_offset(s, a->rn); + unsigned rn1_ofs =3D vec_full_reg_offset(s, (a->rn + 1) % 32); + + tcg_gen_gvec_mov(MO_64, tmp_ofs, rn0_ofs, 16, 16); + tcg_gen_gvec_mov(MO_64, tmp_ofs + 16, rn1_ofs, 16, 16); + + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), tmp_ofs, + vec_full_reg_offset(s, a->rm), + 16, vec_full_reg_size(s), + a->idx, gen_helper_gvec_luti4_h); + } + return true; +} + typedef int simd_permute_idx_fn(int i, int part, int elements); =20 static bool do_simd_permute(DisasContext *s, arg_qrrr_e *a, diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index bd8ae5d6a4..f4ff56e034 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -3344,3 +3344,55 @@ DO_SME2_LUT(4,4,h, 2) DO_SME2_LUT(4,4,s, 4) =20 #undef DO_SME2_LUT + +void HELPER(gvec_luti2_b)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 1; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_b(&scratch, vm, vn, elements, ibase, 0, 2, 8, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti2_h)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 2; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_h(&scratch, vm, vn, elements, ibase, 0, 2, 16, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti4_b)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 1; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_b(&scratch, vm, vn, elements, ibase, 0, 4, 8, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti4_h)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 2; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_h(&scratch, vm, vn, elements, ibase, 0, 4, 16, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 610047846f..2d06f14e1d 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1355,6 +1355,12 @@ EXT_q 0110 1110 00 0 rm:5 0 imm:4 0 rn:5 = rd:5 =20 TBL_TBX 0 q:1 00 1110 000 rm:5 0 len:2 tbx:1 00 rn:5 rd:5 =20 +LUTI2_1b 0100 1110 100 rm:5 0 idx:2 100 rn:5 rd:5 &rrx_e esz=3D0 +LUTI2_1h 0100 1110 110 rm:5 0 idx:3 00 rn:5 rd:5 &rrx_e esz=3D1 + +LUTI4_1b 0100 1110 010 rm:5 0 idx:1 1000 rn:5 rd:5 &rrx_e esz=3D0 +LUTI4_2h 0100 1110 010 rm:5 0 idx:2 100 rn:5 rd:5 &rrx_e esz=3D1 + # Advanced SIMD Permute =20 UZP1 0.00 1110 .. 0 ..... 0 001 10 ..... ..... @qrrr_e --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033181; cv=none; d=zohomail.com; s=zohoarc; b=FKnPKKlDRv25caEHnzfufapOB2DpTHCIdKY8nrDWRcnsHfzCppfWdNvolFqOJxWgBcOlVmMP9KBPCRNML/Ngd/OS6hCjZshJDGimK3DVOITK0q27E9bb7ngQboXK3Wb3r0JCn5IdkC2loq5+lWz5les2gCIggolurZRyvthQGes= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033181; 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=v8z7vsZPtDt29Sx0GIH5ZsIK6mtaOAuGTD0EuX2TyFE=; b=c654HWRVBUckLslXidaCYcjabGflqsAiXpUKgBbyD2mJgs+R7i6QcO+WiCFosW4KUQAksBnmU69MpfHxAeUPLIw/gRIMrS54YoVXYVhxZC3vD27uptKgIVSdeYyCRy4lpMwbREA4sGuCkyLkuHSz2I+ezYA5Cg6w4JFu+boL5XU= 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 1781033181098664.8886468480873; Tue, 9 Jun 2026 12:26:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX24w-0005ch-Hs; Tue, 09 Jun 2026 15:25:43 -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 1wX21d-0003PA-W5 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:16 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21a-00045a-8G for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:13 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2c27fc587ebso11608005ad.0 for ; Tue, 09 Jun 2026 12:21:28 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032887; x=1781637687; 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=v8z7vsZPtDt29Sx0GIH5ZsIK6mtaOAuGTD0EuX2TyFE=; b=IUn0i5dTwQxsOdjXJ3Do9gPENGQPUh7inVQacwRBULVSqIb9U4wV8to/lkOxulBdFB XutfIxCQLGREb2MKTf8TemsTG/0LevYSOzy4ZY7n/x7s7iIGp6YaebwJKP8OvXntx8G/ mDCDPiUV+rwc0YJQDXN6YeJxg5L89MZSAnfm7ZxfgYDlfMoiqCwiy7lKj5ZFZiM0wLL7 s+gIxk9qWEzdRuz4Z5CCQ2BGheb7FJjgOvHZ7CgvaRpSeI4bc8H0XeUnB9AZNQxHUrci TaMgkRtZIv0w19h6kAm4aY2yAhSFakLESq5EJrOEwVLJRcrKotsxSE8bwPCcPb4GRA3T U88g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032887; x=1781637687; 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=v8z7vsZPtDt29Sx0GIH5ZsIK6mtaOAuGTD0EuX2TyFE=; b=S/Qlw8RZBhGEHa9zSeu69mGOwJDGzJ82uVnxYVomOiC1djFrVXTy2CS1CIZ61BCK1/ dsYyB7QNxc6xyvgfUGrafhdtefEiAUf0OYGFc6NBd1XPPUAWgCV0cLRv3mma4m+r8tzG vv24jv9yFwVRJE/BTKZCHJnhN/BfaKKK1AVwWgtV25oAjQJMZF+t3JETmKhV9/xboCxE x969EtmFWWs/KVlJl2VVUbA9qZEOK2OSORvWCLEubAEK3TD79vA0E6vKmXa67VDCax+g Zk3pQFapr3+8vawrR2xn6VxBsogONHQze21Nposgu6/vxsNprtd+VaXt8bBmGsmtgmMy RPOQ== X-Gm-Message-State: AOJu0YxrD5wy1ZKZJGXBSr2CAjGdNyf0kVYYemirfXy4cJwhSzbGN4+g NaDeixUyQcN08GVJdJ3DL1XX286xhK92aQ1tWJdF2ZLbjTk9GksWDOOKgadm0IPXcFOhQAIKlcG slhR5mkc= X-Gm-Gg: Acq92OHrhwxBP5EFGV7XpP99ZQCBWvdiXQutaZJtUKOxImaD+D7w60Hzsi497ZhjC7y P3hwyYnqd4972eW75BSmVFhScs7MKi67/3TtMbsmHy8Ric0dxTnRHZjsNu3cm1RVdLNLNsOmPMI SMkGDnRE5MDrjUhaZXOTKUvh19bi1ru7F+mhNefZRWCv6dLp+R7BlFxqneSDwDKj3BEc/qI7ZDf iP7QTyeLTMPvTQDxwV9cs2RVqsAzHSAbuzPEw6gzysPNgYW592OULS/KJPzyNRzi8Ak6YykM2Ci 573w17OGxzIAUsEoKZqfbnsUhWLKkYT8xCWmqrKakaQiOO7QgQk3D7acxlqx9M3AJyJZv4wPdMf ccLTAh5sWJF0eABeWfqOfUAO1a07MMDeUPO2Tu3j9qwHmavtASgvYfMEnJUTdwF7hWMY1JypFmz 3k6VfE+VxFALFR5qFbHTaWGJsaacnr2diPfJybowk= X-Received: by 2002:a17:903:2451:b0:2c0:3400:5c34 with SMTP id d9443c01a7336-2c1e78e03e8mr249258765ad.3.1781032887147; Tue, 09 Jun 2026 12:21:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 22/45] target/arm: Implement LUTI2, LUTI4 for SVE Date: Tue, 9 Jun 2026 12:20:46 -0700 Message-ID: <20260609192110.752384-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.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: 1781033182632158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 6 +++ target/arm/tcg/translate.h | 1 + target/arm/tcg/translate-a64.c | 1 + target/arm/tcg/translate-sve.c | 68 ++++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 11 +++++- 5 files changed, 86 insertions(+), 1 deletion(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 70649fe894..b220ed3437 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1659,6 +1659,12 @@ isar_feature_aa64_sme2_or_sve2_f8cvt(const ARMISAReg= isters *id) return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_f8cvt(i= d); } =20 +static inline bool +isar_feature_aa64_sme2_or_sve2_lut(const ARMISARegisters *id) +{ + return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_lut(id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index beaffe914e..7c9beb30e6 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -90,6 +90,7 @@ typedef struct DisasContext { int vl; /* current vector length in bytes */ int svl; /* current streaming vector length in bytes */ int max_svl; /* maximum implemented streaming vector length */ + int max_any_vl; /* maximum implemented vector length */ bool vfp_enabled; /* FP enabled via FPSCR.EN */ int vec_len; int vec_stride; diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index b076605429..d6466de03f 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10903,6 +10903,7 @@ static void aarch64_tr_init_disas_context(DisasCont= extBase *dcbase, dc->vl =3D (EX_TBFLAG_A64(tb_flags, VL) + 1) * 16; dc->svl =3D (EX_TBFLAG_A64(tb_flags, SVL) + 1) * 16; dc->max_svl =3D arm_cpu->sme_max_vq * 16; + dc->max_any_vl =3D MAX(dc->max_svl, arm_cpu->sve_max_vq * 16); dc->pauth_active =3D EX_TBFLAG_A64(tb_flags, PAUTH_ACTIVE); dc->bt =3D EX_TBFLAG_A64(tb_flags, BT); dc->btype =3D EX_TBFLAG_A64(tb_flags, BTYPE); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 065f16d899..0e0bc4cbfe 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8287,3 +8287,71 @@ TRANS_FEAT(LD1_zcrr_stride, aa64_sme2, gen_ldst_zcrr= _c, a, false, true) TRANS_FEAT(LD1_zcri_stride, aa64_sme2, gen_ldst_zcri_c, a, false, true) TRANS_FEAT(ST1_zcrr_stride, aa64_sme2, gen_ldst_zcrr_c, a, true, true) TRANS_FEAT(ST1_zcri_stride, aa64_sme2, gen_ldst_zcri_c, a, true, true) + +TRANS_FEAT_STREAMING_IF(LUTI2_1b, aa64_sme2_or_sve2_lut, aa64_sme2, + gen_gvec_ool_zzz, gen_helper_gvec_luti2_b, + a->rd, a->rn, a->rm, a->index) +TRANS_FEAT_STREAMING_IF(LUTI2_1h, aa64_sme2_or_sve2_lut, aa64_sme2, + gen_gvec_ool_zzz, gen_helper_gvec_luti2_h, + a->rd, a->rn, a->rm, a->index) +TRANS_FEAT_STREAMING_IF(LUTI4_1b, aa64_sme2_or_sve2_lut, aa64_sme2, + gen_gvec_ool_zzz, gen_helper_gvec_luti4_b, + a->rd, a->rn, a->rm, a->index) + +static bool trans_LUTI4_1h(DisasContext *s, arg_LUTI4_1h *a) +{ + if (!dc_isar_feature(aa64_sme2_or_sve2_lut, s)) { + return false; + } + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); + + /* + * The MaxImplementedAnyVL check happens in the decode pseudocode, + * before the Check*SVEEnabled check in the operation pseudocode. + */ + if (s->max_any_vl < 32) { + unallocated_encoding(s); + } else if (sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + + /* Then there's a second check against CurrentVL. */ + if (vsz < 32) { + unallocated_encoding(s); + } else { + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + vsz, vsz, a->index, + gen_helper_gvec_luti4_h); + } + } + return true; +} + +static bool trans_LUTI4_2h(DisasContext *s, arg_LUTI4_2h *a) +{ + if (!dc_isar_feature(aa64_sme2_or_sve2_lut, s)) { + return false; + } + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); + + if (sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + /* + * (Ab)use preg_tmp to merge two disjoint 128-bit quantities + * into a sequential 256-bit table. + */ + QEMU_BUILD_BUG_ON(sizeof_field(CPUARMState, vfp.preg_tmp) < 32); + unsigned tmp_ofs =3D offsetof(CPUARMState, vfp.preg_tmp); + unsigned rn0_ofs =3D vec_full_reg_offset(s, a->rn); + unsigned rn1_ofs =3D vec_full_reg_offset(s, (a->rn + 1) % 32); + + tcg_gen_gvec_mov(MO_64, tmp_ofs, rn0_ofs, 16, 16); + tcg_gen_gvec_mov(MO_64, tmp_ofs + 16, rn1_ofs, 16, 16); + + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), tmp_ofs, + vec_full_reg_offset(s, a->rm), + vsz, vsz, a->index, gen_helper_gvec_luti4_h); + } + return true; +} diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 72755b27af..e2106fc7f5 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -31,6 +31,7 @@ %dtype_23_13 23:2 13:2 %index3_22_19 22:1 19:2 %index3_22_17 22:1 17:2 +%index3_22_12 22:2 12:1 %index3_19_11 19:2 11:1 %index2_20_11 20:1 11:1 =20 @@ -1737,11 +1738,19 @@ RSUBHNT 01000101 .. 1 ..... 011 111 ..... .= .... @rd_rn_rm MATCH 01000101 .. 1 ..... 100 ... ..... 0 .... @pd_pg_rn_rm NMATCH 01000101 .. 1 ..... 100 ... ..... 1 .... @pd_pg_rn_rm =20 -### SVE2 Histogram Computation +### SVE2 Histogram Computation and Lookup Table =20 HISTCNT 01000101 .. 1 ..... 110 ... ..... ..... @rd_pg_rn_rm HISTSEG 01000101 .. 1 ..... 101 000 ..... ..... @rd_rn_rm =20 +LUTI2_1b 01000101 index:2 1 rm:5 101100 rn:5 rd:5 &rrx_esz esz=3D0 +LUTI2_1h 01000101 .. 1 rm:5 101.10 rn:5 rd:5 \ + &rrx_esz esz=3D1 index=3D%index3_22_12 + +LUTI4_1b 01000101 index:1 11 rm:5 101001 rn:5 rd:5 &rrx_esz esz=3D0 +LUTI4_1h 01000101 index:2 1 rm:5 101111 rn:5 rd:5 &rrx_esz esz=3D1 +LUTI4_2h 01000101 index:2 1 rm:5 101101 rn:5 rd:5 &rrx_esz esz=3D1 + ## SVE2 floating-point pairwise operations =20 FADDP 01100100 .. 010 00 0 100 ... ..... ..... @rdn_pg_rm --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033490; cv=none; d=zohomail.com; s=zohoarc; b=eRTNz1PWB/mAcYMfkAq+KyjKRnAIyacw1gXAV9Z/oT6dnvHtEeEv/MaPH2IHDXlYYp7a+Yd8V2mCmLBpGaEpDO4pm+ERx60NkNMuRwHnwb53FzyKtWcDIW/9U+9kVxv3Us91BAOpVCOBj2xoMddlr6hQWnJoEFNRPta3Tee2TZE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033490; 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=Qq35P8LUtlgDlG4GlgR+2riqk2fqmkHSrUz4hzTx3So=; b=mN4mLRvKBXnaDFv3pmmcngwkgcfCYuYPt5CWmLIdOKqMbyjBbErL0CUmK9167Z0vsQnmDQbxDOlloC+bawOM++0ng5aIS3TUmhfmUnXid7pJwodlfbTXcUf3uBfEw8pynJV5qoKpxF93NfZzuHpVfbLrgEXKTBzENQ+7kGfcdpY= 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 1781033490668791.4879852739878; Tue, 9 Jun 2026 12:31:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX28o-0005Rg-F2; Tue, 09 Jun 2026 15:29:38 -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 1wX220-0003d2-Su for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:43 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21r-000461-El for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:32 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-36baec934b6so3909243a91.0 for ; Tue, 09 Jun 2026 12:21:28 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032888; x=1781637688; 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=Qq35P8LUtlgDlG4GlgR+2riqk2fqmkHSrUz4hzTx3So=; b=hpA84PC1Ocbfq2Vb3PSyoZnoLlDc8DyXuY6PuzVYHLzgRG5lLTvhr1+lMKRYJYaeFf zTceLnaK401xMlPmXI9Ps6/vVdLJql5x2gtdzmH1uVJAqcoHQrU/JDBn0tTNvwu0QfqL ijL6TlL3BPpv5Lc7cs5ha1RlJIfjR6h53ttVJsqt+KK6kGHTApVZCK3axTQcXKAKraHt iJbq81IQOV0qqh8iYdTQHHohwX/yk+FGyR12/06ay3zjp3ZH41ybK6k2kddZ/kRGMOUe RDwvrX0MrPziZs+aglpZj9mVE2l1C45lrfDiuW7wKq8RsYk3WnEbfAf+K3Nxaeg8DiRs hkxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032888; x=1781637688; 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=Qq35P8LUtlgDlG4GlgR+2riqk2fqmkHSrUz4hzTx3So=; b=gglhqDTKMxCnGzqh0iyd6c9MprWpou46EWM9Bku6mUT4akcDCtOs6+4Z9ZRtRa7uT5 OQLpM/gRYWeG4RYMA1GpzfHZ9zNekE5u62vNwJxBSw5+bLd5NwZmvvPxFmHtIZ2sB9Ad ybZqy5eubo5397xF83x1+JXVkaENf6wK9DPXrKN4EX6qiylSIdzfihSj6kE+FzYR25mQ hGia/1AXeDXlEjDKBrK7kwUvkcPeD1VyUOZPBNxvNuNW3cKZOPvtHx0HBG4dSUgrpu+i jFF7e5Ee09soOg2aSPNolpK6LzwzxcMSEMOkHTOH5vrjUKvtmMUQACeayFDUC66GGQ1f FaUA== X-Gm-Message-State: AOJu0YwdbGk10x7Y8l7xq6KcOjESkpUPi3JKF6olTv1syjWSh1fI0GQI yEAwQ5iGpisHL/GA60POjpjenS8j4OUebNS5aeny4jEOKHluRUbIHiuZp5lhF9cWoAZEAZ/iWrt o3YolAKw= X-Gm-Gg: Acq92OFddpXi4qbEGeOPaCz+64ri94GD7mSXfKtR/K6uTOwsyGXwvTVK8608Nh45IiW VIRYMjBBllrTbpN3Ia1pcdR+Jp59mKHyLHqH8SC3wBd6/qMxw6GVd7XzD8HgfHVkwgtPTF07Puu t9jzjt4sD0aKM4cqZ8TeblXkgpHEgmxzXcrbrGDiSOQeQXZYVr7RMPh9VtFSoO/SWS50zVP0Y0x o+3wY1Hm41jigT3tMF603DP1dsII1+TjRYz3btjj2zqxf+Yq/3CU1L3l7NbAg21jpaqc6RIX10V EQGim2x3qmykDLA0hKezNakQpu8nFmLVO45eSGgteuYD5kHQK2ReH12YItr9lplcMKhV03BEtXh g/twwGZ5QWAgFgVJJ2FMVQ7sJ8eoDvKD1hJKyGYVxzC0r7hGWepSXWevCJBs+LQyJSp+XhKSZxZ soJojHoJCpZthO9YC4Dh/vNShpyy9M2JDTgZzDoKw= X-Received: by 2002:a17:903:1209:b0:2bc:e299:4b3f with SMTP id d9443c01a7336-2c1ec80a4eamr170464155ad.10.1781032887883; Tue, 09 Jun 2026 12:21:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 23/45] target/arm: Enable FEAT_LUT for -cpu max Date: Tue, 9 Jun 2026 12:20:47 -0700 Message-ID: <20260609192110.752384-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.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: 1781033492370158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 3 files changed, 3 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 228b593316..5ed7a7badb 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -221,6 +221,7 @@ abi_ulong get_elf_hwcap2(CPUState *cs) GET_FEATURE_ID(aa64_lse128, ARM_HWCAP2_A64_LSE128); GET_FEATURE_ID(aa64_faminmax, ARM_HWCAP2_A64_FAMINMAX); GET_FEATURE_ID(aa64_fpmr, ARM_HWCAP2_A64_FPMR); + GET_FEATURE_ID(aa64_lut, ARM_HWCAP2_A64_LUT); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 1a4f50486d..39dc769a04 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1263,6 +1263,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64ISAR2, BC, 1); /* FEAT_HBC */ t =3D FIELD_DP64(t, ID_AA64ISAR2, WFXT, 2); /* FEAT_WFxT */ t =3D FIELD_DP64(t, ID_AA64ISAR2, CSSC, 2); /* FEAT_CSSC, FEAT_CMP= BR */ + t =3D FIELD_DP64(t, ID_AA64ISAR2, LUT, 1); /* FEAT_LUT */ t =3D FIELD_DP64(t, ID_AA64ISAR2, ATS1A, 1); /* FEAT_ATS1A */ SET_IDREG(isar, ID_AA64ISAR2, t); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 18c6355967..dc20632097 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -102,6 +102,7 @@ the following architecture extensions: - FEAT_LSE (Large System Extensions) - FEAT_LSE2 (Large System Extensions v2) - FEAT_LSE128 (128-bit Atomics) +- FEAT_LUT (Lookup table instructions with 2-bit and 4-bit indices) - FEAT_LVA (Large Virtual Address space) - FEAT_MEC (Memory Encryption Contexts) =20 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033347; cv=none; d=zohomail.com; s=zohoarc; b=nMqYcyZfkFLSgBoTWMaXA5KbtL1ZcfGAexSdChJwS/AH3WI+XLEyn99Wtk9Sc61vgoXb8Dd7ikeySniA5ctwID15cqNNYSgNWkwECCz57i8oKdwXOgUTnGJWQ0nAuuVhZgXdn01dtmSOv23BeQhydfZSaI5KElLNjlTSq5+y1Tg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033347; 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=yx3pBpNnnixYGvFXS+Bu2M3m7XbvSzNcUUbjpi1jMJc=; b=K4IKVY+H+Xa7QyId5H7qA6M8rQyr3FFYbDdoXYMoPTvGEyo0Bp59X3NlcImI6uZV+UUTciTuQ9YJia5ZO7w82MWKg/JcN7oOY2bdXTK10lECbg+O/QKCxQarFjitUOFKSVz25TrRPJZ/WPAaOXVr1qUfj4MfE2obIxBJZ/ejdVk= 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 1781033347237895.8243846167453; Tue, 9 Jun 2026 12:29:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX28B-0003f4-Og; Tue, 09 Jun 2026 15:28:59 -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 1wX225-0003fS-IT for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:50 -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 1wX21t-00046F-VY for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:34 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2c0c2c7d45eso53591175ad.1 for ; Tue, 09 Jun 2026 12:21:29 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032889; x=1781637689; 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=yx3pBpNnnixYGvFXS+Bu2M3m7XbvSzNcUUbjpi1jMJc=; b=Dh4nGgkNWT0gpe/Hbk36KVl6RlFv4vh+KPvkrIhkz38cuH0t8j0Svysvt7YYpPk4t+ j4cxWnvjuwiSe/DoG0BBVhX7Xkb9x9mLaQjsEuwDOfejZSEeeF6zEcUpBtzzghM4kPx9 onJWx4ZmO6blsQbaWQrPytTbUNRZNaxgU7KZApqvfE9eNr1Vb7EuXBcR+AEC1Zb6iXna f9waQhKZsr0PyeeXqT4rMPEXGsQPanXibg8Rw2/JBcNlnOhsBvfrp9aLetrWyZ3w06/0 BrMQmPpdUKJLhl6pgoBsrxzmGeytgycNC5BwqXeTmZm6IRw6v5TQXNtyQ9UiNyFH4Lhj O/Tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032889; x=1781637689; 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=yx3pBpNnnixYGvFXS+Bu2M3m7XbvSzNcUUbjpi1jMJc=; b=da/WbuUZu+6Y08maTxE9/oYy+E/xwenvwkiO/VlA+c15rEM6UYnWVh84C4sH8c77ne 6G4BoDnpqI3c1vcAoTOfJ9DOA0+DIaXwd9awoQf58MX6hkHu1L4tThl5ansQ+SfFvT/U az5vLLLrU0DbuvgUOSwP3vEEqLWhCwuPAa4eZGcemuyWxvyOTo/CaINur3YNDy0UuG1Z OxJ9leu8ObG8xQDKFWhUXe5LUQlswk/p9j4kbspskpzQ12tjSH8oYa5ROiwONP8Ku7a8 77iE157c79Mj82DVCuorwlJJiErp7lqrBcjFxfEwt2bB6uH3vEQYNNSwcU6BMLISIVml XuSg== X-Gm-Message-State: AOJu0YyiPu9lsaP1oLnZNBHd0tjj8gpI0rgLqRkbaMxwfzvxISXHF4v8 WQx64r950WmQP/48L97QBOoTD6SabT7GStjIBUTf81wNp+ZB6n/nLYb6LNRrOfsDgk/JMaZU7yR +RT3vHZQ= X-Gm-Gg: Acq92OHbT0fI2XvxjyJ6shClQy0ayUNGUOqF5gJRLRrK0We6b1T5XHP3uAs3RVBOukv dkgVsiJjorIKLwvaBTOPt7OWnXvbFsYj3EIhaNIzavVkHB43Lc046Fkqg4qmNfbiEYl0QflFZCP Po5cUD5cYNWevIMBjtC9zMJ/n5N0FtK9vCh9/kaH1iJomMF+F5Zzrru13Hb22D4M8Zfkpp9F+MX chqe5xFyKdHwS2lL9ooSt5QTEbzohtXOnAugIHhCjj+XDDix2RVLhgIJfWIxWx8VhQ9v3Xis9wK /602tdNG6wzMq/U8NPUq3x/IJTtCEmqh/JfWmNIEFmCn8qOf9PLondg5rHLb5o1BQsg9ZcjRfF1 e9xG1AR59b9z5xr89GxRlX4ykJQtZV9rtOosceJxBmGz/qaLqk0zT6N2czfNIIcorm4dAV4e0fP DlImeVTGq9punpO+4q7qw7eJwULkv+D9pB3/ZOoUi7Ggk5l/Umrg== X-Received: by 2002:a17:903:2411:b0:2bf:379b:53f4 with SMTP id d9443c01a7336-2c1e849511fmr270740355ad.19.1781032888649; Tue, 09 Jun 2026 12:21:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 24/45] target/arm: Enable FEAT_FP8 for -cpu max Date: Tue, 9 Jun 2026 12:20:48 -0700 Message-ID: <20260609192110.752384-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033349367158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 3 +++ target/arm/tcg/cpu64.c | 6 ++++++ docs/system/arm/emulation.rst | 1 + 3 files changed, 10 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 5ed7a7badb..1c0c404b7c 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -222,6 +222,9 @@ abi_ulong get_elf_hwcap2(CPUState *cs) GET_FEATURE_ID(aa64_faminmax, ARM_HWCAP2_A64_FAMINMAX); GET_FEATURE_ID(aa64_fpmr, ARM_HWCAP2_A64_FPMR); GET_FEATURE_ID(aa64_lut, ARM_HWCAP2_A64_LUT); + GET_FEATURE_ID(aa64_f8cvt, ARM_HWCAP2_A64_F8CVT | + ARM_HWCAP2_A64_F8E4M3 | + ARM_HWCAP2_A64_F8E5M2); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 39dc769a04..b48dd01a2c 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1392,6 +1392,12 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64SMFR0, FA64, 1); /* FEAT_SME_FA64 */ SET_IDREG(isar, ID_AA64SMFR0, t); =20 + t =3D GET_IDREG(isar, ID_AA64FPFR0); + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ + SET_IDREG(isar, ID_AA64FPFR0, t); + /* Replicate the same data to the 32-bit id registers. */ aa32_max_features(cpu); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index dc20632097..470f7d891e 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -75,6 +75,7 @@ the following architecture extensions: - FEAT_FHM (Floating-point half-precision multiplication instructions) - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) +- FEAT_FP8 (FP8 convert instructions) - FEAT_FPAC (Faulting on AUT* instructions) - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) - FEAT_FPACC_SPEC (Speculative behavior of combined pointer authentication= instructions) --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033487; cv=none; d=zohomail.com; s=zohoarc; b=gYFeX7+w+Q9m9kkjg3YMOxKDsp+s2tECxsws93LRu2P1VnEGjZE7JgslOteoBDGrTBQTSEkvHM2PoBaplAjHIam06R16ukqhm8Az4d3bNNIyAS4iDjONSe4vtK2rHLB5n3NTQdOZbdB4ETnNVCprvw33PYMfJjXmpiyRjMCX5dk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033487; 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=JX7+OeeD2FN1dxWerp/I3Ll3/ZlzCTLqZCteUU7Y4Pk=; b=i64MxUFLl/ZYXuQ4wvIi9F3vysRr3FiNh2vgjWZ3sGZNx/IpWqMQbEeXlHxi+g7DO4JbDtYDGTV+bXjsAzOr5EHKTiv49Q7+SSYjGZo9Aon3IUPIJ8FNdPe71icegpesaE5e2+iJFdxyYrpWoTEymI0B+Je2ncA4mrBkcusRcfc= 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 17810334876190.4785678753017919; Tue, 9 Jun 2026 12:31:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX28H-0004UA-8d; Tue, 09 Jun 2026 15:29: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 1wX225-0003fG-Gg for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:48 -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 1wX21u-00046Q-On for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:34 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2c0c3546924so39810075ad.3 for ; Tue, 09 Jun 2026 12:21:30 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032889; x=1781637689; 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=JX7+OeeD2FN1dxWerp/I3Ll3/ZlzCTLqZCteUU7Y4Pk=; b=VwcAId3Pi+Vltg0h0eG2hDFd3mrG0SjkhwOHlpFYSTm65o/MehJu0oODJwCkRrXhIi BFeW8nMa9YLCTuVeOovFYixkhZJLrR7FYnqU8mLsfL1I0IlpIpSSyviyvmK55fMkVIk6 kzpoDHRGknDKf00iGh4gp+vuvGNOFAX04orIW5x5/7iWwsGr04XHtdgu3c2/+f9S1Grf C/hpxlVCvhAOVeHw55w3c/LBSOwevM0t3x//yGKL2ldIJyUVDAR3HISBR/pEIzECfi3E /ttpPPQhaz1EuUhqqKIJ/5SguTLWMLKIaiLrUeIXeOVFa/Bzqv0uIz+Q6IuQhpvqg7xE lGYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032889; x=1781637689; 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=JX7+OeeD2FN1dxWerp/I3Ll3/ZlzCTLqZCteUU7Y4Pk=; b=MOTdJJvv5Rmaco0kVctLFyyBvIu0Aj9VrF7PmaplyldlrlwvIsr5TN3hTG9g1IXQoi 2Q+4qLQYtumZ8pIya/HDd+c63TuQnGKs7UVWUZ5pG4bMnYPWSWwkAVhm9GP/63MOTN4F 8pmGnJv/cByXZ0RWzKbT4YldtLnVOQh8XYFSduKkNbBwkVCWuJOfRPSqAmuwbOEyZB5P JGyfiwoNVNVswTIZtZ1pE40YQP/1MU1yg1DGcn0S08doIMV1aE9WogNzuuYE09jgJ4j4 cX+mWecnoPh1z0uRwICMRh6cJ++7jd0UYC3W3ZJdXAQ0CXsT35T2yvQqAMELLgObEdOp JiTg== X-Gm-Message-State: AOJu0YyhGh8NJzynumptTklzAMBltmjnryYCXblFfn0W3SAlAAB5UnWV 3SAbOBHGgAGODC2s9y31rUCykd5hKHSvxsli3gVaTsShv/JWdKK9N5IlWhKfUKvX28WNuZJ7fkb njUTWR40= X-Gm-Gg: Acq92OH4Dq4/TLssdzkQPjLedB5QMqOX3K3I6afpBkLGPxB3ZsfvlSDk7562wWlLUTE kAU1gL6J1OPcFEzfRtlWxL58KaV8wlbSY9zhtcH+OpizYu8T/EXZ2lSqodlywXbUFwVxWkaZdDR av4ljCMmh4NZ7eiXgbY7Zdscbcnl1nK1XF873JPwJxIOOhY9hu8GKcJviZOVIunCB7Tn4WrqjZG df46i/sgHPVMWgPDZcnxPx9LoQD/pTFJ/zuq1H7spXIVtfqE234aer4WVxJ3dPpQG5sxI8IR73A t0tiWpJNlNWs5lDVtU/VrJBSYS3ZpnuBs4ancquSa/c2S0fNxDmITCt5Wov7/1K0QRSagBeBxnx 3sBJmpNGwjV85LERJouycFz2upSt39D6dTOY0O6bENtQ0EoCfdv8o9USh6pYUfzMjsPF1XbEZX3 8bl1SOkMcI2DEpiz79gxNQlHPIryPMivzUmt7ySq8= X-Received: by 2002:a17:903:27cd:b0:2bf:2243:d4e9 with SMTP id d9443c01a7336-2c1e8233854mr160870875ad.13.1781032889453; Tue, 09 Jun 2026 12:21:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 25/45] target/arm: Update ID_AA64SMFR0_EL1 fields to ARM M.b Date: Tue, 9 Jun 2026 12:20:49 -0700 Message-ID: <20260609192110.752384-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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=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: 1781033489884154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index b220ed3437..3a754f8d61 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -397,17 +397,28 @@ FIELD(ID_AA64ZFR0, F16MM, 48, 4) FIELD(ID_AA64ZFR0, F32MM, 52, 4) FIELD(ID_AA64ZFR0, F64MM, 56, 4) =20 +FIELD(ID_AA64SMFR0, SMOP4, 0, 1) +FIELD(ID_AA64SMFR0, STMOP, 16, 1) +FIELD(ID_AA64SMFR0, SFEXPA, 23, 1) +FIELD(ID_AA64SMFR0, AES, 24, 1) +FIELD(ID_AA64SMFR0, SBITPERM, 25, 1) +FIELD(ID_AA64SMFR0, SF8DP2, 28, 1) +FIELD(ID_AA64SMFR0, SF8DP4, 29, 1) +FIELD(ID_AA64SMFR0, SF8FMA, 30, 1) FIELD(ID_AA64SMFR0, F32F32, 32, 1) FIELD(ID_AA64SMFR0, BI32I32, 33, 1) FIELD(ID_AA64SMFR0, B16F32, 34, 1) FIELD(ID_AA64SMFR0, F16F32, 35, 1) FIELD(ID_AA64SMFR0, I8I32, 36, 4) +FIELD(ID_AA64SMFR0, F8F32, 40, 1) +FIELD(ID_AA64SMFR0, F8F16, 41, 1) FIELD(ID_AA64SMFR0, F16F16, 42, 1) FIELD(ID_AA64SMFR0, B16B16, 43, 1) FIELD(ID_AA64SMFR0, I16I32, 44, 4) FIELD(ID_AA64SMFR0, F64F64, 48, 1) FIELD(ID_AA64SMFR0, I16I64, 52, 4) FIELD(ID_AA64SMFR0, SMEVER, 56, 4) +FIELD(ID_AA64SMFR0, LUTv2, 60, 1) FIELD(ID_AA64SMFR0, FA64, 63, 1) =20 FIELD(ID_AA64FPFR0, F8E5M2, 0, 1) --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033373; cv=none; d=zohomail.com; s=zohoarc; b=GA+ILu1+T9kI8LcP4bfzjEfSOfgMnGd7EmlkBkAM9LJjhIXD0FAurI3zYoM0tbjT6cJietM/97gToFj1yCKKQDAG4YWReofm1jfP5brpmr+hqU7S7VgTrERE+r27kVeyEQD/D8UpDOAHSVFyg+j71YJc6/32UPgNrc0M6vMKRto= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033373; 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=gWvX2E867LJtlgVoJHrhCYt8UyQTToQDMYypwmY8Rlc=; b=medlLy/oXx8u80XcEorxIeb3g5xHQv2XixCj2sQ+PlGUDxTFou48qmTLdfYSD0k3/uletX2IDNh2JzI0uS6fBekhDuDC3pwD+s6cuidXP9Daf82Z+TUfuEQsZrPXcqvUdXKGo0r40IB5ge6o4VAECiLcxElFhdbG+L5NlUBqpvE= 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 1781033373726738.2665102996561; Tue, 9 Jun 2026 12:29:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX26F-0000Ap-Ms; Tue, 09 Jun 2026 15:26:59 -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 1wX225-0003fR-Ik for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:50 -0400 Received: from mail-pl1-x635.google.com ([2607:f8b0:4864:20::635]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21v-00046b-Ko for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:35 -0400 Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-2c0aa420401so46231245ad.3 for ; Tue, 09 Jun 2026 12:21:31 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032890; x=1781637690; 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=gWvX2E867LJtlgVoJHrhCYt8UyQTToQDMYypwmY8Rlc=; b=HzSKl2YtByIL/+tfbLcpf3zYP7sQF84fcl9PBWkD94zcOSFtM5F4ClGEwc3M98NYCO 4FjPwnz43pLJUWcz4s03Td00CgRNWT+gyaQbBrhwxsVdrb80/iQzPbe9wrmeTiGyehQQ DLbxvo+38zqa4W63XbCYnGAczFbDHGZR/1M9ceHFu2UPMvAPLVZWnY4N1gMdJG7JRruX iHI3wBSCcIFk2udRdrr8T5kf2kH0gTQ4yM/x8zFc1gZsHDw9LrpyFqg9Ed/zBRAE2jFm jk+WgNDwnGBYAaKrAPylYu720VVIhYFOnzgkkcN5jPl2qBmO2YqWFiB6qBBr+aCLp94L iq/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032890; x=1781637690; 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=gWvX2E867LJtlgVoJHrhCYt8UyQTToQDMYypwmY8Rlc=; b=JAblv19NK8E9LpTA24B1JJ2zRt387XDh81Cj9hDoH4K/JvjK3Ud6BmJpOTBvTiZDlW C+otZxDEFpNt24rCNPK8zEP9Fmdw169cKprNVoLQJ4Dex00voS6UDI65k2Zr0NGPrRLE x8flH0+NW4U52C2cctoIL5lRi2Kdoixdi6NGOsFHumCAJ02w0bmgUbk9PSfNBolKDK6Q fTIuTnNjOTWwAthj8hQlxxsPkf8rqM8xESdT1r53U2IAUOD3y1IS12UzQU3irsjdk/N1 5PicySw/obC07TK2oUtPG3Xo4YQXnZLCe4m9TB0yH6KOd1MUFcjifuPyQxHrkHNIHads hWjg== X-Gm-Message-State: AOJu0YzRt/n+Moj5TuJvbAqctYoykoSDuaojcRz4NDXEIXWtqnEZb0kH /QvCL5h+cOUDZqlq7nTc2my6GsUHWqggLwJ2yLQkFmS9bv1k87dCd1JLG7nczaqEyit4YsyebF5 2FwT1YpQ= X-Gm-Gg: Acq92OEsgzDatrcurb2ayRoactnBsYc9kvqIfLiYLwyoONaGmR632ZQVjZBU0RieZaV oAuklV/Gm0iCaP+ZneLGUEliXywWFuVlmNa1r7FxlBb9mdO4x9J5XOk9jGLq0p0PWhwDtIgBSlG MdU12OjW0m0TkIT5Lcn26yhqr0ylu+rgOszlOXLZnDG0VqbmlpKXCznjmLGjZMIIQwB9Y/R56FT AHwHudDFx82Cj12uy3Wdkpd2O3ZnZs2mSXG3yFlCRIFydzn1Ah10sQR1FCBN/lPzQVCJIQcAxFP lXmmnHQRd/XuTGWE1WcyETaAaoaa2AjbdbMPHWmiqowMg1VbGI/ER2o/CrQt8khgfvEWb0iogtv we/z1XJ4tqCqAmT8QuWYiE7mC8Osugutj4VspB8EOfsSAUq/RbmQ30dsNxAYIX6+G6a2huY6G3g x1o1MopOZ6VCHZXjW6eqweaf1X6O8+piila21Va1s= X-Received: by 2002:a17:903:1209:b0:2c0:c3ac:4ae6 with SMTP id d9443c01a7336-2c1e810b983mr236269095ad.19.1781032890277; Tue, 09 Jun 2026 12:21:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 26/45] target/arm: Implement MOVT (vector to table) Date: Tue, 9 Jun 2026 12:20:50 -0700 Message-ID: <20260609192110.752384-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::635; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x635.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: 1781033375566158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sme.c | 18 ++++++++++++++++++ target/arm/tcg/sme.decode | 2 ++ 3 files changed, 25 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 3a754f8d61..050a826849 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1580,6 +1580,11 @@ static inline bool isar_feature_aa64_sme_fa64(const = ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, FA64); } =20 +static inline bool isar_feature_aa64_sme_lutv2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, LUTv2); +} + static inline bool isar_feature_aa64_sme2(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMEVER) !=3D 0; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 76bbacfb6e..c4bede2ae3 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -391,6 +391,24 @@ static bool do_movt(DisasContext *s, arg_MOVT_rzt *a, TRANS_FEAT(MOVT_rzt, aa64_sme2, do_movt, a, tcg_gen_ld_i64) TRANS_FEAT(MOVT_ztr, aa64_sme2, do_movt, a, tcg_gen_st_i64) =20 +static bool trans_MOVT_ztz(DisasContext *s, arg_MOVT_ztz *a) +{ + if (!dc_isar_feature(aa64_sme_lutv2, s)) { + return false; + } + if (sme_sm_enabled_check(s) && sme2_zt0_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + int tsize =3D MIN(svl, 64); + int offset =3D (a->off % (64 / tsize)) * tsize; + + tcg_gen_gvec_mov(MO_64, + offsetof(CPUARMState, za_state.zt0) + offset, + vec_full_reg_offset(s, a->rt), tsize, + offset ? tsize : 64); + } + return true; +} + static bool trans_LDST1(DisasContext *s, arg_LDST1 *a) { typedef void GenLdSt1(TCGv_env, TCGv_ptr, TCGv_ptr, TCGv, TCGv_i64); diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 2b9e41a75a..339de72b8a 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -141,6 +141,8 @@ MOVAZ_zt4 11000000 11 00011 0 v:1 .. 00110 za:3 z= r:3 00 \ MOVT_rzt 1100 0000 0100 1100 0 off:3 00 11111 rt:5 MOVT_ztr 1100 0000 0100 1110 0 off:3 00 11111 rt:5 =20 +MOVT_ztz 1100 0000 0100 1111 00 off:2 00 11111 rt:5 + ### SME Memory =20 &ldst esz rs pg rn rm za off v:bool st:bool --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033238; cv=none; d=zohomail.com; s=zohoarc; b=W4vVaagOAIvG9Hhbky8/+u9na3tppCT+rV6OJ83g6Vtq0DJRkYiUEddH7he9b+PaVJNGb5fbng38xBUU3PNXO1NlEs78gOFIwkYELX88r3YeeRysz0i7n7KSD5lUAfbSGJt0Tn0S4ZGKH8OgjZpz9cI595yZlZIEFNFW4BmJEv4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033238; 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=nbJRfPzGz5RLk/SqwCKKpI2L4DYv0UGRzjTmjtXLsao=; b=JtBII5i+5vtkfRGWsFVvUency7PolCevlKb2sIREsI1vrH4M0Rw8Sbgpjc4yXKTZxesNQ7Ea+aS9wADG+KhVNMTrvnXYRpg9+8NodBXPGWvTPYuRtMkTJDvsH8+Nn8PU9hRtqW6KBgXeNl5SbDeuaO2pqvjzp1qcDz2NeEiFOfk= 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 1781033238720861.6176247013359; Tue, 9 Jun 2026 12:27:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX261-0007aJ-KY; Tue, 09 Jun 2026 15:26:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX21u-0003a7-J9 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:36 -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 1wX21i-000472-Rs for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:25 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2bf237e1433so66140305ad.1 for ; Tue, 09 Jun 2026 12:21:31 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032891; x=1781637691; 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=nbJRfPzGz5RLk/SqwCKKpI2L4DYv0UGRzjTmjtXLsao=; b=bWDL9ojse0k79Wr8E2cR2uvxS2XUBRdTpoa+yM+9syTxWYVDyJdqOIVsPaKnRO44fR RuUydcVYYFg2mU3ou8ZtbTptnH8qUMS7l/qKTHVkIiLh/pS+W+4hpLDMjWZi5CTIxGDL XRTx9YgEmlyTxTM75EFkuADyrC/otcdMVdqvwz0WG/lNJAWFf9TG7jugV6UOyPwIcuE8 WxFVyjJWmOQgLhw7e6ZkxVkZhcM1Bh2j1s6ugzN8YqPJOoeO1i+2o13g4J3CtaSbG8VR oq9E03113bUAWOtqdQDnIJx1ZxRdc4Nu5gQI3nt8UvLz/k2CIg5y08ipmxSRVIukAbgW bWfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032891; x=1781637691; 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=nbJRfPzGz5RLk/SqwCKKpI2L4DYv0UGRzjTmjtXLsao=; b=roqF/+5sx5Zczr0Fny+ba+Jqa1F/qWreNnO1X4+6HR0oeC6Gy4ZMMdTWliSc4T2P5s KNK5FGdCmH5N40xJX76f0ld9TDebM+ZuPS/OqxeGXc8cYsC1Y+m4lrnMBivh7ZBUUILr lAmX7ng5gIj8RThkvRNOf4ka7xU2JYmDDvuqR7lMD99ZefZNfXEPsyKfRhf/syqXHbsw cpn7y/KpYXmWCRSY5BEj5y2TgA058RqoKgb67ETCCUFbLru2ZrlPuchjz3iBp4DeSwor G/9HEnhuXr7XRvMfC5XaKTB2AIXlNdqKen4ErVtDr8/Ar4APGwHkshPhRJJqbYxvWq+x TI1w== X-Gm-Message-State: AOJu0Yxg4MYAbQAwnonHsPXJefX/J/tcZhIXC4n1rswONgir7WNf+j+L BfTf3xWAvrmAUXC2seSZ8QeVYSD1zHoS512Rp50Ie7AKl71K0ZwqG8OhX+zxYa8H/o3raJZZTFN 9c8ou3o0= X-Gm-Gg: Acq92OGiAlrsECfPrAZwUKPP3l+S1VSxmg5RDQHB2zB8nlCRR5N9MSKbyW7U/hYuGUu BuvkmYBZSe6PRK645fS//0sJeHNa0fFm7wg22UYuFEpiTTrrNCPEeTSOUE+sxklH6CYziwKc0pX F7s80vHEtWGnRR7SY17RJ/qYAf8xJg0qfc9uqGw9moH0dXJITBJsICxGEgaW9BSud2TOnm+cl/t F6/uEXsqGMmrm5rrdTtVHz/CzfBpOdt0Fvu3NdARFBaGvfZHMSGR0gBj1DKkjUS0ftso9IoIrAi OBiXF8OLW8h6CmOn98zF7ivrTIMGoVVfKqIi55yyKocHYqHuxjCAdOPYAI7Uk5qHBRk9pACZ2to 5VxjF2jXHmnviEZfUmN8JxUfe47oavVbEn2/IFIQlOV+4LrvpRAKaEVDkftUg6Y6OyvC1LroVDf O1WugNq8ot5XXBxbG5qpDmofHmHA1iOWzrSSAcPDV0iqwij40xSg== X-Received: by 2002:a17:902:da4b:b0:2c1:f262:495f with SMTP id d9443c01a7336-2c1f2624bcemr224375575ad.26.1781032890941; Tue, 09 Jun 2026 12:21:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 27/45] target/arm: Implement LUTI4 (four registers, 8-bit) Date: Tue, 9 Jun 2026 12:20:51 -0700 Message-ID: <20260609192110.752384-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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=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: 1781033240788158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-defs.h | 1 + target/arm/tcg/translate-sme.c | 6 ++++++ target/arm/tcg/vec_helper.c | 14 ++++++++++++++ target/arm/tcg/sme.decode | 6 ++++++ 5 files changed, 32 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 050a826849..b3ff825488 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1653,6 +1653,11 @@ static inline bool isar_feature_aa64_sme2_f8cvt(cons= t ARMISARegisters *id) return isar_feature_aa64_sme2(id) && isar_feature_aa64_f8cvt(id); } =20 +static inline bool isar_feature_aa64_sme2p1_lutv2(const ARMISARegisters *i= d) +{ + return isar_feature_aa64_sme2p1(id) && isar_feature_aa64_sme_lutv2(id); +} + static inline bool isar_feature_aa64_sve_i8mm(const ARMISARegisters *id) { return isar_feature_aa64_sve(id) && isar_feature_aa64_sme_sve_i8mm(id); diff --git a/target/arm/tcg/helper-defs.h b/target/arm/tcg/helper-defs.h index 05ccf795e8..8ec6c16319 100644 --- a/target/arm/tcg/helper-defs.h +++ b/target/arm/tcg/helper-defs.h @@ -1120,6 +1120,7 @@ DEF_HELPER_FLAGS_4(sme2_luti4_2b, TCG_CALL_NO_RWG, vo= id, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_luti4_2h, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_2s, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 +DEF_HELPER_FLAGS_4(sme2_luti4_4b, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_4h, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_4s, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index c4bede2ae3..98d3d18791 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1846,6 +1846,9 @@ TRANS_FEAT(LUTI4_c_2s, aa64_sme2, do_lut, a, gen_help= er_sme2_luti4_2s, false) TRANS_FEAT(LUTI4_c_4h, aa64_sme2, do_lut, a, gen_helper_sme2_luti4_4h, fal= se) TRANS_FEAT(LUTI4_c_4s, aa64_sme2, do_lut, a, gen_helper_sme2_luti4_4s, fal= se) =20 +TRANS_FEAT(LUTI4_c_4b, aa64_sme_lutv2, do_lut, a, + gen_helper_sme2_luti4_4b, false) + static bool do_lut_s4(DisasContext *s, arg_lut *a, gen_helper_gvec_2_ptr *= fn) { return !(a->zd & 0b01100) && do_lut(s, a, fn, true); @@ -1866,3 +1869,6 @@ TRANS_FEAT(LUTI4_s_2b, aa64_sme2p1, do_lut_s8, a, gen= _helper_sme2_luti4_2b) TRANS_FEAT(LUTI4_s_2h, aa64_sme2p1, do_lut_s8, a, gen_helper_sme2_luti4_2h) =20 TRANS_FEAT(LUTI4_s_4h, aa64_sme2p1, do_lut_s4, a, gen_helper_sme2_luti4_4h) + +TRANS_FEAT(LUTI4_s_4b, aa64_sme2p1_lutv2, do_lut_s4, a, + gen_helper_sme2_luti4_4b) diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index f4ff56e034..3c06e93e02 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -3345,6 +3345,20 @@ DO_SME2_LUT(4,4,s, 4) =20 #undef DO_SME2_LUT =20 +void helper_sme2_luti4_4b(void *zd, void *zn, CPUARMState *env, uint32_t d= esc) +{ + unsigned vl =3D simd_oprsz(desc); + unsigned strided =3D extract32(desc, SIMD_DATA_SHIFT, 1); + unsigned dstride =3D !strided ? 1 : 4; + uint64_t indexes[ARM_MAX_VQ * 4]; + + memcpy(&indexes, zn, vl); + memcpy((void *)&indexes + vl, zn + sizeof(ARMVectorReg), vl); + + do_lut_b(zd, indexes, (void *)env->za_state.zt0, vl, 0, + dstride * sizeof(ARMVectorReg), 4, 32, 4); +} + void HELPER(gvec_luti2_b)(void *vd, void *vn, void *vm, uint32_t desc) { unsigned part =3D simd_data(desc); diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 339de72b8a..495330aed7 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1014,8 +1014,14 @@ LUTI4_c_2s 1100 0000 1000 101 idx:2 1 10 00 zn= :5 .... 0 &lut zd=3D%zd_ax2 LUTI4_c_4h 1100 0000 1000 101 idx:1 10 01 00 zn:5 ... 00 &lut zd=3D= %zd_ax4 LUTI4_c_4s 1100 0000 1000 101 idx:1 10 10 00 zn:5 ... 00 &lut zd=3D= %zd_ax4 =20 +LUTI4_c_4b 1100 0000 1000 101 1 00 00 00 ....0 ...00 \ + &lut zd=3D%zd_ax4 zn=3D%zn_ax2 idx=3D0 + # LUTI4, strided (must check zd alignment) LUTI4_s_2b 1100 0000 1001 101 idx:2 1 00 00 zn:5 zd:5 &lut LUTI4_s_2h 1100 0000 1001 101 idx:2 1 01 00 zn:5 zd:5 &lut =20 LUTI4_s_4h 1100 0000 1001 101 idx:1 10 01 00 zn:5 zd:5 &lut + +LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ....0 zd:5 \ + &lut zn=3D%zn_ax2 idx=3D0 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033181; cv=none; d=zohomail.com; s=zohoarc; b=Q16VHp8wvMMlzLmpy7d7rJm67K70kM7O9C2G8LS78RNe9n1Xta7SagMdsEi1oE6RS0g+nZ48XaIMY7XCQOi0BBO6+xoQ0lYfFkdn8FuD+W56JeagvY8JPYulfnAfQv81kgKKTQeeOof1FHXUTmnsZbGEoZE+otfjbl4dfbdJd54= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033181; 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=aEZChDC1OdtmKFkGf/mgdW+kDHfZFX5ELTDL9qf9qag=; b=cO5tHhGhWUxY2evOfJ8IzPow1E7U9ECnkZU3NmLV2qSuVJBcdRjYUWDMb+uVgE7k60ww8mnBMzi/GdmYkcSilXqOiyPJwc4kXBrf5IaELTSwnb4niglw1JYZyXQ4ai/HJMIUU61mddOLNLAo2Tvz0Q980Vhnm56F7zbfsswc5n0= 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 1781033181001344.8749041965526; Tue, 9 Jun 2026 12:26:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX23h-0004cL-RR; Tue, 09 Jun 2026 15:24:22 -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 1wX21S-0003Hj-K2 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:11 -0400 Received: from mail-pj1-x102e.google.com ([2607:f8b0:4864:20::102e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21C-00047E-7Z for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:21:57 -0400 Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-36b95eb4bb4so3728112a91.3 for ; Tue, 09 Jun 2026 12:21:32 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032892; x=1781637692; 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=aEZChDC1OdtmKFkGf/mgdW+kDHfZFX5ELTDL9qf9qag=; b=XfoGLT/8jH1Tuh9OAb5+SIhnMUgRHwzVU5wTrTxiLKMV2DehWzIf5hFVFIL0vXeX9Q DXqC5sz64R4q3gQEIqiVt2g5UY1cQBIhgTm0Lwd1cYi02I1uXM+HxMNMIuzdy0dr8/Sm cPTZZE693PwchVkDCudDZbBsp/OCnsSh1Nhhb9LnpmQZ97HfQiphyh2/RnskgxEcaTNl QdCO81+I/sr+PMK+yyfPC6/DSkNvKA+jpTc43UGDAtuQfGiBbXDBGrqXlt4+Eu34mrSI 0I2W93d4/AkMQ4fWL/9sRv+tGNvYP5omip/dC7bgxF4bgpYzrOaw96+TuVa5vuOUMvAn jJSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032892; x=1781637692; 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=aEZChDC1OdtmKFkGf/mgdW+kDHfZFX5ELTDL9qf9qag=; b=fqrZ3W5uwiLe9mmr0bwjNbXp0FiQhhuQYE+htvWf2uS5pI/1tjesq4TPraBw3MQvc2 T3D2CGKdW2wUwj9hXGIp7UIL3qy1/MQMJ5Bzl1PEdfG9Wsjnwv/vkBm7d6ghM9gUnjEO PU5nSmQhV+MkFGDZ531nzD3x18ApVKVr9QKj6QGuCNaUcKdQbUpGzL3+mGRou5o3qSVj WeNyhczibhq1pCM0NsBQPhDXzAySEfhqoIropQtGlTTaVn0H3KSZTRZCPz7GRvtfptfC cqgc5MkQAUGm/kjbJjM7p375YR+9xcfsvNBnJshtZ6QxDYJakQFTrl44eAo0erRq4RKp aVww== X-Gm-Message-State: AOJu0Yz13jBhU2NdBPLg0tIdnAQqWhIETLUG3bawTahQ096Vhwo67zSu x1aIASX4VfiDmaknUS3P03a9QdOz+yvDRC/qzj1GBeQs/tpLNI4nVQecydhKkR5TFpucPpN7owK sD/ICwCA= X-Gm-Gg: Acq92OEMdhbZEF0531Ba1Dr1xqqNO+DakW8dWSUMDcm0IUIit1qKu0AlAB7BX1t3KF9 g6PLzCE+wsSDKfu05aLDIeDXI35ndDONVeE19PIIFnnlYEom/ix9yc64RVLRqJf6fza4WHE2Y1X aInI38sZMy7SH468oI/mClLeSDPn2uYp5jvtSDDZa0o7FKOPUJSV6Xy5NsNEoIlEKZg3A8skIsT bMJV8CoJ4V+GcWxH3UFYHMjlEsCtFWtGr2p40mo31UgWapuRvuGhMN0Yabh6yN+nlcinbz2pYbu MSJzKdVk8Tiv8xaZTvg27ZBRwcOh241cQE7W3Ad3fBLjbhZqpv/qVbKd4RIg33Iq8BTLlOX0F/k LQmb1L8F3HHfLd2y/Zwr6nRiOr27lqDJFAf21440yHZcSfCJ+VHPkogX7kVmvVZd2IVzAhZtAW6 0X0tP/48hLfHz4ap1FvWsnR/r8byCZYSvdghDk3V8= X-Received: by 2002:a17:90b:4b0b:b0:36b:a2cc:4857 with SMTP id 98e67ed59e1d1-370efdaca8fmr26729008a91.18.1781032891694; Tue, 09 Jun 2026 12:21:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 28/45] target/arm: Enable FEAT_SME_LUTv2 for -cpu max Date: Tue, 9 Jun 2026 12:20:52 -0700 Message-ID: <20260609192110.752384-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::102e; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102e.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: 1781033182604158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 3 files changed, 3 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 1c0c404b7c..06c14e82ea 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -222,6 +222,7 @@ abi_ulong get_elf_hwcap2(CPUState *cs) GET_FEATURE_ID(aa64_faminmax, ARM_HWCAP2_A64_FAMINMAX); GET_FEATURE_ID(aa64_fpmr, ARM_HWCAP2_A64_FPMR); GET_FEATURE_ID(aa64_lut, ARM_HWCAP2_A64_LUT); + GET_FEATURE_ID(aa64_sme2p1_lutv2, ARM_HWCAP2_A64_SME_LUTV2); GET_FEATURE_ID(aa64_f8cvt, ARM_HWCAP2_A64_F8CVT | ARM_HWCAP2_A64_F8E4M3 | ARM_HWCAP2_A64_F8E5M2); diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index b48dd01a2c..e466ab5b8a 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1389,6 +1389,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64SMFR0, F64F64, 1); /* FEAT_SME_F64F64 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, I16I64, 0xf); /* FEAT_SME_I16I64 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SMEVER, 2); /* FEAT_SME2p1 */ + t =3D FIELD_DP64(t, ID_AA64SMFR0, LUTv2, 1); /* FEAT_SME_LUTv2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, FA64, 1); /* FEAT_SME_FA64 */ SET_IDREG(isar, ID_AA64SMFR0, t); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 470f7d891e..41fa9bfca3 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -160,6 +160,7 @@ the following architecture extensions: - FEAT_SME_F16F16 (Non-widening half-precision FP16 arithmetic for SME2) - 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_SVE (Scalable Vector Extension) - FEAT_SVE_AES (Scalable Vector AES instructions) - FEAT_SVE_B16B16 (Non-widening BFloat16 arithmetic for SVE2) --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033465; cv=none; d=zohomail.com; s=zohoarc; b=how9jlmFtF1ytfnizHLfI/tOb7KY9PRfQcoL9btniZobZZ9GY7jhnVZosKJL9AfmV1WAEnvmk53myPu8KHzxmvQnQVuKA25bKP69L6krEHlTybJ2L21s1EM1lf18xlIZEWRUAS//uBFq9xNQLYnhSLwDvsn3tItvo22bwacnOgE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033465; 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=rxb79hxCzf4Kl+mKeq/AGRdkdZO3Qt35u5WPt1Nbzks=; b=d8l94MYQels/j65Zi75oyDAjlrDtWhIfJVj6YyoHb6HiiR9CMX/3kp1spyhqHxMSKIq8ZFY7yCgHSYcDuO44HdD+dHXIzk7aUgQ6KpYbjIpzqog4Kbhk2QBc3Y5MW8EE9lkV9PGEfyhpdoAOHj2buLSQM9A6zkXtr8tQ61UBIiA= 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 1781033465348557.8509473479321; Tue, 9 Jun 2026 12:31:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX27e-0002iY-Q4; Tue, 09 Jun 2026 15:28:31 -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 1wX22D-0003iQ-SO for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:23:00 -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 1wX21x-00047S-T0 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:39 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2bf1f074a12so61437845ad.0 for ; Tue, 09 Jun 2026 12:21:33 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032892; x=1781637692; 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=rxb79hxCzf4Kl+mKeq/AGRdkdZO3Qt35u5WPt1Nbzks=; b=twIMVPRGJHBEbTPxmj3DMbZH74I90hLn6LSPWF+DXT/1FtVW24uRlEPP2Yhx0yTRWw wOYGUpWvoH3E9QGGp33JhZbMoz+LXjKPauQD6qWSCZWBLVOagnHwEPT1vE8IodCoGqXL f+i7ajSunoucCvnBNZg12snaYwvW8rVwvDTA5GInIirWgc7LnLA+261RJwne0Vpl+AIC WqvYvKVrFsQwEVTwV1mzkCcdjjX6Gv7OWFpifBmALhuYLOn66xZQjIU2B3vGZucIGdXs alyrgL56GjZQ1SkeaPi9rn6bHBOAXwl/yCvzbXacrA5/JV1FrM+giC1G7iG30nbtiI4D RqPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032892; x=1781637692; 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=rxb79hxCzf4Kl+mKeq/AGRdkdZO3Qt35u5WPt1Nbzks=; b=ne0HO9iGD/14XH6vAtqvAfi43yyAVMqIj77m/KZg/1+ZtPbJfhtwKqpyhQr/MVMyr6 F3T8msNjMN4JO8InhK3XwPTanxXxWZ+vLY8h7enbSE0gRm/EH30Jlme1lcPzbp3AlxR6 W2CXsk6hScd8GYg26CKQuIXJKQ7fcPe2/Pi0yQYWNI6bskjjn830Ysa7PgqU/HT/OrRT 423+SN5NZIwgBIXJS8MxOOgPjYmzGLIR7W8PKga4lQoVzbaBuWEXREYAUeJT+JP+p33V QlGLKIK68tZbhk26WzZvyk4joD2ESwvm6dctCfgtKjU/+1/vh56zb5objLB9pj8NZCbT LpAQ== X-Gm-Message-State: AOJu0YwWqbe0hr8C/s5N+gWuIHoDWbVGHv75UFs0kI/8mNgLDDoYlLzK lfnAxJ+tWb+FcSFO2clLLnk5zXfxfPfeQGtB8X/9TAWWZpCQr3KylpilH2ZkSbalcD57UqFpPw9 HZp+2qfw= X-Gm-Gg: Acq92OGg45/Zy1jQZ7qj/Css+nEU0s7+LNfcvDYJIll+DSJ/UvoPsmI/3HsgkUQzZPC 2JOuKRl24CVm7J3qf6wz9gVdjAn3J/7HO+V9AlcmrlWGZYq9JqLKP351fNbXiaJoSymrZMhAPRx XKDvUpmIX9BwzyeRaLonCT7TsDOOwQhob3rao45Nn9hZcoqNfRhOVr0BbaanSARdY3cS3n+kmDh O0K0tXWKC1Y+uErPp3KZ5xQVkZ8J6jZHqMSHmIm6BaS96hHNXYMflW548FaXVgqYg79w8uOuxFb EOsBiVtvFw9m1MIDhFQpm5b2/kPUv0yCqPGXRfLTlLlivaw8yL9FnYt0KLhR43j3nS6qWjkVhrY 1kpXXpOp3AUVCTH+bU+YXTB7jkhpe5vgH3cAct2llFUquIookC4uhragRDzYTe5F5K/pUa+kgfW uJMp6g/T4HF+juK3/AJnu2Y882txbIFB+jHRqm6EU= X-Received: by 2002:a17:903:291:b0:2c0:c940:dc32 with SMTP id d9443c01a7336-2c1e821dde8mr257665365ad.16.1781032892406; Tue, 09 Jun 2026 12:21:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 29/45] target/arm: Implement FMLALB, FMLALT for AdvSIMD Date: Tue, 9 Jun 2026 12:20:53 -0700 Message-ID: <20260609192110.752384-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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=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: 1781033467510154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++ target/arm/tcg/helper-fp8-defs.h | 3 + target/arm/tcg/fp8_helper.c | 106 +++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 16 +++++ target/arm/tcg/a64.decode | 8 +++ 5 files changed, 138 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index b3ff825488..418abf33ab 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1600,6 +1600,11 @@ static inline bool isar_feature_aa64_f8cvt(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8CVT); } =20 +static inline bool isar_feature_aa64_f8fma(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8FMA); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 36ae977431..7aa8366d94 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -23,3 +23,6 @@ DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void,= ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sme2_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvtn_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) + +DEF_HELPER_FLAGS_5(gvec_fmla_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fmla_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index a39dc6f859..71d30aa33a 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -568,3 +568,109 @@ void HELPER(sme2_fcvtn_bs)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +typedef struct FP8MulContext { + float_status stat; + fp8_input_fn *fmt1; + fp8_input_fn *fmt2; + int scale; +} FP8MulContext; + +static FP8MulContext fp8_mul_start(CPUARMState *env, int scale_mask) +{ + uint64_t fpmr =3D env->vfp.fpmr; + + FP8MulContext ret =3D { + .stat =3D env->vfp.fp_status[FPST_A64], + .fmt1 =3D fp8_input_fmt[FIELD_EX64(fpmr, FPMR, F8S1)], + .fmt2 =3D fp8_input_fmt[FIELD_EX64(fpmr, FPMR, F8S2)], + .scale =3D -(FIELD_EX64(fpmr, FPMR, LSCALE) & scale_mask), + }; + + set_flush_to_zero(0, &ret.stat); + set_flush_inputs_to_zero(0, &ret.stat); + set_default_nan_mode(true, &ret.stat); + set_float_rounding_mode(FIELD_EX64(fpmr, FPMR, OSM) + ? float_round_nearest_even_max + : float_round_nearest_even, &ret.stat); + + /* + * FP8 multiplies don't update any of the FPSR exception flags, + * so we do not need an fp8_mul_finish() to propagate status + * changes back from ret.stat into env->vfp.fp_status[]. + */ + return ret; +} + +static FloatParts64 f8dot(uint64_t a, uint64_t b, int n, FP8MulContext *ct= x) +{ + /* + * Because of default_nan_mode, NaNs need no special handling. + * We'll simply get the default NaN out at the end of the sequence. + */ + FloatParts64 p0 =3D ctx->fmt1(a & 0xff, &ctx->stat); + FloatParts64 p1 =3D ctx->fmt2(b & 0xff, &ctx->stat); + FloatParts64 pr =3D parts64_mul(&p0, &p1, &ctx->stat); + + for (int i =3D 1; i < n; ++i) { + p0 =3D ctx->fmt1(extract64(a, i * 8, 8), &ctx->stat); + p1 =3D ctx->fmt2(extract64(b, i * 8, 8), &ctx->stat); + pr =3D parts64_muladd(&p0, &p1, &pr, 0, &ctx->stat); + } + return parts64_scalbn(&pr, ctx->scale, &ctx->stat); +} + +static float16 f8dotadd_h(uint64_t a, uint64_t b, int n, float16 c, + FP8MulContext *ctx) +{ + FloatParts64 p0 =3D f8dot(a, b, n, ctx); + FloatParts64 p1 =3D float16_unpack_canonical(c, &ctx->stat); + + p0 =3D parts64_addsub(&p0, &p1, &ctx->stat, false); + return float16_round_pack_canonical(&p0, &ctx->stat); +} + +void HELPER(gvec_fmla_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + bool high =3D extract32(desc, SIMD_DATA_SHIFT, 1); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float16 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + uint8_t e0 =3D n[H1(2 * i + high)]; + uint8_t e1 =3D m[H1(2 * i + high)]; + + d[H2(i)] =3D f8dotadd_h(e0, e1, 1, d[H2(i)], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmla_idx_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + bool idx_n =3D extract32(desc, SIMD_DATA_SHIFT, 1); + size_t idx_m =3D extract32(desc, SIMD_DATA_SHIFT + 2, 4); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float16 *d =3D vd; + size_t i =3D 0; + + do { + uint8_t e1 =3D m[2 * i + H1(idx_m)]; + do { + uint8_t e0 =3D n[H1(2 * i + idx_n)]; + d[H2(i)] =3D f8dotadd_h(e0, e1, 1, d[H2(i)], &ctx); + } while (++i % 8 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index d6466de03f..4abf75531f 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7467,6 +7467,22 @@ TRANS_FEAT(FMLSL_vi, aa64_fhm, do_fmlal_idx, a, true= , false) TRANS_FEAT(FMLAL2_vi, aa64_fhm, do_fmlal_idx, a, false, true) TRANS_FEAT(FMLSL2_vi, aa64_fhm, do_fmlal_idx, a, true, true) =20 +static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, 16, vec_full_reg_size(s), + a->idxn | (a->idxm << 2), fn); + } + return true; +} + +TRANS_FEAT(FMLAL_hb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) +TRANS_FEAT(FMLAL_hb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_i= dx_hb) + static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 2d06f14e1d..715d5f05d8 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -25,6 +25,7 @@ %esz_hsd 22:2 !function=3Dxor_2 %hl 11:1 21:1 %hlm 11:1 20:2 +%hlm4 11:1 19:3 =20 &r rn &rrr rd rn rm @@ -38,6 +39,7 @@ &rri_e rd rn imm esz &rrr_e rd rn rm esz &rrx_e rd rn rm idx esz +&rxx rd rn rm idxn idxm &rrrr_e rd rn rm ra esz &qrr_e q rd rn esz &qrri_e q rd rn imm esz @@ -1215,6 +1217,9 @@ FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ...= .. @qrrr_sd FCVTN_bh 0.00 1110 010 ..... 11110 1 ..... ..... @qrrr_h FCVTN_bs 0.00 1110 000 ..... 11110 1 ..... ..... @qrrr_h =20 +FMLAL_hb_v 0 idxn:1 00 1110 110 rm:5 11111 1 rn:5 rd:5 \ + &rxx idxm=3D0 + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h @@ -1333,6 +1338,9 @@ SQDMLAL_vi 0.00 1111 10 . ..... 0011 . 0 ..... .= .... @qrrx_s SQDMLSL_vi 0.00 1111 01 .. .... 0111 . 0 ..... ..... @qrrx_h SQDMLSL_vi 0.00 1111 10 . ..... 0111 . 0 ..... ..... @qrrx_s =20 +FMLAL_hb_vi 0 idxn:1 00 1111 11 ... rm:3 0000 . 0 rn:5 rd:5 \ + &rxx idxm=3D%hlm4 + # Floating-point conditional select =20 FCSEL 0001 1110 .. 1 rm:5 cond:4 11 rn:5 rd:5 esz=3D%esz_hsd --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033233; cv=none; d=zohomail.com; s=zohoarc; b=OYp4sbgr60QSHXic/HFBGL2z10roaSn4ZHf6dmt5690ixS9xB/iRTnVI3K/Ig8w670jVpc15B9YhVhMy3FFlkxNnPJaU9hy6L5zzyYA9lNMbOrt2XDNICdiwZAs73pMIV0Gka2qA+nOZMLDChkOXrec2p7PcI7U62gJyjirqlAQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033233; 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=N9oKYbnPufbrbmSGaoz/PENlfl8zm2sxYN6OzTnkZK0=; b=L5DxjviQEGSW1eF/FZ5CSOfan/tbZCKg+41wpcEPcm+LbG5zwNFfkay07tg4NIknyO8cNf+Pwl9Sccs/hdLC2wfUvltBUwSYdZRna0i65+dxkimI81IGaiK9rXoXm8uEcJeX/3BLbzIoQTNVTjZW7G0WJzTbHCaJntfptCPJLO0= 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 1781033233352743.4231087860453; Tue, 9 Jun 2026 12:27:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX26N-0000Xp-MR; Tue, 09 Jun 2026 15:27: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 1wX22B-0003gi-FH for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:54 -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 1wX220-000489-0z for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:39 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2c0c3315c5dso62663745ad.3 for ; Tue, 09 Jun 2026 12:21:35 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032894; x=1781637694; 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=N9oKYbnPufbrbmSGaoz/PENlfl8zm2sxYN6OzTnkZK0=; b=BfIR95sSR4QhSsMSQKtDaXBjOZwcJMFBadfWitX3ngyZx8fThhQuf5eZKEJJPMjXvu IXHHP57sEYiYGZKMT7sB7LWZKT/Lzv8R8wpSgc+TxswG9u5x6EG7FVhGwHP+YQpl+OuU ARaiSfs91/NS+WtS8ufnNzaB2HsYphBYVEt/zEImcABWRek8htpDYNj9ZuVcL1Rh9MJ+ iL7mTOYezsUC3jTT0a65LlO6L5vfvNalyfYjVnMURkUkvGkiAdWIWtM1n0oXCk8Ww0I4 eaKsVHKjitgk9nOXeJ3NJGYwniP2gRJjdCqtX5tQZRc9Q1l5tVXKAPSe4YHy6M4ksczm QHUw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032894; x=1781637694; 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=N9oKYbnPufbrbmSGaoz/PENlfl8zm2sxYN6OzTnkZK0=; b=XRbcx7hJO+F6TLEyTXFUAffGBiV4X3xi79m9nCErkwnvf6hgW/3pSa51PbYXG/lDBY 661oAi5KeYp9p98PChLjjY3I2GRws9g1GuCgQOeZt1kFqyEdzhtDtHJ+OLNZ8W+uBuma DuHPUVb7cLo0cefnAVKSHvc22N4mUyDKLuURy88eDbxsS7qNCHboX2KUe0qh7vCo4OPK XK3n9SfpnQ7MHTh0xgTsJ8selHblB2NDxmYWevDcRQElERCAkPAz8wpdWqqn8CokPEtT chqdxsBpBcp5IDM2PpxG8DAsm6JqCSM3Ckc/4EZlcpVKsWIAgd96Jf7bd1q3S7mY2cXE flKQ== X-Gm-Message-State: AOJu0Yxe+NyOgkWjL1Xgg0/Q15P/+EDSqb+yhvuyP89Sw+Q/m15zlkip v8dv/mdsVCsLoH8PMMpfChEB7ebbAgXBdQGLfC6Btc3x9bIbVy7LMTMwlYwlVJk6Y7sRULfWLca L5lq33Yw= X-Gm-Gg: Acq92OHdwuLLGxi1/uEC58GQPuhVILxIBCa26eJnBbVuvlh33c7J2VNRjLyVBZzHWFc PJvMK55862bOHQayYblCqjDKYqPN5Z7Oya1WTDjW71m1OfJO26f69TK23XibJqrZxIIfDci+YNL XYYC7saqzt/5hHhKwJZFi8aSJ+Nnpts8Iq1CRaZntlkXt6TJ0Mud9pOyOmdbcxTDroP5+hAYLZ5 f7TS7PzN9m18e3SQB7gcpLIuH3IX+lqj0SeY0mpSUDH9dKKkMkqGSpP7rBrKzqKVNCuRBZWzAWi rmsBOGvdQHDxhtIOS0KVkEs3bs7Ktd44xaSeM38Cb0YI9udcLTkRyBOauuXsZYuFwMq0yl5JWok VzIy5w36SgWaDbtDnm6e7k7yejnIzz4l8D01SVKlRepgaR8aRiSJ7nR6HrygJOH782++gSaw4Fm jbpaRBY0w4idt8WoVtpaZlZYMOS7ib6KUovSuSBa76FRRXVQN7pQ== X-Received: by 2002:a17:903:3c48:b0:2c0:eee2:fc40 with SMTP id d9443c01a7336-2c1e80cede0mr250127575ad.3.1781032894344; Tue, 09 Jun 2026 12:21:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 30/45] target/arm: Implement FMLALB, FMLALT (FP8 to FP16) for SVE Date: Tue, 9 Jun 2026 12:20:54 -0700 Message-ID: <20260609192110.752384-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033235815154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 33 +++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 7 +++++++ 3 files changed, 45 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 418abf33ab..5e9eb3405b 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1555,6 +1555,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_f8fma(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8FMA); +} + static inline bool isar_feature_aa64_sme_b16b16(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, B16B16); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 0e0bc4cbfe..453bae3a0e 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8355,3 +8355,36 @@ static bool trans_LUTI4_2h(DisasContext *s, arg_LUTI= 4_2h *a) } return true; } + +static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, gen_helper_gvec_3_ptr= *fn) +{ + bool fp8fma =3D dc_isar_feature(aa64_f8fma, s); + bool ssve_fp8fma =3D dc_isar_feature(aa64_ssve_f8fma, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8fma || (fp8fma && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8fma) { + s->is_nonstreaming =3D !ssve_fp8fma; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, vsz, vsz, + a->idxn | (a->idxm << 2), fn); + } + return true; +} + +TRANS(FMLAL_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) +TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_hb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index e2106fc7f5..71ec09393c 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -29,6 +29,7 @@ %imm9_16_10 16:s6 10:3 %size_23 23:2 %dtype_23_13 23:2 13:2 +%index4_19_10 19:2 10:2 %index3_22_19 22:1 19:2 %index3_22_17 22:1 17:2 %index3_22_12 22:2 12:1 @@ -73,6 +74,7 @@ &rri rd rn imm &rr_dbm rd rn dbm &rrri rd rn rm imm +&rxx rd rn rm idxn idxm &rri_esz rd rn imm esz &rrri_esz rd rn rm imm esz &rrr_esz rd rn rm esz @@ -1864,6 +1866,8 @@ BFMLALT_zzzw 01100100 11 1 ..... 10 0 00 1 ..... .= .... @rda_rn_rm_ex esz=3D2 BFMLSLB_zzzw 01100100 11 1 ..... 10 1 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFMLSLT_zzzw 01100100 11 1 ..... 10 1 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D2 =20 +FMLAL_hb 01100100 10 1 rm:5 100 idxn:1 10 rn:5 rd:5 &rxx idxm=3D0 + ### SVE2 floating-point dot-product FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 @@ -1880,6 +1884,9 @@ BFMLALT_zzxw 01100100 11 1 ..... 0100.1 ..... ....= . @rrxr_3a esz=3D2 BFMLSLB_zzxw 01100100 11 1 ..... 0110.0 ..... ..... @rrxr_3a esz=3D2 BFMLSLT_zzxw 01100100 11 1 ..... 0110.1 ..... ..... @rrxr_3a esz=3D2 =20 +FMLAL_idx_hb 01100100 idxn:1 01 .. rm:3 0101 .. rn:5 rd:5 \ + &rxx idxm=3D%index4_19_10 + ### SVE2 floating-point dot-product (indexed) =20 FDOT_zzxz 01100100 00 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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 1781033211328308.4386982894122; Tue, 9 Jun 2026 12:26:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX25w-0006xy-Te; Tue, 09 Jun 2026 15:26:40 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX21k-0003VF-9V for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:27 -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 1wX21d-00048K-F5 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:16 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-36ba285e98bso5902698a91.2 for ; Tue, 09 Jun 2026 12:21:36 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032895; x=1781637695; 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=Oj0mFT0BfJ5qm3S7QMBnGYfL7Q766yTkxoAbc5PzKI4=; b=elU/cwTcCJcMOYP40Isq4MmbTFgm5qI53jys+45CvD56VgOWvLVntMXhZFk3ZhJFD3 ftNghWIqSMrq/VueauZ0dzD6A/li8CcoR8VxEB9R3o7kdriDjOjgy61x9IjX0APvrW8t RmUk2+wYmJqDnY/ie9Ks+kn265I3wgGgeC/dI1E6DAtXoV8V/Hn4mnnWH1uPX9vppuIc wuPYC03w7jjMpDHR7ZOWpjDeCvtX8JhQDVd9RQyWszcXsPUhPgtwkr6d5OLCFt1JLkBR n1ir1Ia9I6H6ikJWuZKCd8sFzjIOAfxghC6Jv/yMGw5oSaCuXyF2Kt1/EKw107+G7/02 0VYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032895; x=1781637695; 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=Oj0mFT0BfJ5qm3S7QMBnGYfL7Q766yTkxoAbc5PzKI4=; b=QYDT/oXGTP8rb1iRSvkhZ61NCbH21lthhLzmUVhGQNrUSv6tJe7qChw60RDvLcAG3f 5nL22QdHOtj+mINZ3vcMd6kNh2t6Kocde84yf7CRDz/QVGVHe77fuh+/H2pqa4BGObpB aBwnzjyjRYnoa2Ub6KaBbTOyztwKjCvO2Vjv/8nfUg7KdUxzsAisFgXKbSqBX5rFQteB rVkw3ukh5FGRHZEdMU23NLY7O8CihiZ2kPffl0dnitBD28Kp4RQEG7zb2muVt/aeaSkA JP3K+1YxsqIqSiZ0/k4hLX76yCfGPZuNJ2ousRW8kmc8/jZnfhc97/3KKMcE3J6v1+9g pmlw== X-Gm-Message-State: AOJu0Yzt/T463JKEsysa3LdF7wJqbMMJ3gMKc+P2/WPAm/Xx8vLwc4yH 8UrOKoaOEsl/ifxo+r7SjbMki7B9gFCxMr9nohg07VN/CuNN2a2dw8cmYr9EAYsTPw6yf3SFQMi RsZPXHus= X-Gm-Gg: Acq92OF6TsUoPAwxC78AOvMB7u49VWCmoQIHhQkEKJISuUFHRi+MVJcTYeV6gJusr71 kkWHpbn++Gcz9xicb+P1VYpqr9aM0ygd6UZo/bX2Frp6TUi/4aQf5mEYzgb0c1eS01PRxMQc910 Cdo489iefyw0+6k5BDgmSbnU89RiGROrRLxjdrNZ0yRrrm0RNPMUgQBnC8RV6zMe+gYE2fkuL3I CKKXIS3/hv0X3MvWp6/8IvPN+GcuqKMKJz0p1TymCcOG2A6Jz+fFCUjh3xvAVuoA6vjrmgR1QHU Lwl9NCNhkxadmfH+sZ68nepCs2NzjKzBNiS4fSX7W1bWH/5pXFws7fDdy6Ry4CK/XsqlUSDmRDi KAhaKzJwzc4Kry6scgrT6GHTFR/UL7SUrgp98rv0kKKMiglPbjg9/OSISo72cCxy0HyKQaUttgi K9Sf/AdvB2ljanw+bX4GvUQGZJagTgqcBb1o9Mjdc= X-Received: by 2002:a17:903:41c7:b0:2c1:77cd:fb0b with SMTP id d9443c01a7336-2c1e85e04bbmr241969295ad.37.1781032895155; Tue, 09 Jun 2026 12:21:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 31/45] target/arm: Implement FMLALL{BB, BT, TB, TT} for AdvSIMD Date: Tue, 9 Jun 2026 12:20:55 -0700 Message-ID: <20260609192110.752384-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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=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: fail (Header signature does not verify) X-ZM-MESSAGEID: 1781033213649154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 3 ++ target/arm/tcg/fp8_helper.c | 55 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 3 ++ target/arm/tcg/a64.decode | 7 ++++ 4 files changed, 68 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 7aa8366d94..802a3b430e 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -26,3 +26,6 @@ DEF_HELPER_FLAGS_4(sme2_fcvtn_bs, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) =20 DEF_HELPER_FLAGS_5(gvec_fmla_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fmla_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fmla_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 71d30aa33a..ceeb96b9cc 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -630,6 +630,16 @@ static float16 f8dotadd_h(uint64_t a, uint64_t b, int = n, float16 c, return float16_round_pack_canonical(&p0, &ctx->stat); } =20 +static float32 f8dotadd_s(uint64_t a, uint64_t b, int n, float32 c, + FP8MulContext *ctx) +{ + FloatParts64 p0 =3D f8dot(a, b, n, ctx); + FloatParts64 p1 =3D float32_unpack_canonical(c, &ctx->stat); + + p0 =3D parts64_addsub(&p0, &p1, &ctx->stat, false); + return float32_round_pack_canonical(&p0, &ctx->stat); +} + void HELPER(gvec_fmla_hb)(void *vd, void *vn, void *vm, CPUARMState *env, uint32_t desc) { @@ -674,3 +684,48 @@ void HELPER(gvec_fmla_idx_hb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmla_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx =3D extract32(desc, SIMD_DATA_SHIFT, 2); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float32 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + uint8_t e0 =3D n[H1(4 * i + idx)]; + uint8_t e1 =3D m[H1(4 * i + idx)]; + + d[H4(i)] =3D f8dotadd_s(e0, e1, 1, d[H4(i)], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmla_idx_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx_n =3D extract32(desc, SIMD_DATA_SHIFT, 2); + size_t idx_m =3D extract32(desc, SIMD_DATA_SHIFT + 2, 4); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float32 *d =3D vd; + size_t i =3D 0; + + do { + uint8_t e1 =3D m[4 * i + H1(idx_m)]; + do { + uint8_t e0 =3D n[H1(4 * i + idx_n)]; + d[H4(i)] =3D f8dotadd_s(e0, e1, 1, d[H4(i)], &ctx); + } while (++i % 4 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 4abf75531f..b58a55895b 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7483,6 +7483,9 @@ static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, TRANS_FEAT(FMLAL_hb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) TRANS_FEAT(FMLAL_hb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_i= dx_hb) =20 +TRANS_FEAT(FMLALL_sb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_s= b) +TRANS_FEAT(FMLALL_sb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_= idx_sb) + static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 715d5f05d8..ee7391a13c 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1220,6 +1220,10 @@ FCVTN_bs 0.00 1110 000 ..... 11110 1 ..... ..= ... @qrrr_h FMLAL_hb_v 0 idxn:1 00 1110 110 rm:5 11111 1 rn:5 rd:5 \ &rxx idxm=3D0 =20 +%fmlall_idxn 30:1 22:1 +FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ + &rxx idxm=3D0 idxn=3D%fmlall_idxn + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h @@ -1341,6 +1345,9 @@ SQDMLSL_vi 0.00 1111 10 . ..... 0111 . 0 ..... .= .... @qrrx_s FMLAL_hb_vi 0 idxn:1 00 1111 11 ... rm:3 0000 . 0 rn:5 rd:5 \ &rxx idxm=3D%hlm4 =20 +FMLALL_sb_vi 0 . 10 1111 0 . ... rm:3 1000 . 0 rn:5 rd:5 \ + &rxx idxm=3D%hlm4 idxn=3D%fmlall_idxn + # Floating-point conditional select =20 FCSEL 0001 1110 .. 1 rm:5 cond:4 11 rn:5 rd:5 esz=3D%esz_hsd --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033421; cv=none; d=zohomail.com; s=zohoarc; b=QT+SJBAw1SHWyqubfrlcF06AWCvsCxHMeASq+Za6oxThhOZGlb1sXsmJ2ZS2Z8p28QCp/m9mwcSCgI4YLzqtGih1n+TkXrDOe0SEQI747dVcx16uCm+C4c+LfE+0x8n5aIHzMr4ojna3gYkhdsarV+4aDe8R5TsdzGWZUklJVPs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033421; 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=6oDrRjtg5nfZ5vjh8T15V/mP3P6ZgZeyczIb6aAmmMA=; b=F43kaPfJXNHFjidGNWyQfHrrPAE0X3kU/ro4IQFx/KymbwMVs+gOK1lsyowfJOtBdn2keV69nZhJPIrPeK3Jl4vg9GGK1Xw5NRSneshAF8GCpzDtyt8sLaIXEwHXeXqSalz2g+JVoWytTkg6QibKtb3401OxJcQePLjXyslhuFw= 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 1781033421577489.318459991832; Tue, 9 Jun 2026 12:30:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX28s-00063A-8O; Tue, 09 Jun 2026 15:29:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX22I-0003kj-G8 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:23:05 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX221-00048S-L8 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:48 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-36b8e1760ccso3754499a91.0 for ; Tue, 09 Jun 2026 12:21:37 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032896; x=1781637696; 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=6oDrRjtg5nfZ5vjh8T15V/mP3P6ZgZeyczIb6aAmmMA=; b=UY0fxOCxvUCHCappii3i6dVTuBjs8ZDBloUfitr0o9TQQFY0eHk5yI7jvg9W63MF+Z G5cczdIYd5xRYMMFx70ciGyRLkIPkobiCfu5HwkQl+ZNe3+JQqzert92TIUvMAZFLS29 93gjkoi+0Nteise+0eRQAGrfSEL8Wce/b90471CnaAUz0Bh/J50SrqntjSCj7jyppcVJ XIX63hSxy8RN6wkm7emkZW8MSjrEwW0YIa1/S8xUgYlp4aCKzFyn5m9l4AA2rEhPZg9e Mk0VAY8DFhq3f7WcKb8yg2V2V8M0ltf1HfloWInzIJSr0Awks9NgZavDvivrXGh/wAI9 wDNw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032896; x=1781637696; 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=6oDrRjtg5nfZ5vjh8T15V/mP3P6ZgZeyczIb6aAmmMA=; b=nGQnARXpSQn3UZ3ZkM/DxvF1lcrmcai8tbq3hRPcXn8SpYbyXhN5tlIDMs9Qxb1e8t rurfVAJERvbs++PgpJsm+vt68SPwPIK5FpEiR72LMKNvwhMMSvwjUhL7qbMfmw9L4wW1 +lp4s8MK0ctSl8dNGKsCC+QBLWEmOdvlegS6Cm3id7Z6Z61X3lABEBTZ6iXmCkuD/Fdb rOyUC+w4E5nvDeKo3tYktXMdbT5zClmdT8E/k6WSZ3mJXGZ00DuacDggMqEN/mR/RqWv Xl3ynIVSlIjSo6pg4rJsA1AN8roXSBsC5ixQK55BPQQJVFzWr6AX1NzI5woWgvJaJ0Ra LGlQ== X-Gm-Message-State: AOJu0YwgeST8g6Hy5nwn8sU7E6XMxUhUP+AKyka0RMzFL15oDg4rc3cu KNZQr5NSE6TH/MFuaKrRQQMkzUuedXcmK61scFw8KpKhF/DebrP9IliiAaHEjUXptCbQpLcRbfJ 5S56iKIE= X-Gm-Gg: Acq92OE0fNTrUM91H80gSq8pg4YIXlu7dM1Tc+KuW5Iu8q84cSdM1qVAJCjDy+N2E2n mwjk+dSyG2lcEffuNkE0Y4NDc2H1aNP1YW++SOk9rftGsZlyxNA33sbBE8UrIM7C/0kItSmRtTo Q/JHy8aSDzqSWRON0P1Y6uayApTWme0u0VPquTlZWCxNkrH0akfoN9/BZ0YCkUF7bXIUX6BC2Si uL/8KReoFFnq02Uy+HAbjsxafD/AHHi7kDnL3vww/pyJYRjZe2aQun131DJoe+tvvg4HlCquU6u Rnx5xP9dso05EQayXX8yP5lH9m5NGHbkXXiZ0wQKmUkWndWF2YfP7Sse2YsNfMaFLNriNFD+k0r Xj5iWIRG0hXdsNDDePGrPgy1WLaKC6a41Qk3NNM4T8JymYlnqFYPLI71/gb6zDQ/i4Q4JiglWB4 E+lnwdUzACbOBAa5MNXlH+hPvBVqDzZYBq2oQI8VM= X-Received: by 2002:a17:90b:548e:b0:366:10f1:3d91 with SMTP id 98e67ed59e1d1-370ee33d323mr24806792a91.1.1781032896021; Tue, 09 Jun 2026 12:21:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 32/45] target/arm: Implement FMLALL{BB,BT,TB,TT} for SVE Date: Tue, 9 Jun 2026 12:20:56 -0700 Message-ID: <20260609192110.752384-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.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: 1781033422909154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 3 +++ target/arm/tcg/sve.decode | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 453bae3a0e..9f207a32b9 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8388,3 +8388,6 @@ static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, = gen_helper_gvec_3_ptr *fn) =20 TRANS(FMLAL_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_hb) + +TRANS(FMLALL_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_sb) +TRANS(FMLALL_idx_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_sb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 71ec09393c..06bbd7fa63 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1868,6 +1868,8 @@ BFMLSLT_zzzw 01100100 11 1 ..... 10 1 00 1 ..... .= .... @rda_rn_rm_ex esz=3D2 =20 FMLAL_hb 01100100 10 1 rm:5 100 idxn:1 10 rn:5 rd:5 &rxx idxm=3D0 =20 +FMLALL_sb 01100100 00 1 rm:5 10 idxn:2 10 rn:5 rd:5 &rxx idxm=3D0 + ### SVE2 floating-point dot-product FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 @@ -1887,6 +1889,9 @@ BFMLSLT_zzxw 01100100 11 1 ..... 0110.1 ..... ....= . @rrxr_3a esz=3D2 FMLAL_idx_hb 01100100 idxn:1 01 .. rm:3 0101 .. rn:5 rd:5 \ &rxx idxm=3D%index4_19_10 =20 +FMLALL_idx_sb 01100100 idxn:2 1 .. rm:3 1100 .. rn:5 rd:5 \ + &rxx idxm=3D%index4_19_10 + ### SVE2 floating-point dot-product (indexed) =20 FDOT_zzxz 01100100 00 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033077; cv=none; d=zohomail.com; s=zohoarc; b=WF66t9sfEDszvInrDz4XnNlMcjGNHwAuXwesg0Avn4gvQ0ts5TFwZnXoRBwza+QEiUsGq4rxD7HvOXDf4h1l+qpnkaoUAXA9wH51gcyKK+g0GrTnMs5lqLmlO1NaAQLSyGRVYlZY9Ic5TF0NgR1tP3C2ZZSsNhFW9hahQjw2g1E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033077; 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=stDW1+UpQH6kvoFVRfp3PC4PNJwkI69mgMy4PuRh8Bk=; b=CmiRW4Mb6JBmRZG7/xkPsuBh3HQ2+jrtHcXt6YWlOwqpudpTuskZQHLRHRCvA24jwSyX2iHLTm+Pd/wTUgTjJxKQcz5QOlx7u2nWc05ZcfODVm293TYuAPZy664pIlC74jIrtHSxHCp+NXk2zoUSuIJuCG30b+YWAGTS1GxYgiY= 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 1781033077703306.7533034965394; Tue, 9 Jun 2026 12:24:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX23k-0004pd-U0; Tue, 09 Jun 2026 15:24:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX21d-0003Ok-P1 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:16 -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 1wX21Z-00048s-Tu for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:12 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2c132ac5ec2so58671405ad.1 for ; Tue, 09 Jun 2026 12:21:38 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032897; x=1781637697; 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=stDW1+UpQH6kvoFVRfp3PC4PNJwkI69mgMy4PuRh8Bk=; b=MbwB+IMndPHxPdoxxsYjxP2CtocfJwFz1igIP0TKFjV+AmYioQ3GHhBJlhj05WQ5ob dsyT5R0ow50wzhDHBJusPyyE/zo1cDOLyj3lgmcCIIq0F83Lxrqnerf+wPnxbbsKwUwX qoOSFKOm72bAM4oA91myt0EQ7eKzMtzuwuvuPRrKpxBkzSJuI5tAV8fS2oDpNUY/CBLS 9ynTXdWeS/dl51eVdoIv9qloX753VA5eGVAtSmC2Ar0KaCDlTornth2xLxZfoIH9aaDN h8r4TNqmZObVUAGYIV6S3j8vEkLSs1u9t0axM6efdmQpAEDaykB1LVboe09sUd+Ota9j LAhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032897; x=1781637697; 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=stDW1+UpQH6kvoFVRfp3PC4PNJwkI69mgMy4PuRh8Bk=; b=paymdzUNTxrKALxuRlkcMsk0UDacXmE86RsWuQohL61NqCIjJs/8KDXiQhgux4jFKi U1b5lPFo9DtTbWt6j2/Vci1+rjD5DThHQxoyO5v7J/V95/7Nx/Mtz7MUSG3Zu3h2Rivg NVZpbgoK55zm9NbOlv4gqv8CDrd/RlvCzGFSsFuVcCq0LG+M0y8GxfBCs2Dqw0QCin0u SsU9LTuBMEW8UFdoaDZQ2pEdEDoD6PpuvkwMreXn46HuhNo4PomkpxjnOwViJ0+1l0V+ BY0AouXtEXMKx5yTOA7xyAeZcK1K5LasrHYP+U/2i6PB9ocfUDnAoEOq3+5PMWOnzV2a c6Bg== X-Gm-Message-State: AOJu0YxEek53iOy6erlUfvZKlEJ8shA4R1RZMiWyyq/SxYZX73Kpe1Ta gJ6dV/EZoQUs2t08X/yiKaJ3tzktHRmOJl05NMd0CeclAAQ7vfT6ZDvfMAstMquFCisrMAhJloa QkYCWLPo= X-Gm-Gg: Acq92OHqwSlM1AiVcFysGhqz5UttzqsMFfhFb4dKnVO28IEocg0wiJBPyUnwHzNznRV qsdCLtrb0JWnPdj6tjJBsdjHKyQKKwycB2kcCn6u6Mo0b+xg2Q7j4SB47sMphBdfTRdHFZ8S5yN 5GsZ4c0KMBX/udxYg0ong9D2jXIM7RMBoKg8Cfky4AGdVN2ClckhDPqBzXv9baeBsn8xk+ySKFL YcUIMiwAOxcZcpr7Y7G8z1c6S9R5sVZLTD/RsgfYeqjqPGP/6n/gD/ZPyIpXpp+QrX0gOSKxAH4 h3WUIZlVfH+LW4cK0VbbwiAxgK+yveUEmuHQVK9rJcmd9eiYMuGnFU9k7zCFp2loBqdI3ERjsrA 3h376RKBlkWC2efkcCwIYQKF0WC/72y68FZFEbuSu0wzEpGaIzC8WUkM0b+QrKlwm73qjiZ5z9S UDju4gAVnwYFYl5+bsQqIgl1Vdw42JiAbQ9Qc443Q= X-Received: by 2002:a17:902:e5ce:b0:2bd:5ab:af95 with SMTP id d9443c01a7336-2c1e77d145fmr243383315ad.0.1781032896803; Tue, 09 Jun 2026 12:21:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 33/45] target/arm: Enable FEAT_FP8FMA, FEAT_SSVE_FP8FMA for -cpu max Date: Tue, 9 Jun 2026 12:20:57 -0700 Message-ID: <20260609192110.752384-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033078130158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 2 ++ target/arm/tcg/cpu64.c | 2 ++ docs/system/arm/emulation.rst | 2 ++ 3 files changed, 6 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 06c14e82ea..a82d65a681 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -226,6 +226,8 @@ abi_ulong get_elf_hwcap2(CPUState *cs) GET_FEATURE_ID(aa64_f8cvt, ARM_HWCAP2_A64_F8CVT | ARM_HWCAP2_A64_F8E4M3 | ARM_HWCAP2_A64_F8E5M2); + GET_FEATURE_ID(aa64_f8fma, ARM_HWCAP2_A64_F8FMA); + GET_FEATURE_ID(aa64_ssve_f8fma, ARM_HWCAP2_A64_SME_SF8FMA); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index e466ab5b8a..6ad841c51b 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, SF8FMA, 1); /* FEAT_SSVE_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, F32F32, 1); /* FEAT_SME */ t =3D FIELD_DP64(t, ID_AA64SMFR0, BI32I32, 1); /* FEAT_SME2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, B16F32, 1); /* FEAT_SME */ @@ -1396,6 +1397,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ SET_IDREG(isar, ID_AA64FPFR0, t); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 41fa9bfca3..78d1938656 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -76,6 +76,7 @@ the following architecture extensions: - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) - FEAT_FP8 (FP8 convert instructions) +- FEAT_FP8FMA (FP8 multiply-accumulate to half-precision and single-precis= ion instructions) - FEAT_FPAC (Faulting on AUT* instructions) - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) - FEAT_FPACC_SPEC (Speculative behavior of combined pointer authentication= instructions) @@ -161,6 +162,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_FP8FMA (SVE2 FP8 multiply-accumulate to half-precision and sin= gle-precision instructions in Streaming SVE mode) - FEAT_SVE (Scalable Vector Extension) - FEAT_SVE_AES (Scalable Vector AES instructions) - FEAT_SVE_B16B16 (Non-widening BFloat16 arithmetic for SVE2) --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033212; cv=none; d=zohomail.com; s=zohoarc; b=n3ebIo5DLsFU+j7rel/oU2xfOceenps8UjrQqKNSZM/jme1PFqQK8siyeKBDW7ZF13usEGZP3C9PaUwTJEVnIuK4FWmgYue7h6ktaLRhHCen11M4HngL2U2fCOwWbuDphQv5sJyg5IUzVLhdmc5pzSkbPRaicD42I82URHRyiZ0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033212; 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=8pwLFcnZ7d3fCEHvFHXc27y8yTNSsxyZLMTlEOY4XGE=; b=PXE4mwHL4OwZvQob/UjYUXYfq9F37PLsgqG//EEN3mrFQsbz0J8wA/IVodLtbV8aJ2LXzIWfWtDKfbvthLdmRmEs60X/WoIn/EZLAH4CpNORv9oNXs5e0lZngRGz/ceszXDqydMbELjmN18/BxruhYvaT6rjCHNRN+DuQSX9vgE= 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 1781033212338781.4407823762674; Tue, 9 Jun 2026 12:26:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX25T-0006D3-FC; Tue, 09 Jun 2026 15:26: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 1wX21k-0003VM-Hv for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:26 -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 1wX21e-00049F-8F for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:19 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2c0c1e0b0faso41207275ad.0 for ; Tue, 09 Jun 2026 12:21:38 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032898; x=1781637698; 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=8pwLFcnZ7d3fCEHvFHXc27y8yTNSsxyZLMTlEOY4XGE=; b=x/rDiE8OxYtaOSuBYrgId85ZJEjF5qEB1kha+eWcJLKV9feA53rm8C9wY2cqWT+pPB lNHw/3bU6YRcUgdVW6MQ+Ad1nbwOaLnSF04GROVz5Xg2EvQPzXcRycDMT+PPREIoKGt/ AqFarwiuLWOLh/NS+/Un3lFZgXK7MHS3UNAaPcFf3jGxwTyYV1KJlSwLwnnLz/mhuJpe HjHyz9f3ibNiUvfdeQ7msMcAqnP28bDCapGV2RwPVaCWG0Zx4nnI0vDnjkc8zAXmJuvm LsabNQlmT7xz0qTVFP4vTmuaCbwqlrRlM2PWHZg8e/2F1hy1jT0v8Mvb/N0oJpvLZZ0b kgcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032898; x=1781637698; 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=8pwLFcnZ7d3fCEHvFHXc27y8yTNSsxyZLMTlEOY4XGE=; b=LlWBLEuGATpCwZrBMo7fA9zLCNfddYIrJQGwt5vp5rf/9qHyrFbLW73BlakqvwpXUd nv8wHFyXUXkmOZPwvfDLBdjg4trTuI4IM7ChDGAk6DhhocmBs0wc/6ETTidK8zEP9N9z VCsD5bFWOM3SqM08M/l7Dm+jxpL+V4qKKX15oAGOArpyqBe6eczo2cJtTTzoxHWneAuV 7KHoXhZU+uBEQjJE/NkVm6NtQXIN4KpV1LGZiHn9B2/gZOhn3AWcBvifQVjoaKyRYjAE hcCQGY1yjjJ2CB6zai57VL7nUT8Ty+D8LYv2GJEWuYyIzV3SJKkg/I69hdOijunBnBFl WqNw== X-Gm-Message-State: AOJu0YyLj0sclLPvc5ObOomtkKnb981PQC260n0zVfnLg1zR0KqUfGyW sySTLgsx5tB3ZFV3WlvNc6oycmwUoxkFJ71yTlYHOA+szrN7SSS2H8Ef1iZ92hsmVblqDN122D/ tylwMKfY= X-Gm-Gg: Acq92OEA4FGeAvjjgBCXPP8oX9kn1H0xZ/HYnyv+/4jG+7Yul3Ia/XkofL/y6+MMmiZ cJZ4RaZkrw5XWEMhIEiqbopxrmwvTPyL1bInqERZyzWkVYpwRJ6A67MFxXQujTfNY68cyfx1ikU TP5OzvZjTK6jn0Gl0bDwkV23k1n5FOMOd1tq1NAT0zJrsT1Bia/nq77kOd+IUrKAEINrf9ed41q A6qjWblBBaehFDvvSpk6kDMTqp2X7CN0BDlzXueNB+tJPTd9lopU6xLpOYiNfIOB0x93UGeBSdM awCAwTTtL2cJ/qLFpYRykRKlA2MuFlxlx5122EHhbrhssoVHQdg3u2/6SFWEuelcrLDpXgvLvEA gBm6hrWWxXl91Gj0N06PLrmWNEytsz3pzqVkDOF5KoqTK/e/985pKMDXTo81j4eihPhYT4BIxvU 97zvnWkmg51fTk5maFl5x/xiaoTUddfITou0kSvHs= X-Received: by 2002:a17:902:ea09:b0:2bc:8f9a:3642 with SMTP id d9443c01a7336-2c1e7e6eee0mr242104835ad.16.1781032897681; Tue, 09 Jun 2026 12:21:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 34/45] target/arm: Implement FDOT (FP8 to FP32) for AdvSIMD Date: Tue, 9 Jun 2026 12:20:58 -0700 Message-ID: <20260609192110.752384-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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=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: 1781033226369154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-fp8-defs.h | 3 +++ target/arm/tcg/fp8_helper.c | 39 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 30 ++++++++++++++++++++++++ target/arm/tcg/a64.decode | 4 ++++ 5 files changed, 81 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 5e9eb3405b..4342a2461e 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1610,6 +1610,11 @@ static inline bool isar_feature_aa64_f8fma(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8FMA); } =20 +static inline bool isar_feature_aa64_f8dp4(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP4); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 802a3b430e..ee6f2e9236 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -29,3 +29,6 @@ DEF_HELPER_FLAGS_5(gvec_fmla_idx_hb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_5(gvec_fmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fmla_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fdot_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fdot_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index ceeb96b9cc..f54acb03f3 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -729,3 +729,42 @@ void HELPER(gvec_fmla_idx_sb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fdot_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float32 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + d[i] =3D f8dotadd_s(n[i], m[i], 4, d[i], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fdot_idx_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx =3D simd_data(desc); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float32 *d =3D vd; + size_t i =3D 0; + + do { + uint32_t e1 =3D m[i + H4(idx)]; + do { + d[i] =3D f8dotadd_s(n[i], e1, 4, d[i], &ctx); + } while (++i % 4 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index b58a55895b..960de1aa86 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7486,6 +7486,36 @@ TRANS_FEAT(FMLAL_hb_vi, aa64_f8fma, do_fmla_fp8, a, = gen_helper_gvec_fmla_idx_hb) TRANS_FEAT(FMLALL_sb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_s= b) TRANS_FEAT(FMLALL_sb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_= idx_sb) =20 +static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, a->q ? 16 : 8, vec_full_reg_size(s), + 0, fn); + } + return true; +} + +TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) + +static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, a->q ? 16 : 8, vec_full_reg_size(s), + a->idx, fn); + } + return true; +} + +TRANS_FEAT(FDOT_sb_vi, aa64_f8dp4, do_f8dot_idx, a, gen_helper_gvec_fdot_i= dx_sb) + static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index ee7391a13c..08c493c11e 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1224,6 +1224,8 @@ FMLAL_hb_v 0 idxn:1 00 1110 110 rm:5 11111 1 rn:= 5 rd:5 \ FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ &rxx idxm=3D0 idxn=3D%fmlall_idxn =20 +FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ..... @qrrr_s + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h @@ -1348,6 +1350,8 @@ FMLAL_hb_vi 0 idxn:1 00 1111 11 ... rm:3 0000 . 0= rn:5 rd:5 \ FMLALL_sb_vi 0 . 10 1111 0 . ... rm:3 1000 . 0 rn:5 rd:5 \ &rxx idxm=3D%hlm4 idxn=3D%fmlall_idxn =20 +FDOT_sb_vi 0.00 1111 00 . ..... 0000 . 0 ..... ..... @qrrx_s + # Floating-point conditional select =20 FCSEL 0001 1110 .. 1 rm:5 cond:4 11 rn:5 rd:5 esz=3D%esz_hsd --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033063; cv=none; d=zohomail.com; s=zohoarc; b=nBhruXJiT0csjZiEB3U5bqAkvohF/gwUJKqNTfUvKnOOG+TzA+0+oGLaYEqqHsOkq3PqxCQ9Wiyurg0gDXwFqmFOA8KnATCuBkfjKjt36OeyvjxHCYGZ0jS5SPU1ykIXkk0fleUEZ+Yrn6vcyG+DvRwgINqCPen0m1RKMRhdEaE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033063; 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=3X6cHTMEhKqvTK1riJnePZp1c9cIoZy4I30BOx01ie8=; b=BBQegWnsj2oxMn87+9eOGSLUROEo8R/vIyE59dMJaDTt9PT7ddAlmEHll2XFoiMN6Jzr+kmubtS5UMpSJ2ppnfaxrHj8nkKRG6Z/k5viFHazybHQHQlJ/eAU4Z8mXen0q17xJGFAcJmjRYD68vxGwWmhR0my3hJdw6lsmvMFohY= 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 1781033063351853.9471268173381; Tue, 9 Jun 2026 12:24:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX23I-0004Dq-K4; Tue, 09 Jun 2026 15:24: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 1wX21R-0003H7-4E for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:11 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21C-00049T-7T for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:21:51 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-c8585c51f1fso2867197a12.1 for ; Tue, 09 Jun 2026 12:21:39 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032899; x=1781637699; 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=3X6cHTMEhKqvTK1riJnePZp1c9cIoZy4I30BOx01ie8=; b=j0RswhS4GCIslUsnpADDWpN9HyBgUUrMeOYs5YemXnHdQUjly/qWRvbr2CFdxhQ8iQ VH4y07VnlIFt+EKdJQPWP2LcQGr7O4Ac73jsdAuNSrVBzSu3JZ34Yi/G9BmKELUQwGzj 0A4d4t3mpGA0ahuTUj6gBytc49CJz/FQyiMvbgx57ynof1fducrt+y5FHq067ULSDmTs x6FpiaTYnl3fDN9+YW15tRIq59LdcSOrrA12ovO6nlHbQieaP/cXLN7MerAcSXjKyxgz CSygusGHEJmTwuEw7B1ClCqoOZ308UgyBs+GnO927x8mZzOohqqiqN3BbiOjrmRd7/2V SpUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032899; x=1781637699; 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=3X6cHTMEhKqvTK1riJnePZp1c9cIoZy4I30BOx01ie8=; b=ZZv60fGxQyhucUTdSZZexrThOmC/q3gkCzqFDNCZKc8xcDAEJp7vTw/33DbsmItewo OyKfF7LUvVEOpqtc1m7RaakEA1tnqGCf3mDx7YVZxVDg7brdgg67S5CjaFFT0bry7aX/ rWd4oFnLldUYe7XVmDCWP68hc09uG1FJNipq/S1Wnk3xC1ERlOHkesxz2u6vFDo+Z4qi rD+OWUtQjHSLaRdEjMdBpiTD1edpBL649Zd/2qJyJsHpQxUTPLcZNjWUa1zN7SmSUekl 9mx+/hFpeVdw4CDnr+WZUqiSvce+eSKKT8/522HwxxZS5xus7iMklMQl6UQkLThzZ6dE N55w== X-Gm-Message-State: AOJu0Yy9DmdSI94twTLKsI2wKw5aT7p3QkZ8tSB0cp1kvx4zeO04W+8X Yj+uDRP6uqlde5lHUs1DwPzkxV3n8+YLclEataPwnvLBqDkG3ZoZkrEWL+BRgFvPse9KZzEJ2pj khpoLiBk= X-Gm-Gg: Acq92OG9zxuHH+TFTWcMUSgDZcVhHRj7dAjYYMmp2i1D5HmR2LkxSUe3azfOVfaqVLo sHJ86mRiAhuk+F8AsQT+sFxEqz2BrEP/SXdgKb4nDkcC44Ghuur+5s7Sp2pDLQbc23h4vaj1QJ6 ozlHEqFYLnTd5jN9EYSHYmBSKmMPrY3MOgtSHMEYPHVNuchc0F6xqhwBLRGxFPC39VohRh97j2A PQ9yaUEu4G9MWg5Npdv0CeDkvOkp60HQjnf9P162/2F+1UDdKbZOII2OQzOd1oc9ujPNaBAfHC+ rIfgBmVodQ8toAJ3brHvrqENSqAlm140oRiqj/ft2WiUlfY17Ph3n1o9wQ43oGidPaP9/e1C2y3 WhVlbVbVjuIfyaJOimfy9uAazq01nzo+DoSJR1jbu7yWqNsG6PRk0UnSGifMfLlI+/K2J4/WMe0 09JEHPgTN7STqkDXSPzfEkNYBEADloGtF/UKZkQIiOz7L4pLnUCw== X-Received: by 2002:a17:903:acf:b0:2b0:badc:c9cf with SMTP id d9443c01a7336-2c1ec551c58mr183633555ad.13.1781032898510; Tue, 09 Jun 2026 12:21:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 35/45] target/arm: Implement FDOT (FP8 to FP32) for SVE Date: Tue, 9 Jun 2026 12:20:59 -0700 Message-ID: <20260609192110.752384-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.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: 1781033063983158501 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 35 ++++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 4 ++++ 3 files changed, 44 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 4342a2461e..fbf4decd74 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1560,6 +1560,11 @@ static inline bool isar_feature_aa64_ssve_f8fma(cons= t ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8FMA); } =20 +static inline bool isar_feature_aa64_ssve_f8dp4(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8DP4); +} + static inline bool isar_feature_aa64_sme_b16b16(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, B16B16); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 9f207a32b9..582471b380 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8391,3 +8391,38 @@ TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_= fmla_idx_hb) =20 TRANS(FMLALL_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_sb) TRANS(FMLALL_idx_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_sb) + +static bool do_f8dp4(DisasContext *s, gen_helper_gvec_3_ptr *fn, + int rd, int rn, int rm, int index) +{ + bool fp8dp4 =3D dc_isar_feature(aa64_f8dp4, s); + bool ssve_fp8dp4 =3D dc_isar_feature(aa64_ssve_f8dp4, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8dp4 || (fp8dp4 && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8dp4) { + s->is_nonstreaming =3D !ssve_fp8dp4; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), + tcg_env, vsz, vsz, + index, fn); + } + return true; +} + +TRANS(FDOT_sb, do_f8dp4, gen_helper_gvec_fdot_sb, a->rd, a->rn, a->rm, 0) +TRANS(FDOT_idx_sb, do_f8dp4, gen_helper_gvec_fdot_idx_sb, + a->rd, a->rn, a->rm, a->index) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 06bbd7fa63..c49e992f10 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1874,6 +1874,8 @@ FMLALL_sb 01100100 00 1 rm:5 10 idxn:2 10 rn:5= rd:5 &rxx idxm=3D0 FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 =20 +FDOT_sb 01100100 01 1 ..... 10 0 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D2 + ### SVE2 floating-point multiply-add long (indexed) =20 FMLALB_zzxw 01100100 10 1 ..... 0100.0 ..... ..... @rrxr_3a esz=3D2 @@ -1897,6 +1899,8 @@ FMLALL_idx_sb 01100100 idxn:2 1 .. rm:3 1100 .. rn= :5 rd:5 \ FDOT_zzxz 01100100 00 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 BFDOT_zzxz 01100100 01 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 =20 +FDOT_idx_sb 01100100 01 1 ..... 010001 ..... ..... @rrxr_2 esz=3D2 + ### SVE broadcast predicate element =20 &psel esz pd pn pm rv imm --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033487; cv=none; d=zohomail.com; s=zohoarc; b=H/8T1ctZJmwfrCxOb9AYL68SuhP4kd03FQJbUxoUJU7B3cq98USiB2Fy8tsO0Xh1quPbrCpd1zfafdQ2hxEf8/rhppnaPwtz4kFLuvK4+y6ZacmTFvU/FATLoOrYrd1inkBymHZ7xyA4Zo96/yUo4pi+I6x/85psvxjsn3J9rR0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033487; 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=tJfpy+xJLZOiImz54Y7mNvfbbMCkdR2h/mEqIv4LlnM=; b=EDYREEytK6fJjIlVuAaWngUISjxJMmpBgx/XBu3leKBhxLYnLlOxQm8bD/YAQEw9qjzQcDNdwnZ8YQ9A8quSmq0U9VlBZvPXdFO1vY6MPBd+y1YoQhmWjyhhXhVg2YWyYdD/w3RlNWJhx346+HZEGRrsZoHiHMhh+g1bti06kmw= 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 1781033487678692.1021441417486; Tue, 9 Jun 2026 12:31:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX26T-0001F7-PI; Tue, 09 Jun 2026 15:27: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 1wX22I-0003kh-FS for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:23:05 -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 1wX224-0004AL-MA for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:48 -0400 Received: by mail-pl1-x62b.google.com with SMTP id d9443c01a7336-2c27fc587ebso11608825ad.0 for ; Tue, 09 Jun 2026 12:21:40 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032899; x=1781637699; 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=tJfpy+xJLZOiImz54Y7mNvfbbMCkdR2h/mEqIv4LlnM=; b=Y19brQtxTrKpA36Fs2B7X98iAyiFPuzIvtZR1gtOyKns9FtgSUZ+1l7YUBgYzLW92N g0TEAP56Uw3gl6hgimcN23TCDQXP2xPGXRf9FrAGFfN4H/hSDUcir/x6oyKCAy9Fh1EO SEqxJSuDTZ3LSjtiy5Rf9uI5zCTQ+4aBB/O0wGg1QXXWYbBByx3+p4YbY4eQtcr/Bnkn bBRTFBTWa9fX3KWjuLlQ8qEP5boY4FVqUM4txNvnosNckfIv3Xd3q820f6/WcsUXb8Uw lG56EAM51q35izs8IGeS9GDQUDIdTkwpLWL2mgQtIkGmZhijn1Zt2tCGOnESK+6lwmXS w2cA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032899; x=1781637699; 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=tJfpy+xJLZOiImz54Y7mNvfbbMCkdR2h/mEqIv4LlnM=; b=mEQWTfVp/YzGAV1Z+Yse0oVYoWwchLdpssPVSeZZFgYEZkE3+rhEeC9mGwca+EJpix 1rGvSPgKSrbEEw9WUAgpeKKevynObYg5at3wC1SvsrVnwLXctvKV7B92UQPhs2Nn40lO GiNHKJ1yKOhf/txxLYDp3FeOXVpYbo6pkYFbLeR9wpCfnibQHlWFnO7Plf30C+NubaJu a4ECol59wKunoi1FF+zN4KY/MCmhHAxFErSjoCIFmlrX0sln/SycgW+jS772NCirTZrW JUTRPjiZF7wGiLyuRIWwiGLZ0+GRvH1bzBr4CuCVuazRA+Mjrw5omLkveqFhGeo/chhy VazQ== X-Gm-Message-State: AOJu0YxZA5SxDqOVvvIbTKp7jBiyLtumF2RUFmBdzmt7Q8uszGtNNFCp FzplmRDitgiUusxWnimO8TcQL6Kz2EUsYuHlrXMf5mY4sKeIdbcXi7F+gS8O3hb5z37sCpcljMw E49jbjPc= X-Gm-Gg: Acq92OF8DMQcbK3rzF9ZCW17yCN1HRFubLs8X9vJggzQti0ucQFyvrPYHDSShj40dwB 620sayUNpwfeqzAKOyHD1vg69gmNG1yH+egIA6EOZW1qE8meCfCQcH0Y5/RJ5JP6KzpI/zIwZy9 kFESc1T4mIS7gAtJAy99uktbtrDFG2k33YYIyvNn0AL/SexKvEv1QoVYHhSae9iyk+tTQkDCKH0 10uHqWnZEsCsmFnXmgzmIu3IOkWLFzR3MG/p6lJLg7uy5r/ruRxeL6rL7qlystiaQNucJGc07od asOSOkOpM1SqWGqLuIPN9MYxtAHiwFMkCViI4MCIrfwDLvFz1Bal1V2oawKniRkGliYgxWCZEHJ 5QUYp4qIB872JBUVj/ZoSTs0IeaqaFUDWSBDbaMuBn6EzN8VkJWsUqD9yuDlZ4nnKQASUpxD/1K 5X2QS85XvJDrwAYumvuitXhiR7SCjlCU/BlXfMtNI= X-Received: by 2002:a17:902:e5cf:b0:2c0:d8ee:7d73 with SMTP id d9443c01a7336-2c1e8218185mr240638355ad.37.1781032899310; Tue, 09 Jun 2026 12:21:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 36/45] target/arm: Enable FEAT_FP8DOT4, FEAT_SSVE_FP8DOT4 for -cpu max Date: Tue, 9 Jun 2026 12:21:00 -0700 Message-ID: <20260609192110.752384-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033489940154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 2 ++ target/arm/tcg/cpu64.c | 2 ++ docs/system/arm/emulation.rst | 2 ++ 3 files changed, 6 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index a82d65a681..be33fede6b 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -227,7 +227,9 @@ abi_ulong get_elf_hwcap2(CPUState *cs) ARM_HWCAP2_A64_F8E4M3 | ARM_HWCAP2_A64_F8E5M2); GET_FEATURE_ID(aa64_f8fma, ARM_HWCAP2_A64_F8FMA); + GET_FEATURE_ID(aa64_f8dp4, ARM_HWCAP2_A64_F8DP4); GET_FEATURE_ID(aa64_ssve_f8fma, ARM_HWCAP2_A64_SME_SF8FMA); + GET_FEATURE_ID(aa64_ssve_f8dp4, ARM_HWCAP2_A64_SME_SF8DP4); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 6ad841c51b..1e2d1311b9 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, SF8DP4, 1); /* FEAT_SSVE_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8FMA, 1); /* FEAT_SSVE_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, F32F32, 1); /* FEAT_SME */ t =3D FIELD_DP64(t, ID_AA64SMFR0, BI32I32, 1); /* FEAT_SME2 */ @@ -1397,6 +1398,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ SET_IDREG(isar, ID_AA64FPFR0, t); diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 78d1938656..8d786f9dae 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -76,6 +76,7 @@ the following architecture extensions: - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) - FEAT_FP8 (FP8 convert instructions) +- FEAT_FP8DOT4 (FP8 4-way dot product to single-precision instructions) - FEAT_FP8FMA (FP8 multiply-accumulate to half-precision and single-precis= ion instructions) - FEAT_FPAC (Faulting on AUT* instructions) - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) @@ -162,6 +163,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_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) - FEAT_SVE (Scalable Vector Extension) - FEAT_SVE_AES (Scalable Vector AES instructions) --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033418; cv=none; d=zohomail.com; s=zohoarc; b=J4hgUJGhc5JMyMAgjSBFYVD79h9CUTwsMe2WY6k3Xxwi9IuisQw2W7vkjJbr+jxwo/7fTMFpAxC+bxQVFzI7p3sXOe7Gkwc7o+c9ZqiXyKpP1riDhe3rwPaVIZNt/1/mNmAI0KvnoBpe1FAdPH4EDbITEvH5WtLInD52Ag4NvsY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033418; 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=JFTJG/3Df/4OLk9PUm46YHgtzkra8SUHVf1ZncubBv4=; b=OoMIHsc586HmZx98TGc/+sjolixn5LoGOyCiTvzAPZdheATCz0aceyQaZ8PxKi3cSSIL20M/NoVLvb4twGdTHtqyVs9EYcxp30JY1+UUGA5pD0E6iM7/3A86UzfiV8xMe/6SZ12l/zLV264IBuIuVtT3TYQz4rQhpoN3GgZaOk8= 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 1781033418944985.3541694379185; Tue, 9 Jun 2026 12:30:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX28F-00049Y-Iw; Tue, 09 Jun 2026 15:29:03 -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 1wX21j-0003Ul-3E for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:26 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21d-0004Bh-Dv for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:16 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-36dac5d5da0so3137560a91.2 for ; Tue, 09 Jun 2026 12:21:41 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032900; x=1781637700; 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=JFTJG/3Df/4OLk9PUm46YHgtzkra8SUHVf1ZncubBv4=; b=kLaqakOi+XV5HwrEnaCJjpEFrYBPI/1alG1NKyOKZXLnxKQjSgxkgCCGMkrA4ggR18 Jqmlq+bZ9V2dcZon4Djg6x1bhrSufCV7YgU0Fv+lJZiJkXG2slTz5wJRE3rku9CwL7PS loVeMLg/Y6uQorX8g4RS70dIc7DQqfNshR+3PtolMziq0DAuxLd0J16JVL2X91wGiS0f CdPguKTYric+orlTpa5gPOOcf7zbGe+njxCtohNo1jych2DaZcerbyLLZbrdLxFR9msd aH/h5DU6D+MVPQGrzxa2oSX7Zt/l/iRLksctgttnnc1Regj2ZKrP4HQvc3otTUdK03Du aXJw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032900; x=1781637700; 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=JFTJG/3Df/4OLk9PUm46YHgtzkra8SUHVf1ZncubBv4=; b=mzWQXd6aoGpvk+0b8GnZ0wQsZ2ZzKZ6HkDkUN4rm1tWQ6VkoCX+9XiT4v17sNYP7gX 0l5FILZ1udMmV6HwFaTNlvkJftOEYpWuKzcv78BUNhb1bsWwEPMFvhAS21d4rRkGZTY+ x6MnNPYfN21Ak2aycAWyO7lONpKvddHfkCW1+lj/L0ijGhxrvo9MDBgZ+TpojJ1RTY0v A7TRd8QcTN54A/FFvOfOVuNuOjP9F4R5p4BD7C/lhRx8BuC4c54k4owTT58eKZHc00dN s+jAAcZv67gSZRoQGc7N+F6EDsV+BDhcK4/seJjK1ZLRYBlnsLWyaRr+1mzu4tFFPUv7 LyZA== X-Gm-Message-State: AOJu0YxQC28gXC8Di7SfskmUdqxL5mbRssmFQTgytWDh8cY5Wd062GcR dopSsiziqNeAGYt1Um6rF/w0547Mx6L4qvISwcUxqnsvR+C5nJsomyR9ZWinMhZT0pSz/d/ggB0 9joj+/B4= X-Gm-Gg: Acq92OGBH/ndhrVeCO7CUrFOXdahpfC0hAr3dE35vEgLaf14Rf9jaXGx+r4saVDhaUT y0LpZrfppRAnFfD7aCQyoCR9YRR5L9FG3wqNXrpN7opB5AkHfGEOmq0+KQvDKibqidGJN6rDisv rR34PbhAqiRHNjqARKU2iRc9cI1XkrtqASkDRD/OuHQdKNjf41k1FcarZ12wU3WygroEzQFMOVy /F61MGJ4XnS74oJbQSuJ3hHDMfSDmgUNaAbIuLaiOOz5KHBp1TAHyURe8H14zsCFZ1aO9/GIJj6 4dNQX44zWgzJU8qr6E9y6rfnWsAjhVjtLp9OBY0WwiZ3l7eSYr0V0hJ25MMWOUgcq6jB3/Aqg99 /QXu8TVeT+bhbUr3vL3eBlCjdvK2XSR2FVjbXM9QZbJrH/FIV5gZeyk43DV9Wy5aQ8RMPGwLwC3 +o6s1JIg2bmJIB+lxLeE6vcHoilPj/h8zKzOctiKk= X-Received: by 2002:a17:90b:2810:b0:366:2e1f:393 with SMTP id 98e67ed59e1d1-370f038831dmr22943857a91.21.1781032899916; Tue, 09 Jun 2026 12:21:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 37/45] target/arm: Implement FDOT (FP8 to FP16) for AdvSIMD Date: Tue, 9 Jun 2026 12:21:01 -0700 Message-ID: <20260609192110.752384-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.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: 1781033419831158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-fp8-defs.h | 3 +++ target/arm/tcg/fp8_helper.c | 39 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 2 ++ target/arm/tcg/a64.decode | 2 ++ 5 files changed, 51 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index fbf4decd74..f6184b80de 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1620,6 +1620,11 @@ static inline bool isar_feature_aa64_f8dp4(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP4); } =20 +static inline bool isar_feature_aa64_f8dp2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP2); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index ee6f2e9236..5995d77577 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -32,3 +32,6 @@ DEF_HELPER_FLAGS_5(gvec_fmla_idx_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_5(gvec_fdot_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fdot_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fdot_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index f54acb03f3..065df24b84 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -768,3 +768,42 @@ void HELPER(gvec_fdot_idx_sb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fdot_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint16_t *n =3D vn; + uint16_t *m =3D vm; + float16 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + d[i] =3D f8dotadd_h(n[i], m[i], 2, d[i], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fdot_idx_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + size_t idx =3D simd_data(desc); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint16_t *n =3D vn; + uint16_t *m =3D vm; + float16 *d =3D vd; + size_t i =3D 0; + + do { + uint16_t e1 =3D m[i + H2(idx)]; + do { + d[i] =3D f8dotadd_h(n[i], e1, 2, d[i], &ctx); + } while (++i % 8 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 960de1aa86..83d90cfcf4 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7500,6 +7500,7 @@ static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, } =20 TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) +TRANS_FEAT(FDOT_hb_v, aa64_f8dp2, do_f8dot, a, gen_helper_gvec_fdot_hb) =20 static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3_ptr *fn) @@ -7515,6 +7516,7 @@ static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e = *a, } =20 TRANS_FEAT(FDOT_sb_vi, aa64_f8dp4, do_f8dot_idx, a, gen_helper_gvec_fdot_i= dx_sb) +TRANS_FEAT(FDOT_hb_vi, aa64_f8dp2, do_f8dot_idx, a, gen_helper_gvec_fdot_i= dx_hb) =20 static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 08c493c11e..a3e404e7fe 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1225,6 +1225,7 @@ FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ &rxx idxm=3D0 idxn=3D%fmlall_idxn =20 FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ..... @qrrr_s +FDOT_hb_v 0.00 1110 010 ..... 11111 1 ..... ..... @qrrr_h =20 ### Advanced SIMD scalar x indexed element =20 @@ -1351,6 +1352,7 @@ FMLALL_sb_vi 0 . 10 1111 0 . ... rm:3 1000 . 0 rn:= 5 rd:5 \ &rxx idxm=3D%hlm4 idxn=3D%fmlall_idxn =20 FDOT_sb_vi 0.00 1111 00 . ..... 0000 . 0 ..... ..... @qrrx_s +FDOT_hb_vi 0.00 1111 01 .. .... 0000 . 0 ..... ..... @qrrx_h =20 # Floating-point conditional select =20 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033457; cv=none; d=zohomail.com; s=zohoarc; b=Gyu5S5D95Q/sKfJDp3L50pL8AQMxT4mn7jhM88Vj96+576pW9Hqz4rgB8EEXgnzT9Kd/OiPAoBuSlRh5IHxFSQdP58GxRXz6e+8xCx2kcMTiP/LXFCc88p6+GdIaSE2oRf8ZBfy61fJ3Z2vnyOHau4q6mp8vUXOGeEa3nPHiVHY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033457; 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=e/rXv4ZUmhuRJixg/8L/HLonLKmwBZED3FxY/c1Iy/o=; b=J0OzRJI9Vd7ClqfG9X3zbUY2XcYOztLkzgZjst29uuGEaIaxHJtvXKwQSEXNl+ChZs+MJi94AIhMIfaP+H1bt6ImeBtkB+LZI5iEL+qPus7wEJvKBZ0OsvjeT3t54/AG/bLwcZ0qZ91bYb7JGCsXttjcvsSJOY61XyDOomF6ZFU= 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 1781033457393798.5633755945854; Tue, 9 Jun 2026 12:30:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX27e-0002fU-6j; Tue, 09 Jun 2026 15:28:31 -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 1wX225-0003fI-HW for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:50 -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 1wX21u-0004C4-FY for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:35 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2bf237e1433so66141565ad.1 for ; Tue, 09 Jun 2026 12:21:41 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032901; x=1781637701; 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=e/rXv4ZUmhuRJixg/8L/HLonLKmwBZED3FxY/c1Iy/o=; b=L3HcsmEwxxWBJYGbs0po7cK0t194mfKSU1yDsQWpEL//PTa/kc5nWS34v/K3KBkcnk 7PAF7ssqt/bh432VmzumCmxvTSBnU3iQnzZ6/md1DXv+SZTIF9YxC+BNpWIy1RuglRSe kJkVUEbSLAnzMDJ3t9t1SwSfItO3w2b8Tr00T8Kt4LKDqvI9jJ1q4c77A0oTd43J4Ke/ TMcCh7QTbMVrQ70wGLpBnvF6+Rbnll2ddcLiTge3AvFSgTtR0eYbt6PYXVZ/pWEKlFbw MOMliYNCtrXxjGVFlTSx7mmQazRi2oTKhReooK886QjvUqGYsjZ3k5NLNiWPJ20o7tFG CzSw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032901; x=1781637701; 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=e/rXv4ZUmhuRJixg/8L/HLonLKmwBZED3FxY/c1Iy/o=; b=fXi5PhK2vE7zb4iu8LB7J+Hqrea7w4t/yt+IimVjQZFYjznhjBQZG8GRTpeQaSGpps JT/qulDwmXdrCACiWJY2HRTOBpMSCwtd1zVZKqZaYAV+TQEHFc+DG/3S8tNsib91+IdF lV0F+oXxDiiWapIJ/Nz9Bw65MgiZPUFCDHrmpC1mUZP1ypAN5lI1FIKGS/bb0DnsErLe oFpoO6YzU9vv+aZAwdBKG9LahO8P69ga+ICTRLR8dLtiZWhxv/g5bijjhcLCaAhTXAOj xVxCXvhmtBK78qSq1HKf+hV6c9otqi7X4K1hdRMbssFbj5ZAXKTwln7q0Gb/GxF+YlcK 7hsA== X-Gm-Message-State: AOJu0YwH9blG0iI2zeN+perEz28Vlfyp1GYCfyBViX16dd0THFLPcF7R b+ML/3Rj8LDM3z5CrU8Q8G4pOdjEyYtb+EPT/PpQwzYMDq+wk90EWSmbRIW66y4Ae8np8o6o7AH l7nEAhXY= X-Gm-Gg: Acq92OFFaacTFqBMYgnHg6PmGlk15/vOGozLm/SF49SvmrOPi39X8AOG/GLZAv/UqTB LP224o562P0PpwIdLnrUYUU1bkWYxof78yH/xSluVuYu1greICJi4hug6S9+ehtKK+NxBzPEYXS pUvTFarWUMQZ5gacn4iD4AQf4jt9OmMG3DfVS7JNZBGQfgG71q+7dNiwmYYhXMIFxw6q7hEB28r q0LU9i0MzCzWEoCKku6ysFm56c8TYKiae4UtNngknzuoq6vQy4HIuYiRfl//8r63SXT6U1/mq0E fROIpIAQQi8KdTJASTsmYboFnopciPCkWdQeGMSHTJs9IRPqDRT8myjkURSgpfxmvuhihExNnQm dFKxgytKApPM+B8xTdGbrIotIvckKcHaKrxzduQNYeazcktgEYnCHhFrTMd6vu/7D1Gd6GrpWS6 I/5Xe4gVxp19DtH4/+yid9IHTGqksO2Imv9+4jOIKQMj9JllXO1g== X-Received: by 2002:a17:903:f8b:b0:2c0:cf44:3b3b with SMTP id d9443c01a7336-2c1e847d71dmr270081905ad.24.1781032900865; Tue, 09 Jun 2026 12:21:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 38/45] target/arm: Implement FDOT (FP8 to FP16) for SVE Date: Tue, 9 Jun 2026 12:21:02 -0700 Message-ID: <20260609192110.752384-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033458075158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 35 ++++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 2 ++ 3 files changed, 42 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index f6184b80de..4629a3cf3e 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1565,6 +1565,11 @@ static inline bool isar_feature_aa64_ssve_f8dp4(cons= t ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8DP4); } =20 +static inline bool isar_feature_aa64_ssve_f8dp2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8DP2); +} + static inline bool isar_feature_aa64_sme_b16b16(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, B16B16); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 582471b380..2cc5e129e9 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8426,3 +8426,38 @@ static bool do_f8dp4(DisasContext *s, gen_helper_gve= c_3_ptr *fn, TRANS(FDOT_sb, do_f8dp4, gen_helper_gvec_fdot_sb, a->rd, a->rn, a->rm, 0) TRANS(FDOT_idx_sb, do_f8dp4, gen_helper_gvec_fdot_idx_sb, a->rd, a->rn, a->rm, a->index) + +static bool do_f8dp2(DisasContext *s, gen_helper_gvec_3_ptr *fn, + int rd, int rn, int rm, int index) +{ + bool fp8dp2 =3D dc_isar_feature(aa64_f8dp2, s); + bool ssve_fp8dp2 =3D dc_isar_feature(aa64_ssve_f8dp2, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8dp2 || (fp8dp2 && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8dp2) { + s->is_nonstreaming =3D !ssve_fp8dp2; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), + tcg_env, vsz, vsz, + index, fn); + } + return true; +} + +TRANS(FDOT_hb, do_f8dp2, gen_helper_gvec_fdot_hb, a->rd, a->rn, a->rm, 0) +TRANS(FDOT_idx_hb, do_f8dp2, gen_helper_gvec_fdot_idx_hb, + a->rd, a->rn, a->rm, a->index) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index c49e992f10..26b3c7697a 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1875,6 +1875,7 @@ FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... .= .... @rda_rn_rm_ex esz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 =20 FDOT_sb 01100100 01 1 ..... 10 0 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D2 +FDOT_hb 01100100 00 1 ..... 10 0 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D1 =20 ### SVE2 floating-point multiply-add long (indexed) =20 @@ -1900,6 +1901,7 @@ FDOT_zzxz 01100100 00 1 ..... 010000 ..... ....= . @rrxr_2 esz=3D2 BFDOT_zzxz 01100100 01 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 =20 FDOT_idx_sb 01100100 01 1 ..... 010001 ..... ..... @rrxr_2 esz=3D2 +FDOT_idx_hb 01100100 00 1 ..... 0100.1 ..... ..... @rrx_3a esz=3D1 =20 ### SVE broadcast predicate element =20 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033279; cv=none; d=zohomail.com; s=zohoarc; b=PvtkvneSnFHIBxq/hie2NAknANZXbGaKyPfodgk+pMb4cY1uVaY7J8zrwZ/GD9+65Q3PUVHB2kyVSnQuBWUDV8lT3pKTjjHNgG3XXZugBw3HHbg8+e0yK9oi3HgHijoGwfkiqEEbjYblR1JJiOVW1cNY/oJbHl/u8clcU2NzAgo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033279; 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=DS9O8SaU3UtlC+2YZXc3ame2k7BLsC7rPFolJeiV0Jo=; b=RlQESA91mmOmNK+vFMMm4ImeFmeXQ93c6PFND45klZWWAjcOhSpbkA6UpIjx723BViInam8u5DsJWfWHFkXLr6U3AYCKjzzhQIemC1hkFTCFrG4hOym9pB5QtwI/1gC8vfHcQLg9ZXkIoVH6YHeBosL8jLYoQEN9NuFNAuO6Z+U= 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 1781033279739574.8723792137181; Tue, 9 Jun 2026 12:27:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX266-000804-Bo; Tue, 09 Jun 2026 15:26:50 -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 1wX21s-0003Z3-Bo for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:31 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wX21g-0004CE-TT for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:22:23 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2bf77d4a4e2so37214015ad.1 for ; Tue, 09 Jun 2026 12:21:42 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164f88473sm240806095ad.25.2026.06.09.12.21.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:21:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781032902; x=1781637702; 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=DS9O8SaU3UtlC+2YZXc3ame2k7BLsC7rPFolJeiV0Jo=; b=OPmIqInpyH2WGs9GhZiIr4pLqLFcISqbcKqpg95nJg2jHqA9IjXgnOrnPbET+39YT5 1+ZJ1mLN9wfXv4+ZBuCXWBcBKc/e6RuVzUI+D40uhYShjCvbhkEYEwbbAXsMvtvFPstD pWwFL3CihtLNOKKZ7ifA/JXPWkvUipW/fpWTXYXy7VDYbme0WdDQQx+rIQx4UZrlffIN PLjDoGN6MtW61XBE+GD0jOkD5ieBwITN48Fy8D0NZveBpAnVqfn2GwzMkzx2PW0DKTkN j/qnsHNS/sx8Ig1abZvKjs5E1amj1hh8cWP24M2IPom8cU62ZmptK1EoSsNTtS9W2U5z 8zhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781032902; x=1781637702; 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=DS9O8SaU3UtlC+2YZXc3ame2k7BLsC7rPFolJeiV0Jo=; b=Mk1JlEvKHOkYWSaDeJ3oARrKnkmTWRdAOc6djDGNeQE5GSC7a5p87FJfBzMQla+sku i6iqCEzLAaPF+BIlT3D1cSnHK4qlHgvWKkZAOhQeEdT0aJ4FyBnJvx82cK/i0jt5vJ6V Qb8Tb+HKMaET0aNKcxoSII4g7OXLufZ78DbWhNSRokuC2nZ+ZeUwJp6eZymvFvvdQD2E Qz2kMOiln1Va3kCGVJjFKZb52UECCZ24JPeRK4PiQLaWdcn0SR9M0vq2x/vGvuBbYj/R OzSvu3CPhRNWNShnYD8lYOnJgTIZa6TmpmTFugrbM03EHjXUFWVuGiBa8HHU6157XT6M hNbQ== X-Gm-Message-State: AOJu0YzVahF5sZC5MyYYO/3l+A7nF2QVwsCdIWQ+VAsugca+oEZKFJvh M4Co8KdVt69C9/SwaJXMlHMeMFUkm0GLGZ5bd854qOrEpkBL2WP5e80hGoxYf9FSZG5IZzC80t7 DCKryqd4= X-Gm-Gg: Acq92OFWQNnLcRq6qetRvxG7s5tQvDQATOrSg62+OoOby8HmSadu4GRwE2PF///m1dv JW5QH9HoUlJU+zRAcBvKwnTo8d7M4o7225cPy9ln2VAafnmRJfUe2CYexeyxIrusOFWW/Ltd7Qe NC7YXifBnO3eW9hSUnjN1On7u/7jbyZOjYdn9Q380fQsEoHuxj/VyEk/YUZIkIGc9a7byAHnXwk dFi1XPAvVwCUnJJydMDhdqIFwXtk8i24UOXeR4OzrBlxyuN4MnPAmq8iw+klyq5EIamDHvoHWQa SZpHYAfYhmVgetrInKKulkWtiGwNmqcSH43vSXC/Z2Av5IATTBnX3hIOhDvUO9y9TmXE1WQiwdW oJ7xAALhynXCmJfNy2kgrRdYCtEA9iWPrVcMaxsnyBO0Nlj2R9Rn4gbm7DsryYdBMx28rAb7JcP 6/HLFfn3KH5AzNNOsLp15FeGEu+XXlyQbhLZ4mXPU= X-Received: by 2002:a17:903:3b8c:b0:2bf:361e:3edc with SMTP id d9443c01a7336-2c1ec3f61a1mr187134945ad.2.1781032901512; Tue, 09 Jun 2026 12:21:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 39/45] target/arm: Enable FEAT_FP8DOT2, FEAT_SSVE_FP8DOT2 for -cpu max Date: Tue, 9 Jun 2026 12:21:03 -0700 Message-ID: <20260609192110.752384-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.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: 1781033282649154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 2 ++ target/arm/tcg/cpu64.c | 2 ++ docs/system/arm/emulation.rst | 2 ++ 3 files changed, 6 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index be33fede6b..d40e39169b 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -228,8 +228,10 @@ abi_ulong get_elf_hwcap2(CPUState *cs) ARM_HWCAP2_A64_F8E5M2); GET_FEATURE_ID(aa64_f8fma, ARM_HWCAP2_A64_F8FMA); GET_FEATURE_ID(aa64_f8dp4, ARM_HWCAP2_A64_F8DP4); + GET_FEATURE_ID(aa64_f8dp2, ARM_HWCAP2_A64_F8DP2); GET_FEATURE_ID(aa64_ssve_f8fma, ARM_HWCAP2_A64_SME_SF8FMA); GET_FEATURE_ID(aa64_ssve_f8dp4, ARM_HWCAP2_A64_SME_SF8DP4); + GET_FEATURE_ID(aa64_ssve_f8dp2, ARM_HWCAP2_A64_SME_SF8DP2); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 1e2d1311b9..893e20f0eb 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, 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 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, F32F32, 1); /* FEAT_SME */ @@ -1398,6 +1399,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP2, 1); /* FEAT_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 8d786f9dae..f1c8f5aa68 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -76,6 +76,7 @@ the following architecture extensions: - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) - FEAT_FP8 (FP8 convert instructions) +- FEAT_FP8DOT2 (FP8 2-way dot product to half-precision instructions) - FEAT_FP8DOT4 (FP8 4-way dot product to single-precision instructions) - FEAT_FP8FMA (FP8 multiply-accumulate to half-precision and single-precis= ion instructions) - FEAT_FPAC (Faulting on AUT* instructions) @@ -163,6 +164,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_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) - FEAT_SVE (Scalable Vector Extension) --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033753; cv=none; d=zohomail.com; s=zohoarc; b=UWcl393EsesFKjQPZDtDeTxa7ghA9BAh9j/MEBzGK33Q+9dDCA4GKXq4blJZQYbHri7gOaIz7OKFbvktil6GtfvdYd+TJ9B2NMbtKbeWpXY2R2HHt2M+fh8gqpE9D11VfUxUBHKR18EB+i98x9H/7OlPnC2hKXCZE//LhINKNFk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033753; 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=6Img4oOwlY3DSDFU9mjFNABCmRgwFxNku2eeYawsrOs=; b=n62E0wGdgatRHn46l+4s5KHX01e/ol78v8plurklm0o4BN+YIH5oAtC2jArHqZ0VOGQQCT/1OrxSFugJ5NpBq6U4Hoy4HEZV6/ds0SxIb2dH6WgC1NQZLaueWpnzI2BhP42pxTaHyVZeKFEWx+uemJ3WRjruPV1RbdfpOyJsJzY= 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 1781033753686768.1936302327977; Tue, 9 Jun 2026 12:35:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX29I-0007Sr-G3; Tue, 09 Jun 2026 15:30: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 1wX24r-0005by-Jk for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:34 -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 1wX24k-0005Wa-9g for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:30 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2bf30d530bdso59859865ad.3 for ; Tue, 09 Jun 2026 12:24:44 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa00b3sm212247045ad.32.2026.06.09.12.24.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:24:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781033083; x=1781637883; 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=6Img4oOwlY3DSDFU9mjFNABCmRgwFxNku2eeYawsrOs=; b=kumGPwzM4iPPEU0kCReLWacAWyA1CFvVXE731nsVnNv/VsGqG4VOrKhtczJEkha0ky yfXpVF3HAgSleLhZfes6+/bg9JBSx5tvjNhbBnvp+FdwmCAjapJlTwNQ73LhuXqvldhH wejBTnDfBh2rvfMhp+eDMEVVdmnsC1fgnRbPTZa94tA0o6m58nM3sJx3EwjfVEb7Qs1m 8zhD2g7C8ccUEhagUquW7NmWADJpTSZLV7JA1um4Rj02KCg0yXJ8kCgUNRFKm4oaTtXv yxWoLl+lisZske+Mzz8t2zMVg+GIYkn+dxzcR1VniY30jepy6YbkYyLhCkL58NfUASzP SrOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781033083; x=1781637883; 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=6Img4oOwlY3DSDFU9mjFNABCmRgwFxNku2eeYawsrOs=; b=icEUwXvHGcs0iDD4iY4vlTG7ZACUND77R2nD8fQPEE2FYYSuqLzcbvmTqqq4XiTUF7 eSazrqNay4nbxG85s26b0fO7FrXIB+M0uhvyavlIWvuEP1/UB/nplcrpi7XBps/JWn1y Z7K+cuJxmyJskD3zm+mfOleNXw1aIwZvHmauUQyYfvRwIIhQfjeMGAMd9FRfPN3BAUoQ 0/x/ML0q6zG8yFUb8XY+5Aht9y3wB/8fzfJX9npysnBp98XJe003/66sTNW2mKFnrZya tv1ymYqx6/UtRV5OG9WritgdNDt6xAty4CzqDskZl03Gk3TwjM+XAdG++pw3GxwrJ7W+ s+Lg== X-Gm-Message-State: AOJu0YzTy0HghlYBjVrzVx0XocEUSn5RQ/qn4wc1LGwa9YvmRI+JWQsO wiOF17DY2gmBIztf/R0tuEH6knQIbIcu6H+6qNL+aV6WAdqDgsv20xhP7FXtaEwrMw5dRw7iukc XV6d2Oxg= X-Gm-Gg: Acq92OGAQZHThJZ+cLmXgyFWeJ/ZuHPvXGV9ropzxNo8USskhiE0XIjlD55+SsO6Gmz hMznQD1jviDqjbb7Oo9Wdchnv9N5Vr2QpoDQ0XcewpngBLrePFoEoJ0eetvJGZHOViM2lRculHw lN7YMygDOpsTIgCndw4WUjNTv11/ucHa0s6m7bRWj1uodFSycLDQOExUu6ZxbWDIb6h1ujEXBWc XfC7rjNbEiiu0F+NGiUldl4o94d9sDGDIks67gmBxubdV7DgPI2JP6WdwPCAt6c59sor8Ake6f9 a1uGFuJQ/eNFXTjWuAJhyaAd4VWBypq2Mc16FT/oj0HEi6Of7G+Aade99b/nmERc734NSIfveXh xfra0DSfpHGVcriXVDwHPD0PLSVrt4k19HLCIQG8rvUsl2wuWtvbTuEnSyrnEjEvSQqUPyafivv 6NpBVq8c5Mp8b8YbQIeBQurtGWNkdHAIuSeWdxSDm8C2wYnHdM9g== X-Received: by 2002:a17:902:cf05:b0:2c1:eb73:6637 with SMTP id d9443c01a7336-2c1eb73672amr255421055ad.8.1781033082790; Tue, 09 Jun 2026 12:24:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 40/45] target/arm: Implement FMMLA (FP8 to FP32) for AdvSIMD Date: Tue, 9 Jun 2026 12:21:04 -0700 Message-ID: <20260609192110.752384-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033756531154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 25 +++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 1 + target/arm/tcg/a64.decode | 2 ++ 5 files changed, 35 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 4629a3cf3e..1fc8db8d58 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1630,6 +1630,11 @@ static inline bool isar_feature_aa64_f8dp2(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP2); } =20 +static inline bool isar_feature_aa64_f8mm8(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8MM8); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 5995d77577..3c74f02022 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -35,3 +35,5 @@ DEF_HELPER_FLAGS_5(gvec_fdot_idx_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_5(gvec_fdot_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fmmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 065df24b84..b9d4ba3b6a 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -807,3 +807,28 @@ void HELPER(gvec_fdot_idx_hb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmmla_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t oprsz =3D simd_oprsz(desc); + size_t nseg =3D oprsz / 16; + uint64_t *n =3D vn; + uint64_t *m =3D vm; + float32 *d =3D vd; + + for (size_t seg =3D 0; seg < nseg; seg++, d +=3D 4, n +=3D 2, m +=3D 2= ) { + float32 d0 =3D f8dotadd_s(n[0], m[0], 8, d[H4(0)], &ctx); + float32 d1 =3D f8dotadd_s(n[0], m[1], 8, d[H4(1)], &ctx); + float32 d2 =3D f8dotadd_s(n[1], m[0], 8, d[H4(2)], &ctx); + float32 d3 =3D f8dotadd_s(n[1], m[1], 8, d[H4(3)], &ctx); + + d[H4(0)] =3D d0; + d[H4(1)] =3D d1; + d[H4(2)] =3D d2; + d[H4(3)] =3D d3; + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 83d90cfcf4..367f87f05d 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7501,6 +7501,7 @@ static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, =20 TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) TRANS_FEAT(FDOT_hb_v, aa64_f8dp2, do_f8dot, a, gen_helper_gvec_fdot_hb) +TRANS_FEAT(FMMLA_sb, aa64_f8mm8, do_f8dot, a, gen_helper_gvec_fmmla_sb) =20 static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3_ptr *fn) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index a3e404e7fe..6922e91010 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1227,6 +1227,8 @@ FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ..... @qrrr_s FDOT_hb_v 0.00 1110 010 ..... 11111 1 ..... ..... @qrrr_h =20 +FMMLA_sb 0110 1110 100 ..... 11101 1 ..... ..... @rrr_q1e0 + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033404; cv=none; d=zohomail.com; s=zohoarc; b=kIucy+4s852stdhELSehygE7qity+VOGVAuxODFbIG4VFlVpxZ7PmVecrzDSfE+pn/ptzBxXT2jUo8jx15r/n5Mk1W+kAP3yklF5nsKyYDAsZbz8wNmuQzrkA1xfT3jiVUOLCt5D2tlExgbxiY9SXqePwHZpXQMkbZGQexfbKHw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033404; 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=wGO1KH2dWLuKc0TZeKusI9hi1gX1fWKEPTW0xxCeIvs=; b=CukaLTU5FfMFd+EODx6QybHbl2MiPqfVTA9EhppPOswdmlx+T0xlsJIu/J8sPXKftugaEVWxUSZxcYppKhcRhwY7vHRvAICCV6hkfqt9K7X1usK3qfmXFTeYF0O6nxQu/bFDSvRQq3Z56HeCTLY5MvGMVyhyI21JBipwy5NoU3k= 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 1781033404916655.0086389092089; Tue, 9 Jun 2026 12:30:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX28F-0003ve-9w; Tue, 09 Jun 2026 15:29:03 -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 1wX24r-0005bs-AO for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:34 -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 1wX24k-0005Wi-9Y for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:30 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2c0b9328c4aso41522345ad.0 for ; Tue, 09 Jun 2026 12:24:44 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa00b3sm212247045ad.32.2026.06.09.12.24.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:24:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781033083; x=1781637883; 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=wGO1KH2dWLuKc0TZeKusI9hi1gX1fWKEPTW0xxCeIvs=; b=RbTrJc96OHtmu94OqVJKL5e8THERAANcN3Ma7AmPu1/haiWQq2GLwuQt7WW9qr120G cmYSRTqw6wiVbNsiEYhSGs9VPoEd+N6I+1kgjOTJxgW/kA+AVN5+oHnGqbVnsjiaV1iI fW9nnRe62MhgbmtZoH8Cxum/H3sdoiKYy6LFL8sTZOg2mlo05v94TxSBoC1/938fBGXQ WwPG+HMPpyxaXhjZFXTeiqDobHJWjkdkhPQ/ZSkgn5tMCdsaIOqfwqGc7TP0VJ6Q7G/9 y5P4hSoEmvnhoMZvfMvLREeR/WqrRfx2ywt+4IN60s9dTmokj9WzrW3AqiQFOWexgQiW LfTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781033083; x=1781637883; 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=wGO1KH2dWLuKc0TZeKusI9hi1gX1fWKEPTW0xxCeIvs=; b=fBt8zx+OthpxvwGy1HyBMcQcrLtRZ+Ji5AQf/ZWdamNSvU0R8RgOGxErJy4H5qjTlX DwOcOWtY+TsbKh+sw7EPYlNkjyftY+9h+i+2GDTIQ7BYhx0fdz19H4k3vSdwbXgiJ+9i u8rTTjo9cvNteBt7qKZIu2KT08L0xJ8ePT2/ryq8NS1ECMFSAFgAqtqFP/6yKQhVz9C/ Nac9vm3wJT8KU33ZnaMcRYwSAYl1yvlQdLwEDl/HwcuvcOtOAVN8yNCggEO0ikrSbrT6 2LmAAKyiTQetFPkkSBcgOXY94ARvLMGCihx5Kl9KxskRl6SAVEUzXPsXNCwWXA8qDe9p BVaw== X-Gm-Message-State: AOJu0YyeF2uFfROUo8s0j27IJLArrZQCBWxu4Apj9S6Knm21y/rqd/kH OZx/nW8pYHYH05rla/GNKHl+OHlBx5myEzqDpXNIU13Uf9a8tUY2/Er6Bz6fqsOUc7Srf9mXBgP b8AXI14Q= X-Gm-Gg: Acq92OFN248O+O9nnTn7jrI62sMaW44dBzBkSBH6aSsuOx+5q+86jR6I8IuuRb9ub9y o+uBzrIBrWEeSrdPvXVds2r+Qqucvtcxv44eN26Lavv3uIt0j3NxSOXiVAkr0tRn35QBUAce+g+ gupp7dZHn7NJLldwHCCwaLLSWjG1oHN9eOtjpdVfD8ocoepJ2/yDPRCsmY/Y7vrKySxJrF4j8cz bcdr9OnC69IuutnW1g080juWddtWVpsSkxUFr7tHaRuQA59rgTmPUYubeW2m78JzUCjK+R4i64L vCHvMO64TAHHYPm79wbCHJhWdcW5766kU4Tmlp1PgIsVmd9yzswd7FoL7CiIaArfd0kAvPfGEsT 2cztlG++ETDH9Hbx3VZnITJIndzlU/PRi1cdDVUtGaOqIwQwdYP3WSmpTXE0uW810ly6ctsMrzY ssIvabLu/IE4Ohf5fSYxdTsYMxX9IljQPvPPdpAI3EOcsR10wMUQ== X-Received: by 2002:a17:902:ebc3:b0:2c2:7baf:139f with SMTP id d9443c01a7336-2c2a1c9b30dmr52135825ad.30.1781033083488; Tue, 09 Jun 2026 12:24:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 41/45] target/arm: Implement FMMLA (FP8 to FP32) for SVE Date: Tue, 9 Jun 2026 12:21:05 -0700 Message-ID: <20260609192110.752384-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033405877158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 16 ++++++++++++++++ target/arm/tcg/sve.decode | 2 ++ 3 files changed, 23 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 1fc8db8d58..2b1d1034c0 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1703,6 +1703,11 @@ static inline bool isar_feature_aa64_sve_bf16(const = ARMISARegisters *id) return isar_feature_aa64_sve(id) && isar_feature_aa64_sme_sve_bf16(id); } =20 +static inline bool isar_feature_aa64_sve2_f8mm8(const ARMISARegisters *id) +{ + return isar_feature_aa64_sve2(id) && isar_feature_aa64_f8mm8(id); +} + static inline bool isar_feature_aa64_sme2_or_sve2_faminmax(const ARMISARegisters *id) { diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 2cc5e129e9..f6705ee95d 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8461,3 +8461,19 @@ static bool do_f8dp2(DisasContext *s, gen_helper_gve= c_3_ptr *fn, TRANS(FDOT_hb, do_f8dp2, gen_helper_gvec_fdot_hb, a->rd, a->rn, a->rm, 0) TRANS(FDOT_idx_hb, do_f8dp2, gen_helper_gvec_fdot_idx_hb, a->rd, a->rn, a->rm, a->index) + +static bool do_fmmla_fp8(DisasContext *s, arg_rrrr_esz *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, vsz, vsz, 0, fn); + } + return true; +} + +TRANS_FEAT_NONSTREAMING(FMMLA_sb, aa64_sve2_f8mm8, do_fmmla_fp8, a, + gen_helper_gvec_fmmla_sb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 26b3c7697a..6610432528 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1808,6 +1808,8 @@ BFMMLA 01100100 01 1 ..... 111 001 ..... ...= .. @rda_rn_rm_ex esz=3D1 FMMLA_s 01100100 10 1 ..... 111 001 ..... ..... @rda_rn_rm_ex esz= =3D2 FMMLA_d 01100100 11 1 ..... 111 001 ..... ..... @rda_rn_rm_ex esz= =3D3 =20 +FMMLA_sb 01100100 00 1 ..... 111 000 ..... ..... @rda_rn_rm_ex esz= =3D2 + ### SVE2 Memory Gather Load Group =20 # SVE2 64-bit gather non-temporal load (scalar plus 64-bit unscaled offset= s) --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033502; cv=none; d=zohomail.com; s=zohoarc; b=Y8BD5p8qmObvJx4aYSTp/h2rBiz2J38HszQLpwkyXERFMV3L2ZuFPUFHyc83LlWm3OU+HLvCjkByZMtSEP7AILw/d3+pxjK5gNuBXZv/KVRxWlnOpSowbsOTwLShneYuRy6cgglLec1AYW7/h+RhHbqUWh03gyAjxcaSRd2IwQI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033502; 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=UVt54R9Grq/oYBK/4m9vlQsoX3OtzUgK4EG3mmjG47Q=; b=Y4A2cNkSroi911c6U6k2ZalgC2d5ZVJgFlHx7sKzFyeiEBoPDXtxduC9yBM5jjHLcQUBvAvrGDa3EwQa1mRgt/ThBoAUZTLCq714CkoO+Ih7Qr2R+8YQxXlz5gWW6US53vCfzRcIC0DRGU1p+kWlclUGVAcVVs34ff7DIDO3E8M= 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 1781033502085194.48523658564955; Tue, 9 Jun 2026 12:31:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX298-0006ud-Qi; Tue, 09 Jun 2026 15:30:01 -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 1wX251-0005jo-M3 for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:45 -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 1wX24w-0005Ws-Te for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:42 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2c132ac5ec2so58700115ad.1 for ; Tue, 09 Jun 2026 12:24:45 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa00b3sm212247045ad.32.2026.06.09.12.24.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:24:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781033084; x=1781637884; 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=UVt54R9Grq/oYBK/4m9vlQsoX3OtzUgK4EG3mmjG47Q=; b=IymtBy4YPVg2z9rXeLEU6lXk4H4SQnFbf/UzzjKp3QjNuax9ysK+VszeJds8vxvBer 5kA7QVZKHRRKBPwSJIFS3AnZhRmi4QLb1KwwE44WwcB6UfHqsYVGBV5TQuYErHcE0cna OjK6eHS1LpZ1//AN9c9Pe6dNshQwktk7yZ9bU0STQARBsKY0pyephNhX/nO4/dncy0jG HN/iuNxMEwSGHm8SPyBZKObkS2fLxEa6NDndo796tkZA+2WFzxU4sQwGcA2kyk0qKMJq q5lXjtMrcO1M+24XLg1vu2b8mH2Fzt3gck3L81uWtY6KorqO323vWWUzG5CexDCBLoWX xHtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781033084; x=1781637884; 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=UVt54R9Grq/oYBK/4m9vlQsoX3OtzUgK4EG3mmjG47Q=; b=LohGmuZ74YzQJ/AJTc4PW0xbsAJQlXifq5oXXKdZ/8IU0cOzj6FHAuR00Kj7y2BRAU W0iZmB8AFS/2A91DteNGHvplnLNl10qcywd7mt/iohANkv2MacaErk7wxXVJodH+lP8S AIaUblDxo2fyPmr9sRUo+OQXinwITqOt9J4db3EFrfituXbenmEn5HbgN4kX3QDvSWHf otfiX7s9wBmDcREZDXlubI4jOYx+cbUHvLIhU8G2j7bGjFC4BYCDay9uFVvhHmAhlaJ3 +iOh/KkhY5L6vuTYRBuGpjrhq6aBKr2kM3kGYyILdF6SZNgR5oRNVC+TjMYQZutGfGNK H/3g== X-Gm-Message-State: AOJu0YwxJIO9gw+50j1f5PMkfhUeGLsDZXga1qjUVjjZuujSdQatWK9d BOongTbsHLYYq29Mtbl2uQIp/FjlitkE0IabEmPzDMXTMKb/MEy4o5B1tPmcEGDtgYDAMad2lAe unh8Pa80= X-Gm-Gg: Acq92OFLzLvs/Jd4KoD/c4hYWM7uv+nVFCP2wE/7TWO1YpVOyLjrHwKbHJN6ENNxCjC qjTM968qZIoxD7WHOKXWowgjAl5CnG04GLaJiqv5E6Qwf6MOT5zDxK/G27vemkC9pKrBrYYMpvT VFIx5X7++VCuN1/AkYKocDaXJ3ywc3AjGNGHJlfYlFCXPq0qYAOhKPUIsCwj3BsAJxm8SHdgDAC QNCfeQLu5vbWIOEcq3Aq0Ui9SUvMqRuwuRgcvXjKABL+ijBLR5UCBjSEnm2CDRDzYnI6kAHwHYm uWukcZs5Awv+WXzekplnlKQYzIBxZWHtaC+rntcnKLpIp83C4S6lyF9vWyups/c+eEz6zbLCEQG xibIORp6Ftbbkw+sf/lMVrOhe8t1gEoGhrg5GlLE7qU3cPe03tlCkb8IVMJ6ZJtuW2FUroR3KAX 1aneuqDuguwe2upncoQoCMDqsP1HSk0i0gOKSFwgDmIM8mIAZrWQ== X-Received: by 2002:a17:902:f64f:b0:2c0:c4c9:4cb with SMTP id d9443c01a7336-2c1e7e7a6eamr239468145ad.14.1781033084260; Tue, 09 Jun 2026 12:24:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 42/45] target/arm: Enable FEAT_F8F32MM for -cpu max Date: Tue, 9 Jun 2026 12:21:06 -0700 Message-ID: <20260609192110.752384-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033502464158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 3 files changed, 3 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index d40e39169b..7864765ba0 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -171,6 +171,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_rcpc_8_4, ARM_HWCAP_A64_ILRCPC); GET_FEATURE_ID(aa64_gcs, ARM_HWCAP_A64_GCS); GET_FEATURE_ID(aa64_cmpbr, ARM_HWCAP_A64_CMPBR); + GET_FEATURE_ID(aa64_f8mm8, ARM_HWCAP_A64_F8MM8); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 893e20f0eb..15dafb9aee 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1399,6 +1399,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8MM8, 1); /* FEAT_F8F32MM */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP2, 1); /* FEAT_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index f1c8f5aa68..dcfb4f2073 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -67,6 +67,7 @@ the following architecture extensions: - FEAT_EPAC (Enhanced pointer authentication) - FEAT_ETS2 (Enhanced Translation Synchronization) - FEAT_EVT (Enhanced Virtualization Traps) +- FEAT_F8F32MM (8-bit floating-point matrix multiply-accumulate to single-= precision) - FEAT_F32MM (Single-precision Matrix Multiplication) - FEAT_F64MM (Double-precision Matrix Multiplication) - FEAT_FAMINMAX (Floating-point maximum and minimum absolute value instruc= tions) --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033488; cv=none; d=zohomail.com; s=zohoarc; b=cXyQ0hPRv5pUjvMokZN0TgEpF1mBKlsRZa9nJ5Z5C4U64Pc+Rm6StI2oV4wcyPGGFErwhlIZRqvkyV3r5dBGdDritbmFSpgvmyIYVwHeFyvV7qr/Kpwdb7BwJfvOc+c7XiFc5r6dAB17WDBa8pNmwuYj8+rxCOA9jiOENhw+QsI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033488; 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=1Xz8fr+g8sTOXusmljC0L+Nm4oefyAqFDlrk9++y4e8=; b=V5lyDLxMsMTMJJaG9WS0BXl4iPnVSPeXhage9OyamFXhuAwSYY7lniEp77BxU+qGiuKjidEx18Ne6M0xQOvzVfJCe6b+7OKIgxNhBDGf9ZhXCiF3Icj/q0sZX5q7qpmpyr0EC/iHrxzvZ7Qv0PO+nv9ZxOWyoVzUFZD8NiuEFoI= 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 1781033488939857.999673331679; Tue, 9 Jun 2026 12:31:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX28q-0005to-Oi; Tue, 09 Jun 2026 15:29:41 -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 1wX251-0005jm-Lr for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:45 -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 1wX24w-0005X4-Tb for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:42 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2c0c3315c5dso62689075ad.3 for ; Tue, 09 Jun 2026 12:24:46 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa00b3sm212247045ad.32.2026.06.09.12.24.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:24:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781033085; x=1781637885; 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=1Xz8fr+g8sTOXusmljC0L+Nm4oefyAqFDlrk9++y4e8=; b=W3pJZ8PpMJQoBTGbXh1pS07sakq2kpn9In7Vld8IXCQoAqjxORSiig76G8ASOXGRr8 sayg2g7b+GQrtZRPtQzLjxqE6nBhDQhCQRvoglZemAYjz0nAbpvVkWW0LR5xRVu7qf3M neprE0sQRSa5S0Vh1P0yaeObaSp7phQc9gJyZmGx4MDPWu9uutcoHtwkHLzGUVckHIOk e4A3py5GNGgv4hR8VY8UZ7c6LvP0qADPZYht583P70xBr+b4EX65AW6jIEpCeIqf1oSD FJsXuNVLKS3k9VZiqgeRNYuzaGr4RcJCUTwFR4fwJwayzT3Vkz22AkA08xu4L7DdtvN0 cUIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781033085; x=1781637885; 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=1Xz8fr+g8sTOXusmljC0L+Nm4oefyAqFDlrk9++y4e8=; b=kpAuuwyR6vI7lQBPfoFbFDwoPiZxN69exBUVKZO7dihwuzukBTDrY3cq33iyzppco9 Fvvv7pVDVpPI/5QxugjE3VsFJEcX7Qr/tCTlV6saStKQlffqQ//kZAZMkwexTB4bDSze pCoyXXcRRCYb8zP2eQxY10M7u/D5UtR4HJm1/dEGkW+CN7ts9GfuGNLmwdkdkc8zKlZ1 dDMp+KGkVVPzv+k5CVSsmRjV6I+bQKhUSqjXumMe1AtGWGlXVVNUwg7lrGxToTImfO/x UPmImzuM1jMwMZ3HZciScuiE3swC8OMxhitMp2V8JGEtOSSXxFB1aCIrQ0s0VxC3eXgQ 6a6Q== X-Gm-Message-State: AOJu0YxSBqkk0hgRrik/Pwi8faS3or96Os0izhkYWqDSjkTS84iUAYAS hyyeCIAH3Jkw/pU+Z8WzG0pfMPx7CdG3CKDCikH9Hw8trX+MojuOiJNZhZmSMY911YklrMHLYPY nI7kf43Q= X-Gm-Gg: Acq92OETLmSE0+TbhSivZAKQFrCOApswnX/Gl9+cg5s5SKIiJp/AsVflyxssUmfMY1x fYMvXMLqD9Kg321uY900WRA/pEiQ3ANQeXL6hY2Tj6QzgDyIvWtsIhzNHaOpC746J58zDVOxZ3n W5mBMpnj0FixbMCyNY94e0jxk6Nb0J0QghQTg4q1u979VrPflhUFO1gxWGAW81naURKqSCR5RIp CAo4cWzEsiAKXGfMWMt6iVXs8uGn5fdw3SZB8oWeWuBedev5vmEjTy0a4TNf0dzK20UkwawzQXe mtUno+wA67nGm6q3CNNFESxIhkoFJdCHmyRUUlT3QGl3Bsm3LHJcbGS2vw9+w8VN3Af6xO7At5Y cLh8uNW1YVRwv5QI2U8rOQREKVd19gzOZGX2o/cYR/Qiz7flDb4HvBrZRcVlUlZgbPiI5Mz8tQy rbul7YmQJxnp5U9Bm6ge8+t5V5YOeip1e0Mt5Tfpg= X-Received: by 2002:a17:902:f60d:b0:2c1:e426:70f4 with SMTP id d9443c01a7336-2c1e8481634mr220977135ad.23.1781033085180; Tue, 09 Jun 2026 12:24:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 43/45] target/arm: Implement FMMLA (FP8 to FP16) for AdvSIMD Date: Tue, 9 Jun 2026 12:21:07 -0700 Message-ID: <20260609192110.752384-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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: 1781033490404158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 25 +++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 1 + target/arm/tcg/a64.decode | 1 + 5 files changed, 33 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 2b1d1034c0..6d65706186 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1635,6 +1635,11 @@ static inline bool isar_feature_aa64_f8mm8(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8MM8); } =20 +static inline bool isar_feature_aa64_f8mm4(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8MM4); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 3c74f02022..e942308af4 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -37,3 +37,4 @@ DEF_HELPER_FLAGS_5(gvec_fdot_hb, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, env, i32) DEF_HELPER_FLAGS_5(gvec_fdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) =20 DEF_HELPER_FLAGS_5(gvec_fmmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) +DEF_HELPER_FLAGS_5(gvec_fmmla_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index b9d4ba3b6a..bd0877071b 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -832,3 +832,28 @@ void HELPER(gvec_fmmla_sb)(void *vd, void *vn, void *v= m, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmmla_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + size_t oprsz =3D simd_oprsz(desc); + size_t nseg =3D oprsz / 8; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float16 *d =3D vd; + + for (size_t seg =3D 0; seg < nseg; seg++, d +=3D 4, n +=3D 2, m +=3D 2= ) { + float16 d0 =3D f8dotadd_h(n[H4(0)], m[H4(0)], 4, d[H2(0)], &ctx); + float16 d1 =3D f8dotadd_h(n[H4(0)], m[H4(1)], 4, d[H2(1)], &ctx); + float16 d2 =3D f8dotadd_h(n[H4(1)], m[H4(0)], 4, d[H2(2)], &ctx); + float16 d3 =3D f8dotadd_h(n[H4(1)], m[H4(1)], 4, d[H2(3)], &ctx); + + d[H2(0)] =3D d0; + d[H2(1)] =3D d1; + d[H2(2)] =3D d2; + d[H2(3)] =3D d3; + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 367f87f05d..126b7b44b8 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7502,6 +7502,7 @@ static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) TRANS_FEAT(FDOT_hb_v, aa64_f8dp2, do_f8dot, a, gen_helper_gvec_fdot_hb) TRANS_FEAT(FMMLA_sb, aa64_f8mm8, do_f8dot, a, gen_helper_gvec_fmmla_sb) +TRANS_FEAT(FMMLA_hb, aa64_f8mm4, do_f8dot, a, gen_helper_gvec_fmmla_hb) =20 static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3_ptr *fn) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 6922e91010..28cd1faf61 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1228,6 +1228,7 @@ FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ...= .. @qrrr_s FDOT_hb_v 0.00 1110 010 ..... 11111 1 ..... ..... @qrrr_h =20 FMMLA_sb 0110 1110 100 ..... 11101 1 ..... ..... @rrr_q1e0 +FMMLA_hb 0110 1110 000 ..... 11101 1 ..... ..... @rrr_q1e0 =20 ### Advanced SIMD scalar x indexed element =20 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033380; cv=none; d=zohomail.com; s=zohoarc; b=S1j6Qx039TllH73ZTpI9OvMYQu6H4Df+JDjicyJOT9yXgV+Iuz9Hfx9/mpVtv+2VJmJbHsFCSbRoJC0pX1UToMaYEJjaamOazrDA7DC3cV1n7H9IPzgm3vqI6GhnZSXt1YLHBb3+TKBXL9ReUY0Ch6iol7FwGUXJbR6LsU8CaNI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033380; 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=J/Nwiw9t72saqAIpJgwvgLiVqmULMLb29nkCaEYkMzk=; b=iTpwre/867HAVpGe4G+QgRy2tlM4OpI+Tr3kbPbXu2g85y7+7J+HQ9+pS8l6S4FRDUeg4BjVtoJnL/PDQNDs5dYWZ5CHc3fYsKe+IGr3LotdIqdUU0kiHYn9f/cV37DWYxRVIXDDdwQ2JFi42Q6FCAiF68D3uJTm6WG2xshya24= 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 1781033380646698.404301641587; Tue, 9 Jun 2026 12:29:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX28i-0005Fi-Dj; Tue, 09 Jun 2026 15:29:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX24z-0005i6-BB for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:43 -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 1wX24u-0005XJ-Ej for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:40 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2c0bb4a94b8so50371505ad.2 for ; Tue, 09 Jun 2026 12:24:46 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa00b3sm212247045ad.32.2026.06.09.12.24.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:24:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781033086; x=1781637886; 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=J/Nwiw9t72saqAIpJgwvgLiVqmULMLb29nkCaEYkMzk=; b=H/Mmzvt/bE7CTHL9Bae9JLbYlMf5V6YkkVp4ZFTMva0TIsPTyJwA9oFu+s4Fh88CzZ PaaBo4wd8ZwZI3jK0Pl/zCM+p5EVS5VRYKC6P5yN27Xo4XZ0mF+XvUIscnKklX0Z/Rl5 2NBEESUJh0xXP9V7CUln+yqbsrFIdxpS7ZnsbsU5YY3G0sAgPwQDjn7JDwaK8JlvCMoN gXGF9yE9o7PtSTvgpQ616JP1UatcaOGyXr6JXcMzX0jiESUyoa4X6xW5/KS5Un7mrLZ9 OWMZWl4DtbyfaO3TE9GqYvJnikx1dAV60M6bwXXyJ6iU9YAscvw+KQHZlym8GD6vaD/B 99DA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781033086; x=1781637886; 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=J/Nwiw9t72saqAIpJgwvgLiVqmULMLb29nkCaEYkMzk=; b=KTOMUvfAot5TeNC0Yp13SqwkSOx1za0TYGQJF8q2LZGvcVXw7XkmZt/d/jbAlfT/xE /uHbqHgYbJUJWuKVsWgalAc0Fg7dg5eOPg3Od6V/dMvAT4wgQ5Rlx7qmEbhQnP2usXEz d8iSNgnPlO+uE2HEQ+Eg4AtAGMd0lWjhAOjK4YssORQYtwEEpGH3fiGTUmH/daLLJxqO ByE8LluWhZHP0W/kWUpF58U+SR4deyV1JW+/QtJarpvHqsqMdy+CwNzztbMLZuX00A15 fVw5DofIzfuumAyN/Amv8IPpTYiOuXStkkBEFDEW9u88+iMpJ4ff6OysMW6z5WPc3N0E 36wQ== X-Gm-Message-State: AOJu0YyiXTOGiZhj9EWQye7GpQcGks5knWShZ+sOjfMvdR4eiRebrCd4 slr0OQv5sGB3zGqd8JEctKZBvhYqSrRDAani7EWN2K+04Q+ojL27wcYcSgGkTfNJgp2aeNckJSv L4twQwCI= X-Gm-Gg: Acq92OG9IsNPoBrniWeIuZfvzsO99tCV1PTNIvuGEAR2/OnUkl4LVEpHuiY9xd+ktGj ijAuujPzRMOp22lu3VzMxWaWVAiqxJYpPPbA39ekrI2RAF7WLn+SVU0hO/fn6otcS0kORZBYAum y9FHA6YDVSYe2YF2LqOkuompL50Y7geKh19+BFp8CivFW3Mc/kpI3+zKXjRzXeromBiZYBsOkUm rNW2LeGjL2BzXUIFlzfzloE+FhGFkT0LeMJlOwFdjfbW2RgRTMyMPT0Z2K8flcPL/WenUr43Thm ie0kYZBNJC8N48zwknnCQw/45yzy9Pst7tsO/QEnqKvXvbc3gr/yoFofFStlHjMKvgC3wgaen3P adcTZf50dXz12NS+XyDpeITHOqHf1tx4mdEGY2SkrNZTnzyAPADNuXjMyw8/09NU5cwdTCogXiw I7n75495X1vO9EdDAkTeNUkAeiDp7ynitT4JQW97U= X-Received: by 2002:a17:902:f745:b0:2c2:2a8a:af69 with SMTP id d9443c01a7336-2c22a8ab1a9mr197825995ad.9.1781033085791; Tue, 09 Jun 2026 12:24:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 44/45] target/arm: Implement FMMLA (FP8 to FP16) for SVE Date: Tue, 9 Jun 2026 12:21:08 -0700 Message-ID: <20260609192110.752384-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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=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: 1781033382302154100 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 2 ++ target/arm/tcg/sve.decode | 1 + 3 files changed, 8 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 6d65706186..5a14507682 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1713,6 +1713,11 @@ static inline bool isar_feature_aa64_sve2_f8mm8(cons= t ARMISARegisters *id) return isar_feature_aa64_sve2(id) && isar_feature_aa64_f8mm8(id); } =20 +static inline bool isar_feature_aa64_sve2_f8mm4(const ARMISARegisters *id) +{ + return isar_feature_aa64_sve2(id) && isar_feature_aa64_f8mm4(id); +} + static inline bool isar_feature_aa64_sme2_or_sve2_faminmax(const ARMISARegisters *id) { diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index f6705ee95d..a85558bdaa 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8477,3 +8477,5 @@ static bool do_fmmla_fp8(DisasContext *s, arg_rrrr_es= z *a, =20 TRANS_FEAT_NONSTREAMING(FMMLA_sb, aa64_sve2_f8mm8, do_fmmla_fp8, a, gen_helper_gvec_fmmla_sb) +TRANS_FEAT_NONSTREAMING(FMMLA_hb, aa64_sve2_f8mm4, do_fmmla_fp8, a, + gen_helper_gvec_fmmla_hb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 6610432528..b53fe6a58f 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1809,6 +1809,7 @@ FMMLA_s 01100100 10 1 ..... 111 001 ..... ...= .. @rda_rn_rm_ex esz=3D2 FMMLA_d 01100100 11 1 ..... 111 001 ..... ..... @rda_rn_rm_ex esz= =3D3 =20 FMMLA_sb 01100100 00 1 ..... 111 000 ..... ..... @rda_rn_rm_ex esz= =3D2 +FMMLA_hb 01100100 01 1 ..... 111 000 ..... ..... @rda_rn_rm_ex esz= =3D1 =20 ### SVE2 Memory Gather Load Group =20 --=20 2.43.0 From nobody Tue Jun 9 23:12:53 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=1781033676; cv=none; d=zohomail.com; s=zohoarc; b=a0/7T1IZ+65VnICGeqKwdweQcHCgzv/eE7lNfEkM78H7C68Ilgh9AWl6kRStv7BE5bGOvpMKr9Wz15e9nflJTXjK7y5BiLaa5802jf0IkNPsi3qaRJPjk9CVwXMAuIoWqJTmsmV5bavQ/rhJhW89Vh5hFVgr8CamKTkQxxBwkfQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781033676; 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=MZhUQtrZgH1sNCcu1zDpkvoAehYLcJxzUn96qi4Hts0=; b=k+ayeDKKkT2oIbdphBj2Zcp3YArFl4ZPXkQKHvDuoZos000MF19UOUXxHFY5JQn2o5GHhT1oV4yuC8P8hmWjZGxcFkJIOs/YZahPq5T52bGIfPlZv9En6OIs4QUFPJEo2B142pVEZXzP+cl9jFccfkxeMA8DpoiXUuJVA00++ds= 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 1781033676389724.5515733305767; Tue, 9 Jun 2026 12:34:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wX28p-0005cx-CS; Tue, 09 Jun 2026 15:29:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wX24x-0005i4-9L for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:43 -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 1wX24u-0005Xa-7Z for qemu-devel@nongnu.org; Tue, 09 Jun 2026 15:25:38 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2c0c2d792c8so40197825ad.1 for ; Tue, 09 Jun 2026 12:24:47 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa00b3sm212247045ad.32.2026.06.09.12.24.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 09 Jun 2026 12:24:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781033087; x=1781637887; 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=MZhUQtrZgH1sNCcu1zDpkvoAehYLcJxzUn96qi4Hts0=; b=Xp8JUk23s/+wTuSeRu4kpl/orQs/vRfkNmfeh+mx+JEbeQBsHXbOsCR3RTOqhobcpm lMknCfWVYI5JjQmXrldG10+VWOxAD9uSCIk8s3aTj4FS9ln808p6SGIVmfkPWFaxR2Db 8SHExNHdCusXyWTRV+pBO1znp4WVrGGFX3pbdfkoez/zgzgb/r3h0HKxaddljDpqkF8f XqWek3hDp41V/0hpc6A+iuGufZMYQwGzT1r0qTUp4Lm47mK2gLdy50hG6AyePSeL0vso /ugrGu8g9f841iyNyoLsBzmOuoJZDeAR5WP83w1EvhQvUbbSTQRvtJSG0o2a5pav7g5p Jm/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781033087; x=1781637887; 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=MZhUQtrZgH1sNCcu1zDpkvoAehYLcJxzUn96qi4Hts0=; b=RLld845ZLxfLjjH0dBktvlYkaD1iIClLnq7g36ZKvARyycv2hJz33bUqfIRRT5CGC4 hlNVhD44/UV0w43TB6E8FElnMLsD4pWS5Z68H6rmNlxVWaROKaR6n5VuJ2EZ3daDXOB9 gjWbF6MlmzGzFjH4vq175sQXfLJtoQbAqxd/5eceS+WBz5iL1gG9Y6eiMCa7/ZluKA99 29pr2/0UqnwOqX8W5hC/qomiy0dI1uWiRapJzEJwM6vRDdAGA9O7xW/+BH7UUSKq69Dj 6euQhKriw+pXwuvGBBWLpDYzaDRmJUAjnyJWY2yvisP+h4JygR/gfHLral5Ukr7BN8g/ cJZg== X-Gm-Message-State: AOJu0YycYNIk2ezPAZ5BtF/dbHkR2T7k9GHjWs/ZULNqe4WvTip2SZt3 aZsECrDdvQ9bPmhcuSBQNZlFRau7ul87i9QNUmnhktsQE7VAwulaZdwMNIagdXRleRozF2k0trS Wpiz3AmU= X-Gm-Gg: Acq92OGX9gUK1hnMQf4tX4njeVP8cFTBssm16dlo14YQCwbxIQ7Z50mysKQ+tb/UBi0 heFK58QJ2qD3+nu0Zh0Ur6nU86pXatwo2GLlPdtIEoCryzfi68pKYy8jx2+RB6EzJ1XAcMgLF2N aqg0gdTLFSCJm4tH4iSmJ4czccZJA2Lg97m+0r9y/1r4EfZh8j14kSxexzSLoqZx543ppFgbOEq Cmu++RB2NPjdIC94y2+iTaaMoFV5h+knV7NUKn2Upx8yavo//SaOW3X23NNq4CrJnwSsGQWvapY YJ0Pn/GUDRNQ8GAQbZ73Us4AfCYQnJZAJ1yzGDqN3R+J/u2nt21OwChNtdKDYW3ktFmugjoAAZb DhQNrEpR+ZvZ/R7elMI5r7DrbjQjFh9xSE2eUeZzobmJmLWX/VnOAk4gb0RkFEKahRQzFdG0HNW sD4SQnKF2yrqaZsi6waoacqgSxdtNiduz4zj6dQx0= X-Received: by 2002:a17:903:8ce:b0:2c0:cb0e:ac3a with SMTP id d9443c01a7336-2c1e7f91985mr244243175ad.23.1781033086405; Tue, 09 Jun 2026 12:24:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v10 45/45] target/arm: Enable FEAT_F8F16MM for -cpu max Date: Tue, 9 Jun 2026 12:21:09 -0700 Message-ID: <20260609192110.752384-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260609192110.752384-1-richard.henderson@linaro.org> References: <20260609192110.752384-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=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: 1781033677903158500 Content-Type: text/plain; charset="utf-8" Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 3 files changed, 3 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 7864765ba0..4887a3a7b7 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -172,6 +172,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_gcs, ARM_HWCAP_A64_GCS); 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); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 15dafb9aee..15c1ece4b7 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1399,6 +1399,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8MM4, 1); /* FEAT_F8F16MM */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8MM8, 1); /* FEAT_F8F32MM */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP2, 1); /* FEAT_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index dcfb4f2073..64b2a87e1a 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -67,6 +67,7 @@ the following architecture extensions: - FEAT_EPAC (Enhanced pointer authentication) - FEAT_ETS2 (Enhanced Translation Synchronization) - FEAT_EVT (Enhanced Virtualization Traps) +- FEAT_F8F16MM (8-bit floating-point matrix multiply-accumulate to half-pr= ecision) - FEAT_F8F32MM (8-bit floating-point matrix multiply-accumulate to single-= precision) - FEAT_F32MM (Single-precision Matrix Multiplication) - FEAT_F64MM (Double-precision Matrix Multiplication) --=20 2.43.0