From nobody Mon Jun 8 06:38:58 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=1780457372; cv=none; d=zohomail.com; s=zohoarc; b=M3HnqzGem+vzs8vDWrCt+7x8O7oQTJLg2eb32iVNfoKCUKJjtDeOFhthfA3vbdlTsAoXdR/iyn9JReVINHcGcC+LDcym7+g1B5pt64K9Fu1S1he0rqhrHzTM563BEWQuwC8n6LcXNXDrTpL7xBXIvz5Kf3QFPEYAjILy06f/Enc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457372; 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=LCz/+vquVi3LZZj/w2HRkJcZNB7l8GXrNjqQYumcxd0=; b=gwli/P/WWG+ve4HFOEaMU4GvuugspsPOsPJR2+Oh5xxiRuXKVQAFpcX0e6Mwle74uUq5bY43Wrk5QDZiZpEWf5zYCreb6uzqBr6VblnmddVDMaCdl4SG87vPzxsWOz/Fg8SagrwmooBc+rtsYxYWh/bkKISbQHfmrVARm6LL4ZE= 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 1780457372064391.3349996175716; Tue, 2 Jun 2026 20:29:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcHw-0006Ww-5G; Tue, 02 Jun 2026 23:29:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcHu-0006VS-3Q for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:02 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHr-0003YL-2x for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:01 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-842319576d5so1742661b3a.1 for ; Tue, 02 Jun 2026 20:28:58 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.28.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:28:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457337; x=1781062137; 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=LCz/+vquVi3LZZj/w2HRkJcZNB7l8GXrNjqQYumcxd0=; b=RusUH4Ra+tflBATMFPut4WxZOV56LOQ3JmfXEOOX+8IGR8B8PsFPN7jUHmDUImnPuw soRbRkmGH4dL/+nAWVeFE4qYJ3raT9bYL8WxD82MuQ/E7UPeMtN/0D0jV3y2izX//Ojk cmMfYhs/nXKSxqgEnmLdz5ym2/loSaNADoiFoOaYq7I7uuUlR427S2J05ACyiMUzMNz5 tOw5JhiRiV9GPAA10DWZRkHfDTxU9c6wb7/0+lw1s6V8qnDRrhj6D8g6bSnPhqQW8WkK dRRRmjreT+sJzOiEkXNNZJHcJa7RzfKD7ggQPdUTtmPdyNa1DsIh+f4fgot1tw/mTfc3 6qmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457337; x=1781062137; 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=LCz/+vquVi3LZZj/w2HRkJcZNB7l8GXrNjqQYumcxd0=; b=DaYAG/ITWg2625Q6nCjQTDkDfjFj+JPGTFtTteq10N37H+ggeKKrBmioXgyrlJOcFY PpquzKEFHCv7nQ6sVHGwq8D34MVetExC8ZRnd2na/R7xlmEETGqzsY8e9UlqOvXI8ihV a3zsbLsP4S27TtK3BpV4UyP8toj8ENgcsPGLF6aPe9gPXfYE8nWp/cRPxl6Ih6MuBwOM R0s6Rmg4ibLwfZNNQ+Cn47q02Ac/NZ7Sf3oWlnLMUfdXXUUkmLyPIua4RSxOjverAY+F GJYrRi8gh5u/KvfLJycVPgGwCaVhwnheDSuuA4u5appw8ICdjDabIa4tGtiJ1qJWiTHj x5Nw== X-Gm-Message-State: AOJu0Yxmv9WQK6BtJOa+0qTaUUe0YiT5GdDe+8PXUNaqIq6xjYdlGyCT qoD9ziMhulqO6xf50a4OY1twC99thaGjPOURgDUmC2xnPxrDR0ksiay0KjjGyNwbnlg8US8gk5O VPHd1A3c= X-Gm-Gg: Acq92OFyJ6ajBVDai1mEgTVKWExu0jRoedNjRMGgWdTLu5sKmIbUSAE7pPSJUjHLJjh +fXGjSBeYeuOk4IDKTceuM9ADZCzf0SvNe2cCV8puSw9ZJ+2B0EanX+l5B+lDrBWYMZb8d+eSjk +a5PRZpCssIXyoj5KmTm0SqyiogF566NUAv7kjKvONHd7Fr4OIXHXhiuyyAPllALhpM0fQhTvEE MxGK+48ptOdQ1oAKFmWfLEvfQTphQZKNgtUJ7ltKwuLH7VZrk8zeydnmLcmDzuVTJ9AykhhmqSn f7Ncps4eBxcSuCZ2utBXVr3xJk7RK1wUdjrnT3oxw2mcAXSqb952zTbW42FY6m27vYK7/9qQHQ5 ZT6oMBNz+t+sjvKBNsU59xPGsNnf2Re9TuOA2dV18i96WT6qUagaVN1cxTpFUMpLe2WPYBiuS1G amj74oSJ/cV4IY9eoXgK6hOAPNE8am9Mluad3jMPxZ7VvhCFbsuA== X-Received: by 2002:a05:6a00:3c95:b0:842:80c5:c420 with SMTP id d2e1a72fcca58-84284f40b57mr1555696b3a.40.1780457337261; Tue, 02 Jun 2026 20:28:57 -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 v9 01/45] target/arm: Use FloatParts64 in bfdotadd_ebf Date: Tue, 2 Jun 2026 20:28:10 -0700 Message-ID: <20260603032855.106930-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457375268154100 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 | 77 +++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 37 deletions(-) diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index 91e98d28ae..85bcaac3d1 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,63 @@ 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(p1r.cls) | float_cmask(p1c.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); + FloatParts64 tmp =3D parts64_mul(&p1r, &p2r, fpst); + tmp =3D parts64_muladd(&p1c, &p2c, &tmp, 0, fpst); =20 - /* This conversion is exact, because we've already rounded. */ - t32 =3D float64_to_float32(t64, fpst); + t32 =3D float32_round_pack_canonical(&tmp, fpst); } =20 /* The final accumulation step is not fused. */ --=20 2.43.0 From nobody Mon Jun 8 06:38:58 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=1780457410; cv=none; d=zohomail.com; s=zohoarc; b=FvGnUH8ho4DgwBHSEaDOb+Fkx0Tkhw1Rn16IzQkwpOnuZl9PgHkWSLVj+exScf0/oKoQTBV4xGmVRCdJ+5NJiv2uPQ/1j/c0CUJjb1sQIkt0fG+1/iwPU08bKC5/FhEcZ9g8frTPG0OcLBKxujy0pVLhQEcahIPlf+e4iCBsvDU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457410; 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=IPjh/wf60Pk8W7I0O19uFjyCwV7VnfHu8xmigMy2yGc=; b=nD44Qg6Cpq8u2NcQWCh2KNPTNCx3AmvtNmS3hoKvwuvukp/3H/R/u0zpsw4Ad3SRKYI3qur+s5EZcv+lgqRvROK8ITUlJWRSPBNyfV9HHFtb5xNtNKtwFvOSnMHE0HSXkUir9S6tXGE2aHEDbUw7LPuLBgbMeAT4b4jsAh4ljtg= 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 1780457410407650.1648807229363; Tue, 2 Jun 2026 20:30:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcHw-0006Xc-K0; Tue, 02 Jun 2026 23:29:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcHu-0006Vp-Lr for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:02 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHr-0003YT-Ho for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:02 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-8423f1d8902so1266234b3a.1 for ; Tue, 02 Jun 2026 20:28:59 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.28.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:28:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457338; x=1781062138; 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=IPjh/wf60Pk8W7I0O19uFjyCwV7VnfHu8xmigMy2yGc=; b=ggX5UxLl2RB1x8FYpXQHd46a3igUVXEpMzbOKP5fTBL8R9hoBaGtKrl2jCjRodMzPk LsszxHjkNZyJphYHbS5Ei36r7kxk5K6nfYoDtzYQZ84FAp2m6q6CYBw5igi9bYTBruE7 H/U46v6oYWIPubR7sNg6UQVXsjcBggNJi+ygwCKoyDOXhpBjwdFc2WMa7wkQAM4AnQTz hJO3qarlRR/NnRgQhzTxvEo1SJOK5pLdUVtkUg8HxHECeZpmiBjFmlgSDqSfwgCCtoSp iIi6Ys7DWD/SGmceqOSyTS7dU5ek88AItGnYpZTyNq7pXKR+OVch4fpyLn73wM6HnHkC qntQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457338; x=1781062138; 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=IPjh/wf60Pk8W7I0O19uFjyCwV7VnfHu8xmigMy2yGc=; b=KLg1z/TkimFrQsQEstYK871n8zdWsK9hPXNsFqs7tm7cXVb0wdWdcDCkADa/qPGUnR ii7tshViWKseFeZoV0sS8RNe5rHYtzSiWCteua0FFSKg2EHGrMd42hDHdXA8HkjqWGVB zitz0yBCIG2Emz5VLT5diXeNPx45MCmEOP3+vR0XJWvL/nSMZ75o1jW5fRpfjGmgi8nE 8w3CgoZJMWYu22VvwP/3VzGas8uXz+LHSu/GTFuW2m9yJFIpbXC8hq+ItpKhZaWGoL35 rxg8T1WRrfugm2ocxsxAA915Gzu4j1Z5UVXlfWrck2/nTm3yXGAkBuqAqb5TPWat7ICy VpFQ== X-Gm-Message-State: AOJu0YzgvHvYi6UYsPEHLWAouk32CrwmJl0SzfIVdtQWOxah7YgA+p4i 2U5CmJCetpepQdG5DsGq2XCipqjZZCNa/aCaqtaAlclWhzVtrIvzgbDu5FPfQ2DcY8TXb+JBWWQ +ANt+bFg= X-Gm-Gg: Acq92OHdOOd156J02TNGBwdZ6wLFAW1zOEKp6u0LC6bXdboLaTajMdGFsFohMLujn7X Y4jrM+PQ0Doz/6YtcaFO3qD5XpV6RQAv0NA4FCu2Bc0KlWPX1uEJAsgb6f1urlvUebIYqOfhovf RAh77NHo2t+vzmOyy6/n4xppiTugD9QvBVr3zWgIzUQx/c9NYSs1OPbJoxnsAJfcVUwo7Hba/nT 5V7+PmtdrWdPmWdyTZ+xRD+rtM47tS9IQAVmaGpGlgCRMKPMyR08JZySze8T0RoSb/78qf7aKss p1pCr8HBFOSEZdcXnIZ4ZS1NnRCD8ouQ4gX170Nr/Fy2/QVTVwoenjCQkN1S1Hjy/A7OmdAFLKb 9X2u+dP3QSlpZqm3NLvrO4JGA75Vj2UhUIRtMfUpsrFCflcP51CkV2lgqfy5WDCWXISMBzIpsXD ihgcg31PUwMcwrehAW4ND7a1hNLmxEU6kuHxZWK74= X-Received: by 2002:a05:6a00:94e3:b0:842:68d3:e29f with SMTP id d2e1a72fcca58-84284e3637amr1604595b3a.3.1780457337889; Tue, 02 Jun 2026 20:28:57 -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 v9 02/45] target/arm: Drop oddstatus from is_ebf and bfdotadd_ebf Date: Tue, 2 Jun 2026 20:28:11 -0700 Message-ID: <20260603032855.106930-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457411952158500 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 85bcaac3d1..3231bb2100 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; @@ -2965,11 +2960,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) { @@ -2988,14 +2983,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 { @@ -3022,17 +3017,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 { @@ -3055,9 +3049,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 @@ -3069,20 +3063,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 Mon Jun 8 06:38:58 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=1780457373; cv=none; d=zohomail.com; s=zohoarc; b=WnNsxnQyscGlIRV5SBGwD0jgQYZCf/XhKE9QpWyhh75mxeITWuZ0tPBu3zA8JWBxZt4NsbIXlpn5M3c3JSYNL+wtruD6BDl/bkSXSySsEhQBMdQY3oyuFtxqojYDaRyBSk89vIULpoEgi3YO8pWCIxEWdxHnO60uGROk6L3gRGw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457373; 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=XnHZ+nEpukpWPUUwLfP9AosNPmDCcPpXNXXvSw3CTQU=; b=c0IPssD80zlvl7X1RGcBpHwrfV3EEF3genJzILneuq4my/nRsTnS47wJgSqyTOF6hlp937mElc6l4LBbb7EJAB4uFaWZLw2ynfk38p+NlIL7Odt4/JZhuLlGoEGsSWnMSP1Mcyplg+oP8ki34hNH858m/vrfpDQ/nKEYz7GukI4= 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 1780457373307923.2486834860126; Tue, 2 Jun 2026 20: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 1wUcHw-0006XK-CQ; Tue, 02 Jun 2026 23:29:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcHu-0006Vc-JB for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:02 -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 1wUcHs-0003Z1-EA for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:02 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2c0c2c7e0c5so22836775ad.1 for ; Tue, 02 Jun 2026 20:29:00 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.28.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:28:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457339; x=1781062139; 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=XnHZ+nEpukpWPUUwLfP9AosNPmDCcPpXNXXvSw3CTQU=; b=Q8Ia4fyI3TnHzkXACNDAzSbMyq6uq//pWV81Rt4vd3f85iszJUl48rW8kpNldc7/Ej 31Ap8DlzlST0LpjkBJPYN/kdFUxSQ6LIWlUO3OhdCrY1YPi3WcGDALUZVX2ja209WzMK RkG6gVZMNYi5jl1F52VK4ATWSMOda38H4+YgniRe30yUgDDXu6dS6uzh6+eZJiUg9OSS uC49VAHffa8X0mCTXnvLuyXXpbRefiXkDHNiJuOdFpdKi8jMuFYWMzmnQM663FeiuzwH 50B7jAonVqObxQZFeJ4CWiMhVC1mwX/rBZMmc1aEi7A8+CPG1+Gpy7EBQvodmxygOrb2 ObcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457339; x=1781062139; 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=XnHZ+nEpukpWPUUwLfP9AosNPmDCcPpXNXXvSw3CTQU=; b=gywpyzTITKi0om9wCEHF7WrUGSN8j0meo85REDVkeji8EtLaru9SqNVutelghumn4I zVCJnBgdFwJoBKxcT7IskHRlBZ7x6jprJiIl7qHlM2GaPTQKPnoCja38kwvKYj82zaYk oPuBt57cewA7qCzS1nmols6VyTBgABynVEpI0cardrUs5ybtyDNccRolZKY+e9GWM0f5 UujuJ8Ov7mwlH9thu16PrXQuC+FR97ceV8Uf1czsvPheyLZu5JnOA8Wka9Gk4qI1BGvJ dNEVgbf+gfs5oRfIsWG/XYvNso/iq3Na+sKNVrrPfc0wkBa29JsZtm+s2MgU3rfRQlOt beYw== X-Gm-Message-State: AOJu0YyVE2CIPn9Ms1F+59EeE3iKk/mNK2PRrFg0ZSyimZyL+I3mNeFC k3T8zAW0v+8d3YdPSZQMf0W3hoSkY2msgF21pzJEtaE+dBFN+goVwxyHKOxuxdozHVzI9N+0McR kFu2A6oo= X-Gm-Gg: Acq92OECiTflLVKN9S+ML2EMiK+/nYA2zq5TzpFirflQFWkQBg3AGtOi7bzIiCgonwT GPmOGhdT38o1lSVALhou4oV1axqn1SoBuSSFhq+HvulNrBykrs7njsbK8I5Wv7A2ab2eZpYo1+j wX8fDsZSnRG7mUbtOKnwY+ZyC6NwRRdneTi+PI+1JPWuRW7eLytjvjpEC2JW+J98nHrpn+M/Mhj 6qCbBf4kAduNlfhPiImfbhAwdKvyCZVjsmzQLSKHRXTnN2OwGJGLBhLCsPVFaplde/eNeoLghhq 1D+FZGT5AInft8CzVw9yRg0ZB4DlJz9B9zK13HjSBvNJ10XgPN1euwA0jhUQwu966JekCI8rQVm YZmKUyDEWlFPrIjmDQyVZPpc56FUFeYHP/MawUb4vImKepxbtygdPoT/aT3tuLsNEIr8UC+v3DD vt+MiXE/+i6AnC/UgVIQZQxtNpiGApwU58tvefdKU= X-Received: by 2002:a05:6a21:2212:b0:3b3:1951:489b with SMTP id adf61e73a8af0-3b497a4662dmr1795086637.45.1780457338688; Tue, 02 Jun 2026 20:28:58 -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 v9 03/45] target/arm: Use FloatParts64 in f16_dotadd Date: Tue, 2 Jun 2026 20:28:12 -0700 Message-ID: <20260603032855.106930-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::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: 1780457375979158500 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 | 96 ++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 56 deletions(-) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 376fbd48d4..7ef6f5d71b 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,49 @@ 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(p1r.cls) | float_cmask(p1c.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); + FloatParts64 tmp =3D parts64_mul(&p1r, &p2r, s_std); + tmp =3D parts64_muladd(&p1c, &p2c, &tmp, 0, s_std); =20 - /* This conversion is exact, because we've already rounded. */ - t32 =3D float64_to_float32(t64, s_std); + t32 =3D float32_round_pack_canonical(&tmp, s_std); } =20 /* The final accumulation step is not fused. */ @@ -1293,9 +1292,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 +1315,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 +1352,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 +1371,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 +1391,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 Mon Jun 8 06:38:58 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=1780457604; cv=none; d=zohomail.com; s=zohoarc; b=f2zIkptpnlEfgwGwHJ5EZLirfVAKK1Z92jZegh9t80MuhnSBf0AUhQS9aKWayLC+GLjAXaRsfT9LKiC96syGiDwjae0Yu7AdD76rscq1d91KxkdXuROOO8hbIKS0f8ixS1ocKdOkuJelgbr70f2OgBWs3X51gy3GSRe40H3mulM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457604; 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=MDSEo7AlNyR3UZ/e5Dc4qcTeFTg+nzJ1GWgJ7fB21G8=; b=cbCoDLsHtOAGAv/fCr4PcclOWgCv3+Bx08BFQDsCm+L9kLy0e5/rUpY5DGfa0jQ/6BuoDEm2whw4GGVDmJ6CyqA90My7HCtqq2Cpip0MaGw5SJ6yM6fL/mLPXc/dvhK3ceFXSvnFWH3DojEuFriTfvCZnkYU2NzhopeaJpWItHg= 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 1780457604055820.5194560227238; Tue, 2 Jun 2026 20:33:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcHy-0006Z5-1U; Tue, 02 Jun 2026 23:29:06 -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 1wUcHw-0006Wp-02 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:04 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHt-0003Z9-5a for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:03 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-84226d0f1d2so2595318b3a.1 for ; Tue, 02 Jun 2026 20:29:00 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.28.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:28:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457340; x=1781062140; 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=MDSEo7AlNyR3UZ/e5Dc4qcTeFTg+nzJ1GWgJ7fB21G8=; b=YS4K0TBdPX3Phix7YnFBcW3kKGv2ymMi4w6uiQOi1Ud2xkAsBWJqFcDjRXQ4OoJXu0 AVt1NSHj+Xi1zVTU7Wtplq1xB8gvRqyPzRq4laNU3GuyM7snFb3aJdLrerjThufuL1kG EW841BCLbn10/FDqRpBzpnzFD3mlklf4/8iRRppgJcObIrC08y6Ufi6s2YyHo2G+wLVv W40723gFunutSZPSYZpIJ6lB/xSunTBsU1CY/2JD6h1826Rhpr+gkd76sj16htJ+oEGg O1UwuXpzfWBPHYwbDJOY7Jd29H4fPAji2lmCL2a3jVCA9z9hsMM5AOelMcVb1icdoCCu Q/dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457340; x=1781062140; 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=MDSEo7AlNyR3UZ/e5Dc4qcTeFTg+nzJ1GWgJ7fB21G8=; b=RbxnsWLX2ECXcPUu9TD02uB5FvVTT/ONnQRswrQPMlE1ypc7XDWh4QQUDwIUGMjop5 cwwoWC0Fxu0ny2CVDqjYm+1DLJDjUVIAJgTYMJF+8pGQdkpz9EG9S3zZusyzuP4RZX14 gvKiHsmWwyg4nxtJWxMKxbJ33NyU4z0el2MRopmc/p7XSnmAkxD4zTC3dp9yoGqFlBLC HvdILjetHt/u3uAgSOtxUEOZW4PDaqxbsoqeaHeE0HZJJQ7MiOs5/h1pZo8324aXo46t +R+1kUGraAYIJYcWH3WvdhsIKlDp1mXr+sH7l4GyH6bKqhmRNnqS020yT9pB5iFnGk0R bdjw== X-Gm-Message-State: AOJu0Yx3i44lsilD3HdcgIP7Em3HFNIPb92mdQ54x10cB2C3D7dcRnXo hqwzDTWaVSEzbyh1g9Akw/mkaPmcRdEy1G0GPJReF/nF1nB8eWE9hTBPjiszGUxkivkJLYrxbcM qJNvkkzc= X-Gm-Gg: Acq92OGRtRqtANhXWztfiNWgRf9QDZMyTlBDVn85t82/rFq96DxNLOA/tkL59BzZtMb 8SENnfjvbiPtXxwQFpVb/yyGrs1xd096ZiJh/ck3l/+HY3yI5s40HlgiT+OycYpZlucjoc2JWzs Ly1PzwY5CP/6sLD4A+SOYQSfUe2NijYR2GKHMK70NGlgxg5/0oAzp4BzlLJ0hpctem9H16fRAhj d0FS0t0u+8MifJN90ygkR4q4mDx0OhHBaP/VEluTIxUoz78S+UZX95l/CqKvf+UlXkK2TaMIQUq gXFbB3NGcJHdM5W5u76ncAOzAGtiC0A2wvOKzZ8HujDoxflJhOHqNFgH9GU1z+1JJBM1V8Crv7F nxYnE62p2Mv7kZtojRt6LLVm56ZouSEaYHFl5J7OSZdD86ZPZBV17u2CwAX6NeydpfuRaPwZYjH eT+VnlK1bclX1kHCghvgF4lBnCvLuk0qSZTlSexHQ= X-Received: by 2002:a05:6a00:883:b0:842:6ec3:2352 with SMTP id d2e1a72fcca58-84284dc02cfmr1568185b3a.18.1780457339462; Tue, 02 Jun 2026 20:28:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 04/45] target/arm: Generalize TRANS_FEAT_STREAMING_SME2 Date: Tue, 2 Jun 2026 20:28:13 -0700 Message-ID: <20260603032855.106930-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457604779158500 Content-Type: text/plain; charset="utf-8" Rename to TRANS_FEAT_STREAMING_IF and add a new parameter. 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 Mon Jun 8 06:38:58 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=1780457566; cv=none; d=zohomail.com; s=zohoarc; b=mO8/o7XoCJfeDLT1fCmiPrbuPWtnRmT2/JQyKcxMpAQTwzSKqtlp4Ac1AmQJDIdMiDN28uuk8ohRRqwzBTR5hX+1+uimodurX8ACK3mwoOptECqJkEt7KooPqAx1ls0VBKnYUP6/hqUgMfxywt5WrrEuACNLsvLibjAxtB3mS50= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457566; 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=dfTQIO3Td5ZnJtjFXmscxPDzamgvs+aWLTRE3ZdC8D8=; b=cB7Lg3GLHYh2EW9+9rbKctZ1HJgEBcZfxxqO+GWsNnz7NpKPRj0R+5TDRF4ADU3i7pU7iYIP9jvCgabMst6tAsBX3Nl7RchvuGj0Lr7Juo5caXuRSfhTx+0nmEuLu9THxK5kNQQeUjhYpJor4SwERIbj3xryaCEqaQ0sZQL0j7o= 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 1780457565992353.26636110668676; Tue, 2 Jun 2026 20:32:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcHy-0006Za-E5; Tue, 02 Jun 2026 23:29:06 -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 1wUcHx-0006YH-2K for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:05 -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 1wUcHt-0003ZY-Qz for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:04 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2c0bd02d97eso38274005ad.2 for ; Tue, 02 Jun 2026 20:29:01 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.28.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:28:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457340; x=1781062140; 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=dfTQIO3Td5ZnJtjFXmscxPDzamgvs+aWLTRE3ZdC8D8=; b=KOHXU8EXWvAODbPmDi4fBWyf+2eyOLmQVp8+JwmffPyyOjxnxnBuLMAbWXHjrMVTsu 13Zy85KHrvxaW3227MMsPHQgs58vjYE0kJOtIW7yrd+SloJatZ5rWY1mnSvR34umyKgQ uuVj1VyHud/H6Pzo0vDPL5KgdWFrWuKrETuXrE/hFTIVtJ+G6zKCutatBcrNe2k5VXtb walykXcKc+hP+c9cpOcClqjHOuq/z2suBYpnWBSH1HFVk+lCiI+Q31p2PVTvUoFuOw7o OmOnAn+CjKHQ7ptEgOyCVZBeUdIP16auWdCYJJ/BrXswAPIC5IcJUwQl9QXD1cz6TqlP f6gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457340; x=1781062140; 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=dfTQIO3Td5ZnJtjFXmscxPDzamgvs+aWLTRE3ZdC8D8=; b=XC+tOSQAYzaReMGTnrKE6lI9HhXzD38fuTR7l7vWzaeQqTBVNTLP+awxsSfc67iBBK 2FlK3ZSuKbNTD9Bht4+Bg1Uth0wRcOsx3KIrLOmE/EhtKVxSUBqP5qh9rqmWMSKXFTbI Lhhz/B1fzjYvHXDxlTv+GMslZHj6OCGZxiebtP17EWNN0igjmVFv/8J5Png1RDpJYO99 hrVRdOsiTOeSXYR51c+/QxKNNfqgU/XTsXovSwbo852iYnff63wRvu6iP+Fx/25zsjj2 QkyYSVMJGdxDV+7uwLINpeAc3P7G/8H7INTIAfP8rfpyHeVbnpccd9DwGrGr9O7Bmm0V R/Gw== X-Gm-Message-State: AOJu0YxlcSZbEKiKpycT5gmQV16pDpnZcnTOx7hFBo0NoC4gKkVjHv5h VFPmgUNqUBgt3yM+aaYXwWddK3f6eiYUzq+U+xZ1DELc5kFbimAq9zPVRJkcPRH9aVtBCE8Z2fe To6TLAEQ= X-Gm-Gg: Acq92OHOL8Yg+k0a/WJKPFUnisABP7ZSD9/d2Bd3Z+47k8U8E//v0DxHq0K9CZSUMGE QzaU+BWOszX4mp8v2mRM1rlhk3JokN7X9CcBNt76ceRrnHw0Ke3f0FggAEWYBs6YAthwU5T1GyB CMFgHXf3qnavKBmaDXfeG+oFeBwac4EcN6FzasIi6S9IckK7cR6IgN1u1JHt51uhFpS1tkBBxbN guLeNnLQdi364sATPDR95drJY7peRx/kTAlun/91H+wHB0rWYUPcgTjtg2SHBzGS/wUAcAn/Ybg V611UD3ywFMgYd23NIKgwLnGohW2GHY5vWepLCahblHJbYGnARE7tet8uZqcBN3RQdOjM+jTWD3 e2Xf7XLNQjG3eBUpDLfkrXYWYFwEk08yrYI3Q6vr/F3MLH1wTwO4FfQskqby3n6WuIRJPEO9sTF Y4cTCFJcWjlv5cmZN9Yj/rtl6zOkcNQzTuBBUwRhE= X-Received: by 2002:a05:6a21:685:b0:3a2:f402:50fb with SMTP id adf61e73a8af0-3b49790c257mr1772805637.34.1780457340303; Tue, 02 Jun 2026 20:29:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 05/45] target/arm: Introduce arm_init_fp_status Date: Tue, 2 Jun 2026 20:28:14 -0700 Message-ID: <20260603032855.106930-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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: 1780457566630158500 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. 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 Mon Jun 8 06:38:58 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=1780457372; cv=none; d=zohomail.com; s=zohoarc; b=e2m0UKwZ5J07E38LLEccZlGOvf2H6u99I51ogu+hQw8tlY7iH5oViECA4hwbOjLNm2bcGJ8BoYyKUX2M66pLztdXtNu0BuRdWT4bfGftzaSEhoRzXApwAj81wExfQwKMIBL3++T0UcBe9TnzU4SmUt6nGnoCfnD34d3DXFqBE/o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457372; 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=mMKShQuAK58R/9FBdHpTIimQtn7JKRLF6OWG4SPVFxo=; b=Cq2830ERfXiZl6lJn+q7GIFSJ6q0QKdEnA0kETZ5Kbz/pr8oGcBy/ckr27+pr5rzga8pB2KvXxsmeiXS4lHP8pdr8a34wofw//jA77lcOIuqqoLdGz+NhQVT2HaCc92K2s7wfGKKLthnj/UXT7sdzo3eEKv3EqfEctYGjgYDGmc= 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 1780457372177917.5898988907668; Tue, 2 Jun 2026 20:29:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcHz-0006ay-4O; Tue, 02 Jun 2026 23:29: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 1wUcHx-0006YI-1u for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:05 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHu-0003Zq-GN for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:04 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-84229481d44so1475882b3a.0 for ; Tue, 02 Jun 2026 20:29:02 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457341; x=1781062141; 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=mMKShQuAK58R/9FBdHpTIimQtn7JKRLF6OWG4SPVFxo=; b=nd6EHwYgj6PB91jgfGy8LjqxZjAloIlFVQv9iwuVrPVPUA0g83vN3+vbFwSsyOBDNf i/RKHw9cwPVD5Yv1gX8vqEbRD2Qs8XfpCDOiYi6MeKsjKMtQzWSOIvbbY2T29utsU6L9 GDulvKhcjtaM/bqrQBlA97ExI+cJZTFZIhF5QBfidatE+wVtJnA/Ib9KO7NOxf5aAAYG 7h+GfgAPOXTwHuYZ9XNpPaY8AvIOdgZ/S9QJ+J654bpI9y3WmxDgPi94/d2JRZYZsF72 CDnjGtlgFQkfUCrquWNZJx7jc9X6h++9XalXcca+SIKn/GE1WMCnbwxU7Rou4rXQYtxb gtDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457341; x=1781062141; 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=mMKShQuAK58R/9FBdHpTIimQtn7JKRLF6OWG4SPVFxo=; b=C6taLkNwYy9LehEiqMrCxAKdmFIDNhB2zVfMJ/Nhnx1GeGm0MQM8GFW05Uai34fP32 PRK7gZwVFQtpRkbv8nMA3uNiej/JqtQ0QNZz2vYCCgMs19gHckEz9frjWV4mQI9LIszo PxD3CJ0uTr2S7nKnw86yU2Rxjnc78lOZ5pquJt57M9NOq22y176hkY8xc3AEwBy5ZfDr 286GwDe9KDZKAPFstMVUD7nI9DBs/dMwPV9SAkv77AasH0+lVKxhFdhFHzu7TBeC1uTA d83++kqfOsuKeRnPmCZortySe7sNFyoK4HlgPQqjfxTDG3haWD7huoC8j3qWzQi/vHJK P/Uw== X-Gm-Message-State: AOJu0Yw27Pkqh+wQt3RO+j2NQcAPa+EYnXvfIIHfS3VPFYuX0ldSKXZm fNDD7mSa9B7lBV7OElxFdJRZ5j5KuCFTPFItLBFVxR1MV9a4bJ8I6v8upRY+CK1HXHQMYDETQt0 Gh7U4VR0= X-Gm-Gg: Acq92OE5xJZRKxTrRDcv/g9fTGU6QgO7aRs8YE5+bcu0WOD63myY4v0D6bKY6fP1TvW LAN2l75IJjVUqH5JcGSxYMFS2Les3Vd6gMvhZ9J2UIULBEHg/DTqGrm6FeZh94bSDzv2z+PSmp1 iZWOUq+V5JR3mlSZ0SKMXguZON6Nh6omwKLZ3w6o1khuwmq1mncq2z/lmFthrdyAs5mE4bV+/Wj a+pfZFz6OcdqaT3OQIuhCe/ZvUJFVFhOGaYtcGeFJgy48wRMLXyJ4Xx5L1LETc/GIuNmqRnaaS7 YmtbP4IU3LSuH1PPwV+n9FB8YCWpSYFflCStHLeU93grYm9zvqPt0M7ZF+M0+ZjtbfzBU/DNXU6 dn4TQIMiQ5bZ6EvHDYIlCxSzttJykWNsdDL4lFgobGjWy9QmF7SEqFWj+5ACMTP7JfnIYIIEf4p OF/4YZ2MDphch0zv3a0wKlt+S52Tr4NXikmSFIqpg= X-Received: by 2002:a05:6a00:32cb:b0:82f:559d:ece3 with SMTP id d2e1a72fcca58-84284e83f69mr1630073b3a.15.1780457340973; Tue, 02 Jun 2026 20:29:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 06/45] target/arm: Set e4m3_nan_is_snan Date: Tue, 2 Jun 2026 20:28:15 -0700 Message-ID: <20260603032855.106930-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457375156154101 Content-Type: text/plain; charset="utf-8" The unique e4m3 nan encoding is SNaN for Arm. 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 Mon Jun 8 06:38:58 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=1780457589; cv=none; d=zohomail.com; s=zohoarc; b=mpvo2lSLLMDC3VwwynDqXjF/LryhB9ui7xsPm4+byj2c6aHOW0uX6QMPaJuXQwr62XZZCx0s8A7N+1JBkG6fRUROQ/TYzvIPQ/EY49jSYRsZDxrFp/ND5OHlaQIL17ac9wxnYaAFadQK3T/uyu31MzYox+/Lo+nllf2Y2N1Rtmw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457589; 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=PUacJajgKMmKHA4nFhO1IdjIAjecsq4KVxeIlwBFj+FEcScqR/JUNV/92sSyskd94TzSoRFWzt+02mXTzPiGiO7Vpoic/qprX06Y0QMLUZRACCZstae+ncyERsqAiui9gIm3aFitEbn5otachuMOcEiON8PeSJokWlZm37S0ygI= 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 1780457589677186.15760685031796; Tue, 2 Jun 2026 20:33:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcI1-0006dR-5t; Tue, 02 Jun 2026 23:29:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcHy-0006aA-M0 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:06 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHv-0003aC-HO for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:06 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-8423f52af13so2133280b3a.2 for ; Tue, 02 Jun 2026 20:29:03 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457342; x=1781062142; 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=Rmu4TCpyyHAa2HTjoerYbnDt1bCgFBvo19tnZyN1FQ1smOSjpliz7qgaUqggRKXMOx 6BaYVGcVyQ/voGp3UfbxLv6LbdsEFCwXYJ4LSk4/1DyqCFcd4gZbp+Vmmdf07MzQIXFj SXS2E2EeT8l22cDm+rn9LjJudQUvnabyDx2NNiLuDjgiTYzBdTFXRiODZaVrPNdu4L44 RXAYLIygb86jsnHOJ4Qr708guN6evjH6AXI+8HBBn5ayoiXlggbyqYzxv+Vv6i66lIwN 3deir0Jm7aYnHdzOg4NNJZiN0nVujI8v7yZG6hdrlgutM3qqepZpTgfmMpwQjdYIq27S BHag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457342; x=1781062142; 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=acg4Aqoanc17/O8gzgNNKBdKY6o+6cv/nbwOCCCl77IOYncApHTzheh3YlYlwWiLjd jKt0ohO3dFCX7cIOYzgo5SyKs4L7j9KVGc7fsw7NTo/goYTVSC10p2SdzNlrfjtO/vIl Zo5LB+denfZ8DcAXFq3mlHDL4Uwuslx+ESICNcGX1vuMsapIP93AqfHyvmP3lt0mhQ4r sYiOZ+qYyHARPxyAF+NnLAFvS2d1j5vNPaiVyLWehCzBp861NXuQfW/DrX1tNDCeZbxO 24r6NRoYQMRDz5FgJeUbLhavFc/h++ayPE8Q1ifhqYFMyajVf7Jj4RD5WjtT4D5LWI1/ Q7OQ== X-Gm-Message-State: AOJu0Yx8BpDpgQVSBw7pxH//EguUeP47MwD1JUJxlBdIef2xmxXFCuHW ijikrTk+X4HZ6eOtNG7WtJuZ0wxrSWKvT7s0aDd06hhd0viTurgMhYTunZWKEARR0IlR1d2RoAn t9o1O5as= X-Gm-Gg: Acq92OGgG3O4i1V2WbRu4cmxZ8dq8RsIwsO3XNw8RNvL90ohYLcXDezYz5rSbPDVlYv EguBDF8uxgkbaeNU5ASFA0Ft+ux04vi1scl618CIq5gkRkKaLR8jOPf67fEEvYkdrQpPyIqrguZ Ef6MiE9ptK8o8jAxRdm8YByD9Di0Y9vs6EbNrYkAugw8oRRtFNRKkxA85ZA67agWXfc3hGQc0aQ 4A3vzquQJOA2PjYx2ZhN1AqFjjO6qWm7TO2Vp/01DflOSM8/pD+dqwaFPk+3ec3DAOUKVEReBD9 tTE2CffycGtvV6sdXNd/Mi3cLcV+2fNKoNYwoflhk/PnO1qV4z9xWUcQAeePXmPk6FwhSqifY/x kbIFjd6A2JEmyl3c3BWUeUFBihXvRZJGjctMcODJmffy+vGglofHHIE8+yVZz+KBIQE/+y+oLSR B7yPrRQnnH98Sa0PSDAuuz9Ru3M1BgsWPATNsIM8Q= X-Received: by 2002:a05:6a00:14d0:b0:842:6482:aeb with SMTP id d2e1a72fcca58-84284da59fdmr1747943b3a.12.1780457341777; Tue, 02 Jun 2026 20:29:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v9 07/45] target/arm: Implement BF1CVTL, BF1CVTL2, BF2CVTL, BF2CVTL2 for AdvSIMD Date: Tue, 2 Jun 2026 20:28:16 -0700 Message-ID: <20260603032855.106930-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457590884158500 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 Mon Jun 8 06:38:58 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=1780457361; cv=none; d=zohomail.com; s=zohoarc; b=hA1ER5RckqUBdGBZubaLW0ciyJF9FhbUEsdxyhGUobWdhyesXHFijXpHKW+OSnLe5bQukaY9GLPE9kj2gUYPhx3PDPme4PGopPIrzsr4BTMYll75dDi7p3Q3h1dRf3dl8E79zsT6a8L0NTxvgdJyOhhk6ITStFKR31xW1rPchM8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457361; 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=IXfrSAF0dFwMmtIquO8hfQnhP5ZcTSkl7USJN3kdxu4=; b=f+TmCKSCK3LkJJVhXf9EmcQwyOsxzP1oZYuhN8rN5CApE1uxat+lFw9+ujEPLHSpAtR9TUb+6PUpESDcol/g8qQylfBrRIUaan1MNsemSY+FWnyWseO6YPxdol5LVQltAsmMAPdsH1GjOhuNzpcYfJ/420sKf13nCuxwqYUvV2M= 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 1780457360964699.8289781086446; Tue, 2 Jun 2026 20:29:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcHz-0006bO-LN; Tue, 02 Jun 2026 23:29: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 1wUcHy-0006Zz-Ka for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:06 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHw-0003aV-2u for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:06 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-8423efad617so1562545b3a.0 for ; Tue, 02 Jun 2026 20:29:03 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457342; x=1781062142; 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=IXfrSAF0dFwMmtIquO8hfQnhP5ZcTSkl7USJN3kdxu4=; b=etnrZI9QXkTyPdMJcaWrjn+iU8kpkOlWxrUAoVhUGN6te9gibfUNHohPZm8VCzSh5I PS0ljnxYZH2LZiYx8+3vIjvLcvobtb2rtOaLpr1NFXIq4DOyW19b3plfjlhyAdxPMfDZ 5QZUPpLcTAWDUcTapbheegYmasEEi8R8Nw8UcrshyWpNIep7Vhpz7xhNzHsVTWRuhTlN Z8mxAI5ZsxaivM9HKE+T9hxo0SvhSE6qQbRTf7gu8Qld3AbkZ/QYsKapxLHgoX5Wbakc xSme/s7dg8OlsBX2srqVIzkXGc7fFHFgQTS5ZIv3ret0v3ISe9zZIJdAGsQGNOcQ6VXW Szrg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457342; x=1781062142; 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=IXfrSAF0dFwMmtIquO8hfQnhP5ZcTSkl7USJN3kdxu4=; b=lvK+LJ00+n9pRWPK/GQ8wKSWscIzsoqXprGz7mmHzwI9Fe0BPPWvk3ldwrhBUkZqkL 56Iesl4ZsmkQjmqX0++veolB/B9I9I40eHjgZj3/lI/9c0qBKDjTTtBychsI+pPXwbAo iaHCUt6wNdmPWqU/b0QTJsNHbk7rP9vRgVkC3Is0jCKJYCcroWGU4JLct/E508yZhGNu dAWAFo6tOEDs12br8zglQ+rZ/dNGJQ1AqyKUSJh1FOA7lQUIa+ODe3HXJAwetSD7fH+m Dwuz/9x4DcahdEY147ns6Va6gkdTAE4Nii4HUj+OUvMmwwYXU4TjwM/GOzmwYkIxptqL TDMg== X-Gm-Message-State: AOJu0YzJeMMo3/9tX537VlVvBQfM1aPa+9WUmy8FbcEqpfGiutk1TOSs hUlJ5zvkerKwfovmSWg6JFzgaH20N8bfmGNljCchefMp1EqihN8uVQjBymfqkq/I30JFHgrW+1O mHSSOLo0= X-Gm-Gg: Acq92OHP+TpMas5oRy3S9B1rvT+okvGmxROElwl5VJGMB3nRmVdLEYuoVg/WbVnqQwz 83cBVUNaXU2zSmErQG3bZiULkFB83mV8jb4UxMeWr+R1ODBC/I+Ud5aYNU/cRX8ln/4FUKs95ga 5fH5lCaGHhWi9fA9am8bWniSAB8lSp6sXFDI40rzUCr8ZVl+ep52IYbrfsoVz5YquFu9ms6Qp5W rO7gCcE1Bwuk/swL1EWhXsrnTuVLG+Zxu6/x63g+EzZLlbiaD7Zll0jNnsPl9pDIjIfDFb9z7Cx cK3pM28gqU9DqEd5b+0Ze6RUZPUv+IovlUJDaydMQVBPK3vCWGmwyWtsWOlQ2HDkfgcz76JN8lp PXcFyJC8S1I/UEwOiterWtu2Kqxsa+wldvbnFWQJDrOnK5FqdiUCyUFVO5J707pYECdy0wWtjde S2xj6TCRy4jGigFJef77xuQtI1qnCuOlyV32xaBWw= X-Received: by 2002:a05:6a00:bb01:b0:842:6004:3fd9 with SMTP id d2e1a72fcca58-84284e95621mr1554347b3a.29.1780457342338; Tue, 02 Jun 2026 20:29:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 08/45] target/arm: Implement BF1CVT, BF1CVTLT, BF2CVT, BF2CVTLT for SVE Date: Tue, 2 Jun 2026 20:28:17 -0700 Message-ID: <20260603032855.106930-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457363486154100 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457537; cv=none; d=zohomail.com; s=zohoarc; b=cNv/VdRnyPknlw2BayK4cm2Qc2o9/jBWiAShNNpja6Okfsi2ceJGw2p5ZYHfJrMU8arezANnfXLzGGzCkl0137CgnTKu2VCDRL+2lh7RPgpgSIXVLK582Sg3UMyVv+U++sfGwgsH18LaF/4N4IAUYt/aBb2/McybfB2TWye7tSs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457537; 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=Ju7MvbZ+6rpswi0zKUUV/NNDdV2pPctsZQZ9KK8lwu0=; b=TUp1CxCVScQAutC//vAxh1IQMtL8m2+2Fn5UjPtk3foUWBTURhMAiCGsfGyB30jOopoeEfSP8xbvpgxm9XUUMzFZsd8E63trq4/t3k6iH56uhUEG9FEGJjDdKBMp+P7yeovyBYPuMILqgO1FaFrVvcsq5MqzFAz7umdacWPFNMg= 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 1780457537041956.4393714033429; Tue, 2 Jun 2026 20:32:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcI0-0006bk-Be; Tue, 02 Jun 2026 23:29: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 1wUcHy-0006Zr-Hs for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:06 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHw-0003ai-D5 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:06 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-84234c83142so1386685b3a.1 for ; Tue, 02 Jun 2026 20:29:04 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457343; x=1781062143; 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=Ju7MvbZ+6rpswi0zKUUV/NNDdV2pPctsZQZ9KK8lwu0=; b=OsLT/mC3GsjRIt8t1VPBphQEgcoNhdMkM0SoGCo47W2eapzWxqvNyDpNwg736dB/Uq GQqqAmJ/cy0N/wqxfLGmjHddT8vas3dGVhcBXmJdEn0CseMfuh6XJzKyMYNzdh8KRszw EHlNqT3Qq5E23Ia/xocMJLADnPDXQBkbJWZbyPGB+zgjOyNFjXaOSI8MReaauCtxH+Pw GW4X54Noqcf1GTBhrdbdeb5EL6pA8Z3FZgV1JljUerOURUMZ1wJSFeJeqCqxwdGPrHRO MgWH929LbgmSfCy83QLfq6AH4m/hmBoEt/wx2kj0UBS2pirMf5/ToEkvsdCpX/uJSzGO SF+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457343; x=1781062143; 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=Ju7MvbZ+6rpswi0zKUUV/NNDdV2pPctsZQZ9KK8lwu0=; b=hf9zuCWNiDmUNKaNM8Da+sKVSnpLIl7/zqGzq7XzRyxrPn6nV/P/uEBeUhq2RWRk3x a/wneIpcf+2FgRlDXYaAo4TVsfO4cUuw425aLs5ibeR9SQO2gt7400Rug9bGi598B15d V7NhuDanJl5NDo2MDLuc4BAGxia/D7UT/urZlNOPskLgrQP3sKB4ID7nszl7tfHgIEyt yv2HerJtRKD6NumEff6wKsLGEjgMAuayQ9d08YR4u9j4XzoiZjPt5GUOFwy1MCPxEsY9 lvNcX7/fM0CsVNqZBBG39hMtnyE7d8eC5yWdi+lLYkUE98t1KeXGVDgp1bIWvm57NwVl zfzw== X-Gm-Message-State: AOJu0YzKweqFrSM0GGFnUjIfCxaRPLPlP4tynBSy0GAsMrfEZrlXlrMq hPlRfecYozV7dqDS+QzTO7uq1+LJbjBi5E6UWNlwxkt0VMb+NXqUyW/Eis2kblg1rD5h8P9affJ Em6NtNR4= X-Gm-Gg: Acq92OFSWcIupIGfZUelRbpizcGDpH7mdOzmDRa9fL4+WJPhP6nACmBaghYNAemnpMT azDdTXmZlTi59XDMIM/37kVOX1LSm/HMg1XxfoTonewDHYBsZZNL7BMx4ma6PsgWPgbRZxyyCW9 DtIBIGj4TwSWTYp7nBCWbb6l8uN9J5b7IkSu8JQJwr6M7gEF40UEks2mQwDzuk6X5FjkSate8Bl U/bTCipt0130+Ojv9ApbQKRFY15IOcgGQi33h2zHDc21EiHe1nKDLb61WyVJ6AjSGwwxxPINpya ykr0pFwnXDryr6dm6WpioSumqDNhwMzacgkLCxj6mQGDPMZWBw0mGPx7qEmZ8LNrxUpf3FmEMAz b0eHex+G+Hz6xtCc09pyRtY16WWjuQiF6fCsLaDEM0ICKq+ep3q0eZ5GRXhHYjZPFzBVakDNyhY E8RN48iBRuB+pwV/mM5RXv4k5X+AarK9KeByDjJ+2baU3TUkEtsA== X-Received: by 2002:a05:6a00:3d49:b0:842:6097:467d with SMTP id d2e1a72fcca58-84284e2997amr1578832b3a.15.1780457342961; Tue, 02 Jun 2026 20:29:02 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v9 09/45] target/arm: Rename SME BFCVT patterns to BFCVT_hs Date: Tue, 2 Jun 2026 20:28:18 -0700 Message-ID: <20260603032855.106930-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457539552154100 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 7ef6f5d71b..30355662d9 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -1726,7 +1726,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 Mon Jun 8 06:38:58 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=1780457591; cv=none; d=zohomail.com; s=zohoarc; b=mgvOuaPSYSvnpJKU52Y0sk3NwAw3ddtbpdIk7E3D4Xjl/mzlNf+F7d4JVYFYwuqzMeb5pf8ji72k7rj986o1EvNXjxK6BW2pr79BVd9LQdLfOer+GVkGvN0HYjbM2Sp52TTkDGaeKoUUmHbG/0iNY6AFPzXT0Z4elNLK+xKrMRw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457591; 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=EM6gcaff35oOKoc7papeuUBqJyALL2otUY3NYjKtJD0=; b=KawFNmK8R3y98e2u/8u29kWGEzuY02na0L1+Hi+0bUAMmnENrrMEzw066N26Ga9kzLJWKlp2IlifcGqqzlZ+mwNQI8fFxUIdyVCby2xzVW/9KaEonWHdgRkQ5kuZGPrCkzJG/STXd9skP40QuFJgCL6Uzn4WTM29FhTK9djWxdE= 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 178045759144821.912659684206233; Tue, 2 Jun 2026 20:33:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcI2-0006es-6q; Tue, 02 Jun 2026 23:29:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcI0-0006bb-68 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:08 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHx-0003bC-45 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:07 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-8423f1d8902so1266259b3a.1 for ; Tue, 02 Jun 2026 20:29:04 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457344; x=1781062144; 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=EM6gcaff35oOKoc7papeuUBqJyALL2otUY3NYjKtJD0=; b=YFDnscHQcfxVGPAPIsVX/K+Zs4ROlAkXg6WmneWalP6VytqvH9CjXv9p364tFj2F33 /7JuCJqrgbbhC4PYJU987Cy4l7S9i2CbCJDkwUCOkO5Jp5GkQEh/dv1ZvfhdVB8I5B5F MLXVH2Fthr6YaFvYN2na4+P07qVswEW8M0NmMPlaX7KUccPex+2LX9T8n942lJSxZELL HK4lvNslqff/Kw/xgFKk7fvxAoMuwuR2ZYTS0k5pBOd5Xq4Qw8w4+JbR1YOqSJ5+D0V2 ZMTX/V3C0LmDhzvo6oUWJ39xhReMH4WTL1ndW1qk5K8JGACBTbJQSIsTW1Eo3kdHiu/a cVcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457344; x=1781062144; 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=EM6gcaff35oOKoc7papeuUBqJyALL2otUY3NYjKtJD0=; b=XQTs9tfDscHqYMJWWYw4fVeyNklndYG/UGV9PszC9vQ+lkU9/LeJ88nn6AhpgP5YSC cqZJK2i6sv1MHr03y5nHOThdezLgZg4i8qpHPOGEk3vbqYpwe0TvDZPub9wBINLPkeSb jjFZSC7nTmTmuoIBs7nLLPMq+JZtoqcWSyv6pFJZt+DYUo3yd1TjI5dx4wcWCGZEWhvI Or7Abwwkm29rL4RHB3sVN+LGmT+wqjSDOJNZ4prBTrD7Xt2ncnAJzT/3oY5InGfG96Xr By3bNJswFZn8S/s6y6kvbsTp8R+iFaaZErn7yL8yokSJpfMk3V/KkMMYkCMuQ5E2dwl9 dxDA== X-Gm-Message-State: AOJu0YwrpC4vaaOw+iQkNI6CkLUoTwzJeGcBxlu9W1CnOANIQelnAFEz PBuZ0zJ+84fFRooaWoVx5EvJa0gpIB+uwUIIRN8w7ca+N8RiwF1bX54gctDxru9y4eTHqVq/4pt t+kcYC+o= X-Gm-Gg: Acq92OFyahpN+3yGntgovLwbziS71CiZjaRlG43w2fOrguXHaGiH3T4MeOfXxE0xUM9 hSFtKoSokmRhUxXEZBWqGLGPq+9K6/Lqeb4Hr8i8LQLUg+LLlZYrhMA+lMwj2RK9F92uD37fu2L bqD9aHIJAJwBtINcVb1eOcp4/0dKS6oLJTzt4gFRVPPDOhsQ04IRvSEARTDHCeGylDZVm8bG5fg 6gYkOblHoeK9NojU+HnyYCLIJY/zqzcQ+v9N+sMBGLxL+o2itsWDxceHNKAtUj0Ex/Iad1VPJyQ wHq+q8/ZpB6aq/D84Krwrovabi9K1foTU+OxS4FNAKzGZpS1F0krGbmYoxtFBeUfJeTt120iJJN XZtalQ+wXf5VBVWmwM931q8ZvhObRfeS9K+OmXkVbWuQTRn6t6RYZvFhjvaM+YmZkHMaEXTNKYM 6Wu7dgeBEjlzESTfO3DTf+kKmqpE3TZ0Sz7mqt8yc= X-Received: by 2002:a05:6a00:13a7:b0:842:6a3b:60d1 with SMTP id d2e1a72fcca58-84284f5f594mr1688818b3a.31.1780457343588; Tue, 02 Jun 2026 20:29:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 10/45] target/arm: Implement BF1CVT, BF1CVTL, BF2CVT, BF2CVTL for SME Date: Tue, 2 Jun 2026 20:28:19 -0700 Message-ID: <20260603032855.106930-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457592752158500 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457565; cv=none; d=zohomail.com; s=zohoarc; b=Dm8NUxViLvcd49drwM7KzCxu4RQSkwsFFD2+NLo+IBXWg0HvGbrVRXM4CCmCkIlXRaA5t0+FT8NpkZ26opvNxTsZ6k96AV056VcImNtCg3E9a9xGtZ+ZpaCL3zvm3nJL6IGx2/IeGaMjk+j/vgPmn104QZ0Mcvx8baNdmuzg9qM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457565; 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=YLZTWTNHQmgPXZ+6u4Ok/BrhLJw04DqdyqKLuC9WFEs=; b=daBX+g2sWNdUlj1jgVUiYp7MbKcqyi2iAh+my43lSMLw8X3jufaJyeNCOKe2+EiudCbNxK1mtGMi7bMxBw+9XhqeTNG/9JyVH9cdZ4ZnAoDRP0J+tEvOUs+5aSbzQKnqBviV9oBMCYJCFkcBPBXYt4mNxZeBb0dm4PGmp+Gn+LU= 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 1780457565773767.3943087001257; Tue, 2 Jun 2026 20:32:45 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcI2-0006f6-BP; Tue, 02 Jun 2026 23:29:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcI0-0006bV-3E for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:08 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHx-0003bW-M9 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:07 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-84237c55ef9so1482718b3a.0 for ; Tue, 02 Jun 2026 20:29:05 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457344; x=1781062144; 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=YLZTWTNHQmgPXZ+6u4Ok/BrhLJw04DqdyqKLuC9WFEs=; b=sly4hT2otaKZmotqWVwTUR7qX+eg39Vka1g9jZ6vizGtfV80eZDsk8D+ObqIPd1PDZ tT01a9LaUZauyJ+bERJaqhk56SwwAv8Z5W+FdSdxdfguEvVziOr7zyrvrudy9zGRX6ML vXPFeHNUjZ6j+Govp9L3V9SXgJVdxq5/n4pJPTPcZfdcgPQP629wJ07ozKv7cVIFxuZC DpEv2vMrTc5n+cwEJAXmR9Z1ix0XS/d2BtCwhXotzuGDLfOuzDqqos1slqK4C/Y/vuqS i6y36fsmbTqj6c/qf3ewDQo5FgjDvZSSlXFtpccS6Z8pJWKKb4pMa7LbnC/vO6SE20Pr x4GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457344; x=1781062144; 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=YLZTWTNHQmgPXZ+6u4Ok/BrhLJw04DqdyqKLuC9WFEs=; b=YygMfxQgmOKlcOBbLjdJlhXS/L4V0tteAycUQaulD35w88ydvznzB3yHCBiKSDvHQN xupZMHeA9rX64XIO+gB9ZAzfHyqg4Y5PNscP+XIVOhF1CalW0+E0sp0uPgGzSawF/DkC UyL9iM2MPXd/wlDdSGTpVoUhU4KDqPoHZqK1MbpvUDMbphx3MY1yW3XyopXbAk3tjIVr fQVAF2FCktGZsij2kPIfDfDM8NMlPyMCqBV1fDm0D06nxX8PMi3Pj19UGqUIgSn8Crn3 L8xLySL483vd9+wquS2hxYdVzXzLFcjFHS6le6evtAD8Fv6Bb5FgMBwLzwO7oYhZsdos TMyg== X-Gm-Message-State: AOJu0YzBez9QnfZqBLw24nK9hYQaKAaxYaS7GgR51UcmgiHpLluLN/rl G27Duj4iThR1NjD9xerazkBs14PFYX6wJXSo7ZbYcQwjSgqdIFeT7IDRKMpHTwT+tuL0iF0U5ML UatPBs1Q= X-Gm-Gg: Acq92OFwgJBzN4vq4FosnDIILzich+rdtpwRq68JaoKWGtH1OPjqGMpO+PEw0YQuhP9 RS0OMrgoArdVFBiJOKjM7/i7rSTNO2EIm4T5pGd1t8Ak3rVbOxIjNChfS7Ecq3yFIcnwiWL6bqA 59Cg3TuD0lqGq/hPYSYpImQNCUUHiHG7u9HQNjtBu1tIr2KrTvZkmmbOHYGmIB87Zh0upfdBYCj VUb6Xkfmdv4drbxso2TJvHeqdUlOwngBLZ2eu0UPmFlAZmtBP9nIyz6Nrn+6M5Cr2ageqAx8hDL +RVUslNbBq15zFgNAcndOo26tyttIVOthNiymM5LIC0Ovofyha4ttoX3dkzUvNQwFJURFoMQw2b 0p9kNViwxp8QUo3oBbwn1hcDVMuA806DFPcvzPrsexYSbOofXhTGbo7c0dwnUqX1KMPJ464VVJc Hkto1O2UF2BKqzWYR7Y9YO1eDkrN8VMPWA/lG9fT0= X-Received: by 2002:a05:6a00:4b4e:b0:842:74e3:48a5 with SMTP id d2e1a72fcca58-84284e0a2e4mr1604798b3a.16.1780457344189; Tue, 02 Jun 2026 20:29:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 11/45] target/arm: Implement F1CVTL, F1CVTL2, F2CVTL, F2CVTL2 for AdvSIMD Date: Tue, 2 Jun 2026 20:28:20 -0700 Message-ID: <20260603032855.106930-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457566601158500 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457601; cv=none; d=zohomail.com; s=zohoarc; b=IX3UvMjO/ux5fpUrWAgTSsUWcqUy5qIJ5vCupaCbwC9kPTB+osQWT8iobX82zx6Cb1zCy4nbkUvcQyaClAMOpUl/dia7K/WBYUHUfHt/XNqvRYXbQtHDdsYm7xmtGq8xptY+CWzWsjqwfGf2awOg7Qki49vrzPIuhfXG9BvIx4E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457601; 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=hybuRnEGHy4OhooGWsJlCMASzdQIhfUBKdru7X7Ws0c=; b=YWLsZhmrlW+9Ij0gC4IWgO1DdllZnMyl7gz4/BGnj69rrhzePKpIPEa1RZZA61MTJMaLlv1DoYVtCeD/5htQjkYU4Amifdlwf30npo5QAVGgc+xujmKQ68IS10yqYkoMP5ULc/JEjKM9EsIRFFYYWotmoRv5IpyMAMiMBXSXggE= 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 1780457601215581.3443001333906; Tue, 2 Jun 2026 20:33:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcI2-0006fS-JP; Tue, 02 Jun 2026 23:29:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcI0-0006cc-La for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:08 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHy-0003bp-6w for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:08 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-8424b00710aso1882326b3a.0 for ; Tue, 02 Jun 2026 20:29:05 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457345; x=1781062145; 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=hybuRnEGHy4OhooGWsJlCMASzdQIhfUBKdru7X7Ws0c=; b=O2M5090gNE/AGd/YFicqxK0K/22SPomsEpo8fELBIoKZFatNfvt38+Xp+MLPXRaTUl 5iYFHHBUqz0XiD52gk4ZsG9B6E0+asWwI4M5IFKCT1lSTZ5ym/JdGIpeCmfyemC2dQXe 9hiraRZcDqaET3gxaEjt0ySdsXkiKEMj0PVLLb5nTJxk+luGVKXaEdnS+VStvtsBeDI0 WyYZ7G67gzgM+jD7sDcWmkWR5QR8+tcsBOoxWhlu6drg5xcv6iZTA/GowuHj2/WMs+Qf vt+hIKjEzShMrWRmLt9yy0jK9jBpjwUF+onjPWSg3jWhX0a2RpINcdoHxwhBR1jrt0WM DWvA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457345; x=1781062145; 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=hybuRnEGHy4OhooGWsJlCMASzdQIhfUBKdru7X7Ws0c=; b=lVp2OjxFIeZpuiaYyRCuqXeLRwwRKy+/uJLNvdMOqYrZ+8ZdmBn+eN2HgF7Uh9AeVA Juw8JGyrCACIE8Bn9AW7b7u014vk8qvusWbTV6UBvfaMYV1d/hv20y4LHE4ZpPm99fR7 xLIstvkBOh+om3q+arBuTxmNSff3YkKIavRQrKpNaLWGcddnUkKtEWDv1KnDFBMyX9u3 rocJfcMlYxitn8E2rihq/4lrskNFmqvxRligLD47VKj0z62psYwM+jKUWKbKBaXqetli HC/pj5m+NC+9OukDyqB8Lw6t7xB93eX6k3/bvwYOxwh80ssG81x1nD8TeM+sMoUXsy4v 42yQ== X-Gm-Message-State: AOJu0YxoC4Yd8MwxoauB03PW7UiEpEdLkIrb8YdjW+ugQ3BCxK1roQCp s+SS3MJmsM+BPA/szFtvEbGFeThilp8tzSbXVPmmHnxzgMpwDPJTWVLdi2cg4FtimvRz/XqfFgW 1WnMcuxE= X-Gm-Gg: Acq92OHj5XchNZoaEGlcY1ss0nX54z0RZcBgq1WXtD9DqichbUKflOIUhvPBMQ49Zsi ZlLSPJ9YqBgGG80mzTD9w9zPdHTzVPnRUh5wUbwTVk2SxQgzQ7Ldd+UgD8P1xUAwPpY1AyRIaYT r0GK1d7V7PyDFdwGd3UNUZC6yMXGMSIXicPUTX6GPAMXnk88/REqciF12XXTkRGFj59ZxiCvnv/ +Shq8qGrAhp4AHuX/mVoGDcdp1jTp/o9Nh1c11lzGG6sTYllzyUA1chGEN5TkYVjCsTqFVnPXM3 eymvDFUqp8Xu1mOA5S4RJTPA4dQTjsdvx/eEX4QzBWl3IR5PzHjAHVf7sGThyRcVN5aIhNRvAl6 oZ3NPD9szaiVkrNVVxbKapvvoKtNC+rD96nxcyG87Hfww11ptQL2rlPpXO9vxhpJgweJCiaHcEE Zkq7APGvzg8zCHf+EEQHaiTGMjVP3wjUS1iPh/tzw= X-Received: by 2002:a05:6a00:887:b0:842:6004:3fda with SMTP id d2e1a72fcca58-84284ee93bfmr1624864b3a.25.1780457344799; Tue, 02 Jun 2026 20:29:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 12/45] target/arm: Implement F1CVT, F1CVTLT, F2CVT, F2CVTLT for SVE Date: Tue, 2 Jun 2026 20:28:21 -0700 Message-ID: <20260603032855.106930-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457602733158500 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457464; cv=none; d=zohomail.com; s=zohoarc; b=IxMZYrBhFL1KWud3lEFqZy0zALlmDXhWv0HnGXRms5akFVonOR37cuIKpYukg0cYF/bnqk1VyYFVh8XHAJo3m+JtW7IXzTHgn/VwySEFqfSXF4wAc1lXuzMUzF308oS/b3dNgXLmRybtFpcb25LMxfWZ/EK/mul5JoUfLV0zRlg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457464; 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=S/lrt+3/bQ6YgdVMn0NyzAOITcsoY40O+fBeq5WXXKY=; b=AvQnj+luNzO32s3613m2+vcor405L8qVQhdFne0BLFjdtw6g3CZnPXWUt43K6yFHSmVG9c5mZKnzRBHFBl4YkNQRULEpIQk2N0ADsz+UZYVamIYjqPJAFXJVjSrYXJ0LQS7dCevCgFddISf5yfpAshhejjlnVCHmFKbzCk4hwWc= 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 1780457464223703.9051931471614; Tue, 2 Jun 2026 20:31:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcI8-0006ja-Gd; Tue, 02 Jun 2026 23:29:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcI1-0006e9-JJ for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:09 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHy-0003cA-VB for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:09 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-84236f9b638so1587660b3a.2 for ; Tue, 02 Jun 2026 20:29:06 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457345; x=1781062145; 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=S/lrt+3/bQ6YgdVMn0NyzAOITcsoY40O+fBeq5WXXKY=; b=r7OhHjdiTrPbKWWzDH0054RmMymikFj+z21MtPIxmGdnExdEZ9pK/0hWGuWoYTFoAi hyx53lIOIQfJ8pqfOoVsmx6Dv/DN0Vs+dDJx+2AGeSIY54YphO6E6Rlf/Bv7YJVdcVb3 yqRJQr5mi7qNdugd4O9kV0qB3+OPeucXtzb/cLDyJ4IXAnYvGFDv+lHoFnIXaYRBuFke VjGFiSFnHEzA3jYMYR3dEbJOUhQYTEI+dQrWKNsLUPwPgG8gEgQSMhfUaidu9dtWOzXq Kk/+9cGb6zuZYsWzhxNTn4nyvcZlnGCAxgAvIVCcHQFwmINjXE3HgXx+oKN7HAXaZbMt CAZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457345; x=1781062145; 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=S/lrt+3/bQ6YgdVMn0NyzAOITcsoY40O+fBeq5WXXKY=; b=P2ZiIL0l8vKwo4jFMmUG9L4JAEoXm84BnJzzeaUk4FD46Kdfgui7zMPpmpjM1VkCYy GnDhspufIkThxHfBiLIaCMfxXHb6DsAumYoysKxtqTSePMKWX6nfMSNrFW5DZC5vCawJ RI9rzJZe/ywHWMANslnUoaLAbECPWMBgEE7qSPgWR1JV0ie5GkkiGTKH4RhL5LOC//5U WLW5leutGAcWI24C1HNFNH4rfb+CEr+zz8hAdK9aU6OIsQc5Qh4BTqYwQZGc/Z3ZG5+w Xb1tbLXaOFFajq0vcPTpAR9mIShWbOTUUpDxbE29S6DDSExv4gezddYO8+0+/u4fqYj0 TMyw== X-Gm-Message-State: AOJu0YxKyGcp7GMydtyvYGqLGzUeJlo1TCvqgWl0QgAbwVr36pC/YXot dcqLTMHRf8OjnYudsRAvkqe5lh//ciMWSgBJDoqPo/LqGhFXz6ggLbS+Dx/V/VD8BqVxWOrMWOs 1hrei7jA= X-Gm-Gg: Acq92OFJ900ks4NGs6fR0P3iagansyM1VE2fD6CFY9NWTx5c+WE6cTzk4Y/OwR7KEKg iHPjd2p8h8ugX4ioW2CkWOEfTvijQoYZDaqGZPKcnGgXVX9FFgh4FkQgyzApquPh/i9bqOxnmO4 khGS2Za8sYDrg8Q7vsgrjYVJfRuSb69Fv7DYD9c0xa1sLRbyQK2c6bhqLBBDfxTezXSw8RyD92P y49ee1wDW+XLZn382BqPzD6OnQuvexAvTuXMDtJWfff0qDrB/Ms0+oiUO7kv2FL49/IcwaMPQVK SX9OnWWOFlQW7LEwAJnR9SLEhm3235vTzWGz/emPBxNq0pDfU+Bqkc7WGj9XOqGjqCFSewV/gNC mzvhh2fJFlfUmKPIHl6npJV1w9WmISVgDEZM2aDUgeujFI+F+0CgEChZaMgQkhRYQjp5by1KMVd CUPRjwRMOE7XyqxgwY6pLFyEOwUAuVSJQsmSFBNPo= X-Received: by 2002:a05:6a00:2351:b0:83e:f5d7:6e9a with SMTP id d2e1a72fcca58-84284fb1216mr1526105b3a.50.1780457345427; Tue, 02 Jun 2026 20:29:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 13/45] target/arm: Implement F1CVT, F1CVTL, F2CVT, F2CVTL for SME Date: Tue, 2 Jun 2026 20:28:22 -0700 Message-ID: <20260603032855.106930-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457466485154100 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457533; cv=none; d=zohomail.com; s=zohoarc; b=U6eO15AjWW8zlAIAReeuq6CWZd5bTfHDnTI1pmI1DlLZVcSrW+yJok5vddudcVvQVOMHpgvg0eERT5UbeMMXynWczyZcwiHUJa0YsjR4UCprNRrv4b0t61hdDHl4ijxNWCkI4FEbMKz+vX8VGLFltyMnIsjm4JVPWlVfwPNLces= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457533; 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=yYt4Xvo7JmWJ5kLRhU7z6WrSENBPotJcbXqumf2zKiI=; b=Z4/QBtx8IHMmdbEFe5o7HKeBE3+p/5J/KpbmOf2b7vpsmHv/Xv6w6L17qyHK1qdCRHcLcqKodpCskQabKUQrs+uzQO81fNFmAGvCNxLMWmIExIk6woZcKFcl2Lcg1ysomL8MRB6xhtKtxkkubz3Bhov5wRLvwdmTerSrGjy4M/c= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1780457533910136.81777891681736; Tue, 2 Jun 2026 20:32:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcI4-0006gu-3I; Tue, 02 Jun 2026 23:29:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcI1-0006eM-N6 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:09 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcHz-0003cc-KA for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:09 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-8422871b42dso2080807b3a.3 for ; Tue, 02 Jun 2026 20:29:07 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457346; x=1781062146; 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=yYt4Xvo7JmWJ5kLRhU7z6WrSENBPotJcbXqumf2zKiI=; b=NKpfufsJCXfpx5lTlHx1eyOXUw1yYF5xw4T2W5moKq2C6ow8tZhY4j5NogJPZBoNL2 lGQF5ryvjRb8eZYSNrUms2m36Nhw74WYXB28lBZdgmnmw6ywMh+kemJn83G1kISnUxkK 2zgQh8OK/8z3VHI0sfC5Pjz8D3SLiEqpOJ8bkSFyVWv20U308XdopMlz+NzmZ2opXNkH aMiUvsYzyN0g2NvTdzyLPtuFd549cPgwDy4z+tyFiCjlO2svY/8K7tgSVK/BXw5lhvrs qg1kYsfMunuLtDVEW6bH2mMk9Vq84w0EXYvXf3GkHhNYUFiwk+7pm1Ev4ENREAoLGXOr iTMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457346; x=1781062146; 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=yYt4Xvo7JmWJ5kLRhU7z6WrSENBPotJcbXqumf2zKiI=; b=HTOcT9hIBDgCrz7SPmCyJt0UcA1Kdx2a6lEsNebCd1XOM3wMcv9pp/PWRWpz9Lix9I XCIW08FiFr8LHiagcBbBn/dmXfxKgZMd7iXv6EQNI1YF7JVDavsveNJldmW5rpUgd5b7 717Gp1Y4pdm+CwWCtuqhtiiFXDn1Ahk1UhOmTJERATfl4TwHuedxXH52c49HuSh0erCU SWQDWGn8zTziTob8PoPVpDCcdVeG20YRL/HDfixlE2lWD0ndgpbq3yg02v1c2pi+nDyq YnarRVTfZNZEN9y//xC4JgjiiFB3KKzq8qnZ2cSrK1FJ0NG7p1wYa//R5RVWL888eIEA xBNQ== X-Gm-Message-State: AOJu0Yz78radKPGb60dAn9fDtPmvyxC5w+pkX6zFBj1Xqi46rZC0OQuy w8E3clsY97d9R9tJMO/2oiJqhZgSKT0z2rWs3mxlrchytTf9ly1HuI5CD0Y4er/aAIbRVbSFMIm LpmmF3cw= X-Gm-Gg: Acq92OG5iA22+AkKLyeyXtPI5Q0e+RtnBZzvKlCgynEKQZXkvOPWdK5sbmKMlTIZTzP LDKNQz98BFs8r2vbqCzDJ9sv0EnJKrdHoUZGU2JhqbGZb9o2aMZB63CJ6hsgvwrM1TB0VmU8UuV 7+VuHQM+NsO832wA+L3fc19CoL5ufB7IlUca1tw1wfPhAZrrVkUUKIhDvM6pJZlxK+JZ0b9vtFU KXvPuRFI1KaSFpe+o64pnmLpIhkMRQJETtHoQrXOaQAwAXI2fPnm2cRssSq+lmA3VwYQcwNjbLO FTEumJArcWbEAxmPw2t9zkybmjCyKVqxBFiL29clRjufMOlpZ/JraJhmEuMA92pZ9/mm9r2Yb/F 4Jy8OdZUhBuy41r0pCXjB39XJraFnygl3bhPGnA0mk6iQ2q4oDJNPUKXBsOOorzACt6f/EUX/1J MUSnmLM1dQ/p5U6KxrH4E7H2AP8zYLRlg+lAMmCD8= X-Received: by 2002:a05:6a00:218e:b0:842:6cf3:5550 with SMTP id d2e1a72fcca58-84284f2ab99mr1485687b3a.47.1780457346043; Tue, 02 Jun 2026 20:29:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 14/45] target/arm: Implement BFCVTN for SVE Date: Tue, 2 Jun 2026 20:28:23 -0700 Message-ID: <20260603032855.106930-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457535719154100 Content-Type: text/plain; charset="utf-8" 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..eccb5b191c 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(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_bfcvtn_bh, false, false) + /* *** 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 Mon Jun 8 06:38:58 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=1780457420; cv=none; d=zohomail.com; s=zohoarc; b=mM78uni9kO9SrxYYMdQVf+0xAOuHrf0optFrG856Ivi0tO7rub9A/4J+kWdMnx79r9SUGbdRwx43S7RR4noDZkpG6LRi7cnI1Wm7jPFvv2rvTnK4aiKt8myaipuAsXun3Vafm1/nuxTSvrJSHTOxiwh2pyUJwATXuEuP3ZEXvFQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457420; 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=XREooIk8/Ytryetxg3cSydG2ExCCSz7Qnq/NqYJ+6FE=; b=Lyq4K0iZoJKeDe65YhKeXxrHLkw42eMtFQsoWfJzLPXnDKWWf3/FSwPLZJ9bpAtIzXtiTpho+Y0T83hK4bgYo1FEa6lmXABBLvYatSvrg66vKhG/5h8xTcvJK29165RvJkQRhKjOcL47POFDk/ogDKwO/wmwKHbB9GtlpIbrZQw= 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 1780457420407306.93190248719384; Tue, 2 Jun 2026 20:30:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIS-0007C5-Qx; Tue, 02 Jun 2026 23:29:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcI2-0006fw-W8 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:11 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI0-0003dR-E6 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:10 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-842307473b5so2558261b3a.2 for ; Tue, 02 Jun 2026 20:29:08 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457347; x=1781062147; 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=XREooIk8/Ytryetxg3cSydG2ExCCSz7Qnq/NqYJ+6FE=; b=KwW1ISu5YFtpbPeFiQyeXsFcQRXZqXJDWM5uLQBr/SrvUAb45JtbIK75w8xGClxIh+ 9J1m/pCBGSL9rFwwoMcywDB9vj7irPl1X5zydn4e5sAUrtW9L5QKzr+X+ijI+m7rJ28y sonyUD2CpdoyQLebc9SeTrwYUtR0v1L7O/0GN1ngdxuL6pK57bctn3yx0qSVwkwsedZy pLDj4vLj4G3/IxEeXt9rgwXukj7Q1B0T3t9vni1k1/UlLXuvD7ksZcxDdVcwA7NorisJ NGzDDRsvVtqrlwDRwJWsdWPAhed87Mn584bqRzmfh3Opago5bbxIro+f6F0b4R7k6AdQ zENQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457347; x=1781062147; 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=XREooIk8/Ytryetxg3cSydG2ExCCSz7Qnq/NqYJ+6FE=; b=l9ebRS/lp6JS3/6kKmYtzy93+z2ocHRoGvb8o1+GdSp+zS7+owYOTfRtv+KhE9pJRX 7quUCYtVo3VaAZeI/iFENTr/JP5S9LHAQd+aZq/WGLvu+B3CuPJpZIf9AWf456ib6dLB HGBjxr1VScqlWgDnz6bVG1VjBvNz/3ZXVBvJAFkNnbs2nbvyqvn/777Em8g1XZy01KEJ RoA4WuCHTAbfii1lnvlMHcFf5FSkbp03jvcYf2IlSRXf2mR9zZm1T7/UsUYc9Xbr40Li 3Kp84RJqqqCprauFexq2zri7N8IXMQ0QTu6cynyIUtlSB28daNQj9A4roJwkyLqbhUOe cT4g== X-Gm-Message-State: AOJu0YwwgV0Vvo9Jhb+866rzpDAZbtxBGHUsKCz3MTpgqrng5gJfptRj jZBMCrwQUblpg0yvn2rGMEIWWkmsh4jH+0/I8FJBVpYigfZDZgPKpvGRxiGGl4nWSczyj6Q24V/ LWqBiKVM= X-Gm-Gg: Acq92OE/MOhXWKIWxM0j2lMk+7KNPt29O+MswPEWTM1FxVyOFzHXX/n1QdU4jqHUn4c BQZVyTSSqXW2kk7bZNlQs3YBnsbnqZb2OnTud59zJw9pyJXJdMWTETo9LpVDclSLPhGCUrOYDFq XZwvcjKX66BzNq5bELdumsit7rWwVPZjwuaVZxHCF37GGDNtRj4D/gUTBYfREGjU6anpcXPTLQJ 8OYOPmmRYPZnfCwtMjFNE5akwBk+1G8zIFkQiAU48YFf6HQdsQNa9fOZs+yHj0bsJ1vJfXwJAo9 nT8n3VPYksLJo9+x632pkSXo5c60n3MtYbGVQ5foS67rFCeSjuA84Eo8cXQWM/JsVVOpgYlP+fN taPfFMVZzCyL38xl44LKJqTuZbt0qtcNy54rERHt6k7Ytpk51SWU4XJVLAVQiHcZQY0LlFJ/3Ux 7RGbZUTrKvYaGdZvQiTAixe3/QP2+nu7UPDteahc0= X-Received: by 2002:a05:6a00:bd84:b0:837:db4e:a35d with SMTP id d2e1a72fcca58-84284e8e33amr1652325b3a.23.1780457346807; Tue, 02 Jun 2026 20:29:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 15/45] target/arm: Implement FCVTN (16- to 8-bit fp) for AdvSIMD Date: Tue, 2 Jun 2026 20:28:24 -0700 Message-ID: <20260603032855.106930-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457422076158500 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457657; cv=none; d=zohomail.com; s=zohoarc; b=LgMU3ks/peLCANMsEI11Ur5zpBi6tV9NiHbqD/LvF3jUlTMxVu0omvh4fP7D1/P2Wz5UnnU/u22fQCSbMl8/M0Pl6ffuQVZ3Y9C+/RxH+RPmPNo+xhhcLaIMPbvdcPPzrtLYTSoXCD5aeByQetdERMkGjzjnP7M7iitzrCFnD/E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457657; 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=cFPDYoHQSXSEsfatJXWVFSq+z/bWk1y9eVer+Q1oksI=; b=TJLLUBWtpjCu7A7kdoP/qkm7ZxCdKp5S9Dfr7MzsyoNSrCZC0wxBu4OddwNWoMR38XwlY35M4wYp0TD48v/SAv33FGMv3T28GNrMSeGHUiyMhQx7K5KMz/ePdKKPHqe4QDLJIgqsR4lDKRB/DFpkTQuoz0rnc5J1Sk8jUp9tEvo= 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 1780457657159948.1924691574079; Tue, 2 Jun 2026 20:34:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIV-0007EK-QM; Tue, 02 Jun 2026 23: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 1wUcI3-0006g8-4j for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:11 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI0-0003eS-Ui for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:10 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-8422f395a4aso131250b3a.0 for ; Tue, 02 Jun 2026 20:29:08 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457348; x=1781062148; 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=cFPDYoHQSXSEsfatJXWVFSq+z/bWk1y9eVer+Q1oksI=; b=SLBfEaO0wPlvoMtWTvK+geOKPDSZT3gjnwDvI+KP0MLa6SYeW79LebxemqmLAc6ltO rEhEYItyLjPjBdxvSNRC/Lu8tQrA4/39F6IS/vNnN1pVKe6eQItnhjm279PgqaHU/yFZ Un2bqHiIX4MgelXOU8HcWgi++Yuprgcj6qhREI9PrTTnjOMW1GLOnRcD2655Wu4JS3E8 D44FqWByCHXHynIDawmrvpZzig032AvbljjLXRHDHHxmoZkb5geZ4eS47FSn9zA1ml2M ioEYSl+ApxHeJOXkIn/0iDUA6otwkGy8pLkB95Mc4QmRzBcYGoxigJoLItOPnkuwDyNJ 0gQQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457348; x=1781062148; 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=cFPDYoHQSXSEsfatJXWVFSq+z/bWk1y9eVer+Q1oksI=; b=gkHqB527W46H+CmuAl5JKdN5EAtl/r14HNqpNY+uFsdHI5f4fbHbfmE0Xcs0bL1d4Y euHFVDqoTXRExtYD/JeRUSYeYZgyuapnpSVn70g9TMTBXIQHbRZXQuF3EIc3wia1B6rJ r+pUBxduO34xlSpQ727YoMo59T1XMgj4j744d1UuzG060nueiwqob/Hpc0wuuf7nmMUy Ymq3YLHaeaRC62HXBxaEJurzoAKVRfYzHztoLuk/VYlTrHEUSpLN52Dvli/G15D8pDNm 2wk6ubh66iW7P7oOL/Wy/8IKm07gY5wjp08dBNu76s1P7XaBtFNa6lRzXP5ByTue75PQ Xsxw== X-Gm-Message-State: AOJu0YydK1HRhUM1ruX7uEYOKeRnqPpCiIdqrUCDpgLFYf0eCI7jqsWE JkVXpzRFixUL1bOIirQzPMoNrvXqojOdLAaIHuMJORMrYSNeIbVDZxsfaWl//YtI1ADYXLhVp26 anBGwzmY= X-Gm-Gg: Acq92OEWJKIb2gDGZ5wd05GY65WBt1axGxH6VzEUv7BG2z4kNODHkeMf6pZ9kB0SEIu cjShxNYNPjKBP6nxGn9FVqsgV6lgtbtphu6Ioa+QzSYYL8fQHIhfNEigfAMPwk3jsS1DfOkoXzG LWkLp9qRtAwp2XiRSusCCYBYYKMLGKaOc2ZlBQeAkp/uTf6D5odBoLmtBGrKzgM6MGdI6xt57sY GAoMqqOrhvIg38UVLmq+Dr9RWTjyrS+kCCiICB2IMWS0sqTOQkgSBuQCe4kHgnXzW47xKnWLQ5u LANGJdVo6ilhnOnexA/8PaSR1lvAERZ8tA3x2cYGE+8U/e3woMd+cPVx3uhXzPwUGFXqLK4IeIB ZwRQAET04j7oq8FNny0lxRDrXsdckCN1Ce9kWL9B/gq0L+qQ1EQnK9t8gJYSgZuHmxZl29wRVkt pw3SJXV4DUUabyQBoRCmPp9kxJ9TBQnwN4E3XxlWM= X-Received: by 2002:a05:6a00:3a27:b0:82f:684a:84ea with SMTP id d2e1a72fcca58-84285cbdd3cmr1102182b3a.13.1780457347479; Tue, 02 Jun 2026 20:29:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 16/45] target/arm: Implement FCVTN, FCVTN2 (32- to 8-bit fp) for AdvSIMD Date: Tue, 2 Jun 2026 20:28:25 -0700 Message-ID: <20260603032855.106930-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457659397154100 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457459; cv=none; d=zohomail.com; s=zohoarc; b=LvbJhe3fDKEqrCIcXferS7lhHIFnKSQMtzWIga92wopVnmDFIas2MasBLaqvfzJTfR5n2ifKRy2/jCv0twnWXGLQtbJUxUalI/leoApTGAnWl/3qntR/G56X21cK4y0auS8rmgX1pimbNrXMZOSrUq+Perw8PdGQr8M7UQokoC0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457459; 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=g50CT4whMkEWMsWeDnJtJ5B0M4G//T1UV0U4fMA0Fto=; b=bltxTlSA88gQQr0Iei/EOyeGALWvDxcxwG+ufbhOUc6ewUwvqFLOnNocpCL23ctqqdrQpWU8vFobxweXiCN43XEO+oLI8Ah6Mtp8HLsks5XYavAZGPN7usXUvIwJY9Yv8gq0ya8fcScH4PYo/HeXrnfkufNgFyRJmgofErkdg8E= 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 1780457459208580.7561943761744; Tue, 2 Jun 2026 20:30:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcI6-0006in-7S; Tue, 02 Jun 2026 23:29: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 1wUcI4-0006gt-1x for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:12 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI1-0003eu-Sp for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:11 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c858d69bde9so1664600a12.1 for ; Tue, 02 Jun 2026 20:29:09 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457348; x=1781062148; 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=g50CT4whMkEWMsWeDnJtJ5B0M4G//T1UV0U4fMA0Fto=; b=BjbWmsv4EzrtlXM8XymWYbwL9xRhxLRb9+6+o4do+rLlyb2v+32J4qBRT4o520V9hY G5NfGB7EPjlhgMHBhrYzm+tex9db0O/49so5vQSvALOHkrQCoNIFHRC0Slq6iR9w1KNq /a/TeeFQ+BQ4R3x06t+y9SHM5kBSDLh/2ebaMrxdqcRyeBDT1yGKKdBFVAXnh3toiKAw GwMcoXluAMiWm4gdkLlgcjVNWi2EV6aSfD0cc96BhXnDcbNyEBliT0r6MNajoeIvqh0u YJ8q7Y668yCmMgFiPT3CLXxNmyY3TU1jyxtWt6q5BkwNUHGLzxXrtdui3OlveZlVgBmV vy1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457348; x=1781062148; 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=g50CT4whMkEWMsWeDnJtJ5B0M4G//T1UV0U4fMA0Fto=; b=jy2upG20z2iQV+J+e6PQiJxdUjD2wndrFY5ZYAR4nLT8nzv/1rf4MTcEnPv1mXFi0m +LSF4lLCM/yeBHCK+SOVs9jzn/A4175WyNgP6kXr65QNFp7Q/lBXM5j2iDy/ZihS1H/i O02mZ5KKHQ34fIGNCYsSPZHLjNK7fUgB02bSYH5nyy0M/7paHdpEncLLuhCgk0CSbvn+ O6JYqkMxWXyhSJ3ahoGcQAdbOyrMarHIeAe+T1RlUfPkRl/SocTBSsfQWjbaYgKYjyl6 ut+0AkxlVrL0dfqbZiznZkSh1QMoc4QobNNwcEr9sfdZsOAq+vSqayPUf8V4p25nCm0p 2xqg== X-Gm-Message-State: AOJu0YzqqIFh0/xD/cvzJPMLp+BU1oUUzvgeN/z//M0QqZkoJ4rI+v8K 260UBRG4QpevYIzXXCihTfe6OfolCyJ7ji3zr85BXc7tiSQmnbYAeapvfEv/ajr0hsDzqqlZuRw RgoXUaQs= X-Gm-Gg: Acq92OG1AdKt07T7l/Nx23QcuAcSHbnbyT7zWhbSwNNvbEUv3CD7FUVhDZm/nvh+3Il P3Fg0YR9Hn/lAySYIgKJbE6sKtMujyOT3ilaNlpp0APSLeuXUTLuxFL/wVdoHXsMTe8rM53K2ys yd3U0T7gRS1K0pFoXTYBRy7GbXUWOEhisXpTLBc2pb04fG0s3MVgyiKmmbKppUAUTRQM+SWMKNQ X+Rm3BwmaLUzwDtzdSM3T8fvsggRlvDSvC7dFg9iBZeVlaGc+XCdYgbpKWuaQb8dpPhBroAHL2z VgOy3hTpzwLeHvg0Y7ySxPpveRH6aauw+LeplIQj3yam8RZYQdJNrY54kQu32ivZbeidM05XkEv mhiqwCDdEYWjG7mKZpIhBpPgxabVMigYFOLGfWrM1//hrdHb/BqBLHOZ+rkCKt/WnaK8m8rrt+P +pXGq6ei53AJiuhsqYzLf+KH5HndyF2DvjodNXQcM= X-Received: by 2002:a05:6a00:1d9a:b0:82a:780f:a187 with SMTP id d2e1a72fcca58-84284f34361mr1538200b3a.36.1780457348196; Tue, 02 Jun 2026 20:29:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 17/45] target/arm: Implement FCVTN (16- to 8-bit fp) for SVE Date: Tue, 2 Jun 2026 20:28:26 -0700 Message-ID: <20260603032855.106930-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.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: 1780457460143158500 Content-Type: text/plain; charset="utf-8" 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 eccb5b191c..df2b89cad6 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(FCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtn_bh, false, false) TRANS_FEAT(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, false) =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 Mon Jun 8 06:38:58 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=1780457548; cv=none; d=zohomail.com; s=zohoarc; b=BPvEFjGF78l1x36PsmwEhrSET7bt3E2uZ7b6wpDdKu2IGCNjD8nq67x7azC69+hfB610iSMIZC5QZnwMe3nawSikVUb2whIdAJJ1+lTNOo83Yrqw8FrEqLZXyDuqe8fXT5fBMCfyGsIeGXXyUCzqNwlhQKabpfisrxiTY6+ZEn0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457548; 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=r41k7hp2Q+5ha2UX8W8KuldhcDvQ3TFyKKDFHS1QckA=; b=NxrW/8/LN9cyEAUiQKJ7QQSjkgtxeMDnSCd/eznIN3Kthk0GIWaU7STI+Fh2+ndwDbwWJh7Y13zoaf7fbyPbsAqkQa35lFaU/9c67v4mnw6BJX1jJF9gprQ5bVVr2G71dNz+lrRNxUEmii0hPHOHLRSPtA0bdGEQPYMVWFzRtoU= 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 1780457548115439.8624709548769; Tue, 2 Jun 2026 20:32:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcI6-0006ij-7h; Tue, 02 Jun 2026 23:29: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 1wUcI4-0006h3-E4 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:12 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI2-0003fM-DZ for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:12 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-84226d0f1d2so2595375b3a.1 for ; Tue, 02 Jun 2026 20:29:10 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457349; x=1781062149; 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=r41k7hp2Q+5ha2UX8W8KuldhcDvQ3TFyKKDFHS1QckA=; b=Ur1CkYNNOs9D7Z2NjEk+IEZVs5jI6yQ1ouSTA9WX3OAaXB5CnwswJC61LCivPXZsFE HME7UNG8pJUhh967p6OTxkq72b7xQHIvGOOwHO9jc+Kgiw+Uul2/2mm0S0wnSjtXeRuU 3bDWqHJBfYWV7MzvQ1a9zgsRREWu5A3goKw+qpgf+OXGpMm4wZgnnidBNDngDwlkUjaJ fbB18yhm/OKL0PtM6VLCgUlUeqNmhSGS7cJVSoEj0yOXRlyvirL8citpAYYweE+YKY1i BArliCvwLfxpBmaNm6qb8B5uQX+Nqrb6QU9ykjT9EkXbr6LE3Hmf+k2f9bQhqR/NCOcB LQvQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457349; x=1781062149; 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=r41k7hp2Q+5ha2UX8W8KuldhcDvQ3TFyKKDFHS1QckA=; b=sZh1cgHljm5ohvWeDGilStf1yGCFDugn5NYXTIJWx40RMu6z55e0TXfl55hfq2zIVk dNyltD3Clf9fYQBuYlBrJvilOudTT/jUQYIYTzLKs/ERKKLk1T1WQEy6vE+pqeU7+ROo Sikmo5ZJChip/YTKm0p981oqQamgdNHANE9FfuS/qiY9DsIMvxYKd6AnLi6fJ+BfYPGh kKj8WqbA4EAGS2dYj4ANAbYwCpAv3AQFevJlrCovhjkqB5wLOqc4EBboHN2xg3w2mEVK jvfy5xn50Srlv2QtdKZpmrQzWU1s8uI+9rMLJVHd80H0nNw4ix9smiFoD1WZK4jdJ5Xm N+sw== X-Gm-Message-State: AOJu0YwhJJtPghpc4yYquIK28RUb2MpRL293uuMl8RFHEULKY45FkvxU zBnptgpg4lJ5+vaULCIf3mA8+gJg3NB78BfVGMFneC7PFDItQtwIJHnyGP0khmZwXBZUdYfgyeo XAuU5jYo= X-Gm-Gg: Acq92OFCNm/hDe0J8rSAAOeq31HM9qmKFfntead8CEjBdSZ1YMtreycahOffaz0VWem L4FsxISpXwAGil/9ZLhuDsGcGuvvKJrgr7A9oHcUvXLt1VqtiX7ekFNlQaJVZA7DPez2+c+Ff9G banGr/SxOd1OcFUO0byd/o/umSaDedBsx5FtRQZWWPex2GRgXlki7ha1RFWczt+BPYFiQNLE86F oI2W63snS3LOAnd8JvYkdB/XnWH6RWEZzi1XyddrlTy13HyLHuZ2C5d+cSmx27d5tcDA8KuqIQY lje0sOOSPR+r0fHVhi1gDQZFoqtxQhb38P8JE7xNV5iX8buiDiYiEDjivDLn3DJGSvewJr/LD9g rLevZyFnO1qWQwsatv9oHIPTBK6n5AFJdRG71UsPV7ExnjeGLpmuJ4Bh8kDBoWtjEtmiu0ANnMD VcNitg5HHlNQ5ziMiycyvMb5ijot2B3PZbX6yNLrM= X-Received: by 2002:a05:6a00:b483:b0:842:2ddb:e303 with SMTP id d2e1a72fcca58-84284da5a08mr1657628b3a.12.1780457348886; Tue, 02 Jun 2026 20:29:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 18/45] target/arm: Implement FCVTNB, FCVTNT for SVE Date: Tue, 2 Jun 2026 20:28:27 -0700 Message-ID: <20260603032855.106930-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457549708154100 Content-Type: text/plain; charset="utf-8" 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 df2b89cad6..63fd1fe3db 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4104,6 +4104,10 @@ TRANS_FEAT(FCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_fcvtn_bh, false, false) TRANS_FEAT(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, false) +TRANS_FEAT(FCVTNB, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtnb_bs, false, false) +TRANS_FEAT(FCVTNT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtnt_bs, false, false) =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 Mon Jun 8 06:38:58 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=1780457409; cv=none; d=zohomail.com; s=zohoarc; b=e+utw/oEnqOsUKGNEH1Z/e93s4xSeRQVRSAL9ZJoQULgovG1wMOBAAnJPX450r8orDN05sRLNPoKcYp7GWo79H3sN/TdOVtLBLcCcEIouzoSr94ljCz1YmJVw6IjcpCFRkn2sW9ZrPVtdpLCnpCXtfYwlOQdrWQjCQwJY0xUlwk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457409; 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=XPwmmJFUjef+Kqfhm4rFoijt4nOcoSJTA+5hXdlp2cI=; b=UAjzh8Xjcaja+9A1dZ7VAPSMDlNYnT9NDSGFolkrPVUooP850HDkyMmPvNiRiYByX4bMvdyS7iryvJWSUbjPgd0lK2vS1JhvnzyyZ6q7SCIOBY8HEZpcaHTDQjhuumF8ES2CagDyH9tEsTaJ90qHFTrfxmoVOVpVNtuFxVlUOkY= 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 17804574092051011.2096286323591; Tue, 2 Jun 2026 20:30:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIG-0006qQ-C5; Tue, 02 Jun 2026 23:29: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 1wUcI4-0006hP-NU for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:12 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI3-0003fb-5n for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:12 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-84234c83142so1386713b3a.1 for ; Tue, 02 Jun 2026 20:29:10 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457349; x=1781062149; 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=XPwmmJFUjef+Kqfhm4rFoijt4nOcoSJTA+5hXdlp2cI=; b=qkBEInEa+aC1u7b9oiLtJtw1l/YyKdhNm6XPhO1Y1lRxLu3KJ9Z7cIvnW4BcjNNm3T sD41vkWbl2x2j9naman74KVe8qjvcSMZl3Ush4ZXhyhETzNZ5MFowWdg242mLRjBOMkY xHvdAGpdOdApadLmsxyMWPnWGE+eL3aabmx5vDNWT9hjQi9JIbMOPK/0Rzr80eeGU8Dc r9wo1d6SMB5hfNGKYfg6GVzvNrF3B2VRrNeLbwNw+dWTd3Z03ShDQmlLnM5gEOwhPffH BKj4oD0TWv5KRiNA53nsXeDJGRFsW7krotoVPnBXCkVwjxtd8ivIvmQHUpLKepKHgPOm y8dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457349; x=1781062149; 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=XPwmmJFUjef+Kqfhm4rFoijt4nOcoSJTA+5hXdlp2cI=; b=JZWw8lYECZpQOyC9PNe3Qlcff+wxVR+r4pKQv37kMvQrIr62399VAAiS85ODOQSeR3 dqfSEG3UnZ//OGZGogrxWh+MbG470wHy1Jwo/swN3jeapa0MgP7rxe2navsc8BUnw/Ir HxebG5OoONCxl4o7YNx92lpcBAPdl2ZFYmaZoIJGOtAVp+0fXgOvZBa5GO6An+/d209D GJaynQKfbwdMfwUvK3R6ABZupVLrof3QDc2yaPnhNzKd2MkOa3xqoJefVwu7MNh1ZYg8 Z/FFWclGmDaCwsrwUsgkk66dUxK44ZHlexRolYRSVyvWTWjYcHm7xzG+CG4uVQBAooHO y7cA== X-Gm-Message-State: AOJu0YzEP77gmooQIygqB6cSyRUC6FAVNKlMxUE9Pr0EjG5h4mv6WLHq d/wQN9mu9J9VOOLrn5Q2MwJoVa7lgYKkF+iZFdEFxhr4MkoNI7jG8kJDV9iaIB8STeeoYimQgNA lMMGWo7A= X-Gm-Gg: Acq92OExkEOYIqP86H/TFHp0aIB3k5bDOtpnheC9FB1wxRRnxENj3Pji0MqYdMF2qjV y0hpuaZr826LW8dPbff8vWC9utFVWexJxvbi2i2KVNGDOpLLBNkokEIvqSW7i30X+Y3l7pUU0MW fbdsMFmo9Syak7Rl40CGJkaDXazSYRTNYQAGb7aLQriIrNUyCUdf4ZlAW3cxVkBwIx7o7dxq6Rf /4eqhuOMM4pO+oJU50/0FXYD+NBE7E4eNy/o/d4MLysd6y4FU2dbnTj8U8MGntDuzJ05ehrDfK3 tmUIFV5Y6jyYmjKSrQIe8gBq+lWK5WzjcgodnmokfogbgXYXcblvW6CHEM2q3TNc157QeEM3Cxq 3OYMq9e2CmaZTupURtBDUo8fk5FWgk7/buH9oMI1+06MM+Ll2OW2PGDWRMuykK7+bWc9BtDQknb KvejfepoVgCeBFLThPWQdfVMI1d6bCeSH478cd0mo= X-Received: by 2002:a05:6a00:218f:b0:835:6bdf:c87f with SMTP id d2e1a72fcca58-84284df01f6mr1445693b3a.9.1780457349493; Tue, 02 Jun 2026 20:29:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 19/45] target/arm: Implement FCVT (FP16 to FP8) for SME Date: Tue, 2 Jun 2026 20:28:28 -0700 Message-ID: <20260603032855.106930-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457411708154100 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457469; cv=none; d=zohomail.com; s=zohoarc; b=TINlH9dBdapOY+eOV7Vora0Q0ZugeBazNvzid2C00bqk69vGJcS3c08v4ACcLw8JN7LBSu6XFz8Z1kSOUSqJTjE0NbKUh1xRRhCY5U2owhVQMh8GWSde670OUmNNQ1fpxFtg6D/FPSSIEvIvTjF683qqKwIG9Kdi7eJn90BOfzw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457469; 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=TDR0Y4sXlbZK7TrziuxhbkAjyW4mGMb7eMYpZqe9/Ss=; b=Pfeehv6uep/qUapSzWwm9tK6I+U7cA3D6BDqDOGrXp1o2TGBH6HxgnGszElM8oIvC6byGWWYkURyMekKxoW1Y2aictFVul1EwEOAcVfLaAXgGMX42waCh0tIQH2FTQws4Z04+pbse+xwTMB+SRi0wVH17yBMYeHYwQAcCsnVQT4= 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 1780457469459243.2783312756884; Tue, 2 Jun 2026 20:31:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIJ-0006uw-V5; Tue, 02 Jun 2026 23:29:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcI5-0006iO-El for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:13 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI3-0003ft-J4 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:13 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-84232e83ca9so1491035b3a.2 for ; Tue, 02 Jun 2026 20:29:11 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457350; x=1781062150; 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=TDR0Y4sXlbZK7TrziuxhbkAjyW4mGMb7eMYpZqe9/Ss=; b=IvdM3ccIRk4yXagQm7r932Z9+y2PrCTmNuRdrz986IodQOlF4FdKJJgt9mSZhgE4OC d38yMLm5jGZ6Q2ycEy+6kmgn6EGZLnqEluMQffqJi2PCB6MOf22wa1EIdvRtQDvhuUcT 66hQxDxDiUnUZ5wxihFiY7ox1TCXrqYJaKLPoX3qL36256267CMqGmmaSHsBOKnhzAXS 4mvhu/pM/15NpsfGuaHmT62pb2CSNC0jVND1iDsN7tVxwMCBPhIq/m4X0VmG5t2cJgw9 PrMz4NxexbD07CPx1RTKy+P4sG1h7PpZDYKtR4Dq7f/n3rynBhMwdzQxVtthARlMpb16 IH9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457350; x=1781062150; 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=TDR0Y4sXlbZK7TrziuxhbkAjyW4mGMb7eMYpZqe9/Ss=; b=orVj1jrqt8hE0pNZodTtdk1ZiKYX4bIIbF8mCdqxcgdToH2qavHV/ANNoDhcYx524Y zLMtjK0Vh+b9IwWfl1dw3NKduK/oSfxJDfFVpUVcNC4XOYmN7nvThEEAOuCGJZrkn1MX Z0GowOVBXdV3o8tchf5joTko6h2LHJvEoS/Rkk55vqBwRxy2Nqm5TzMvDo1F7nyxg3Jx JO7Vvz34UaRbjuQ9PKBg6BBYN2r1k+4XGApqLFjdlwYToZB+jyC7da1MnvqoQbAG2aLP 0HB3ZdSWblcgRjNGTvtBQYrQqjnB/Z4kvjqZvzkkDZo9EVGWB8y4kQNyh3iHtOHung8d Ma1g== X-Gm-Message-State: AOJu0YyJsmOImOP399UAq8QLfmE3CryIrdyJS1k4JVdWPFcTNsulsxaQ Qqdf61bOFR1nrjZmDatDA6i8TCahWBatYMO6ieFIjbj+OAnHzjFkLcS1tbd7SnxJJHoqYiDsZ7f h00Ti5jA= X-Gm-Gg: Acq92OFEUUhHc2xbGZWcwvz2e3WzGZZjVScHjRiSOGsxVMH2+5m2YEgxykq4QfTV98w DjVYEqiBqm6pg7P+RzYCvumRoZEerXh3OiGZ5buzBRU+4ZgUgcpwVZ/3ZDhoCbWmgYZV/4qc2Jy kgc/HZUrSvoUX1orXyCTMuc0nUTh5xbot3RaaFH97VbuSQ7cZzNBjJgh72SKJdyA5nUublCPxfK VJyeP1A4cmV2XK8lrMgCkLzEdqI7dQOF3XCfkBnTiZ2Z9w1Gt3/uc/N9y8HkW2gfPjiBgD5Enq2 /QnNxB6JnSpBQijtuTFwBwcnyQlxja6GLxU2fciCBeCB6Tm9y2r0j4yoFPHQdKNfUYfTiXd9W4i mrIgFbhGijxkDj/o74qbeKrClHXminCi62s+U54RP9dKul1Zq+WmhP28uD1ZVIuZ8XspcQyVeuc aG+7KDJFmAA/+OgRIEObeOslTl6Y0eRMN1JtAK7N0= X-Received: by 2002:a05:6a00:14d0:b0:842:5b63:610f with SMTP id d2e1a72fcca58-84284db9952mr1654442b3a.4.1780457350130; Tue, 02 Jun 2026 20:29:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 20/45] target/arm: Implement FCVT, FCVTN (FP32 to FP8) for SME Date: Tue, 2 Jun 2026 20:28:29 -0700 Message-ID: <20260603032855.106930-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457470170158500 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457431; cv=none; d=zohomail.com; s=zohoarc; b=LMOsJnUaWP/1MMQMKdatMO60fJAXYd455uGfXBv1CYjbtESXImOmfnzANkWj8WAS0gzbDoLXzYxEGnAmWZWZv4gC8ZDvQ7aFaRFVHWZ9z55trXisIbe3tUA/FfaNyfsjzcXCO/L99Sln9bjzum8up2WTbTMH7Sq1Mm/m3OsZHfw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457431; 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=iaxhRCJFjIm78Ejakhnc+/C+uEXU3BZAbpGxIvZP4bw=; b=SuPbn8UAJp7hPQ5g7a5JMJT413f1zph2HZKIbFv8ghpax5eHQPYZoOU8ZkpNSO+YJVl7UhWJCzKlv0XGI/5RNzp/lfVWOakXC1FG5YvLz+JjobhyPuWGbkw5Wp+Nl+FycVDCZOBpD0TFkeSBV4gFq9t9LyjKa+lKAYoErwZYlWk= 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 1780457431524853.1996159197481; Tue, 2 Jun 2026 20:30:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcII-0006tN-EU; Tue, 02 Jun 2026 23:29:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcI6-0006iu-AB for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:14 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI4-0003gQ-Ex for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:14 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-842307472d4so955956b3a.0 for ; Tue, 02 Jun 2026 20:29:12 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457351; x=1781062151; 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=iaxhRCJFjIm78Ejakhnc+/C+uEXU3BZAbpGxIvZP4bw=; b=RT4HRq8+kbDC/wd9lSldbTPUL7WOLW4P5k2+5knwQt35ZN+fkbsRwhViT/6fGqYsOg rIZ3eiNVBzLxXpZhBpRmyBoZJA7RfkAVLNAkGPYYdwK2qb275ykAO+b/36zSQ0wke4z2 BHid/0j9MEJVZUe7lrOj1umAF3HLEq8PJUa8gNymbqG3E5HRMkqF++IyvGJ1Up1xrWmw /lRnJL97bKS9Pv5KYkiXZggdlkT/KGXU6zanwYnRHrpF3NIRi1Qwh+yK1jncBvCM1mqm e6mwd7x7fRqO8vaQBxd7nTEjIMCxVix1JZ6JCFkJVdoF6xJwnnDYNmgW9cFdEeRKNz4T Rxtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457351; x=1781062151; 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=iaxhRCJFjIm78Ejakhnc+/C+uEXU3BZAbpGxIvZP4bw=; b=g+smfKEupuFBVEhSa1HgM8gaue4+uy2ranMp3XbAKmVUXo1A1bHlD8QnTCjlw0tzjP rOR87PllcpUl/WODKacqxprqUB2E9LIYXQ+AP+jkxlf/ERciK47pCFQ29H0fYpl3SbbY U8sy9N/FBpKJB2WAdrAVGcY18rFUzYNbx4mCWHzmPIDJb7yN/PFMbpMgVSQKMnmI9iL+ CY4iYnDrtSSJRj06cht5pHLGHDJ03v1zxPMtNorsQK+hVCRMU2AF6tN+mzBSP2AbPshD 10dp1yQDTG7G/C4WhLlaVOuy1lpN7EEELI43iUTCi8HJzTgs09X7/IQ6rTAZca8xdL9u WEAA== X-Gm-Message-State: AOJu0Yz185siufZqytkb3iE0KJJaxWtqlJHteJ3fyqR6NlbLfcZYBFVX 1Bo6o2m83JxS0kjCS3aiCINki++QpMsUcvN7ztxYnKOlulM4KyJh0VdoWGFmn8icLTo4C2Du7pT jjhziD0o= X-Gm-Gg: Acq92OHf5LAiHjFOK+PQnaDkeFGDPowrPymCR3FxpgYZ1d8foDnNwMd1c3ivXWzMeOH /vzP+rZbOe6YVuyP1JfANfPkrVvuOOReRHZdhj3IoYYJHCscWohjyTXuc5lSJ2+2W0AanjQYE6i k3ibP174hKU/aERBgbYuWTaaqgoVltUtt0aoj73ZKlzfINTfaTepN5zIYl2wHGBCAXQnvGPykPS +VcIeDQjKTBF3iLchqW0Jb3MkW++56Ua1dV5W5TC5NZLC3uNLN51FSxw/otkMqXHDdJAuSNCdEp dTjl1fhSCnvYUKS6/C57F41As6TFzEFXYBGdJzcJBSZUTFo8ApU8CY8qFu1gBbbufo1qC7ZbizJ rNLsVL4Rykh9C8LsTbar/BvabVB6Zv5YTiljJx8aaPyabFNRqcIAm2/j4zp/WeHq5mocdWto3wu Y8RXTxPXBE+DN/OgRZGIXoRdhbhLbncq9crtgF0Gk= X-Received: by 2002:a05:6a00:198b:b0:842:6fce:6171 with SMTP id d2e1a72fcca58-84284dc5af9mr1578606b3a.3.1780457351075; Tue, 02 Jun 2026 20:29:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 21/45] target/arm: Implement LUTI2, LUTI4 for AdvSIMD Date: Tue, 2 Jun 2026 20:28:30 -0700 Message-ID: <20260603032855.106930-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457431963158500 Content-Type: text/plain; charset="utf-8" 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 3231bb2100..94941aafad 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -3345,3 +3345,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 Mon Jun 8 06:38:58 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=1780457592; cv=none; d=zohomail.com; s=zohoarc; b=XuYZPE5fRLp3GXGkj9/g6BGA8/GEYJNlI01siNzGmFuciOY29t+IKSmFid2siI7UMSjOPFt2xX1FiqAHLkZLJsrho+04MzCaXpUzGTp6Lj6+mNZ6nq9WVb+Dufs7UhR/Bh6U8x9c+FTzVeP+6xgxjzgMJhtEQa6Cku4MBa6KXPo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457592; 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=jN74IEkGtZ/KNc9F46qPua/rkyHnoSA6n5kgXXd/Ils=; b=KGU47xg4K70O7YTj7hdz07AnTc5SoXkR+Ey3WUi4EctZQct7jVzwO9HIiNAtXDw9c/d0cPunz8xkVcgT9lRxKWYgMZxl7ViykouTWfVzdPJ/SXtXrG5GpKhYkCJulV/QKe91tc35NZh/eObBgIKTl2qfF/LMyCyHIsG119INysg= 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 17804575926218.797657300012816; Tue, 2 Jun 2026 20:33:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIW-0007EW-Cn; Tue, 02 Jun 2026 23:29: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 1wUcI7-0006jo-9a for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:15 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI5-0003h6-A5 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:15 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-8423f236418so1544282b3a.1 for ; Tue, 02 Jun 2026 20:29:12 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457352; x=1781062152; 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=jN74IEkGtZ/KNc9F46qPua/rkyHnoSA6n5kgXXd/Ils=; b=reqqSaRaZnXVgbg9sVklpSxJuUBGgX3Qr6L3ekE1b1MfXnYII1IxQCe/I0Xw/Ry4LB /Joakfb9i4jXNDYeS+CwKRnCUEJOmSuvWDB3VsSXEzb0jYkfuXz7vF0nKqICmy4gbgrI eVNtFjaQ0dWdI6+aPBYIk0fVhXH2rMLqG1Z0XDYD5LvNAaWPD17kM9oh+pFoiVUhlp8G BNU8xnwyv1vdmNOqzWoX2nKaexviWZJ5/Bk+6ApWhFDqhvODKil/lnGd+VKbB7taBJA/ cG5nmzYa3Rf4+aToY+aMEwOhy0tFEm/kEed98l08KtKt7RdkVIxqccjI4gNjAOnQSTbT tv8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457352; x=1781062152; 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=jN74IEkGtZ/KNc9F46qPua/rkyHnoSA6n5kgXXd/Ils=; b=VY/Da8m+8IXGEdgsQIA6gFnoyIdtIy+3HhIh4GgAUF7IfldNpdLNFQfNH+AwHyr3Ix SZCsNhBikFowH7UsJkLLDvfBNvZ83pkjH/aXB20Y2BfDQEO1/UiqhKYg2jOqglbxE+x+ +9Ifub3gyqPzhlG6xC1wx5OANq9wCZ4GXCqIkrqQw/cBPGSxhPPUQ5orUHL/eQzV2+Hj UUxde7rtryeaE+z6cWxDxsLUAyvEbBHltM4oR+gLDI+X38m0v5J1EoqeqGxxdYWEvTHs 4rX8AWdwiCSWzYwBESf+wdnecxgj7lqa70IAMsLZCrTBYuqsuqzjbhipe6MM2jg+1/L4 AMUg== X-Gm-Message-State: AOJu0Yz7107Pey80AGOvr8faitzifm3sWqdTcopzJTHQq5Xj16R1ZkOY J3rGort2X3gynoq97jVmJ2/wN0oqZSa7YIxSqa2Fwype81TIrx5cpZ72DaRVJInCTLF2IiJaRbI s8M+x73s= X-Gm-Gg: Acq92OEs8DzaVECPt/7syTJkCbUWQxDGl1fRtO1jqh79BxU9BESGobSWVt/e76NNYLd qfRprR6f5Bu/R81l824Umg4sEuyYwjAC68zpk579RUisIPXOtWdKjPhnzlZ84n0zKrQiD8odFsD VTJKpG+1GEprDShzeCt91JMwPC6gN2B1KIlwSlBvzF8xgg07GDwv7Sycf59oG/D46EWO8s8nnA1 kUf2eThHEBlOmJ8OsMZ2egsm34prMVhCu7Ww8ohd1POmyqk1fqMpjncuZs3Hg8qjSZfoUtVWoV0 Nap/U/vxDiNIul6/Gt48q69IlLgml6KbMo+5IbWuXAxbILELxew073haci/PPTQz0eXyVmnnlei l1TSo6k8J33Dh/j4G85Y+FTtBYpppLDGq7XnimRgBLe7VoABljQKpjKsk7Uoiz4wZM87g4e3suA 1MY41a58s+tVz/CYgV73YugDdR7XGcR3X5jGEjC34= X-Received: by 2002:a05:6a00:4acc:b0:842:7e6f:f487 with SMTP id d2e1a72fcca58-84284e70333mr1413532b3a.15.1780457351808; Tue, 02 Jun 2026 20:29:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 22/45] target/arm: Implement LUTI2, LUTI4 for SVE Date: Tue, 2 Jun 2026 20:28:31 -0700 Message-ID: <20260603032855.106930-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457594834158500 Content-Type: text/plain; charset="utf-8" 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 63fd1fe3db..5a3811d294 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 Mon Jun 8 06:38:58 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=1780457406; cv=none; d=zohomail.com; s=zohoarc; b=KUMBndcND8bdIS5a/mgTSHuhGemjrPN7XDE/rDTGOFAcqWEbOUN70t2vm0T0gpjQyfiWkrBVBDgzMxYJQWcYSC3y1xh2y2/Zg45nNijlVJ1yWSj9Bv5jRVpS2rDjfnYu/QM7K54WoYFy/qx5+j1hxXlEUdD36xI65LSneFgfrIg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457406; 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=LwM2p9I/SON4IwZR4K/Mk/coaIyxRCDMbGetn6Pf8BM=; b=mOZnWVqm/y+RgjTheorqKpdPpBa1oCicda1k2h7usb8fHLYWh4EW1HflpSIyONbyFLVO9yBUEXmlI9iX0XTWoRvUHgDt1fOZuVtadFlHRPKRksc9/8w/r9KRhP+FMXKXNpMIerRd6fjNEF24DPEalvM9ZWaSD69Zp1jWEq5HODs= 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 1780457406799944.2724292998745; Tue, 2 Jun 2026 20:30:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIS-00078d-4i; Tue, 02 Jun 2026 23:29:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcI7-0006jr-Pa for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:15 -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 1wUcI6-0003hR-8o for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:15 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-c85825bbc4fso2593654a12.2 for ; Tue, 02 Jun 2026 20:29:13 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457353; x=1781062153; 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=LwM2p9I/SON4IwZR4K/Mk/coaIyxRCDMbGetn6Pf8BM=; b=hJj0ycZA9s03MPQ9PnDSYllkFjbzB0cfpDJz0/GOdwzxIYCJHgalkZkaD20VPTlZLs yJKU+cgEU6jLANGF9kfZiufiFfubwFYYv5VS05LGfXEV6dEPi8WZZ0kQCsMMq/cTFRuL dcK3fslHZ03ObFRN/ccyLl5eb9MeOFPfyaXkMZNa9v6Jcp91ZKVIP5UpUbB+HoQGxvPv b8atQV3sBMeU5RDdzapFBqt2VzXNX8RRqURCxbeua99kzEat1WCf4K/DmNtmSzMO9tt1 W70g23igx3IFhyH9uoHyC2SmVUAlFfr9PIU6DBQfrCaNdOTir5uYQEA8prFMeOQUJsg5 QKZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457353; x=1781062153; 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=LwM2p9I/SON4IwZR4K/Mk/coaIyxRCDMbGetn6Pf8BM=; b=kytXkMeTTTCR6UAtM1Ls0KwMiFSw9B6WIl5lTGE/MQ4CXjfDsFs3H5FByvH48MevF8 Ek8AZ7m2CE3gMalYW15u9M6BBL5Jx/I2KRu1W0ZE5IM8v1p/i+ZxK8zoWkOg0z7VDz+e Kxfb1vXfy6gPaRc+JnIsrppzV63HIb7P4tLy7IYgYZ8h7Uq+HSWyfSwJbj9UcwkfB4e6 gVKcrXepdjRF/0+J/ktJMScuCZar/bX+3YrtzxsXIlEJCzx3cvAFRKCqoYNqhPY0wSDC H/i210MvH9exmnOV5FgfLipJYxB3bZBU0srC6ftVw9X65dpNiZLNHQNgCn0Meh5yrtnQ xWXQ== X-Gm-Message-State: AOJu0YyY14HNpsMjoqtPMbj0FT1sTluc7coL6dD77N9qztwhfqaiITx4 9YLf5BMU26kEwpOGWiYI1hUn6Ivwxy/nn+6LWE3hKxHkcNzcEgFKUH/e2fZIobTeCyK/cCbMW8j qAULKM2k= X-Gm-Gg: Acq92OHf6V6Xym1n81+d9kaPZPIaFqxeuMIdREiTOUPtA9mDVJHzHrbYZXqdN2PF5I7 kUaJXlFL2CoaV4izY9eMjLqRiX1RpRoNwV2DkKXt9c/X12gq5r5MXLqQCJEWprSwAOdHNXwZb+8 ALc8vm9fKCnaOM2HVS7WIU/rE+5k7WvHl9zPVnKOz23QIF0HRQaT/13G6XHVk9OoS2Uv5FHVEgm hHy6zQdBF5ygWpWcCWnF2YT/ct58yZFcHK081rRWwhfdm2iT5Ygs2ZtcafuG10eZbKd6OsAlQWv PmZnWcYXdYxvg6PFqp4aRzOM1vaS7u5IhoB4/2EuD5i7woiLnuXvDpGCFPT3GT6vCS8gy9ZRrJI 3yi5DxVdDqN1uB2HsyR0EW4/KOAx+t45THJo3VYd8ghaRbAGGhJsbg2reoeqzp5nIB5Npd1Aoz/ GWcZhMolfdOH0OHfWKiz2uv4S9UyImcY37gV22ML7FUNmhx9mzyA== X-Received: by 2002:a05:6a00:2e99:b0:842:3f9e:a72f with SMTP id d2e1a72fcca58-84284d5a526mr1590086b3a.3.1780457352611; Tue, 02 Jun 2026 20:29:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 23/45] target/arm: Enable FEAT_LUT for -cpu max Date: Tue, 2 Jun 2026 20:28:32 -0700 Message-ID: <20260603032855.106930-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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=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: 1780457407759154100 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457409; cv=none; d=zohomail.com; s=zohoarc; b=K9RwqCv4BPBOmkrFfg1SWdD0oQ3KanffxrmysRsiCzSrQbBeNO/YeA3IkUNxmY/y7UtMQkOKjwqDAAO5/G7QHT2bwk7iQZr3TfqkXHY3R8PVBEfQj6t2dc9Ey8OsgIY5Fr1Sh0uKh5F4JgRp1cqwpjiLHdXj1SiZ7K1eRFhHQK8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457409; 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=ZvTdErfxKyM18jy4fYLJA8neNrcYEuEEmDnUu40A3Ns=; b=LO50Y5Dk6fUwryuKekFT3dHgVqmRv/F6DeOF63OJAMorfvSIRwFgINmvItnb4HXpeSwClOmexoMjq/r5uEi3Le2GduwwY/C3yxM9Qs5W4UYmO/L+MBvLuuE/6TkOdQX14oEW+J5VGUIoaFNZ+rjmHdbmwTVH7k5JW5XaVveWd8g= 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 1780457409585916.2833875027294; Tue, 2 Jun 2026 20:30:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIS-00077l-1j; Tue, 02 Jun 2026 23:29:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcI8-0006ki-O6 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:20 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI6-0003hg-NE for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:16 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-8422871b42dso2080827b3a.3 for ; Tue, 02 Jun 2026 20:29:14 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457353; x=1781062153; 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=ZvTdErfxKyM18jy4fYLJA8neNrcYEuEEmDnUu40A3Ns=; b=AeM+BCdXwQbzmN128vqLAqtA3ISvWJfx8vaHqE0vBWYYRl7A9cgDEnLvW6xYWB/pmb qX+6ez0DAyoeco30dohw0FHtGyqQCRce2KrDxrjoLyIp8xLEELRC0xou39hZc3hFMTfO +UotWle5C8Yes1R0zreKyprQCScFpftY2UG70pV/VApxXeaMNkfoIxJFKKuy0BoFfsiU +CnV2JeoAzRn73qBtJREa5ZbeTn54S6KfKnAxYiuLQHxjF8XHkpb9symOWQOUu4YOqFP DWIwUx4nYP22W7mq9W9xNyn9REb1TD8PFW5JfiqDwJebXx7ee+kZIgxU27RQ775IeZnu 7qPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457353; x=1781062153; 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=ZvTdErfxKyM18jy4fYLJA8neNrcYEuEEmDnUu40A3Ns=; b=EQ8rdoMsLg0XqfSV6n7g9TzjYoMEiGLS1DiNRLgA5i5zGr7lfoZrH8lajsrPZ6as4A MnxnbYKowZxn49ne56o8fkA93G6Y9u2jyfMoQjdFl5ZyQGndkLWhgsKatsDs8aYRRcJc B8z/IESLNyNz5bKGnrc4HKPRQhhusUfeW3djGe+BlMqaSAHngHN1kmQW3KNfLKfm/MbO +WFXcHF/D+PO8m4fguie31JqTeMDruqyWsAsRqMCxVBTHUSoaInh9kEI+pY2+fka5RG5 03XUA8tGdvgpxwvfzf1kVRpJU06CBeh0HON4eqL7OgDCc6JutADtUmeWt0ZcHpOvM/ep ov6Q== X-Gm-Message-State: AOJu0YxdfxwQKdWFqZyiY0IqN/8xoVilkD353Pe9o3W8fM0BGI7Xzm84 hj1XGqAJsXEPW1ALYHC978KizOaoYl7gBDRh7o6oV2rX9XZR/WHViqRPCrkyfh2rlNo32Dq++Mt fm0uGScw= X-Gm-Gg: Acq92OFErbDSlTOacwPxdb2rKf0T+aWS2kijzJjqu4iO6oRIh6IoNaonrgxr+cNqGa6 Ge9Wf/2kslpTEgJxdg1l3IVQL9EPf+Ot3sduKAzl+uam6aKKY+WpYj8EfQDa8PkkVkIzItXgJjW M2fprQbe1qnrX3M6NDBpxUO8USnzjt0MhuGysv0wK7kDNRTQ/CuKyHKJJ3Zyq56RUxwcKg2JUos 9erl0tLqY+dzc/bPg+CsHJ2+ze/V6B4nEzJcKI/jFKrJR3dF66y1Vd2o/EY2BoWEeuQesESH2YL Rt2WYaLUQpMqZIJvETLFmBW5QYu+A/zD/t+iHypMlK27Zqk+zko8XFRVRhuQ/PzfAaUDEApnEyd OwTtRGILKjC7vjh0sCNsMWfq5mxSh2dHPLDhNsbiB6SBdE5Da6u89bLLh+kNmIHYXWycgGXk0v5 GI6Xyp0/zUdIH5IuX+LA91THn2tEEAp4oDv3YJ0Mk= X-Received: by 2002:a05:6a00:2d29:b0:842:6c02:2fa3 with SMTP id d2e1a72fcca58-84284da7c66mr1526321b3a.15.1780457353288; Tue, 02 Jun 2026 20:29:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 24/45] target/arm: Enable FEAT_FP8 for -cpu max Date: Tue, 2 Jun 2026 20:28:33 -0700 Message-ID: <20260603032855.106930-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457409866158500 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457438; cv=none; d=zohomail.com; s=zohoarc; b=DdvkMSr2P+p+SdgbC2RKIkTWI4IAB1UUhmG1kniZvbH8xyE0jDCtitDg7DNspeuskDlEes7GZ6YOa69DHGM/n1N2jPQ6Huzit2QlQ2krfX4+6wSmsoijgkkb8uc/2mwghkHeqg2VYkqMF8bkfYdxUKaaWRf8fr8xqEoshQq1NVM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457438; 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=VSD8RUAQme51pAz5JBJHx1uqjGW+5Nl8/9uOUwWjRd/QhEezxolIW1y4gCK4LTDoDYgC2xRW7ZF8uRtgvNnJK8kiXGr95FNluEZjxXEp6FwW1wniANAzu/IuBzzUPMuAIWagjB0a1MO5jyOtkQC/UjJg/+d1uFdHlJ5c0T0ygJE= 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 1780457438713541.4011658633891; Tue, 2 Jun 2026 20:30:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIX-0007Ge-IZ; Tue, 02 Jun 2026 23: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 1wUcI9-0006kn-0B for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:20 -0400 Received: from mail-pg1-x52c.google.com ([2607:f8b0:4864:20::52c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI7-0003i2-Hc for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:16 -0400 Received: by mail-pg1-x52c.google.com with SMTP id 41be03b00d2f7-c8573e75425so1896337a12.2 for ; Tue, 02 Jun 2026 20:29:15 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457354; x=1781062154; 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=lVQ4GcACq1plpz4NlZpuWdu/LRDWOO+SR8SGxIrwKcSWY1s0oyQhkgbrZZLFukGZmX FwTSyDM7BC806ddgr1kRFDeRIrDmOaGpdv/xopT0fYoRmXRwD9LXuPwXVm4J99g1Li5i za7yIuFcdV2554CLOppDQTMDOgLWSYIFdWOLLwanhTW3r4yJVdZReK1sx8t00zuCcek1 wBeUkyCiuDA6iMPB0gahhUZ271PTeD/kNEWvzu8/TFu8a7MDnXQcqKL8thyhoVlNMmDd 7J1MQAEHdupbKXnWLd0Iehx7iExpP8cVXHkngKnEDqSkb1EjOz5Z/oKLZpuqsWJG89x6 fe8w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457354; x=1781062154; 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=ngSbGMCo1vL1RQrWNDhobjOb53zGHN8CFwEYJkE60S1btJDX8PPljkjrldI5h3zd+J 2APk/Yw/RmAh2Bu7RsAv0goB+i43dUG+AXfIlXiVm+Ldlmq+PZGxtwy6uRTCX50eZ/UM bIM+8Tk02Xx4IPidiY7W5dEmF/uIM1AYgHEg6m+HMVLwc6yAmvduuQtVEaJ1IXRbZLJ1 NX21qi/DIG2RamQbBhi4JEFgawkuQ+URbWEln1pE5suz9zShqrZZAMjJ7iKPRwXBEzAO jvLNuJJ+i6OxOHd13kpBiYRSyMB+vlcSjKXKuzYhSeIDRNf1MFQeunZcwruk2qEC1u+d Xe+g== X-Gm-Message-State: AOJu0YxdK++vQc/4K+TTchgYM/moKyX5XpG58m6JQL+CGlALtjThtPVl rE2m3YfPGH7XX/CvmaWEro5ptsjGvRMhilmCwKIKGcBr68AorFxXvVvR7k45BUy05k6qreKvPFW wEgpv3Bo= X-Gm-Gg: Acq92OE0phaf+KKjYCC5cBN9mIDnHxasYkz8JUpbIxXyAu06/vruY4Lxc1PYBoQlX+C gHlhLuFTw+4rS/3pw2B9yIc/w35tmNOvvZXVkr5TouOwALHgFPIqMh8EA+0Wg9ge2V/8bVRC6dW ewmHHWVX7BZmafxBvN4sqVZZp9alzRO0wTXX4vsT8/KWJyHhrrX693elI/KTBo/WKZGH6mlxpBz xL+VuKUvEb9dXpoiNuyysL8hHPV0gEnHTQG6jyFKZ2uMIotQEFUSII1Ol8zbUHCBWjlxvYlgCua 7P5SM3AI+Ltg8T+zRY48aYmKfSWQmee8zwYn0G0CVi4fmsstQQAwqif6gC+UypDGW9NgK+o/Tzg +m9deiFzyNmXGLLOCfZnwFDuVzeA4SK8y1fqrB2xt/lxgS2kxRekoMjleOttf7dcLOygIdgt7ck sQfc/NP8W5jaq3WwTZvoJBj0kat+vpJDpM0e9VuYo= X-Received: by 2002:a05:6a00:32c5:b0:82f:6e7:1527 with SMTP id d2e1a72fcca58-84284e93300mr1622885b3a.23.1780457354041; Tue, 02 Jun 2026 20:29:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Peter Maydell Subject: [PATCH v9 25/45] target/arm: Update ID_AA64SMFR0_EL1 fields to ARM M.b Date: Tue, 2 Jun 2026 20:28:34 -0700 Message-ID: <20260603032855.106930-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::52c; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52c.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: 1780457440185158500 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 Mon Jun 8 06:38:58 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=1780457484; cv=none; d=zohomail.com; s=zohoarc; b=E6P5csPmRvcx2ClQCrHYsfqEfbcM2/mx4l8pf5KPa3nYNegNkae53OhP79xhC0ACFzTnzGaxWptjfeOhHyVvC1MJpk/bSl6s9LYdaCSBPvKQCUV6FGIsMVIj4LhPMsJpyUTE9D7hk+qoJnNRIIpW6nxtbpfDpx88YFIq52l4CpI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457484; 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=dF/XamizDFHvwhOgZesNBvMvEKMQrxAaauoIb0LzJE0=; b=MB2EQU9qj8Lumd5++arrXjhP0wvI4QS9f7cbdpgGOl98RShqu5Zwwxl/hL3l3E8IsR0ep1OMXP2sNXlzIArWSldrCsNHipEU0OjnpWPT4Iz1dt/2EUwvO/zC9XgJq39faP5SF0sZz7uuuTviI3jq0Rlbi+WbplZtV5xvrp429IY= 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 1780457484023326.85109909819926; Tue, 2 Jun 2026 20:31:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIU-0007Cz-0q; Tue, 02 Jun 2026 23: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 1wUcIA-0006ky-OE for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:20 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI8-0003iR-22 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:17 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-84232e83ca9so1491052b3a.2 for ; Tue, 02 Jun 2026 20:29:15 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457355; x=1781062155; 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=dF/XamizDFHvwhOgZesNBvMvEKMQrxAaauoIb0LzJE0=; b=X8lwDik46vvTaBHv1+kV57pWPHC2yCWB9TNI1pLnJiGAA8XcS8e6Vnq8PkCoy4l0Nj u6B7rZYbhaKPGdZ0QD3w8sXQoR9V6SlpItFNhh05+WtRB+B2u/eg0jq3ipmCYJuqE5wt WP3BuuOrGCABVLyhqw1mOVRRVBiWj6eItj4ppQ0DqQy1Ie/MdzEiKqKVGuoyYMN/4tE9 AD+GDg18mlfG9+127JA1+nPzlJq+aQ61+lrIhH9OjMv7OOoGKHzQCNXAb2XUR6wnQeQL 6zn1x/EzlArDj/VCRf64hOfH+rMbQXoWr2IhQNjM1+Qiidl5Ou1gD5HYHqhkzWo8IvU8 8TTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457355; x=1781062155; 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=dF/XamizDFHvwhOgZesNBvMvEKMQrxAaauoIb0LzJE0=; b=CrNW96YLoFbbCm5lvxtl+HAw5P4X7RKMK3mRp7x3L9rIy1kZQ98CoozGOCOuBZIEx5 FX3mLhh6wPTyZknSLSKnoueF0wbPkAtkN1fqX/Lk0bB7MgnyHRiIR1aQ7bSoATjpPkqI nXdIyJ37sfKLnzPs4p1r69ReevnfJy38IZgwKA5Co96YPEZg/NPFqACoOWMQz00JOrur ZDF7esEVapHZkOsNzxvrEp6w3YT32NKAOk/bxXJSiMwsAcXjVTV5g8BvwQllGARh6erO aFzdfKrGilxhWqn5gDGo2bF1vC6CnGSSzLIJy9ZwNy6KvD2GNHrikKY4kuC6KOTffNmQ ZLYA== X-Gm-Message-State: AOJu0YwuNEa1l3yPw7GHt1K5UAnp+EW/GFJPL4djt74PAxONHuGzSsY5 59i7K0ioOjR9f8CHKdshbfDxziCDJLC/8IR24RPM9KohLi2bovWMyBOB7VPPQclM7lcbVidXBh4 wyWkLIAk= X-Gm-Gg: Acq92OGu1Snq8X90amCJA6zl8AvXu8PLUHgGhAvTv+SkrPHJArJ31rimV9N2sPTMmTd 6UyJ0CjFw1TyOzup4RjJ4pyKVfQYwxE5HcXVoL/p4mU0+ZR389FbAcunVgQGW8R6DEyo8Ogjn+T pJAtlPsZ2x3Odk1Q4KDVI9PrjVab1lSmqO3qaH4KyLrfcSPtUzXJGq+rLBZagpu/uMQDi3h69e2 ho9KIx12HX9EF/OAJzyvGIRk9IBDDb2TQAs2XRlLMl7Om7DnMnjRyz+rboQH5w2UShOi379f3fk EHggr8iC6ndyOBKkwvM/nUlrD4U/2ewx6fYMJ6U2n4U99yWsZ2PV/B+Pz57TBFXdLVEnCMqFyq7 JGkYCLPGwEBjXN7aMKpI27JOy6P2OU79lUHX6T+arpfJ4kUZbJiCj1LmF2xYwbR6ZnkgMtJXmEa VWkFtna+p738zMQRWyAjNPuzxTJG9VwAwPn1qkBC4= X-Received: by 2002:a05:6a00:3d4a:b0:824:a22c:c6d7 with SMTP id d2e1a72fcca58-84284e0bbb7mr1671666b3a.18.1780457354626; Tue, 02 Jun 2026 20:29:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 26/45] target/arm: Implement MOVT (vector to table) Date: Tue, 2 Jun 2026 20:28:35 -0700 Message-ID: <20260603032855.106930-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457484272158500 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457433; cv=none; d=zohomail.com; s=zohoarc; b=WEzIXdD+BZf4uY/PKIi+lw5+6QR08Bs/fwj19S47mB3ZodWlNlBwmkbKye2+T5WItU/+JBfZELT/mBKiWRxitUmEUxc5u8TiNhkJphQsODLwpTGYpW8XnSdAs6op9tDt8VCOtNVzpvc+bzFZlPHTb9B1hRtRc4N9Qc9jMtX2rbw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457433; 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=0MymqMesM/gMU51oCT4f4bqonTRazjMpF77SP0tForc=; b=God1mQTzoUVmJLVD3ml5usBEsj8U7nnD+WyViKl+zER7nPNexcnpy2aGEArZwM2+e47CzZtV8ocdKneIaDu3JhNNFYUhkvnSEg3ZbrxJdSQDHSKH7/XQpHrkaYM80qKUHHHwwyG3W808I/tbnUGtU7ZNIviBZan8yyNhtefSt6A= 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 178045743350729.642357115975642; Tue, 2 Jun 2026 20:30:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIM-0006yf-Vq; Tue, 02 Jun 2026 23:29: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 1wUcIA-0006l0-P6 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:20 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI8-0003ii-W1 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:18 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-8419ab3a297so3941781b3a.2 for ; Tue, 02 Jun 2026 20:29:16 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457355; x=1781062155; 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=0MymqMesM/gMU51oCT4f4bqonTRazjMpF77SP0tForc=; b=AtwO5aZG4DZ/s/+xYsZ3RMsEoe7zjaigoeD6vFN7K8mchm38qelho/4viPMFOuOHau 6/yisE8/Q+WHIetrbOUEqEdhfM7yhgvc+TeHO70WEAjnMuaCBe2O3m59tUpNU+IJYhoY PU46RsgvlA2lqQmzuOnq8lbUlTgdX2/bX5NBkew9oXV70QyNzprEMtJ1MwVLjpO+1H2Z iPmzUrkaS44Anjw6ZP8au2As/bDQQdks4o8LFOTddUt0C8Nb3tJIaVsRbqqsv6xED57C nmZ8vhxmTCZkEHwH9VDLnR7zUIOuUDgNBawZt+LtMI7NjnOqwNRPHhpZ70/nD029BFZI T/xQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457355; x=1781062155; 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=0MymqMesM/gMU51oCT4f4bqonTRazjMpF77SP0tForc=; b=aZNVBeUFbkTVAMOZ3Y2U+am1/b+/ZWvCi2WWs0O3Y2dor6nq0FKFiQuhfraGzBfmzH thu5gglmElRuPsSz25J0WHjPMDBoJSJKqFO8h6/wWDDwDnIYveMe6LEO7zGr05eCp5v3 XNY34OYh90pqiDqrN8rxziNnBPoVIbyXZHFdDG+Z8l51UIga6UWW6NP7DUml38rr7Qr+ xZHjPj14nQhKHTV0bMYsq53blrK8pV2DPMftJ5ANuH836gXn0QJrvhaoe5zdvku543uQ 5y0QIYCmLiz+eiLoGKzKXssEX3VyLJKUB2+UJQBwrBs/dAgeME/DtT4RencWKuTIpPb5 3eHQ== X-Gm-Message-State: AOJu0YxAaM5PDkq0XPEblHA2H+mjjTe5FGHNi1FlslmbG3aCNSR32wrn LKJ3W+4xc8VXNNKK54looAitmbo99PW5H8NDgbzjgGXxWfN2bH/6+IvhjOkz5vMu8+QUWTYRm11 lT/GKXb4= X-Gm-Gg: Acq92OF9F6IC6H0xaPKolScvJd0FO6nv8wmWy0KHApyTAyrIL3fB1fOpWHObIQTlzOH JtTS4H+KT5Z6pOGRfFfRFLAknF73+U+ZgeKqVWSMnv1/z7vEUEKkEZgn2Wnm2JIwef9W7QZBW02 yWQyrO2CNOX14gdbI3JycY89amyiXXXzzJ/zvPOa1hZR277furFER1haCJjKiDUjyoYudtJQpY8 hwLmc9UYsQRsyGwEbik/oy+YqAZ4Qa19W2hnbQOyjb2ryLQyjMeKeilAqhIO44uYAi3dcocr1uq Ms/lLg2D0r9F9fhQitSSBG1AzzKsTvjK5MNdELUKRi8wkZztuVzY6YSOOJU/GX47oZ0aWoNrFFV YDcEfNx54t8q+m4cQTC2OjN539KS0e7ud2knqch6NepuWgfXBFcoA5I0RVUzgyst6h4rP3cN62X TlNKzhQFvRXTH787an5lX1JFpanH4nIx4fYfYrYFY= X-Received: by 2002:a05:6a00:4308:b0:842:51d5:efc4 with SMTP id d2e1a72fcca58-84284d9083dmr1628517b3a.12.1780457355260; Tue, 02 Jun 2026 20:29:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 27/45] target/arm: Implement LUTI4 (four registers, 8-bit) Date: Tue, 2 Jun 2026 20:28:36 -0700 Message-ID: <20260603032855.106930-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457433966158500 Content-Type: text/plain; charset="utf-8" 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 94941aafad..e1b5f90826 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -3346,6 +3346,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 Mon Jun 8 06:38:58 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=1780457636; cv=none; d=zohomail.com; s=zohoarc; b=QMHGeNTJSECG481SRxG+PiMJOmyMKERxG6EK9PH+GoQl1N0V8J+M51mOIiZHYbw4lFj8jVxJbdwfoyHOFDN+WAULmnDlUvbzyeLHfsLtOajFJMYiN6v6uC7Y1BwfAacTd5X1ItJ0IeFi39dL1Dt22w63hGq6WByFev2asUC7FIk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457636; 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=uBm5qOgpGyxlvax8B3WVuYZhhYjwNRk7YVA60wElJQg=; b=PsXZUBp9jOS2/vqbkryqFz3hkP94ORX+4KfPlgsD17663fDIl6VXglaL2/z08eNOG9FpuxuHezpGBBR1ojnilAmkJy6tVThPkframFw7RV0dfZZcC7+ujIcEKIG2QX+QXQ+2AJ0tmfIRCtlh22KbvOX9Sad4/yIYQOzgMclZ6aw= 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 1780457636406119.72756264148302; Tue, 2 Jun 2026 20:33:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIV-0007E9-5W; Tue, 02 Jun 2026 23: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 1wUcIC-0006lH-5W for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:20 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcI9-0003iu-Aq for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:19 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-8423f626a65so1313881b3a.2 for ; Tue, 02 Jun 2026 20:29:16 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457356; x=1781062156; 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=uBm5qOgpGyxlvax8B3WVuYZhhYjwNRk7YVA60wElJQg=; b=kWd5q7kH9SteG+rqw/DNLg4mFXZGgjnIwWvjtEabCU27tQpiq27o7czEAiCP0ce42v NXxP/Kzswm8fAaAlpYA9Omw6yKCCNr9H71nm4n6gj629EuXBzMOkqre/gXWgvMWSM2w8 iwKuevY62jg75+nOwzh0xXFm3cm3+dGeipn7QEc894DYACAdSxXAjeV5lT1u6VSaG3BZ 0Pye3o6NoKp60/oiESzNLXwHhdnmJtIhMZM+J8OYkDSc4iP+6EpWXxz5hBq8pKgpsz06 NX+BihfDx2EUhW1cmz/7NrQOjuSnh3ZwhYXts7lcW8jSycYM+qTaRoDT+/NFvAd8q/ZJ 19lg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457356; x=1781062156; 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=uBm5qOgpGyxlvax8B3WVuYZhhYjwNRk7YVA60wElJQg=; b=exVhwrXLk8QWwNuFkMiYeabk9nqTbwRjNMjwi+wMNCWoGV46eSfsmZXJ7g7ChLrWje 11i0E1vPdCR5Tzol84jYS7xUzOoFPca6cH0Vlg2jezSslYF/CVWabFS9KQNq1FzlG2CB bF1Inh24XBYxsMhnz/tEiHHA5nktH5JLPchuhJXP1hGG92TFoxMrH+uKF+qOIc5KV5dZ XT8vg1+1ikurl5/fPOzN/+jUwSF8bi048F1IS3MBwYIj/50Y8uluGL7gshVLZXCmv7P4 5fQrCBGjXffcqKqfe6Ey928309pj87BfnpaPrwXWB5DTRkHL/ptKudkxGzlMC2vc8374 Qk0w== X-Gm-Message-State: AOJu0Yxnzlyzohd5moyCWO6nV1va+2nxS9cigizclZf7Fu2QV3n3F6df apUNtdU81tX5uqjSlOlZVnj8IAL0iX/ysFUxs6dpB3OJ2dJ2VyhXgbxrZbu6JIyr3c2qsg35Sqc PrFtVPDw= X-Gm-Gg: Acq92OG9FeWMZ4PSLwsvB1KRuIZq743U2j2AEFux/r8JoSGfACqkav9SQh9bfmk1iuJ Gj7kkw6DiII3RhrjMn9gPb554EuWDV51bxb3/ozbd562Gwa3WAQ5hqZZhRznpzzzQAf2tF1j4Jr d/JfkVlmXJNyNEgT1pkOmOEPZJ5qum2orMnWSqKK21vPz8Zjh0dDkCNEpSmTAQYFrRD8sy9bVnh 9LRuoRBt8M07fXZpbeuxam5BujSQ0gshSrgQBLIt60dGlOoRJrAbDN6KQ1Rff1h9vpZoDcTxkvJ LgbhRV+fFr6hPj7sdqmDObKvSdDuA8FS6mtVQzJoLlND3xA+Mp9aA3kIbxrtSYjxgjmKoAMAkbC 8miw7pdPRRFvZJq1AtY6/+S4pmPDJ+Pn5k2N59+ectHapFpL+2zmidPQp/Qzytmbb8ZxqpyDL4m VRSnuedyP+RUbWh1VZ+1q8lkIKWVHWlYI/P56XTMeXaQD3/WeOvA== X-Received: by 2002:a05:6a00:bb01:b0:842:4612:55f4 with SMTP id d2e1a72fcca58-84284f79688mr1519389b3a.31.1780457355872; Tue, 02 Jun 2026 20:29:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 28/45] target/arm: Enable FEAT_SME_LUTv2 for -cpu max Date: Tue, 2 Jun 2026 20:28:37 -0700 Message-ID: <20260603032855.106930-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457636928158500 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457484; cv=none; d=zohomail.com; s=zohoarc; b=T/yPpGobd1LcYDqK5PFOKRZ2vvDXivcBe5eBZopxp5oGK1p1FlozOJI3Be+DfbCi4xGNh/GJIfuXnma0XK/5Lq7qdkffJAzTI3UzrioNpmJObIQ+upHEAMVTckXewJkgz06WBoeTw+njjAupLhQGglum0e7okQ1rgWXazRpzAuI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457484; 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=+2psiSSYARAcxsnZrwAZHdMF4Y31rQj+nBCOiIH6imc=; b=kxe8eUXgX3S65G1I8NFDzvmaw/QcNEZbhlMnhtz+UgNPUOh6S6djy5Wqy9k4qDOFurVKhPRMdew23YksXE+12FXjzmodQ07/tC3L2rFdme+B77ZItuTqhyBpmm55WYLcuFi7aFSaEtruQyAns5WAXT3aNbwas57NU5wnoWhtV1M= 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 17804574839971009.6178277339989; Tue, 2 Jun 2026 20:31:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIY-0007HU-5D; Tue, 02 Jun 2026 23: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 1wUcID-0006pE-QL for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:22 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcIA-0003jO-Dz for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:20 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-8423f1e2f8eso2440940b3a.1 for ; Tue, 02 Jun 2026 20:29:17 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457357; x=1781062157; 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=+2psiSSYARAcxsnZrwAZHdMF4Y31rQj+nBCOiIH6imc=; b=JYJUPdvpvd9UWf4ozKdfn7qHyuve2Q7zHO6E+qMd1AGgwcRk3PaaNmixLGR9Fv5l2d GvLAa4jY25xNWccRZlubwP4UdTMaX1DQp0HtX37CmUqbopmabVb4gOcr90UGd3q0npIj yaTFhP31X864CjUlnbkNmHdysLoAMGwSYDLFeh+octuhYt2VKTl0A81xbAaMIrG2rJb/ YI0w2elkDZFKYhk1qpARSqSsK2k8L90sxft3Dmlex99IS7g4gz00W3z93dkXQl4d7O8H krjuq/OfKb/p4TWlNnLKXzU43FKT/TyZ7dHbO3tntW/Rq1KC4TiHyDDAKCc4KWrZYWpm GV+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457357; x=1781062157; 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=+2psiSSYARAcxsnZrwAZHdMF4Y31rQj+nBCOiIH6imc=; b=s1tJDlR1QhzONvupBFpBWq3qmylbIw9d4pYL9PnLJOdTgJu8CHu9eIjKa4zV/wBed4 Sm2Xft38G7VSbl1x0dMXXfD5LOmIKCELkshuG53KIJe+MYVCnNXoJUAf0xOm/ZbuFWbB BD9jNBz67NlA1okj/Genb27lF+oEVwx7Bw8OigY1EQUoXz4Id1rcpMH/KgeFIfewLMUZ TODpyFYf6RmRjbP2jqcmySftQgGUHDxmAhJEVRMHHaC8U8uEcNsiTdh6//88GQPU0XKH QWu8t5oELqEdgTnF7IqG+kMFhxUlSXnfSYFZ5fVzfFF04WH1pilBpvALsXSxC33CJIdH XCUw== X-Gm-Message-State: AOJu0YwjA/tXoqTOsSAa2VF/4lDAYfRsQOizbMsPCyKkrbzYpN9zEb4T HanRfwKp2E6PojrLEyQiIczNSlHv3uEI2t9hd6F0YfG9P/V1pZWngK78h3ZxbU3mvKKbm5xPdxg h/QJsj6E= X-Gm-Gg: Acq92OHf8lM6fWS/Io8US+Z8lrrMJXucUlK3u6eltvbwi0rOzvlCr0ED2+Z5PZsOoFM sC+PitqV/eQgH+swFxDH0ytyvsPss1V8rm3gP9VS/tOsZ7WMLz9tI95bEBXqEPHbWCNSohvoLxl W+qxTeVo5S8+KYJoRYM5709MIpWSf+gAwhtlOXQZzsegw+ytaPSQRcic7OG8ZmYJkU+IS8neecZ XDLC75EVWZDeqIxgjJzyBwLZ6XLL4POhNIhhUfxABNFwoMirLQtDmt9tv33SWgS6OGknrsOZyuV VWKaCylmU8WM27PkDifrTWFeY4zWJXr/3b7unrKBOpCSdHwd/gqoaNthvtonDrAJEAFRUDfWEDE G+DpyDMBLeqrX25XFPKha9pLPFJLujBWl0rLAoP1qHI6OTwqt0ZLzINh6Tn1u25g/FRvSTZD/or E92fXBNEJTjTEaxwsKLP9iI2E98HMmXEaTwOnSjyQwze2i9WrlEg== X-Received: by 2002:a05:6a00:288c:b0:832:e65:ddcd with SMTP id d2e1a72fcca58-84284fa5014mr1622129b3a.45.1780457356513; Tue, 02 Jun 2026 20:29:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 29/45] target/arm: Implement FMLALB, FMLALT for AdvSIMD Date: Tue, 2 Jun 2026 20:28:38 -0700 Message-ID: <20260603032855.106930-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457486754154100 Content-Type: text/plain; charset="utf-8" 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 | 105 +++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 16 +++++ target/arm/tcg/a64.decode | 8 +++ 5 files changed, 137 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..316e151817 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -568,3 +568,108 @@ 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 FPSR.{IDC,IOC,IXC,UFC}. + * Since this is multiply-add, DZC does not apply and only OFC remains. + */ + 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 Mon Jun 8 06:38:58 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=1780457440; cv=none; d=zohomail.com; s=zohoarc; b=ANNLobLcqrmEglJuzlUNfLJrQeQKfSQGW04M5RE+fz7ulv6CyoTEKPjITYdVzU+c6wvM3Jw9+7ncWZHJ/ngF80WaEoKs3l7Ma0V2w0sgpeTaqXP71nqgfHrY8IYhHIrKCWuBzpG2a4awcqJzhu0JXQ62E5Wkz57akFksbBI3vIg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457440; 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=rNWgrz4L4d83/zEiDs+5NR6/Mjh4ZK8N87Ncb5pLF2w=; b=B3qGThzFLgPIf0lrfBIQVbFGwgiXfYBy6QAM8kQYwRTYTG9n4DlC1TEiKBeGrJSjQfiUbaJ6a2RPDvRhOnnvniM09rjs78VG3MZ8v1epQjKSOV2zasfirF+0iaIiyV3xSYphCjhL4QtAz8a60eOczv8Gn5JtqqdUubXQWe/dOVg= 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 1780457440640638.2271771479192; Tue, 2 Jun 2026 20:30:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIS-00079M-AI; Tue, 02 Jun 2026 23:29:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcID-0006pF-Qe for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:22 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcIA-0003jb-Ss for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:21 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-842264dde84so100121b3a.0 for ; Tue, 02 Jun 2026 20:29:18 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457357; x=1781062157; 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=rNWgrz4L4d83/zEiDs+5NR6/Mjh4ZK8N87Ncb5pLF2w=; b=eRJ3XYBHcf5Xx/0Nv+KSIIefeq6UZSNdkEOWziL2qzwyoazmB1+FmNqM+nHidnoM/f DOy9/rKfVMmz2dDEkymOPgMcpwH+PI0DGDNb+B7feDabvwOOTXKvlUx18iUHcG3sjKr7 +jFRUUizFWyvPwYhQLYKSMKhkgTHu3UB5OGeqLlvuYlhbIrJoqmHGamty5M+favzuo4P 0MgiHwChqmJtjcJM6bITkz2B4sRaLwiMfO9JWnR6dUBFS4adiPGRuyvr7dFVrj3/wLMT 5/SSWNNtpn0b/Tml0UspKIy4Lnuz6VZMgelJBYRpJ5GUGcK8sO6bBO5dDIz2z92wHboU ornw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457357; x=1781062157; 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=rNWgrz4L4d83/zEiDs+5NR6/Mjh4ZK8N87Ncb5pLF2w=; b=sFIfogXfeqeBCZTQ+0PnRxWM34FRjG75oEV7e3JIvLpmbtr3fBJThdsaFYkWmOjiQa qXHDhTeZ1HE5HIuv+e326zKnrvzxGhOVzA0wdpRcVMHIUs14z1jX5TdtxUsZEpW/ejUf fViQyQuDffUPt1gbImmJS7z1rjfvhodbY3HTiTlBTPYPdNQmipZAy252BRyEOJlQt1o4 /ODO/uF6JLOEWx2Cshc2PwbwjTS/lIlhyxMpKYnZaP3CIYDsVkh2lFcp24LnxrIzlcXZ +wEti1Od6dMYvOM6ejxnj7se+8q9ij+JINwmqRqtEzvDRLdJRc+e5zjgjlw7ki7vPlbH hlTg== X-Gm-Message-State: AOJu0Yz9xEnjLcVtbijcRZPW4KYCT4+wyFnInTj5gOKf9mrCKlGcBUVQ PXimZCj/dRLwt/sOp9MTxoCXgtGUjHKFpxNSQYb2VpDMqk8ng5mqNj0m8DPRwcVqw2fx4K2nRTY x9z/0ij4= X-Gm-Gg: Acq92OG6z5kvD5smTpGB3W/WnuK603Qso+EvE/n9G5OJFOmzKeW0B4lkP4XJ8LoV/OY PMzIEYR/K8MQ4vurIo4mhn/ehY5+XclygAZDznhdoU59nexNuo0maVzoS79RNbxH/iED8eRK12z CmOeDwaRVFM1CmwNYB9S/5It65MmxMHVJp62L8nL+ZCBELQItJkGfZDAUOeutZsN2wQfYL1ukfo kEqO/0YFhjXio/PGR04QGHKB38GGqJesd6R6izkj+qkvQ97FAkGHT++vmpiotHvS5KFW8z0WaW5 UiWV5KTbW+cOigCyszG2yAl2CxDKen13m/3ZG9R8fRxMc85w1ngcz9GGVeaCBccc9CLa7K5bGqJ cMRlwl7nTgYWho53J0h7jVdc+e40h2UTZ1ZS3k9G5Byp/lGIRvk20eBvkZHOCya3adOiHbu6Nz6 46s2LI1L5n9OjQo2oSAtavRet9MucjVT7bb2oq/B0= X-Received: by 2002:a05:6a00:4f82:b0:82f:4725:f6d0 with SMTP id d2e1a72fcca58-84285e4d699mr1085410b3a.29.1780457357207; Tue, 02 Jun 2026 20:29:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 30/45] target/arm: Implement FMLALB, FMLALT (FP8 to FP16) for SVE Date: Tue, 2 Jun 2026 20:28:39 -0700 Message-ID: <20260603032855.106930-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457442209154100 Content-Type: text/plain; charset="utf-8" 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 5a3811d294..78ee893f4f 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 Mon Jun 8 06:38:58 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 1780457673757171.2548502959088; Tue, 2 Jun 2026 20:34:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIV-0007EH-Os; Tue, 02 Jun 2026 23: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 1wUcID-0006pH-SS for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:22 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcIB-0003js-Co for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:21 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-8423f236418so1544307b3a.1 for ; Tue, 02 Jun 2026 20:29:18 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457358; x=1781062158; 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=8638pdFBL8KDRGiBmUmVT7L/zfj6XnB9LqR0Mzcf5iM=; b=nopxB70Bj8U5NJmaOFDOjesYCvJeAWncU8I7FUMoJT+W10e0HPfk5u4wnjbF9Jl9LD xMf/2Xvj/MZVTgQ4IHYBdtCbPuLlUQvf4RMXKHYD+WpgzicFalzSElRjg1Ls1x8lBfMl TAnTIbjrgVQ2h+QC8R43akd8PZxFVkCHlDMJoy6KkAgRi+sziXv+WnintwMF7FqpLdHz Kzz2U038Um9JEzLuR72H/6SR4SGrul8b5V0ucnWXLUwjpq24LQRYC1rGyVsRpSXH0h6b xhIFLbWcKwWjhU1wSK4ypMnhw1GPxdPHHloVuuhvqcjeJ32Rt2iMTVT4pb6YSOLhAFV8 xgOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457358; x=1781062158; 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=8638pdFBL8KDRGiBmUmVT7L/zfj6XnB9LqR0Mzcf5iM=; b=QLr99q9FsEpBf26B2Eb59h0LZelhhWCDa8LAdlMg23vpvDcEsOXvmQRe0DmjsWZIr5 iIvWWGJir5piAsXuQdOlIbTosMroHS7QBB4UfUTQqX1SS3SNu6udeLXWt3h6jC4yq+nS Mh0YVTdhGvz5ReoNxclYp50R5Moe3u59l5NyeB2I9EU/v63URgBF/PJgc8r5ugrdh9Tt g7RN1sVDxDT0pbih3NIGd67hK6wSo7r/qV9TSX5LbpPZOd2REcIO3aItvGlJAgOaSwSg 8QjoWEfjSb4akZeVTpCX8rIJtXE+fwCxrtFJfTIRSweNO8bCYzycvbeBgxv5o/0r6xj6 4uzw== X-Gm-Message-State: AOJu0YyLNR4xo2Slpxnw4H2X30s5iBeQxqKyOqo7FgFNIwfWD5MpGdz2 HSpAVCITGYTsny3oi5b9qibss3Sbz0UxiuxNfROVU2iYAFvDSdnMxDK4tA79wnlgbmkIKXGgnau tORsOih0= X-Gm-Gg: Acq92OEMYpQcItlhHnZRaosmAEWXmW9GzCup2BQNaIL4FP6O4hBy9uoYGaCGNxPaPGL fKF7XyJrQ3w8nHvr51nFW2qeo/PYIq7cjAMEQxC9Xxppkj14nBSU3nbGWHsBMOpNdAkEECcvyXA Giui3tDcEmZTBPGeuSh7rR8Ee+Il9C/v0bwBwaAjLTMduDsL1607EssskaF31EBJUiPCTF3bVv2 sSqDDtJ/FfkoMPYzWB7ZGglOHHyzNkb0LiPJZVQUMuQ8U3Bb7dHs9Xmbh65iKFMkp0pDeoDYqz3 9unphp6OjfK5MQnEelw/kAEJAviHpCzCnBDHhGRAPWOhpnk22Wxq6KTNVBKK1LR4tk1McwCLIbe 5qD6XhN58L0adP5XfpzOqcSMhr/V3D/iw/OUh2eXmWS6AeS4QEf7d2ea9gSe1b8uZ0UbaHeXqce W4pp0AzRBdg+DoJl3XR/i2JBmW+D2QIB/jVvm82AMluOLgaPsg2g== X-Received: by 2002:a05:6a00:90a9:b0:829:8942:2c93 with SMTP id d2e1a72fcca58-84284e240f0mr1445682b3a.9.1780457357904; Tue, 02 Jun 2026 20:29:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 31/45] target/arm: Implement FMLALL{BB, BT, TB, TT} for AdvSIMD Date: Tue, 2 Jun 2026 20:28:40 -0700 Message-ID: <20260603032855.106930-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1780457675718154100 Content-Type: text/plain; charset="utf-8" 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 316e151817..2e3eb43799 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -629,6 +629,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) { @@ -673,3 +683,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 Mon Jun 8 06:38:58 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=1780457461; cv=none; d=zohomail.com; s=zohoarc; b=hqsY91Iayz/BW7JDbUISWSTHEHCn0d6NJK4iJ7dUI+0GTinSuRN1MG1wYFqX9qBCBD/x+hzdSGP2Xws5BGi0FmcOvkfO30c28foUzrpNAw1y0LEdh5KTsHH3zrezNsFdo9jzgHZF3i7XeyBNn3v/4dLfqwCZsonH4wZ0o8y6jb0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457461; 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=kZVmPJQCSPqi58Jv5BnxHTf+Z6+QxTnKCJHuK8VCAuk=; b=CbMBgLMkiEax1Bb897wi8y9rCMOAKpdmW/h7rVMU4uox6QX3x0KBvvPjLGM4feVe6UmZCckYK1pLqUrEMTfEq+j0tGd+BxigIprrHQkRAWB0HWeJOoKJqWd0HX2j8OJGX7e8k2Dhw5KuALgjJ/pkZGZqwJcOF7YLoDeZx3ILlfE= 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 1780457461550897.3558321076894; Tue, 2 Jun 2026 20:31:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIX-0007Fa-0V; Tue, 02 Jun 2026 23: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 1wUcIE-0006pJ-2z for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:22 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcIC-0003kH-5l for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:21 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-8422871b42dso2080840b3a.3 for ; Tue, 02 Jun 2026 20:29:19 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457359; x=1781062159; 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=kZVmPJQCSPqi58Jv5BnxHTf+Z6+QxTnKCJHuK8VCAuk=; b=ynCqUh6nhUCaFSucmGK4lG3bI0HfyK/6Q1IdzwMCNb1cMPvnGBIY6NNLBoQe336HTK 9aRWp1B76AJpjMdhueiiJBVdXaqgzf9JRELj4x2i87/oB/eZCKO9paGhjC4TktMD8Y/g tefXdfLfMijyJs+x8vYPhgMNBKT9q1Hlx2CFQPU2S4p8u2Qv5t9k01Ob7m+36iiZ+uSi GUbsM5LkrkQ3kcuxgI8AEcuWGsemCGc6RgehFBqvLdoqUVVnVPTvPQb97J/yqM8O9aP/ ir2Az2FiVWfGRbylKo4ADBYQzCQos6M8/LxINXEkeZW7LpRaZG2e6N6hqGJHPkRPK79T zM+Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457359; x=1781062159; 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=kZVmPJQCSPqi58Jv5BnxHTf+Z6+QxTnKCJHuK8VCAuk=; b=GONikzryFXtfeRY/dWzwVHoudB3qJNEBvfIiH1Hp0xYTkqK9AtNkQNd7srRh3xH3mh 75vivZTPRZRPw3rGj6HMoBh5u72qvdwttwB1SOTuohbcs3bhfC0cl9e/VcuUajFuKTah Sa8ZAZIgbYt8+sBx42yZK4vExGf1KLUjWTwDBA6F95s923IgEps5zXAj3einhnF1dh0c 7sPMIYu23EJQ7V9mnRfcvz2UCtorSFzjzmFP5bMTmjhyeFzQpsqPxgWJa4AZ6dYB/hfc rmyyYz2kLJ64Im44p7SVX+AiBJGN8R88yA02XN/494fvV5pNDLoCvCjjKremWPfWm18U sclA== X-Gm-Message-State: AOJu0YyvArfbGtIZHE0alTmYX62HjD8cakXCh7aW188zppY39rYqhyy/ 5lQsu/6OUNl0NyeIFEBA/DLfekBZ9YAUcWnevysoKPvhOhbhdbFJPqlUxZp4agzoqvJJaRI/KA9 3uI/8dqY= X-Gm-Gg: Acq92OFjPGY8PetjxeVUOe6qPA/F/Uf3E/N7bE7SG4h3ghHGfVnbIUeup+uGQWW99Eq Yt5NfQgtoOqgwmcQT1U6ldt8EAtwVkbpoOylB64l/YGTaYGnxzcLQ1vJrUK/y4cV1xn07gJuXDZ EILm0ok+RtG+aXFmufxnja1/1felNEImFoxVwybRaP4YrpKVrMNm+olWp3aUHI5ByQ1IFQyA6Uq TAEjDjkgNep17Myz8hVbzuRlxIDTOkVzMP3ZEg6i3s5KSLQZ36Q5UBcvl+vxJEqVOiyJOIbiAa1 XLbht7zahDrsZVSPUB/0XUIIQNjxQeFmQPdUbVX4qhJrlOoHMMRjkq6B9seYE9SwKiXVbKdILy+ JbE4a7nTugy8trEU+JEyKJA89gi9A8rcdm8TTrWsUBJQX+qY+7zYDWJDA6zC6f//IWx7rw9LIGa o8wA75ictQcOnxouNZNA4CHcaACIdxraml0YBOU44QeqkiFjoLyQ== X-Received: by 2002:aa7:8882:0:b0:842:38d2:a35f with SMTP id d2e1a72fcca58-84284e8dc75mr1683502b3a.31.1780457358562; Tue, 02 Jun 2026 20:29:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 32/45] target/arm: Implement FMLALL{BB,BT,TB,TT} for SVE Date: Tue, 2 Jun 2026 20:28:41 -0700 Message-ID: <20260603032855.106930-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457462399154100 Content-Type: text/plain; charset="utf-8" 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 78ee893f4f..6c4e372b67 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 Mon Jun 8 06:38:58 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=1780457669; cv=none; d=zohomail.com; s=zohoarc; b=N4gQyHMcf7a6Rlmyj5VbEvVtaAmphhNmIO7+QIGEuxQi7x5b+EG24IGJ9V5yn80udamozOK4ZsleL36P2MAKlMoSy9Vg08dvA6BgTnFGJhvyhtX7sW+qt7R4rQXQbvr+BmD16Guzx5qbVM+JP5WSyeQ5nsid38B5oUxm5SVI2ms= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457669; 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=ZNC9uxOlge1Zc9qz5XYFu2TueBOfJcxpuXKeADefLUQ=; b=SCQds38Y+ePicPiQXA5t6i9/GZwxjEGT6rAVt4zSxJusOUdNAqbgJYC7lPpSVzwFwqgFPIpJcNeGxayK+c1D+h6A0o9lvnH84gu0eifqJxeDCV3RocgwTEGrrJSkBZGD8MNjh5X/pSQ/lJSyl3gBW+GuvEFz34vylN8vUg47jl8= 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 1780457669770907.5845432560004; Tue, 2 Jun 2026 20:34:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIX-0007Gr-Kw; Tue, 02 Jun 2026 23: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 1wUcIF-0006rG-HW for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:24 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcID-0003ka-Ik for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:22 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-8423efad617so1562613b3a.0 for ; Tue, 02 Jun 2026 20:29:20 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457359; x=1781062159; 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=ZNC9uxOlge1Zc9qz5XYFu2TueBOfJcxpuXKeADefLUQ=; b=zaYbJFRN2lpnkCqLTTYRqP7+aa5ZGoMVSKPEqXM7GsBL2WVLnMlblFWLxCgPcBeiOC hgJKzmmLMNIuPGLzRn3fPONq8BZw3xBR2Lqb7z5ECQcp1pp4VBvogZ9xcFGoKzL1iE58 GSzX9W1+WuDaZmnADKNkRlEZBYGe0+L8/JnNLWwSRa1vi4UfX+BEvYETBZXDmNEx3NbD btXDuWHwJgq8aqpGCsl2w7fZZ+HqStBQGUJWBsHfw3XsOhckiWhbm2LY7eVbh1U/Mf9H 0fFBl1tRTHwSKb0eUsbuZlu+BkKUWw5cF90Xs4cn1kASTrKByr2X84p3/XtnjVcdEmlB FF4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457359; x=1781062159; 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=ZNC9uxOlge1Zc9qz5XYFu2TueBOfJcxpuXKeADefLUQ=; b=Yhol7VqDexAV3F+3/0LM+DLe5qbZH0XXaBxw4PgFQrPJg+91KCCr6J9l0+WiR3Pm8i ggXK2E/85odeiRgA5JDWLI5Ds3jCXcu3NmRMIeBMbk6GA5fv96oeF4epl6OCuKIzU4jz qWZGVHzYWLzz9cJsCLLS7eEyHCtpBcSW6aUYOSZ6qw0wy6yW2cS26NERzsesFnkCbtzD r9QvMWip+kcYUBwBGYHSwOCfN9jFHJzazkFYaFjVFHulE2u1GJ8e0K0K8h32cxNmLmPa 5kYihtWnB5thlEdjiASXjq/JHQ2m4MJLDypi3UwcHREtrywssqRcMI5vuBBG1OfA14d+ ek1Q== X-Gm-Message-State: AOJu0Yx4nwQf6cfPTw2KN14df2wvOmOcC23wt4kfaqxRFqJx2IH9o6n4 BXaGLgXc4hRadVqndfT4hVINidGlkTc0kxGtb9uFOvdid1EwOR68ntZkiMHxnanI2YKsIrQr68D xJLaQa/Q= X-Gm-Gg: Acq92OFbzcg28CHUJHelFQ3LgvRAdV3ED1nkBSP40Mmbm0//R+r+qaXmuZ+u3jglJVD d9674CIGvcfMBqfDUx96Xx6KRTedBq73Yyzd1Qh3CdAfDJichV1WcZ9mQot3yvPOz5xCU1GDZQY XowvnktEkJgcdjvYonyZHsHzJAv0cBn5JilLaRpQVH72tcF7vArUfs/bvGqB1WivdhILfdGPQ2m HSt9E5W14IOT0jiGl8vZ2OuPl7YC6X8X19qg4qdmMgONl1/MpRNphK0VOBZsVSJmArnuPvWWoMP DiY3DtOJsujGIlF1yEmSd89T3HNWN1HYHaj68mO/tuxLkRUB3LIqGux9ma2LlWOEH9WDAUF+iPU JZZntSyCIcSEp1Ay196Aty1t/vyalJYHxnd6EW8D2nStaLTDF0GgwKtVii8zgJgHK7bSRbIefKz CmyarHn+k4gHxrjWfwcLo27ndQQwjiHiCBSbWG01k= X-Received: by 2002:a05:6a00:ab8f:b0:842:6004:3fb9 with SMTP id d2e1a72fcca58-84284e932f5mr1606376b3a.25.1780457359329; Tue, 02 Jun 2026 20:29:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 33/45] target/arm: Enable FEAT_FP8FMA, FEAT_SSVE_FP8FMA for -cpu max Date: Tue, 2 Jun 2026 20:28:42 -0700 Message-ID: <20260603032855.106930-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457671195158500 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457486; cv=none; d=zohomail.com; s=zohoarc; b=OMd3E/oJBZfoS/9ckfm6x0kVrCBySd5Nmt4aI3Edfo56sILswUtuf/pkq1qhwbZ3VAHYYMROTV2h9a3n5BoO4BpTCdyzOMsvoorHcrtw83jWZJsrtDoY2zNNCw5PgRTWa3qqhwz6cK5vF+jtWQdOBdY2KQu2qMMu7yGMHR9aMYA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457486; 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=Dd9QfAaWI8PgPbxUzO/B+KRB9MuMDE7ChDPIJdPgstQ=; b=aQ4PqFhas0kXTCcaIFtdbiiXV3ouuJVRIuoaL7THr2LNybSjFiEQe1fzd/guvpOUuZeg77OMWPJZ6z3IIwC/4lJJSHBnH/4cWYAQg8aIvTGPRWB3zjbUgSR7knGeYXvtK6PzPB5q5LGycAW2avCzApJzX//xonRYQNvdN1mTZmY= 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 1780457486422308.85026818137374; Tue, 2 Jun 2026 20:31:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIY-0007HW-7c; Tue, 02 Jun 2026 23: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 1wUcIG-0006rr-Cs for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:25 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcIE-0003kz-0L for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:23 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-84275887a3fso84112b3a.1 for ; Tue, 02 Jun 2026 20:29:21 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457361; x=1781062161; 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=Dd9QfAaWI8PgPbxUzO/B+KRB9MuMDE7ChDPIJdPgstQ=; b=izqIIWM1xBv0ewXs9nyLdUO3IWnu21ZamJHfgBrXmVtNX/8KzWtRFkz6hIC8rWaXqJ Y3y7EuyMMDfEAqyKRu06UuuZDtQJ+bsXNFWqSU8T2pU1Qxt0gdL5jX5gJywHXTnhNtmb S6JHRVwOO9FLmbbCD31JqfIZcZtW8Unhk4IiXnFklt6c2w1nh44jGr6VZPt8ndZ5g9vL AArgDhZEVxf3WsQVFQw7eltVopzTWBYvvp5lYlQepVYfjU5kVCM7AQ4YiqqIEIwbqjrK mFdFQCZA/9DxCYq8iqdaFeRpG9h/6CGOkbBHFzfRBOSOOE4g8OMSUMKsoOh/vS0zJKM5 f1sQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457361; x=1781062161; 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=Dd9QfAaWI8PgPbxUzO/B+KRB9MuMDE7ChDPIJdPgstQ=; b=Zx1VGA46jG4CXmmA1DAQNXx30E20gL/zZQTlTwl6nlP8HTfyhRHyojqfVAjOYrrjmR LHy7eY603gx/TnBz5khp86ep+xctBSzbIhn92A45T0RX3wkObejZKswiL2EgsMDBgsvT Gmno8oFsndS9uDD9awsdXhuzt77vDdDtYKu/ShMNasvIMAUBoOSCrj7kc4iSIpyd8fpL Tfwqsz2hPaXtRlX2duVSOTj2l8+4mSPKkWjM+gHjNx2o0dBdW8vl3mdUdQvwRUxcq4ZI mM4QXp9t21mbhA0BKs2Hqb2C0DRnH8DyESeRqh173DPoTzD6z+zp2B/903Hoy/nSGkQg VdbQ== X-Gm-Message-State: AOJu0Yym0Y+0Rt7pc0yYtqtKBLF0OK4jU2yq/R58bAUvCgz2AkJO4Wv1 OOkyUG+D7sluwr7rRK3p54QBeOKhbTF14o+n2Wi+vYoOBPHnb5IG7ZWfgSfTGLFwHqkeeoO7zRt SFcuiBdc= X-Gm-Gg: Acq92OFu5cvIWHmvpMralDbqCgGcf7nNyRqlx7qWb1FTKXn6qHfnqhtQAe34JezFHvp WAQDtw7j/kIO2uqJ2AmlH3xbgb3MQJprlK6lomxRnjqGURxtbFfUjPgcfyT6Ojl5vTZzaLG5xu2 Mbt3eW5ovK8I3yqQ8j3xPboCSaoM7rekO/+BKDgE/yD9KUvEzWg9Lccp55Oe61VM9cvPo6peeMc 2kLTs8iWOWMr3XDrMBl7B8sP9ojYSARiQNMGK4++oWRndb8CE5ReUJOmHTbV+cY9vQpcSM+7koS JAAJdAecLn4XxygseYyKy7gUeUEQHSJ0g9ncRed6EiPlpeMt/moIn4RaJ7qC2FKUFpn9dRgMD2Z fopk2ATU2Kavsaf6x+8QdNYYOldQ2QquDNiBphgvbAtY9HNuhWpfffGodHoFlakZKui6Gi6G4nw PRDxt3M9aAyYQInEyMzKqKKB7WZeJPxiQP1EEK3o3K9KTtz3bB6w== X-Received: by 2002:a05:6a00:2d94:b0:837:8342:abe5 with SMTP id d2e1a72fcca58-84285cbad82mr997900b3a.18.1780457360001; Tue, 02 Jun 2026 20:29:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 34/45] target/arm: Implement FDOT (FP8 to FP32) for AdvSIMD Date: Tue, 2 Jun 2026 20:28:43 -0700 Message-ID: <20260603032855.106930-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457488241158500 Content-Type: text/plain; charset="utf-8" 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 2e3eb43799..d1d5b22cbf 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -728,3 +728,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 Mon Jun 8 06:38:58 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=1780457544; cv=none; d=zohomail.com; s=zohoarc; b=EeAa+WQMvaZQfRMXe8Peh6erdcjUjRThLcJFba1Du7NbmfNXd5NEJMh42FKlVQ8I7f01icv3+LyLIwFUwaZiK76x7ZhuoT1M2qL4kolZIQAZlxn/E4IoHd7Lua51JmHgBUISXqjF0RCQJ9dtEXxqhexCDKsB065klY7PSXYmHiI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457544; 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=c2h0bcjqwxYF6k6ptoucqXviBKsAm5tcFiqEuvNhCQo=; b=lAN3irXpk16Ic7Y8GkW0QgOX1S0n6CwERJUCrS9e6wcbSCJ3btDWZ9tXhERN4qc4fwPhBvcZRTe2rkWAcviDmp1lqQL/E4hvkcc31NyvZrY+VaqtWUOaHBzkupiUeOPz9pIkggibDqjxPujXnNlKv7fCrqF3yJYwdxlrJhwK168= 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 1780457544626914.0585801125911; Tue, 2 Jun 2026 20:32:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIT-0007CI-1W; Tue, 02 Jun 2026 23:29:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcII-0006tZ-Cw for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:26 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcIF-0003lp-GP for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:24 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-8421f0e9c5bso1750626b3a.3 for ; Tue, 02 Jun 2026 20:29:23 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457362; x=1781062162; 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=c2h0bcjqwxYF6k6ptoucqXviBKsAm5tcFiqEuvNhCQo=; b=rLZ4n0z/CMa8C5G6xkiBKatUFdVYvrOMPY+u06O1H6zn3T4fyW2BOdMp6A4OoPt5op /jkkoCDfBBygkc73lNMqsjpxRvQ56CMiipks33xlKeZwaZemIAPIHYsSwzXQ05K/mlX/ HnIQCHT+o0LSxqZ75qTcIqf0gGsBgnU3ZsPz2qVCVnz+W6xhKNjK/BCcGDm604wkcqMz 6jK9fxgUIjgK+U+h6B6E5p93wOLeU+pHPVEVzPS5PgpdrR/T1DCAzVUKBqA+KJNEnNrQ 0Mdru+P4tYjjepd7/oCua6thfXXUy5FrIqdN2tTxfHTqo04OPB/JYD8bo7J9Gk1GYaXv Z3Dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457362; x=1781062162; 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=c2h0bcjqwxYF6k6ptoucqXviBKsAm5tcFiqEuvNhCQo=; b=A07yzdzt4MZGSKSWwZWa848aleSHeIeF9LUhfVZtn8fVejb8IN12ZbE/GBDcES6GQp PclI1A+3QaIgMT8MnJj1haClUYq4NfppnLQF2HF3BYBmC/kvX/9JtmfmI7mqajni95OQ XSutaVe07pi6JtTPklfJy5JDxfw+UfjuVy1Xlf2N0vevwDxulrleoxLhlvQY+wFylA1W BZjPz0FSXe8mZwzVz2OLWBTAEObXumqLEKbE8S4NfpZnbSs7V27iISkxkd1IvGLVRhls 6mtTqiGXEC9CVvrBevOgV2RnvQF5PKjCBkC+eGQuP7+KkZQGd72ufn2js5QuMWNtYZpL iP6A== X-Gm-Message-State: AOJu0YxXsXD9glIWlDMSIiR/okBWlcbaUJbVeFG5p+5SqO257SLTNpJ0 EBEGsNL8WvQ1N3+1E4hvTAwmTK8HEsJ7vqUYeyqmXfaF37yP70KhZ7PEVyHSPwkemd+OvGLJ5t5 LsT9PLy0= X-Gm-Gg: Acq92OEb6kNEmMjBpgiJOBJ5Xm72kOZ2Pmzp0SFzUlRMRx/Rg6avGEVyuL8RmQXrawC dYrSsHedBD7gt2LIPefd+bhjIve4h6wuvySdJJwGDlhQOFWiQ5LBF6ZsKa17pmUm2f51ckpYB3e 0hUglri3uYqQZ34RAyrfsrpEH8Fslsa2REtupcXdNf2LxZ5LCW4LKWslH5s8tlMu/9Pj2JHNZjD hlKbCQL9LH/SDNYo83UIivYVlnA43QidFgF4jGJf/+plEMJXaCVfxj82/u3oJ/sArB+PxSA9Vws 7BJrnGrxW2u8HiDupq2vUXHPf1rcV25bLJFSSipk9LgdByy+vW65brxE0qjmjBin8nXreQPV75d im4wZHY+hQNFo64pLsNZXHklcMn8I+gsUgE0OUOPWNHBQ7jM9+6R1PANlwHhGTwR+aYz0p6WJE5 /1axvDaT2ZbNZFfGu8o82Azo3GqzxoCO/sR21EoUM= X-Received: by 2002:a05:6a00:430b:b0:842:5c90:736b with SMTP id d2e1a72fcca58-84284f790d9mr1664199b3a.29.1780457361956; Tue, 02 Jun 2026 20:29:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 35/45] target/arm: Implement FDOT (FP8 to FP32) for SVE Date: Tue, 2 Jun 2026 20:28:44 -0700 Message-ID: <20260603032855.106930-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457545755154100 Content-Type: text/plain; charset="utf-8" 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 6c4e372b67..a5a0359a95 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 Mon Jun 8 06:38:58 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=1780457470; cv=none; d=zohomail.com; s=zohoarc; b=PHjBWP+KSw5kzRXyCct2CCPxUIIcUoyAq11fy93SAj2BwVlak/P3NA15RRoot7/D1EdEdbm2T8zEBpnCHuzB61/dulLEoJKeLhNszh7jHgmlN9v2n42mnN9fYcIflDxf1XLjZne/WJuMPnTrYUSgeNvc7tJ4trgsyUt7sN987f8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457470; 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=IHI88UZH/QpvzAoWJgsor4QkwAmJpwIvPrzZJogLIPw=; b=lxSBIUQsgQl4ZLHRRRScmTn2hS2xU0m5LKTWQiHshbV+Amb+Rc+9KzL5KnMZQVOH4MQw0hY2aSvhE4A5Z/h6r2Z6HvGN+T1CBuVBGnELWknuDczsXjRtC6nj+z9OlVf4njKsGYL1mLp5LWaOKs8LRj66yXpYRkbfaAtt/EmAkjU= 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 1780457470256139.18648721554575; Tue, 2 Jun 2026 20:31:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIU-0007Cx-0O; Tue, 02 Jun 2026 23: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 1wUcIK-0006wC-NW for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:28 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcIG-0003m5-8I for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:27 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-842319576d5so1742788b3a.1 for ; Tue, 02 Jun 2026 20:29:23 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457363; x=1781062163; 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=IHI88UZH/QpvzAoWJgsor4QkwAmJpwIvPrzZJogLIPw=; b=SPgRcQdia8t311B32VPLNkrrkiYDKGprseHolGQel7riS0m1R14mvb1m7SZR5J3nP/ JBCKS/byj5qovRIcIUO//74pUouXV6e5DUHaG5v+5jlJx4rG0CVhwfPSFmKQCkI+dDkZ aM07s/9cui7ulwKYiQ0fugtgDDG9CDBzO06Cv+tqLhFiqLVPRhLuxrJzRSJPVsHbggUr GProyW0Pv7itBHrJ7oM3P+qILQsmwT8+NSkqkz2y8XpgVa08bIUJ0sZn+/k4osAlhQC6 ItOsKVEJM41ZSsvA2E+26x5UBvOhNUD/PBKGAsuod+Nib/WjM7eMj9Vx5X1yP09VpBmd ZjqA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457363; x=1781062163; 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=IHI88UZH/QpvzAoWJgsor4QkwAmJpwIvPrzZJogLIPw=; b=E6rvft5Q49eW6bUJxtsRByngdEzHGp/QZHvvEyvTU2d0h0bWImcpCEFWJXWuf1IAwW Xmv90ZnPfIzROIYHb1eIhQCL3QjZ3G1ohlj9ucKcaiqbeZI6V3OhZwtolBQnDBHuRkZV be9E2E+/E5bScfwDmHpK5iXw2UtJpxBeJ+ygC1v7YuHXZCIKFoaUYAxG05PRcT7XWfrQ X6Dpb2UOnh135rN2JSKqbnGNdApNl6QQgeFZvPClpFNxjSwnjcTON+KOA6ZaTxIm7D9v EV6enjwAsGFmFj9Crk04oVsOkYkbXEGYxMRjaycGoZm5AH5uwc03VN1/qd7d9W4F+wAG HwYw== X-Gm-Message-State: AOJu0Yw1g/VSznFySM7ewvC3Yr17U7D0nCl5nPniLfDNxb0ixUTK0CqA YFvTOGgObajHKPx3Dr+E2v7F3aBstKcFIYtTzqcyTpHDDYDykOVlC2bOxW6gu+TVXtPSO0j0yce ncoDrwLw= X-Gm-Gg: Acq92OE8Mk98Dq2DxOhKWPo69ppiGPx7G+CW/97cp97dEWSpIhTwWmoTrCj+BPQO5PK Hzeac1zjnU6J1nv8mXaPS1BeEOZEr+VXFFx+tvI/Tu4NgMkYVJy9sgohZ27covj2XXjWRAIP67A Re9EofmhejoK27c7kXr3X0BWYlE+ZaqRUaPIgJ2B1Ce7OoCC6SLJqbIjagP5P8Ye7RCakiFAYU2 p4npE+sWM3rNkWXhlWnTFpiqMGb69iA9T7R0UfOQCOCfIACu8mPIX4zuM/ryiMpf/8X/z/jC5vO ntcBdWWYwbumaQUiqvMpGK9dI5DuTWtEh1P3Or7tZvjlWRxJnRfBVToJNbsGt5ykt/puAtNDMMZ rYUE+Lo8bemwgrDD4ITR1mnMfNWiAIAr+agrHyzILGvn+9T2Mrhq4/2lybilweuCORNTgB7laAE EIHowEW1+G2f2RTfKB4I2rHDn3CMZNVwGM2apksKo= X-Received: by 2002:a05:6a00:ab85:b0:842:5da3:9b8b with SMTP id d2e1a72fcca58-84284f3d67bmr1436865b3a.36.1780457362629; Tue, 02 Jun 2026 20:29:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 36/45] target/arm: Enable FEAT_FP8DOT4, FEAT_SSVE_FP8DOT4 for -cpu max Date: Tue, 2 Jun 2026 20:28:45 -0700 Message-ID: <20260603032855.106930-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457472593154100 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457468; cv=none; d=zohomail.com; s=zohoarc; b=dOY1ypHopothZJz7Ccnq7W3/ycKUNkBiz9DJRL88XyM8NdiYcTlkCqocWw3xeccaIc4Lr2yViwAM8CLdagvwKh+nkAaG5kpd+LT8gelrHffo5eDkYPMTVB7rdOxBvYPO4RrzZPI9e67PvLptXvib41BnQDNLoJDwDpl5CMNVt3k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457468; 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=EjZound3dcsP9QXbzFXKBLvB4E5pBYThLEA5yZHeMLg=; b=UYKs4YAkMGZPvxAn2YrHmIb04/D+IyoNQeqk/XLb5fnhzXY1XhaNNMqK6XuHWHDSgh/vPSP8pVyUMe9Qnn1m6quAdvcniZYjY8HR44kqRF0Nv7ZDYjY59CfBPwOYmGQDTWx1Z5AeP04jcXbzxTj5YfrmgWvwS5KmXRsXfgFgbVw= 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 1780457468681351.36872098322726; Tue, 2 Jun 2026 20:31:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIY-0007I7-QP; Tue, 02 Jun 2026 23: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 1wUcIK-0006wZ-R2 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:28 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcII-0003mM-46 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:28 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-8423f626a65so1313911b3a.2 for ; Tue, 02 Jun 2026 20:29:24 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457363; x=1781062163; 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=EjZound3dcsP9QXbzFXKBLvB4E5pBYThLEA5yZHeMLg=; b=OUeRtRfsHgmDokANLtigXRgEeAHAfKJmuwLZ1NVuAWmA11jqsUgow3axanKP8PC2RR RnizFsKwlCCW+lj2/+58jaQaFjfkT+F3jyEMMib/HIBEb4qM6qCa3gnk2QkNtd7EWG3c QpXxE2f8tyYcWOzJFZoz/hnBA9aiVO5mdKUqnixNhCSfnZ1s1ioThQfpvcJitawPDn5r 8hsmcM3RgJfp/XYhKfu+DVRN976bflF6ADHyqKX0blNerlnGvTJ7X83x688hQd4yCdh6 tphDZkdOyRmd7qt8E6DZd5OgkgN/KOvNOh7M1+HEFm7vLdXStIScSnqjZEx6aeFzsliz qcfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457363; x=1781062163; 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=EjZound3dcsP9QXbzFXKBLvB4E5pBYThLEA5yZHeMLg=; b=b0G7BW6HdfV/7S1UbfJ89PVmn4eztUU+fmJcqLkc21mVwiat4F7Wu51MO8vxMxI799 sQaAO7AXQf7y6NmAR9dEd9cak9Uvb/gRuhuNtDECjsoZP+j8zCbXyP0MCSD477XuZ29u OiYDZ8Elbu/m+OEokHFei652cR0TQ88lZYih3/CAIccTHeJcrysPg4yz4EiaG86CQMZU CWPJL5qw7GlXxe5dJ812nf7wvdQPskMke+/q3QppZgjF+iQj7qLoO/4Rv87lr1nSy/ws pd61JeX4nk728UGjPCpBB0oyI0c7AIhlq2YKYGo/82WNezQf0ZFhXnAMVco8qHdLY77o kcMw== X-Gm-Message-State: AOJu0Yx5v4MecKo5VdnVueiL6IequOvVHIBnRmQxm0JinjqWP5Dw1PSZ iTGKN5zkr9/sToaUUW6R5OPbZXkrITfKdYs+Yc6pA6DGvQleHixCvDSOm4lzpW89BZhTbiz5QeF DwNF85Nc= X-Gm-Gg: Acq92OFLXSwaY9O3sfLdoESw3A6O+TtnfwLmAx7TOx8uq48wHroa2ZMZ0Q0dU9N49+s DHhWaLZjqgYwTGC+PIU6psRRWpBXo97lusFhmcvA3dUNpBuh+8zvnjLgMWMsax2yWOG0YfcLLnE 4WEFAgUDTX6Ubh4Sx2N9rtq2kGOVRTNHxPTAD/hSWaiiK5qWohosqVR6FHRzDex9EBPtkzzC9og ep4y4SC2ecqaBmwiK5D8iMvx5qnOOcXppCpZxeQBkk6qGASXlFUJdELs5l1Svi49ke1DxQ3oa5Q 0E3BpppZOhRMUiBrxs+HJeXB2gkxpzqVyGjtvsw5vU0dKkbPNcpBh9MeL0LXs4TVZVidVlEq3XK lquIijal2hWj2yfl4E6JgJUaqbowdnkgYdGVq4KKI5Rq6oWa9Qfu71X6FbtdrM9L6LOy0vnYCdi 1xnSl25KM/MbLiIPU9fifs2QvL067IP6awRkZhHLMg/NRuXEvM5Q== X-Received: by 2002:a05:6a00:4b14:b0:842:2f3d:dff2 with SMTP id d2e1a72fcca58-84284fc0529mr1556941b3a.34.1780457363256; Tue, 02 Jun 2026 20:29:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 37/45] target/arm: Implement FDOT (FP8 to FP16) for AdvSIMD Date: Tue, 2 Jun 2026 20:28:46 -0700 Message-ID: <20260603032855.106930-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457470161158500 Content-Type: text/plain; charset="utf-8" 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 d1d5b22cbf..a25e0a1d92 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -767,3 +767,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 Mon Jun 8 06:38:58 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=1780457449; cv=none; d=zohomail.com; s=zohoarc; b=OumEHEGFBowc0F1vBAYab6ssVlAxCUg717PRSs3ruTdeNQ6gh8AnhBq4zevRZZI5bk5I7sFhfHJZ7uZZY+fBc9vhjHDueLkHB5Fzun/m3rirNmgfGstAPa9bFeCRUQ8PCuiGtowHJeMFsGWuHsxjfRHVH2K3K9u/EcDY5+JqvP0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457449; 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=RJE7TRFniC+M2fUEMxAGKEKlXN64hizgjGGYuWEgBfc=; b=kt45vDJpjHvyaTOCD3Lolaw9mvWLS5Ar1C3D5qiAYvqU42tDx1N9thvKR8rMQwCppPTHn2fWbPNI3uoHT1ocVy86jRzlLr0WToI3Daywnrl56aOBe8cyIgisrlJtbpWJ2JEceBLTo2JMRMhsCBJsx2sYwVnVxz++JS3metTx0yo= 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 1780457449095381.0410770650992; Tue, 2 Jun 2026 20:30:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIU-0007Dw-O7; Tue, 02 Jun 2026 23: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 1wUcIQ-00075H-HQ for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:35 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcII-0003mj-4p for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:29 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-8423f236418so1544334b3a.1 for ; Tue, 02 Jun 2026 20:29:24 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457364; x=1781062164; 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=RJE7TRFniC+M2fUEMxAGKEKlXN64hizgjGGYuWEgBfc=; b=TR5eHxKpT3dF6vwUoHgZKlOvrGAq1/UtbDepbiU1RUvS1mderfRldRhwB+j4oFWOtG nfniNJTFmYIRy/MxxzIugRriT0+3CzhiVB9Cx3j8E8+WMG1N6/w2API0Kuot4x0iHb7O 9VgIDi6nuUrwuIIbXsWgkmmscc8inJ0IbyX9p0FYY8ECl2qVI7CTb7UiG1d1Zb+QGAIy Z/XzSC+n5b8kLLbrlshZvVgY3q0ipmqE2LoUJgXxb2cnZ1EqbONrq/59ALX6udnD4Jsp eWQ/GMVUXfjk4j/+Oa3eNZDuuNxq62XNFoHGe3UBAKqDvhMiZjPPaW9RcHUjIUYyRhLY 6uRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457364; x=1781062164; 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=RJE7TRFniC+M2fUEMxAGKEKlXN64hizgjGGYuWEgBfc=; b=X76ridetBau2pptNBOTPuisJRuBM0ESmmlVoY5NibPiqaDvgizLHqanbxa34ajuddh hed3XRfFRszc3oFTAyfYO1iftqieKMigeALAhl+/f3EtBS2kJisOJnqAtnOj3N/P68Qm LwqJgwxhgb79c8E2Rpstq7Qkl0tAViwEzInvjpgU2gJwd5AD7TZ0s5cNhx3bLGC/T5EJ cQOPgyswOahQXLk7Ko0cDfhvaxLZ65MStG2P9awDVbRFOYTZtAxDrFIhimiPcLKbWSut Gxji1OLiWzbSBKco82YtIISb/Qnutk+rNQw17FY5IEiKhU7OggX+BKUKsSuF4CjkRFV/ Z5MA== X-Gm-Message-State: AOJu0YxaC4TX1jjmaxgULnUnDUKcsXIvpJqgFlrkxf/2CiQsMZZH7VBj Rmbosd6V2Pzg8MiE/qVF16kGmlh0so83TqWqt1b8bMHKMGVa/3p46J/vHkoXdd3sRNr+mvZ2AUt 6ha5x0VQ= X-Gm-Gg: Acq92OHJ2NQo2kaf2nXHCzqiZ9swkRYqtGKOwemKmvc3he/08UxhYuFtkD8TpfQ3zpO sboIOk33MFduw9ZxRusBsEPvgoKRETLrZyeYMoDZ4BBSQ0O72M7FGMbqqT0jUW5gN+IhTIIWj6B +AsPJh7HSHfhDWFhzrg6pzOnkn3wXefikpSUgO+mck+OyJpW7uW25Kdj9m5FC3Fix9lp+5nJ4oy UyKUI0qEsO5XxQrsWxyTB8TzPlI7kpEcs+JL5vwqKiBmOTT2JuRGq6nsNJ1mKD3n9qDilbUOBeP HACa/2K+V9Mz6+fpEKpJoWD/2MIhpxgfq0T524fRjtCVpE4RhY/6oCBNgIRIFryXHpZOOwlsgog yRlQ3WpiHythAkubPymzHQoiDj5fUq6pUIlX7FZSoS0PvapwWSVvVjo+OgNvHplq0tcFk5So6Jf FJ/CtNL6jee4VTSNzUlkO6jwLrrf8390QlJ/cfTEg= X-Received: by 2002:a05:6a00:2d8f:b0:842:6fec:12aa with SMTP id d2e1a72fcca58-84284e2308amr1588631b3a.8.1780457363885; Tue, 02 Jun 2026 20:29:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 38/45] target/arm: Implement FDOT (FP8 to FP16) for SVE Date: Tue, 2 Jun 2026 20:28:47 -0700 Message-ID: <20260603032855.106930-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1780457450186158500 Content-Type: text/plain; charset="utf-8" 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 a5a0359a95..fa0f3d23b2 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 Mon Jun 8 06:38:58 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=1780457443; cv=none; d=zohomail.com; s=zohoarc; b=AduJddsnByD/pbYfM65+lOxb/322++XSVt2Su3PPhlKpV3l/E0oOEjAov1VfSe58b2x9HZf4pCM99aW0uQK/OaRAKynlrhb9J4ifd91aED1apDIpkwtJ5FR1B7ZuH3UKHfN/TjNZJPL/uP3LoqscNmVS/o0rQ4L40zysMpr2TII= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457443; 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=TwhrK5xY8MqHIVp+UxD/XyCeJ7xCC3dcRnmxkpZ4IXA=; b=WpjhOYYmXH5+/747DALPngg0qMzwjRoU4mMrb8vcsO/TOlNP8aoCoAdimfnr9JPmHktqFfKkwoQHixOaE83K1uPvcB9iA418LH/W6gFAPz6oTGZ9yBoW3YMbgG8lU0mZZnSZxji6HE+A2SG7jMOjVs5/YHCxAQfocNCztY34z30= 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 1780457443913645.8414036668229; Tue, 2 Jun 2026 20:30:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcIZ-0007KO-PZ; Tue, 02 Jun 2026 23:29: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 1wUcIU-0007Cm-31 for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:38 -0400 Received: from mail-qv1-xf36.google.com ([2607:f8b0:4864:20::f36]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcIS-0003p5-5F for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:29:37 -0400 Received: by mail-qv1-xf36.google.com with SMTP id 6a1803df08f44-8ce9de10985so2999116d6.0 for ; Tue, 02 Jun 2026 20:29:35 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-8428222263dsm1477831b3a.2.2026.06.02.20.29.24 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:29:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457375; x=1781062175; 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=TwhrK5xY8MqHIVp+UxD/XyCeJ7xCC3dcRnmxkpZ4IXA=; b=mVqUNpxKCGFZT27/5W7AyX5xbHZ48YcQ1QLV7Y8ojAYNKpnU05atquJ8z4WOVCnxMG RrpZj8T3YqiU/RknKFxMiv0g14xtQIuadIxsciBUx8rss+2E00XJf92haxvCebCx2YFE w30RhmXLEkinq4BBrfvTgmbf8uloqVbV8yW56UwhgRa4mUSNT5lZfW3K3N1oAbxQN8dq O4lY0oJmtUX7VrW0FP4IvWEnN89y0A7M9MqcIu4/rM/PxT0N+lkCM6diIE6Gg0uAcmxL d5WKIKfy2Q/spgIZcFBq+mGBaT3f5Sh4iiy0S/HU+n0IcWnMlzHP1fJph2IE3OgF7LwK yMZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457375; x=1781062175; 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=TwhrK5xY8MqHIVp+UxD/XyCeJ7xCC3dcRnmxkpZ4IXA=; b=HsEmGGytICXdNkPm1FvJat+vnATDdZjmWRIcPPYiVBn1viO9qL2zrubms1RnU7D+5B dMKLAD9FGAVxfwQ+xnRutMMc3qN7UzIHQaMYdZ/5YejK5a/JOjZ8PYTc0CKcyamD6nQK S8hOLnHafRO1KqAmQieAklid+igPCKpBNYJmY/YbdqFI4NxIUBGwrqbn0S3LP1c9Y4Sw JmsozUzCJ+p9iTfB+cb+mVMNtyqH2gKtPHUfSr5DEsCvRcqjTofZ20g60VK9AHoc0tBM jGpft5Jj78ZXH/LGRK8giJzwJbVAkIYhgfuLrrPv4zZSi/YLwNnuOZd4sgXorj+uk1NC SiAA== X-Gm-Message-State: AOJu0YyQhfdjXoHtHVHAQvB4vO/DDs4oSzHfbskr+emqrk3tDFRzYGCf B5cTG1ea6JgkFw1VAYP2nIHXKzZoeSqSbdSQZAaCiyBPNIoVvOI+LBxQdn8stmFetx4TQyUB53r kBZcMgKI= X-Gm-Gg: Acq92OF6N9sGptNlS/0hETcDI7uJpN1a9lG1RJi/N5MU+REwgKarPM9oPd0/EeTjuTq dyluG9nTVBXQDGMEjCrWxu8NRSXSsypuCOB4WfPwnhs4IfV+m/ukuO8YRh62fxENDwvEdrl3v/H dDd/jdnpbLTz6xO+FigEa+HsnuW3aM3L9BMcelSO9P/Ljy7wr3MdxQZD2wmJWWyb3L8AX0W2BBp bXnHt4/HK7R8CxgN3xgsyyfLy88M2BLpR0Sl1iA0K1n4Uai3NFTNjWUs9ENj5pk1dsWTJUahwnM OnuW1wwn/wrqvno7LbEsiOfqPFLEm8nU8rApHSXhASK7BHb0fWcYsPUj93Vx7d5KjmQz1uGhUpZ dqNk/RRbMaIXv28xeMja0J3hL04BaEunI9Bd/W6GbT7UJCZK1fYVzKIq9pB6tVx158thXHELv69 5kqiuiLXmjBI6owJyB+n32RMzfhv2C5CGzFB7RWp8= X-Received: by 2002:a05:6a00:4c0a:b0:842:68d3:e2ae with SMTP id d2e1a72fcca58-84285cbad37mr1084099b3a.15.1780457364652; Tue, 02 Jun 2026 20:29:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 39/45] target/arm: Enable FEAT_FP8DOT2, FEAT_SSVE_FP8DOT2 for -cpu max Date: Tue, 2 Jun 2026 20:28:48 -0700 Message-ID: <20260603032855.106930-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::f36; envelope-from=richard.henderson@linaro.org; helo=mail-qv1-xf36.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: 1780457446180154100 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457600; cv=none; d=zohomail.com; s=zohoarc; b=C28QvnMeuzo3FwVLYudfRZwWZ+lp4eaL2VtvZ/UdSyeEhVGYwDYvTKTgM4ionuMgFUnBhBSU2xjAk8ip13wLhy8hEQNRvWHTZuQwPoPYNbos9xECuWuGR9CoNrWM9Kmz+h7Sz09Ua51vTWNEcemLNl0hiJLkFuwqrW9hdbM1jTY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457600; 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=WFZDxQPlMUk4Y3zCdCtj6jkmwOnh+sTkiuf5F+8SjLo=; b=Og9JCz8yMozPfsdO5MqHrxIdtcjMIUqDJ8XN1r7c6P1eIdlzh/qprqXFRuPwABPoE2YxRgC1GyWUVU7mVEXu1WJUWsVUL/LkYVJYtUyb2oOOTEvwyT/XfE0b7nrqtjIJyQ5fyAIpFds7OR5DA2hdyJ/ZFofYTRkeCTc7EYgm/J8= 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 1780457600978576.1066775751196; Tue, 2 Jun 2026 20:33:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcLK-0001a6-Hj; Tue, 02 Jun 2026 23:32:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcLF-0001PK-RZ for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:29 -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 1wUcLD-0004c2-Hv for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:29 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2c0b944f6edso33866095ad.2 for ; Tue, 02 Jun 2026 20:32:27 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa0236sm7785685ad.33.2026.06.02.20.32.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:32:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457546; x=1781062346; 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=WFZDxQPlMUk4Y3zCdCtj6jkmwOnh+sTkiuf5F+8SjLo=; b=ulRimwm4X/4K+iPi7ZNEy41bBHkG/wcNGVq0R63oEZ/TZBzaJMbBIXa498EWUsNei+ 0cbBRAKADbEGNduWG+4/jEli9tXvrrQN8wiORKFpjNq9hip+Ea3br3LvfI9oJWYJmSM0 Ne9Jlm6tp77DwAOGyqoh/UIwW6+RYStOdnbuNuwULKile/6wEFjrG8nmel/rZkKMShYA Ggb4t8Vqs5wlFqs4NvNn8VhQQjAtSLcMqSG0oZaQpM+oCjRPL7GjNxMCPV1jXjmKc7wQ A2TPm/xvMgpuBw8HMMKUDvMXO9ZWXAO2dOlsjVE4QdcOC/FhdxurYTEDQklwi5nT51lC MFmA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457546; x=1781062346; 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=WFZDxQPlMUk4Y3zCdCtj6jkmwOnh+sTkiuf5F+8SjLo=; b=EykRwvlnL9xkB1UKPdyXqb3Jf0byaz4QlM7X2lxBK5DL88duqGUmetUd77efRN1hm4 yf4wmuEQHfWoAcRGBcx02XP/vjXKYg3brfyCx5eUuRvoy+4KRSaGyxkqSQnsD+T9Cuck 8F3gXFxaH3W9UBOYJuwmEjwT1jJ3i/z86jt3a7pZYOmqGcLy+6SinlTUWv7EyVEDFpnf QGoPHjW3ciJBjPhLxoOu17SLkJG+sNeIKL3caPfuoO/ywFRr7BXkvw6sccGaIdtB14Yt T6tbzb9jx777djeXOfYVaw0apDW66aphVMNxVPXElQxzxvptD0QN5fbf6/AaHpmW00Mv 9huA== X-Gm-Message-State: AOJu0YwhT7NXN7bGjrP0pDcz+w/svzHnTMokBrL2jhd6UCLlDWxh7gSL EDEDFyB/GHJ8WmwUCSXTqsD83KKXci7foidLC5OdaukKXNjYlPIZyNxIfCTfzT0LasfRzpUNxtC C1minQ3I= X-Gm-Gg: Acq92OH7ZL3vF1jmjHcmZFmFtnFKHXT9kdAtn47nqjYrQmuymkSE0D6y5HCdpLHWnm6 EhUsjUx5TRu1ymEAMYx4OE4JeWk4zaVIuJd5FjoRNwJL5ib50rI82FlyGfIMiqybRgDYgD0xGbr mwOaDI6HPooS4Mb6VVc+Ih9F7xp32zm3o2Uhby0flzhfbSZj5pZiFXtVZIuFLAGzFsU56a0+A5e 5pyb3/3ze9ItKTthoNbdmF45NkrbJmc02oZRGJDg/DuWyfvxaYNuO3cl51JbIN3X/+pIsWrOUgl LHVV8chX7NeWxs0pDOvEZ6wPtuYM42GYy0DVLM+75/e1xuf0KTKIK0GyDbBy3WD1l+AA9nTWQ4W PqxkCW+qJnJVCEJObtARe0SlnSdGBk/syDj+ROH9rbXjvHJOoL8vjZxL7MLAC4pTs7MnskRZfDb RBzGUgPcS7KiNskruorHPvqYgCuVHVoSFIGeVQnwc= X-Received: by 2002:a17:902:d2c2:b0:2bf:21e6:baee with SMTP id d9443c01a7336-2c1641be20dmr16543625ad.28.1780457545921; Tue, 02 Jun 2026 20:32:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 40/45] target/arm: Implement FMMLA (FP8 to FP32) for AdvSIMD Date: Tue, 2 Jun 2026 20:28:49 -0700 Message-ID: <20260603032855.106930-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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: 1780457602547154100 Content-Type: text/plain; charset="utf-8" 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 a25e0a1d92..9db4ff4c2f 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -806,3 +806,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 Mon Jun 8 06:38:58 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=1780457656; cv=none; d=zohomail.com; s=zohoarc; b=nMVpvOD52tTi2BudtImq79NkG9M/l+NDqQPQdUlBWgiYFjey8pkuxS7sHlnjbuWlV2c3NZyeyuRjpb1tgTVoQAuQksv3/RIDFye07DTSIPWN7rJ8mWsqDgJRJ9HgFD+sxVT4bcd46xbW39aXx2Hfxpek3Ol1g0KTL2R0iB6qLkA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457656; 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=u9YCh36KGW4DMNvDs+qzc9ZLkXx+lxkD5bVdA/i8Kk4=; b=gNPNlEwzBz7R4Pp7DE5pcxkpVFJ3XTgwZM5CwxqCsfuk0AqQHxnwVhFT4KDA9upxWMg65Hz7IjrtzPIfN7FfvzJNxiaNRubzBmnX+hSa36evuprjR3WnMr55bmCmfBk45pE3b30+SyAgydDQoQjYH7v4lsJc90Q/VEzPnxmEFC4= 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 1780457656609516.5599971913617; Tue, 2 Jun 2026 20:34:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcLM-0001hN-7a; Tue, 02 Jun 2026 23:32:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcLH-0001UD-Bu for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:33 -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 1wUcLF-0004cP-ID for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:30 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2c0c32f6ce1so21601245ad.2 for ; Tue, 02 Jun 2026 20:32:27 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa0236sm7785685ad.33.2026.06.02.20.32.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:32:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457547; x=1781062347; 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=u9YCh36KGW4DMNvDs+qzc9ZLkXx+lxkD5bVdA/i8Kk4=; b=npOJdKEAS70pK+ll6edxWSL7brneuJMTPX9rIIS9kkZcyihb4T31ytzxIRkMOQB6wx gQbKCg7HKnSeOUm8EIBJWjl8qjISz9rMNh6wKDZAvwEH7ew+ipRBVTYWBJuaZGoJS5vk TLlTUtOB5LMOYgSdHXF0obtyc3j2tIyOBxUolEhTwrfnu6mftptCJ/lBhNEmowruy0dr kCxTkzZEzGLqw8WqEnMv58EBP4c9zzt25lYu+ZbY4+KBjObm1JLwMMi1+NQbIFj1TDqa NqMLooCQA3wxc5VTSex6M4NooIDFJ7MyQ1Ti9lJH/R6LphCfpa+borvJAPrm8InQBvz2 yqPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457547; x=1781062347; 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=u9YCh36KGW4DMNvDs+qzc9ZLkXx+lxkD5bVdA/i8Kk4=; b=OHzhDR/w5VrtddVqZjuWI7f89c9tDiNFeBivJql2xopRKDSiM5iyYoTV/kyav6i2Sv xX+lcrwrNvX61JML3JKlc4FnmHAm2VTfQsPNbMjJ8DOgqs4WhOVQZJv5AdxVjNAyl2Tl i+Lbk/wlba1WJoylfBGvngnd4Y5NyZ1VJu/RgYkhGA8dNYo8kV9C3cHtxqzsgIDFtTr5 DgdY5l60H25v1B897vWfr89S1tZzUDfauwnwBf5EF+pZYaCHucJp4CL76LHI8vTHWBIm +7rFJiiwbajjgdJN1ZrAH6NLbelIPthIByoRkFTQyDdjRUZAC5cibbM3M35o9JRUj2oJ B43Q== X-Gm-Message-State: AOJu0Yz/bt8ZDk97ffCkIAzU32VsgBIZJoNjXOc/40z4k5LXiUsUdj9k 0PaPuIM41U4VTuf1HKRVJBU8wGmKPCilB6bmxIc5uOVu2lAMhr4ibNzP5drSDtewTkDjpFHKQQt BIUpSCaI= X-Gm-Gg: Acq92OGMSk1SIjdlaX19vhWFAkEWaoAqu+C6qnloP5A+Q4qxLDoCMpRbN9ugi7cWIMZ lm4F7RZ0WRfhiDJimoi9oxdHbsBYNA1hbV5AdpP+DHxvOqian36/220lyB2aQ87y3OahX+RA88G vHshSYkqj/C34hu6nk24HwemUZ5kcbmIZnyU52dq+KSf0gOcSpwWjDrRvFONyU9ANlyfCJGS6Id ISetj7Sibk/FTLtKEBt9EEC0FN0zBWkJlYqYXyhG6EsdwtyrsxtIBY/W91HFYMbHrjRl/dpORWL VOGKmAe/VnMi/Nwfmr7NdhoNUSQIiiTgCvscrsdbUD9Eg5lqdxmP+LH4HHdeqfYhiADn51vhzNl GZBBpwZWsFPq6TmV7zDDNP+lYEeVoG98vXzpg1zzr5oUiC4qKZPHEzznOwHSb01iMKCKEeWbblX UVDZZ/6jYGPHIZvvUJCPMA9eER6PQvvWMhdFAVgb4= X-Received: by 2002:a17:902:f60b:b0:2b9:f59e:aca5 with SMTP id d9443c01a7336-2c1644b12c2mr16936155ad.39.1780457546518; Tue, 02 Jun 2026 20:32:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 41/45] target/arm: Implement FMMLA (FP8 to FP32) for SVE Date: Tue, 2 Jun 2026 20:28:50 -0700 Message-ID: <20260603032855.106930-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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: 1780457657085158501 Content-Type: text/plain; charset="utf-8" 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 fa0f3d23b2..1def148f64 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 Mon Jun 8 06:38:58 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=1780457636; cv=none; d=zohomail.com; s=zohoarc; b=IR2xOA/zjJKxcLxsyydxQSqKPH4t+w/Xyl4d7MaVoIiX/R30IwAEG3yGErwGlfrc2wTsiEOLau7b8Lt5AvXJYiJ2C0sQhjDoSdIhzhm8ZGXID+dfem6MKI5JY4iM3ye9NB6DqGc54BCaOLOqbdzvhTdtYilllfeDVDV6RpPDaE0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457636; 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=P/P/bsLRa8Km1ZFwwN9fhqKy4ONbgc9/cxj6UUIH6cY=; b=FQ6cl93FRGYH3liXWwlLQ3GPHKc8n2ij8xX5H2lzfcoqeWw71LCKLIp4GECbRcfikKPppPVbnrrASmttNA72VCJfz+0F187WNF/3Q8Xpt+WiQ4GZW+VkOfwiB7NGir7nyrOWG+cplluDNKzgiu/iLWNSiGJY0vyJPnG//E3BCrE= 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 1780457636629123.89236113694642; Tue, 2 Jun 2026 20:33:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcLR-00025i-F8; Tue, 02 Jun 2026 23:32: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 1wUcLI-0001XO-Fe for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:33 -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 1wUcLF-0004cW-Jm for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:32 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2c0b944f6edso33866235ad.2 for ; Tue, 02 Jun 2026 20:32:28 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa0236sm7785685ad.33.2026.06.02.20.32.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:32:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457547; x=1781062347; 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=P/P/bsLRa8Km1ZFwwN9fhqKy4ONbgc9/cxj6UUIH6cY=; b=xpT5uizjJmGwvUr6U3L4vNX4p/fhLEJ9jw3gFKafS+XzaKe8s2rGZ7DR5pHknNv6ku in31pyC4lqNtrE4vff/1Xp6zys+ut7h0sFvF+kEb7RZUmAJ/BbWQjtbDFk24igtC4iiM 8OHXonofe5ZkRxvUBEBqY+aox1v1mkxAdD10WSZAR6C5TsvEkA6Q/LNXkjoZI0Fb4WOn S1Z1XL6lMWd77mShrKVT7GqPzvN3hbY6EkzPE7S34Z9VRoJYwu0+P+3KKHgEi1J+s1jc yinz2/g3yypVOS6qeCB2aYku/5D8H0wO4Tmo1Jl/ntj3sr0lL+WubXoYMFwvXCVEdxyb XOBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457547; x=1781062347; 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=P/P/bsLRa8Km1ZFwwN9fhqKy4ONbgc9/cxj6UUIH6cY=; b=F4hDXeGYjq5+uUpS9UJ8FAyvKZVI394RT8z4GdtuEFEqT7dwMDlPnHeTB7YXsPXcxp 2v/Rz1TAFaVX7Ylkv1IxQHSpkvLJvXnFiyfdzfPWEyf2Tbp1XgrR7tixy+hRcDn5OwcJ 8yjH24HQ+BFgEVkeScnAJOKYayUhRdK0dXv5h0wQ4nY1n6MHDnjjSxZLmlVsZja4h2Fo ByjOGKuuSiHwXnwqNDfrKqpHmyd4FL/y4AriU1ZIYKWpq68d50IQiet3usZzYeux8ytA a7XSm5ha1c4a/O2E2nlXaDUn+vjxLr/2ZfgwPn3Kn+8wFr2DmL6xjjD1xSUF0Raafwjz PB1Q== X-Gm-Message-State: AOJu0YxtOagxRWlcO3J+3zgij24ViqlFOLqQiKjipbDqjjC9jBdz6le0 GAGLMDy24DoprDvpfhuwWF9/9yQcZwtcxvul4p5kdnFiwvtFqTkk/689fayf/EZ8fCkbKGJy8Vl DwGhyJh8= X-Gm-Gg: Acq92OGAO5wTAvtPQ6u9s4I5LLG6BUIpP2a+z3/wAXs5nvMc/hSL23hUEqlsL8G0va7 sYER8Q54uMkEyskJhHG2Tj0NT/8SUjcUR77v3vt0/d/CtJrbghsu7WxqBtBQ8+X3rZxu0mXp6TN zhxDDHzzeKGupgOqxzzLZ/o0m5wraaaSpF7n7dZGjxuRTtJ/7bF3GYzAOrVnfmYrcdDjK4/sMKp qjlXjXXJbKyd38DBW9BHG7sot10JIkreWPO6KIOgeYwfXhnAB0W7Ohpolxme78K9KVv3Y1nxM9R j5fy/cx5cOE8tViBg/ROUGEu4GrYN65hxTD5VyFF0nN9oIzQi/2qtIm/zo2RQZzWOsahPzxFGto RU0Cnae4muueSvdYYWFkXVA22siweUL48TMCTvQrvvYgM3QbGpBn1Zle/b+Rx3+2zI+3/iV7G3d azMLj7fMlKZogXXHmquGpUMOqZBh2YMeNK79aleG9yKyshE/DNZQ== X-Received: by 2002:a17:902:c947:b0:2c0:ab92:584c with SMTP id d9443c01a7336-2c163fa8a01mr17026835ad.25.1780457547132; Tue, 02 Jun 2026 20:32:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 42/45] target/arm: Enable FEAT_F8F32MM for -cpu max Date: Tue, 2 Jun 2026 20:28:51 -0700 Message-ID: <20260603032855.106930-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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: 1780457636919158500 Content-Type: text/plain; charset="utf-8" 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 Mon Jun 8 06:38:58 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=1780457615; cv=none; d=zohomail.com; s=zohoarc; b=KIQROGIV8ggKerABekC8rq/uTxAYDFBNKNMwp9L5oeEdafkXSCCyEEXkwVdwky2ScWRlNH/vzKNLoz7h0eftY0qKCAlx0b705Wjxts8RYks75TdIILWgPyK849sudp4TYOi6/Bo0arrskvsOyrdTY7gSK3NIqQEQfIZdtQ93Eic= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457615; 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=jcUdpMLyTWJf5Zy34vFVIdzyaHCSAKrz+Dcw2eeWrsQ=; b=FPWJwEFtVhvVsuZEVHC9/J6ZJ7GBxrgNqK3mjhYuBdZmsb3kfkBlTIfBdIWN3cCJqWgvhetYSKPU3hfJgd5yCe7sb+16WDZhpmPAKBUYAaYCDzyXEonkKnurHz9rOeAL0KGYuBuapKMEaJoDfEB57HMDU8Y7NWNel1ROP89uCTQ= 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 1780457615941228.9016601414121; Tue, 2 Jun 2026 20:33:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcLS-000269-9C; Tue, 02 Jun 2026 23:32: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 1wUcLI-0001XQ-MX for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:33 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wUcLF-0004ci-Jq for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:32 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-36b7b7b7a80so119023a91.1 for ; Tue, 02 Jun 2026 20:32:29 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa0236sm7785685ad.33.2026.06.02.20.32.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:32:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457548; x=1781062348; 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=jcUdpMLyTWJf5Zy34vFVIdzyaHCSAKrz+Dcw2eeWrsQ=; b=QqtjciZzJ6Q5g++z3ectYaJ01+FYZNUDMH4n1llYRXrYPTuN2LnY40xFAS5A28ecGQ ouSqF/qENkOFiMZqdvJFiaP4fsHmjNR/Nd8y8Stv3LDym8vJ/hoPTWU33T22YUSe/9Ph jYdYOXwI5v/+al5eAD1tZVW86jSin+OHBln80A5Las0EgM13HNxx6+r3+3zPaQGhidOF /09iKYyK2/NrAUpO+sNhIFUDFI4AbART6FUs3KpRAerWzL+jw/CzBc0VWnh+OofzXGVd RruTYjj41CRiANQetCsTdLPuhyM7wKvrXJxyy6cqq2rmrPlppEJAvZbU8Tn5rOKAed8M wZEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457548; x=1781062348; 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=jcUdpMLyTWJf5Zy34vFVIdzyaHCSAKrz+Dcw2eeWrsQ=; b=TJZ9Z9vTjSH8IsL1IYrLLpuNoIqYag5dxGS4cdApFkw5VvNDeX+hEEV30bQskwpKYy xkcD2zGi3GTYqQvaVzUCdXyIGj3L5WRve4Wd8l9Lc6XIOKL5aw7THXOb/ML1X6PB5RyZ zp4NleaEbOJNRvJMNYuZfY+6HsNz/Bj2HhTjQ3ErRzigFN+vnILV5jHTVVF+rAewFHKH oOoMtkVI1g6MtnOH60Pq9f9JK3320aOwf8/oXZVXtA7hgR7bcseTboLOc2fiYE2pFK1M Ls4quk1U9NbmeEIqE8WDzHcmCnaurFB9T8xLHITd1k5ElDWD5JihHjRpRST6Ew4zK5w7 ps6w== X-Gm-Message-State: AOJu0YwQOqTXS/ldMhQ10oTGi/zaHokIR/+Ix9ny3FpsO/SijGlT6r7H xXeWsXgoNtwrEjckQ9W1H9IWim3EGiBNX6zZ/ptXo9D4i+93KGCWvjCdVY3taXbbHhsHQFDPlRY Zg50bbjI= X-Gm-Gg: Acq92OEkPNnKLEzoC1XwEX5atqK/mjL5ZTG0ruVAIQYp5vWjXhgA6epbD28p1CdZQFw zHecm5dAlfRoOT6kTP4pKCWWSohJkYU7nHjwCqxxD7hbutvPmC4OC15LFF2G88RPX9BUKTZyMxI vRFPnvPTMQDv8FUXh8fiVwnAtNjcFyP7TxHbhI4Lo3bJbkVUI/rRSr1iZZ3242vmK8atubCViue 89KJX5pNOaXXjr6CeogE24kUFaAfRtm6vPjjcyevD9dg4zqdSrviT/m60f3LBLbG6WH1dXgsNoc zCALH8X3etdpvJwwFy+WrskbIMNRxWzb0/EHnH9XARWIvBGUs0nUAorcty9St9TeraZeOvmNbvl 3DD2O9iJi6/U0EkGzn9W2dg8mhy/iFpBYnlJc31Wb8oLLZ/IW6EAz9MV6a1WzuYQu2QyGKMKuoy xuWrSQHtZkt6qzeGJplC9EPr45Qx1Em4FWBk3XA+VoNjlxtx0drA== X-Received: by 2002:a17:903:1786:b0:2b9:6cde:c34b with SMTP id d9443c01a7336-2c164b2adeemr11286295ad.15.1780457547766; Tue, 02 Jun 2026 20:32:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 43/45] target/arm: Implement FMMLA (FP8 to FP16) for AdvSIMD Date: Tue, 2 Jun 2026 20:28:52 -0700 Message-ID: <20260603032855.106930-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.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: 1780457616846158500 Content-Type: text/plain; charset="utf-8" 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 9db4ff4c2f..8365da9893 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -831,3 +831,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 Mon Jun 8 06:38:58 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=1780457657; cv=none; d=zohomail.com; s=zohoarc; b=HDwQtzn2za4rEtFJ9ZgHtO/cqTQ7AaC257+1mjBcZt0YnaWe+TC299SJIrO8M0lImImfr2iMKaEuH2Et9hsyh5V32U/JRABVWCUwpSxLi5g0d+NlBEffPExMQLyDWYRf6ORR/y3/b74y5sydX0YMSUKKjCOa+kvquYZBWpufvag= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457657; 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=wag/kMq2SOZ4UTghLOZZPUgDGcWCTksKDFfQl0odqRg=; b=BarqcPTxH63pA5QY1Ya+/I8VPTHvvm6dkjDc2W0kZzff4WqgUtty6xOfb1jLKX5r9vBiGMCK99ac1+6rWnr/q/wKvZ2HnaZ5ursMtSg/zUAOrzIct0hUkPeAbmILNYJef/y++nbXOAk0558fIf9hB/0syb7mObqldYMnGQlMecg= 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 1780457657888456.8980204971581; Tue, 2 Jun 2026 20:34:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcLM-0001h0-46; Tue, 02 Jun 2026 23:32:36 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcLK-0001YO-8A for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:34 -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 1wUcLG-0004cn-2U for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:33 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2bf36a6905cso27371325ad.3 for ; Tue, 02 Jun 2026 20:32:29 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa0236sm7785685ad.33.2026.06.02.20.32.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:32:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457548; x=1781062348; 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=wag/kMq2SOZ4UTghLOZZPUgDGcWCTksKDFfQl0odqRg=; b=Ao7hanc8qvVsWfzFlHqBj3P2fUbeINL5wC9GR6EiB1RbWQuEJmHjlrsSG+bnkEP1iI MuFimgEQfL6ViMS63w+xZ3Nb1vnJ7qYtN/tccmZqUilBgQizmwjlG9mWHNR81EXdM7aC yc4LcUaB2ialka0p8MEsTKiDvtKGupg1QV1B2eE188jYIpwDn1fgc5V3Svpc4svAIcee yV+f97RChwQ5H0dpHmYvVMRhVRmQRH6LZWRzGghCGEw/fmvu+t+gVHVTxF6hFlgTuxzb Po+Pmie0TCDZBfTvUngIlpL2DwxYA/j72divUYegOFYEoFBKp8y9pfS6XGlzFofSXEKI CJQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457548; x=1781062348; 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=wag/kMq2SOZ4UTghLOZZPUgDGcWCTksKDFfQl0odqRg=; b=BEIIQxCA2c4inxZNn2FPammxIU2VNpqPrpvyJfYy2xQ9eI7nMHVBZ5yd71N+k2dkYG qgmJJisVncZ4BVkfmcG1fMTClcP8nCTQJ0GsVviHL3yH5VB9AhkjFeJpzUdCi2MwCTO8 bBTSAr4opysSI6IUQBCn1af+68f663TUHdDi3J5UixKlpODiWm/rG3wulhDbBlo9e5Oq 1YGwmhyDAwcZGnrfVhx8MoAcXMKELwgWfsXPNhRIV7Lmp18nMgwaLW9FYuE/stQaXPp7 z0wQ8UP4ciyI0nCTdiyuqG+QiwTDnvVNPUUyAdu+QAJ3a1dtFM2wEBuqbAIvUEAV9MLF uIqA== X-Gm-Message-State: AOJu0Ywp7iHV9TPkgUUM+L370jd5+IIqrxiYEIWFxICWOoKnfh7RruT2 3Sc3TBj7OPk9F0uE18eQhAIpnOMYkTqbhwnNEuRXnNPJNZZJmt6ZBkdud1HPXY6bTG2s81pQYjo /mtzTeK0= X-Gm-Gg: Acq92OGrbLlvrkS5EHS0zTDvlT0LgRju90pYBT3FuJw2mWmyIlTiu6sVu1iLK+RQeQ7 mvEBH0QGBq3zgucI3MSu/CPzXYVeupRoaDKumGDEgifDazfvBE2R5fYVNrgeWMBV9Wy4+scnbea 52+DNr8asoXnaQhbQU1AiarfvgkSUN+Orvj8TQ4DVBEjxtEU08H0rtxNOnGHbWZQpio1sHqlOlP Z2wiPHMn/Mn9Gz8KKlIr/WYLTtbsOwljeun0OlbUVGEdqGhLcloa0lTnbY6EbR8k9KAWoIYJyJI nMY4S/Lx6dpkpDJaZwWprfd0+gDbWqrXesWOAGsCZwqnPKsBPVQHJ0VCqFmtLdvcIuhipCkeT/w 9TUSJJK3KI8BW0K2RWzLegxeSqu7gupnsbWMHSuL1vsZG9fzUwQ8CdDRlbpo7JtsMmYWjOTj0Ik +f8avQf9YDIqbQXBfVRPcMibdCSyiWtZET0nc1Kck= X-Received: by 2002:a17:902:e746:b0:2bf:2d0:887b with SMTP id d9443c01a7336-2c163a30c4cmr16856335ad.9.1780457548456; Tue, 02 Jun 2026 20:32:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 44/45] target/arm: Implement FMMLA (FP8 to FP16) for SVE Date: Tue, 2 Jun 2026 20:28:53 -0700 Message-ID: <20260603032855.106930-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1780457659044158500 Content-Type: text/plain; charset="utf-8" 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 1def148f64..9a1bf71577 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 Mon Jun 8 06:38:58 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=1780457661; cv=none; d=zohomail.com; s=zohoarc; b=AhJSKuAUZ9z1GPjbsSDK02cWiEldPDBoe3WjFS3aZlLagwW9/J8ngiEjXKF7f1S1wfLCRVMm/nEcWNB4DTmkyoET7W4eWHbR8D0VPNYdG1XjQP4X5EGuqpcDnKfPRt3ynWwTxu3dXGjbKMW8GaX1+dbYbojEkWzvprDjX3vLSLk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1780457661; 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=z/Tioi3dpsi0F/SXE2FE6voGg8/eCNvGNXOCYhrTQy8=; b=LWyArT2W4qeiMQDWmm0vxultIsGFK89kHn72lmGiHOrrGRCSky61lJnhCgAgHAksqQqrYXo9iS4FLeZhGg11Kn01ogc6zrJ++bEf5jKJmfbLNH+LB9/FFnXxP16Z+13nIiQzKB90RE9dhumBH0GK2EMtkWsMcOFq68YkSmsJUqM= 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 1780457661584888.725932734115; Tue, 2 Jun 2026 20:34:21 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wUcLN-0001oh-MR; Tue, 02 Jun 2026 23:32:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wUcLK-0001YV-6Y for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:34 -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 1wUcLH-0004dA-4D for qemu-devel@nongnu.org; Tue, 02 Jun 2026 23:32:33 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2c0bb4a94b8so24334825ad.2 for ; Tue, 02 Jun 2026 20:32:30 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2c164fa0236sm7785685ad.33.2026.06.02.20.32.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 02 Jun 2026 20:32:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1780457549; x=1781062349; 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=z/Tioi3dpsi0F/SXE2FE6voGg8/eCNvGNXOCYhrTQy8=; b=NQmSajwP5zWbmRIaqgrttm3m1iFbNeJaUXB5QBB/Md2ynFGFhdb2IvnVm0WeCxjwhf TSscIbrpcbAWmhIxj+K5b6gY3ADK7APwQKxJeAb0Sr7prVjEzp51X0g0R+J7KC+Ls0eE 7yZe7P6FAuG01I8n2WOaAazvrYfk4dpeMyr7Pp9Enom9In+xLg6AaHBkjyMq2gbn654/ YWT+pJdtth1ZhXljkQzNRElbQbHuMvKpc6YH9oamZ/kR9+fphXHnNRlUIV5h0/S/mtyQ MteXQIaH/G2EvBAqxN+0fp31MesR4GH0qhgA7jHzl6soKlc8VWDkwg/KoglraQG957Cu f9tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780457549; x=1781062349; 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=z/Tioi3dpsi0F/SXE2FE6voGg8/eCNvGNXOCYhrTQy8=; b=gbKuFMPkzvywfQeDH6nuGXXIMpH0yiD4HnnLHBCVDXPYgtaoK+OEP8dQlprngbqhOQ bTxT9xGJMMibyj4MX89FFtChdbAa9P4AAa5293xYvY4F8IGxZ6laeHJO48gwnElIhgY+ nu6KF2GmaxjfjUBui0fdDjn4AOEcRzAKJdzeFUs2UgEb99UqLAxXWA9uBxH766f7ytd/ om/scFUdYMdsqItLwmdbY/1GN6ZTSoFvJOtyAUxkUMPgX+mwsIR4fWxtYPpQ/sqKSycN Y67qkUFSwil2H5Ow6s08Wpd0lyNA49IP/0MFDkuTxTHFYHbxLE98f2aVLcqK0qoJgstR jTaw== X-Gm-Message-State: AOJu0YybvfzKSU6S7Ax+QRxgF5iYYFi/hsEjotfQLBtnRf6OCF0nIkIl wHmH9OeZcWqaIs7M+RtJtAx2DSSzE3Ob4y6JBq6ei2rsmk7fboeqIzcjnyyJFIzjKV4f9/XJmBn CHJBWn0s= X-Gm-Gg: Acq92OExpNBzjhMdSwofen/BnZPjkrEVO6+cGd3wE5msrBwTaa7gA+I03kV70EcC2Th lhbS6L48tVMXYCnLmWCkzxg0Abfmm8Z+SAC/Vl6D2/SfyLdtk58n6InZ4i2qFHidK3LU3kLwpZ3 f2z8g8m0U+VPTtN5IPJehnjSNDVQlBtQLq7Mt3gapynrQ9G7Otctv/FJQjg5+VzDDQYy21oG1Rk 19S2r2OrF8xhRMCqCYOEC9xG845QGcdIfajVqyvsh9zfFiS4tl23++8YgK/+FEpvoHj4rdbwiO+ Ylemo4SdTdDNtE19Ey9jws24pDHizHkee9LPdZStmhlWdNFPxsIxPrwVqmU0F0AA6iR+4E5DJrn Hew+S8DqITytn8TLSVoDL6OVlVXBoSHV76+FecBjbTCijCDN5w34tznEsCPrII/rEmxitMvqi6y ApakILKeBerKio9kQciCaMyFkYxNtrxYhO7StoAIM= X-Received: by 2002:a17:903:41c6:b0:2c0:af09:f3d9 with SMTP id d9443c01a7336-2c1644d1700mr16187245ad.36.1780457549213; Tue, 02 Jun 2026 20:32:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v9 45/45] target/arm: Enable FEAT_F8F16MM for -cpu max Date: Tue, 2 Jun 2026 20:28:54 -0700 Message-ID: <20260603032855.106930-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260603032855.106930-1-richard.henderson@linaro.org> References: <20260603032855.106930-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: 1780457663049158500 Content-Type: text/plain; charset="utf-8" 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