From nobody Sun Jul 26 14:11:02 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=1781107940; cv=none; d=zohomail.com; s=zohoarc; b=ZpQ8H0y4Dfm6vSk4UpHtW1L39dT7hBsYmhtFJWTviMb5mOqWphpJO1o+k314pdPP6MjIiwKWpCDJwNxcsjdST5emJTduzb35/h/btd0TxGbqMhreF9Zsc9EhY9ZagM/9FCKTEIxw+QA1kPZZtoW0F6TnIIcZhxKWUXsr4ri/rHM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781107940; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=0ettYE4YQkH1grruhWe0pOVmQVBxQ8J2gpVklK+vhQ4=; b=AWJSShYPbIotni+xsDQ5WXWevJKpWuH84FkRusXce3HZqYzekRD53dRDw1+CifaGv9VBPSX6MXovtfLYyWsdoaKbfiv+B6hxMk3g92h4z8S1tirZDBn7Mg0vvdq03g9wPGkuO3nCmGJgW4co7c2YPuEfaJSpIIFrCyG15c1ImgE= 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 1781107940961816.9609444755112; Wed, 10 Jun 2026 09:12:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXG-0007Yb-Kl; Wed, 10 Jun 2026 12:12: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 1wXLXE-0007Y7-TA for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:08 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXD-0005PX-0a for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:08 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-490c1915793so49976395e9.2 for ; Wed, 10 Jun 2026 09:12:06 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107925; x=1781712725; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=0ettYE4YQkH1grruhWe0pOVmQVBxQ8J2gpVklK+vhQ4=; b=RpnkZ5PFEZRlnwpxg3qJoWn97b1/9edHWlsDXJbr1r9hOv6/nLrC6d9m7j0Lffjovm O29lFwgBwqXGNp/WGfguXLdIAaErPhBqogQcVSTuldJTm0f2nKn0vdQJTScu9Pn7H3Ef ViHU7a+scnohZGtvyj7hasJhvG4BUa0v0YPmzePjeEKloCsJZFVZy3w507hRRXM29/z9 o54K23CA0YsZR08IN0Gegl4hg3SrpH/kw8MYxmADZgD1OevmqqkECyysP0TU4R+cdr3y B0hUKdjfJap1FtNkeZE6ZHTOjjDJAvY5Spc61t9JPJAiFapMVSmzPTNEBaopY1KMZlX/ GeBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107925; x=1781712725; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=0ettYE4YQkH1grruhWe0pOVmQVBxQ8J2gpVklK+vhQ4=; b=nfG1eXM2XkQBwrogUIZ6G09F4IJkrbS8VzYVC3A8ocfcJBvvQ7OTgcDN3zD8+kFIJm Kig29Hv9L3NCiiIhOHgyL23VBiF3R+u2wp6geYAdvn4Pd8dbHTd93sOeo3BBtLj8RFlL RWAL01d7Oo2vyq9KxbCZSVCPgC1WzIulV/VW4gptz2IsY4g/6EQfWvyJ5AXXBBbYPacX ADWAFVEovGNRBItbahFspqHoh3Z463fcS4J2hIiCiLaPzvv1LKlHCL4znLHf0sH3bpIM 9JsLEWEPFrhZL3kmu9TvGUuyG/Sh0w5yz5bs7xJtO9+48gtqqFuMZbMGVkvBO2ixq846 wnzQ== X-Gm-Message-State: AOJu0YzyaSunuCpwBw/vKOUZObp/NoHiBUoRXo5jhfPHXvgQe6KOFqTf Fn3N5i+M65e5LoL2M9mvAIrLgEb9vRG5BVg7nToupc+mWmGxJ73tn6+D4DfoUsJNSI5WFZgdonx lxX4X X-Gm-Gg: Acq92OEFqrs9T7zWeqZDaE2fXXMGcgQvAW4SV+dsHUolS64KmcG7ZnR6HYy5ZkxSSsj XEmUp5E8lbKiwWdnCHCM0dJ2li+gxhggWUk7BIm6JTj5qK3BmU5OkH7zx9Vb3qSdElLjUY+6czp x71R85rq9bYTtT7HuZfvINcQSxq1aS5IZ4KnWqqsImVH0uov1+m2ry7mLlM/pcJHcTPMjua+x9l J+SLnhXDNsRfzupO7RWZVODOiQprwx7LNq78tMs6qziGTygGLT/4Jb5flSVSKNxg0djdiHwmBsK 10e+6sAEt/xu4KxENJaepLlGOjGSYzi7mVFhQnuyChZ9/O7pT3FIi/3U6gZCJsbB2k5JUScppW7 sk5GFjbVrkZ0PxnSuA84Q+0lVQEPKpyF366O5mZi/qD9cjiZUj9DToboZS3Hhl697X9QqmtKyJR uS7yr5NaTQNFXbfUip9y2dniqWwuL/ilkvA1x5hAek2YlqHiyUjarnHXI3g6Zv02Z3MHN20Qkfi GH4F2OxK21qyvm5G03CtSsPpIvqD15SvekIIq3ZU80= X-Received: by 2002:a05:600c:5246:b0:490:bad8:329c with SMTP id 5b1f17b1804b1-490c25c8197mr396586385e9.12.1781107925497; Wed, 10 Jun 2026 09:12:05 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 01/71] hw/core/qdev-clock: Fix potential null pointer dereference Date: Wed, 10 Jun 2026 17:10:52 +0100 Message-ID: <20260610161202.2235298-2-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.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: 1781107942832158500 Content-Type: text/plain; charset="utf-8" From: "hemanshu.khilari.foss" qdev_get_clocklist() function returns a pointer to the NamedClockList struct. This function is called in qdev_alias_clock() and the returned pointer is immediately dereferenced without a null check. Passing a clock name that doesn't exist to qdev_get_clocklist() is a programming error, and so this change is not fixing a bug, only making the reporting of that programming error a bit more helpful and bringing it in to line with qdev_get_clock_in() and qdev_get_clock_out(). Cc: luc@lmichel.fr Cc: peter.maydell@linaro.org Cc: hemanshu_dev@proton.me Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/2342 Signed-off-by: hemanshu.khilari.foss Message-id: 20260531153354.88909-2-hemanshu.khilari.foss@gmail.com Reviewed-by: Luc Michel Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/core/qdev-clock.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/hw/core/qdev-clock.c b/hw/core/qdev-clock.c index 6e2967e433..861f78f94c 100644 --- a/hw/core/qdev-clock.c +++ b/hw/core/qdev-clock.c @@ -157,7 +157,14 @@ Clock *qdev_alias_clock(DeviceState *dev, const char *= name, DeviceState *alias_dev, const char *alias_name) { NamedClockList *ncl =3D qdev_get_clocklist(dev, name); - Clock *clk =3D ncl->clock; + Clock *clk; + + if (!ncl) { + error_report("Can not find clock '%s' for device type '%s'", + name, object_get_typename(OBJECT(dev))); + abort(); + } + clk =3D ncl->clock; =20 ncl =3D qdev_init_clocklist(alias_dev, alias_name, true, ncl->output, = clk); =20 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781107950; cv=none; d=zohomail.com; s=zohoarc; b=Mshd6Trhq0TgKkZEV924RkQSGjeKQ6FuxQUHCR76tILtR/qTy/nBHfpm74fKd6xIY3KdkDanDsT2jBtCR2+rJ6B34SpvGXw/BZRLq6Aq24NjDKDv4yYu3duGNXAjVHNChFCsXKbpgbwpQQQ4LVqWa7BuFg0ct8Zx/nIoPwtYLYs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781107950; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=YRUWTkmUsOJ/21M3+Jj97QsUtiTOkACivxwWggVCxTk=; b=Wxxv0hH8lrhqh1ldZ/DC9ILWYB9ABFSA3Zv6hOmVCPJnfPYxKx0GooR6IDFoxWoTIxmu04AsfrRc/2lhfskmZXig9qS9kKGa5AY637Rr5ytKPi7njjzVGn4+jYmOX9SrIoYltJIF59n0RmUxH48iaptHpkPAI9syFYmsPqNROhM= 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 1781107950712898.0613130454909; Wed, 10 Jun 2026 09:12:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXJ-0007Zz-Am; Wed, 10 Jun 2026 12:12:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXG-0007Yc-I3 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:10 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450: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 1wXLXE-0005Qh-LB for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:10 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-45ef4223be7so3859771f8f.2 for ; Wed, 10 Jun 2026 09:12:08 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107927; x=1781712727; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=YRUWTkmUsOJ/21M3+Jj97QsUtiTOkACivxwWggVCxTk=; b=hclHFTh/3HQA4/1b+Z3cD8TiCIk00Bkxnux3fl8D1rRDwK44uUi1m0Yc0oIeBy+WRe 4fchYzqtoNEYV8dERGH+c66/ViCfYqZy/536+Ni6iwixFyC6mxLi+71NtWmUbtdgjDnE iPCsHKh5QCr4uffi9WtDYBgfofR55Mniu6fmlxTvROb/Ea1r4nU7O3CcCquHfOPDIiXZ NU4n7U37rom9oMJBRlEZTEkBmyK5F7txMvNFQtLv/q5XjaDCo1XzPvDjIXHKaVpabBge 0Bz/tCbHoN108eahjReYQ80TxlhdY49gSr70Yna/3ouMKe+I4KuUbY4aVd3Tl0ofTAzE ftjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107927; x=1781712727; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=YRUWTkmUsOJ/21M3+Jj97QsUtiTOkACivxwWggVCxTk=; b=ouxqGxhHvfsh1ZyAowELG25AKENl6Y4h6UZoLS8hEYzm0VV5LI/VvyXxxi+pc6pMT4 kLDiMYQ42ZV4/VkYDtr2iFZ+oglFE5MyJ6r/udhyjRNwn6flcSws3R2TKXxazhMfVIgF iVU/GwScmkw5MmVqU5CtQOoyrJJrUsWWb51A6He9F1eK1L2mMt3Ptu2DJiK0rcQO9jBP pGWk7O1vrQRFd1JrcsQzhr8rUkeZfFFc9iyjc/t1ygi93WyeqwfDUAQ64cUJy2p0BVcN 1QzQ1bCHBjhNSvD0wQ++sogLw6GGn4VzxpjccK2IHgFzaNSSXqR60KJiRgTdGmeF/SZE 9Ilg== X-Gm-Message-State: AOJu0YwmWqItmppFqXCl5+iT7y5/GzIwuF3e5WBZAnGHcP8GR6+898I1 PpMihdK8A1eTozaWvHTeqniaLSpAwiBS8g9/aqALrcKzT8zowOWCPy4/S9V07qaJO7sjbLkQ3Pw ywBob X-Gm-Gg: Acq92OFC+2TAjwlDHpPeiGFU2VwW6/XQ+FSTvzLP9xsxNGLdcb9/tnTLp1tz7o+3Bg5 vUj8DKhh3KHsYEmL9RZxCGySRK0BOt7I0mAWpWCPSoPCdD8OMFTRufe6bCSfYBBTGPJYijKbNt6 C3wJjxaSybAgvufmQJen3M+0pbtoINwui0JG03UAqjTQtQH9ty1fbO6L9DkkIpipL0yIUid50o1 8vI/NGT8tgPOerPT5eHm1mUKONZyVLxjkuPrdB6Sc9bI5vmQIsslXtNcGhCrp3V8EQ/5iiwUzUV YfUpKFyj4/WoQeDdRDo6RFOtMZN1IvpS4A9SxrduetoUx5jtINWe0ZMhqlxDcqCYKUhKQbG6dbA YDoZzkpAylhlrARi4odhScdHf1li6dzR5I94PO0rcERixBeKaj47bqKQ43K466iEvEaC4aeSOpe x7QadJbTgUcSIrdIAL581qT1yWZSU5KA+GNbklpC9C5Q2hcJYFP+miYpTaYHiNS17enKIqgSVfs cHZqEjgWa32FJjJES5HZUNeEIpl4OukaEjzldb98r0= X-Received: by 2002:a05:6000:41e9:b0:454:a12c:6cdb with SMTP id ffacd0b85a97d-460566810famr10980830f8f.2.1781107926805; Wed, 10 Jun 2026 09:12:06 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 02/71] target/arm: implement MTE_PERM Date: Wed, 10 Jun 2026 17:10:53 +0100 Message-ID: <20260610161202.2235298-3-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781107952338158501 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman Introduces a new stage 2 memory attribute, NoTagAccess, that raises a stage 2 data abort on a tag check, tag read, or tag write. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-1-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/ptw.c | 25 +++++++++++++++++++++--- target/arm/tcg/mte_helper.c | 38 +++++++++++++++++++++++++++++++++++-- 3 files changed, 63 insertions(+), 5 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 38a695ded7..83897365ad 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1191,6 +1191,11 @@ static inline bool isar_feature_aa64_mte3(const ARMI= SARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64PFR1, MTE) >=3D 3; } =20 +static inline bool isar_feature_aa64_mteperm(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64PFR2, MTEPERM) >=3D 1; +} + static inline bool isar_feature_aa64_sme(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64PFR1, SME) !=3D 0; diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 0a5201763a..6cb0fe5645 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -3415,7 +3415,7 @@ static ARMCacheAttrs combine_cacheattrs(uint64_t hcr, ARMCacheAttrs s1, ARMCacheAttrs s2) { ARMCacheAttrs ret; - bool tagged =3D false; + bool tagged =3D false, notagaccess =3D false; =20 assert(!s1.is_s2_format); ret.is_s2_format =3D false; @@ -3425,6 +3425,18 @@ static ARMCacheAttrs combine_cacheattrs(uint64_t hcr, s1.attrs =3D 0xff; } =20 + if (hcr & HCR_FWB) { + if (s2.attrs >=3D 0xe) { + notagaccess =3D true; + s2.attrs =3D 0x7; + } + } else { + if (s2.attrs =3D=3D 0x4) { + notagaccess =3D true; + s2.attrs =3D 0xf; + } + } + /* Combine shareability attributes (table D4-43) */ if (s1.shareability =3D=3D 2 || s2.shareability =3D=3D 2) { /* if either are outer-shareable, the result is outer-shareable */ @@ -3456,9 +3468,16 @@ static ARMCacheAttrs combine_cacheattrs(uint64_t hcr, ret.shareability =3D 2; } =20 - /* TODO: CombineS1S2Desc does not consider transient, only WB, RWA. */ + /* + * The attr encoding 0xe0 corresponds to Tagged NoTagAccess and is only + * valid with FEAT_MTE_PERM (otherwise RESERVED, constrained + * unpredictable)). The presence of this feature is checked in + * allocation_tag_mem_probe, where Tagged NoTagAccess has its effect. = See + * J1.3.5.2 EncodePARAttrs. + * TODO: CombineS1S2Desc does not consider transient, only WB, RWA. + */ if (tagged && ret.attrs =3D=3D 0xff) { - ret.attrs =3D 0xf0; + ret.attrs =3D notagaccess ? 0xe0 : 0xf0; } =20 return ret; diff --git a/target/arm/tcg/mte_helper.c b/target/arm/tcg/mte_helper.c index a9fb979f63..bf35dc10ce 100644 --- a/target/arm/tcg/mte_helper.c +++ b/target/arm/tcg/mte_helper.c @@ -58,6 +58,27 @@ static int choose_nonexcluded_tag(int tag, int offset, u= int16_t exclude) return tag; } =20 +#ifndef CONFIG_USER_ONLY +/* + * Constructs S2 Permission Fault as described in ARM ARM "Stage 2 Memory + * Tagging Attributes". + */ +static void mte_perm_check_fail(CPUARMState *env, uint64_t dirty_ptr, + uintptr_t ra, bool is_write) +{ + uint64_t syn; + + env->exception.vaddress =3D dirty_ptr; + + syn =3D syn_data_abort_no_iss(0, 0, 0, 0, 0, is_write, 0); + + syn |=3D BIT_ULL(41); /* TagAccess is bit 41 */ + + raise_exception_ra(env, EXCP_DATA_ABORT, syn, 2, ra); + g_assert_not_reached(); +} +#endif + uint8_t *allocation_tag_mem_probe(CPUARMState *env, int ptr_mmu_idx, uint64_t ptr, MMUAccessType ptr_access, int ptr_size, MMUAccessType tag_access, @@ -117,8 +138,21 @@ uint8_t *allocation_tag_mem_probe(CPUARMState *env, in= t ptr_mmu_idx, } assert(!(flags & TLB_INVALID_MASK)); =20 - /* If the virtual page MemAttr !=3D Tagged, access unchecked. */ - if (full->extra.arm.pte_attrs !=3D 0xf0) { + switch (full->extra.arm.pte_attrs) { + case 0xf0: /* Tagged */ + break; + + case 0xe0: /* NoTagAccess */ + if (cpu_isar_feature(aa64_mteperm, env_archcpu(env))) { + if (probe) { + return NULL; + } + assert(ra); + mte_perm_check_fail(env, ptr, ra, tag_access =3D=3D MMU_DATA_S= TORE); + } + /* fall through */ + + default: /* Not Tagged */ return NULL; } =20 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108169; cv=none; d=zohomail.com; s=zohoarc; b=cNG9I6yZMNUmczWEHAFRDFrJTXch8sYp+vLh4gevIjnq0phQc3ESVCIrChPlw5/TLUK5dbJ7cT3kYChhnCvfDGpg5he+76klFP+wt7b1Hd7BBjmEKSeb45WnBMnK/Dsg20szdfNOolQJU9rSsKlZdKk2wIj7c4JvVW9N8nGsutM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108169; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=SmRsAHdPQfKrS+Isqf1/STAzX3OBOIAhRjx5G5H4Poc=; b=Ukqr7hFzhT7AE35P1iUsmL/x6S1V3jH4USTCGZISWJhOobg41xX/PP5rVFhdrsFMH4dQ3UuVaIcbtufVj4l0hPFbv1ZfGhfnSpip1x1NJXRDJIiQ7NveWA1mz9Nm3GYlyba+IcxmT7dRcYN9BGauF6l7klaEPsb4zvTzzY3DiEI= 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 1781108169922691.4418385920733; Wed, 10 Jun 2026 09:16:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXX-0007fm-R3; Wed, 10 Jun 2026 12:12:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXH-0007Yp-JB for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:11 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450: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 1wXLXF-0005RY-Tp for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:11 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-45ef4223be7so3859790f8f.2 for ; Wed, 10 Jun 2026 09:12:09 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107928; x=1781712728; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=SmRsAHdPQfKrS+Isqf1/STAzX3OBOIAhRjx5G5H4Poc=; b=XBwGvT+b9OtV4zlc4nEWNO/zMLaVYXa2kSRnEV4FryBAENw8ZivG2GTkzW5YRR4Fsx Svhnkiuz2r6wdyQBUUVAeK4rWJTKvuAptdPSQt9xXorOKUDIc6Q4pnEPL9TvWtJMMmkP T6k6hg9N1OY6VxZerjiWENithDKw256IhKcwwz3kaV22iex0nYnCAGy3AfB4PrLBnVGn GhKoDHufda7mYTke6ZdWh6+dO5uaJy3uEL5Z3yaVHtomggc1o/KAkUNXX5eMcI6koU8Q Mko8nQmF5I+3qsieAn5SHiAab9aAm9x0ceSeZ8SCGV844O40UJ5BZi03Jzylh6PLgNsx 91XQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107928; x=1781712728; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=SmRsAHdPQfKrS+Isqf1/STAzX3OBOIAhRjx5G5H4Poc=; b=j1lRCSjLCACjQmpfFwNYTeDOZI/AB4gn9aO82slWmUNmdQLNVCA2OiKLW9FEu5texm 0zUUPR92WjuxjkFyt9x7g67t5E9+Jie92zD+ParyztWpZxbqFt8i69qQiNl+RcQdg2j3 mY+TOc3OgfrC8MtGt2Xvby3ScSzm68OgTK0SoEWG70iVmF0CzU/O3LYScJ+BoC3peOat RapT70/ik1tlqdz9XxpZbu47zi1AZVl/mlzz/O252kxciwiKETBA3/NuFSnYjmbZUQwN 0EoAQ9u8nfnXhvNUim3+dkDLf2TsAiJMgNY9d983+Y8UYzYtonHDKTMnuvmdXfRWCN9E lZnQ== X-Gm-Message-State: AOJu0YwTod0flZgiHUrx1HfhlqEIPFEVIxsSTWnBsFCt+eHB+VrtmAhu CS5mw7f9GQjTdpCGfVId6u65tbljsTWEKwudfiSSNu0UA+19fjzh4OOvdz+5G7eXd5Ah9BKs4FP +3Uwf X-Gm-Gg: Acq92OHhwltcRABbrdOq6Qz6LgtBjAufX0zY4rBqEvGhowtT1C2oUCc/GsZl3+gTzgi 8T3ergQAquCx3NKZoUrFKQZ4iEm+c6PI0t/eODgdNUPZEU6y8u2tDpWqTaGYh56Fkn719rnAIzU JwHQLGzuuFLB3ttED1HSdp4sLVtDB6AtMj7cqYAXpW0YjUWw6/FIasmr813Uh1TCvL6ERhnOGUK VWKwqVuxy7oGif/1RE+RqP9ZsiVJZjSWVqJ9257LvVGpbDVUHYbOjE1Ttky4VuwBfX3ACn+5Pir Bnlqg58sQJMHURubQMVcHsmiTPYrpm/SXvYs21ZuW76QHSJvyVltmPpwrtOPyCW9tjTB0klx1n9 inCuZG5TeNu+EIMaG5ky1/8WulG2DiJciAXp2FaTB/Y5pe3w4ju6hMG+loB5obF65SAAMcI16pb BjMrMspsc6VjLiOnFwMtljaPRBZYHIpd5oCi4M2DM8WCR7UaTtZCh79iR7P6e5AVVDJEvTxOLhQ 7fwFpkxlff7RA55b9WJD/k7b8mz81eGFqZw3qNfi3+Pr1pK/dM75A== X-Received: by 2002:a05:6000:420b:b0:43d:775b:c9bd with SMTP id ffacd0b85a97d-4605668d9f7mr11202382f8f.10.1781107928223; Wed, 10 Jun 2026 09:12:08 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 03/71] target/arm: add TCSO bitmasks to SCTLR Date: Wed, 10 Jun 2026 17:10:54 +0100 Message-ID: <20260610161202.2235298-4-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::433; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108171002154100 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman These are the bitmasks used to control the FEAT_MTE_STORE_ONLY feature. They are now named and setting these fields of SCTLR is ignored if MTE or MTE4 is disabled, as per convention. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-2-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/cpu.h | 2 ++ target/arm/helper.c | 20 ++++++++++++++------ 3 files changed, 21 insertions(+), 6 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 83897365ad..92400df649 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1196,6 +1196,11 @@ static inline bool isar_feature_aa64_mteperm(const A= RMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64PFR2, MTEPERM) >=3D 1; } =20 +static inline bool isar_feature_aa64_mte_store_only(const ARMISARegisters = *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64PFR2, MTESTOREONLY) =3D=3D 1; +} + static inline bool isar_feature_aa64_sme(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64PFR1, SME) !=3D 0; diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 85552b573c..d9c03c9c2e 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1468,6 +1468,8 @@ void pmu_init(ARMCPU *cpu); #define SCTLR_EnAS0 (1ULL << 55) /* FEAT_LS64_ACCDATA */ #define SCTLR_EnALS (1ULL << 56) /* FEAT_LS64 */ #define SCTLR_EPAN (1ULL << 57) /* FEAT_PAN3 */ +#define SCTLR_TCSO0 (1ULL << 58) /* FEAT_MTE_STORE_ONLY */ +#define SCTLR_TCSO (1ULL << 59) /* FEAT_MTE_STORE_ONLY */ #define SCTLR_EnTP2 (1ULL << 60) /* FEAT_SME */ #define SCTLR_NMI (1ULL << 61) /* FEAT_NMI */ #define SCTLR_SPINTMASK (1ULL << 62) /* FEAT_NMI */ diff --git a/target/arm/helper.c b/target/arm/helper.c index 9dd8fdfa41..bb77cbae51 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -3300,12 +3300,20 @@ static void sctlr_write(CPUARMState *env, const ARM= CPRegInfo *ri, =20 /* ??? Lots of these bits are not implemented. */ =20 - if (ri->state =3D=3D ARM_CP_STATE_AA64 && !cpu_isar_feature(aa64_mte, = cpu)) { - if (ri->opc1 =3D=3D 6) { /* SCTLR_EL3 */ - value &=3D ~(SCTLR_ITFSB | SCTLR_TCF | SCTLR_ATA); - } else { - value &=3D ~(SCTLR_ITFSB | SCTLR_TCF0 | SCTLR_TCF | - SCTLR_ATA0 | SCTLR_ATA); + if (ri->state =3D=3D ARM_CP_STATE_AA64) { + if (!cpu_isar_feature(aa64_mte, cpu)) { + if (ri->opc1 =3D=3D 6) { /* SCTLR_EL3 */ + value &=3D ~(SCTLR_ITFSB | SCTLR_TCF | SCTLR_ATA | SCTLR_T= CSO); + } else { + value &=3D ~(SCTLR_ITFSB | SCTLR_TCF0 | SCTLR_TCF | + SCTLR_ATA0 | SCTLR_ATA | SCTLR_TCSO | SCTLR_TCS= O0); + } + } else if (!cpu_isar_feature(aa64_mte_store_only, cpu)) { /* not m= te4 */ + if (ri->opc1 =3D=3D 6) { /* SCTLR_EL3 */ + value &=3D ~SCTLR_TCSO; + } else { + value &=3D ~(SCTLR_TCSO | SCTLR_TCSO0); + } } } =20 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108514; cv=none; d=zohomail.com; s=zohoarc; b=iVkyzvb5aRNwJj+OYJsi/8+12V6MBhifOMnnmjvPSKWNAG+6yfzCgRqRdvrUlu5Uv6cB7u7fZbp6Jk0SuyNCNr4Fxzr98RO862uR1LdGo2lEKkdoffu6migraxIiCe2NVYhx/ZVAeMofPJhTBJ8ilqVfrBEfdett0s/RKcSS0+4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108514; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=uAKA4WBXNqwBA9vfqYn5QuoOuYsnez2o8IVaq06/S40=; b=CMNWpefkVwb2TTSJYSoehVyHasaKo/F/vfrrppMQEZyswOsNuZNmqoLVMfWA3Sqwm+WiczCDMwX3fT78SldhbNQwAWptFRD9AiaM7En9wDH+sesDbmnUik5A6Yg8xYtPVZSKCautiBTminllNHp6nQiNl1CJLuG/G42wiJ9zJwU= 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 1781108514672370.25538616056497; Wed, 10 Jun 2026 09:21:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY8-0001dk-Os; Wed, 10 Jun 2026 12:13: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 1wXLXI-0007Zs-Sa for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:12 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450: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 1wXLXH-0005SI-7s for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:12 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-4600ddc4017so4823349f8f.0 for ; Wed, 10 Jun 2026 09:12:10 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.08 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107930; x=1781712730; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=uAKA4WBXNqwBA9vfqYn5QuoOuYsnez2o8IVaq06/S40=; b=FKJHBkO8cNCzoxNdbeYESlxrwExRLJdplX32jpl3SHZgjGUllaTRO0x90W6T28ouuh 5GClmlKWNMoxfXIjhUUJZ6vldW9Gjg9Bz7cO0QRKudpiAQYWmoaemAloa58TafADfH6p OxcIXsXP+UpwAzBH+jjHxqA4Z8VF9lOUIyjh+zVXiyQAL0jfUJLfx/Cl9JB7Dijsz8r7 oBvYfxn+pNlMWzWi5aFlmqfk0uBd0ZC4RPS6bxDnIufnFoqlaBPNp7WMJAdr4tRQOCnK Lx4I2zy0nZmWyGfudlNEpQQ/6MhmM3Isqq2PDbIPFO8daFZY7SRvgFaclSGN6hnlu9ul qYPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107930; x=1781712730; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=uAKA4WBXNqwBA9vfqYn5QuoOuYsnez2o8IVaq06/S40=; b=Sp0+w2jDSmU3ZrYlPXcEIGzAINEajrk2NtOtpaZvC6OcKbAldBIDPIkutYgVxFx96P zpuYPwkvVWoME3/bewPmkKvPEu3aJi0pBdSnjo5SFIGymbFZf/4a336jg9CUzLpaXOdM 686QIsp/EH7FUKzh78qQpNeYMMBLxLXKtYmfPKzNC8fTGPwHXiNADyx4f40HijbiTbec ISX4DuqWRM9yJdM7vk0Njcz2kPLSbHX4gLlOD8ua8c93SegRLCg2lYbNLCHmC0H3bWsc TiAPa8U6cwJbnIlPoa9uz5klBsKmNngolws4Fz44SfYL43z0GdEzAxMtXX+qu6we6Jhj WvKA== X-Gm-Message-State: AOJu0YzyUyXkACHR6tN8iCQkWwmL6t/swHj2tCXm4s3NSFoALoWEmTt0 a4eWQhjo9sUfDq76ZmqxFrrEdy08m53STgXSukJVIIhWaWCZzLUvIynE7wZKokUK3AN66Y6ogI4 R6+As X-Gm-Gg: Acq92OEHYdbDKM6k4xnxkA+h/R8CuVzm+uHeIsNXSWWEjADitz+v09N/0g3QjI4gqUz autACaoXO9iOu5DYW53Dkv3UgXkjrq4UUePxIl1NpNjuNanhnDfEGweI0NR0h2m0u1AyUT/pTZf V1RXHJxKI+/WrrL2QK5K4NrmiTcA4uUtcnGgcdvEpVmAeecBPvoRC17wcoG+7MWYxILW2oCG4lf +I2em29F7pUV6xXUIIPoefB1mAB/kzNeLEhMymJvWwohSzsJyGT3Ph+K010y9x5gwppIzpkpFg3 1dQTKQ9Wza27/NcDDZF1WxapFAH5mPzMk2gA3ZQRXpnglqlxPNasWNTycsTRQB2LhSGWj31AyAp xKWJkSq36ijuJvgzSuVkPXMUBU5T330hqJRA9YOLR51vFjvm54sLTOZ80hPrOFAirE6Fawnq5vx aAxYTiX3lfB44Tf+3OMB1XvKi/GqRwsqAo5sRA7nHfmJwWafUhEPLVsa98d1OJQ1i8pK0Xuryqa K2sCM63i43/OxWNkSVoGYSz3b2ues8wtvB/ZjqnbMTvV9XvDx6a2A== X-Received: by 2002:a5d:4d8b:0:b0:439:b8b2:fad0 with SMTP id ffacd0b85a97d-460302dcc97mr28830766f8f.5.1781107929500; Wed, 10 Jun 2026 09:12:09 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 04/71] target/arm: mte_check unemitted on STORE_ONLY load Date: Wed, 10 Jun 2026 17:10:55 +0100 Message-ID: <20260610161202.2235298-5-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108516832154100 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman This feature disables generation of the mte check helper on loads when STORE_ONLY tag checking mode is enabled. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-3-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- target/arm/cpu.h | 2 ++ target/arm/tcg/hflags.c | 12 ++++++++++++ target/arm/tcg/translate-a64.c | 8 ++++++-- target/arm/tcg/translate.h | 2 ++ 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index d9c03c9c2e..08f04a57af 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2534,6 +2534,8 @@ FIELD(TBFLAG_A64, GCS_EN, 41, 1) FIELD(TBFLAG_A64, GCS_RVCEN, 42, 1) FIELD(TBFLAG_A64, GCSSTR_EL, 43, 2) FIELD(TBFLAG_A64, FPMR_EL, 45, 2) +FIELD(TBFLAG_A64, MTE_STORE_ONLY, 47, 1) +FIELD(TBFLAG_A64, MTE0_STORE_ONLY, 48, 1) =20 /* * Helpers for using the above. Note that only the A64 accessors use diff --git a/target/arm/tcg/hflags.c b/target/arm/tcg/hflags.c index 794cdf00b2..6be84b68ab 100644 --- a/target/arm/tcg/hflags.c +++ b/target/arm/tcg/hflags.c @@ -461,6 +461,15 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *e= nv, int el, int fp_el, */ DP_TBFLAG_A64(flags, MTE0_ACTIVE, 1); } + /* + * Repeat for MTE_STORE_ONLY + */ + if ((el =3D=3D 0 ? SCTLR_TCSO0 : SCTLR_TCSO) & sctlr) { + DP_TBFLAG_A64(flags, MTE_STORE_ONLY, 1); + if (!EX_TBFLAG_A64(flags, UNPRIV)) { + DP_TBFLAG_A64(flags, MTE0_STORE_ONLY, 1); + } + } } } /* And again for unprivileged accesses, if required. */ @@ -470,6 +479,9 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *en= v, int el, int fp_el, && (sctlr & SCTLR_TCF0) && allocation_tag_access_enabled(env, 0, sctlr)) { DP_TBFLAG_A64(flags, MTE0_ACTIVE, 1); + if (SCTLR_TCSO0 & sctlr) { + DP_TBFLAG_A64(flags, MTE0_STORE_ONLY, 1); + } } /* * For unpriv tag-setting accesses we also need ATA0. Again, in diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 3c091ccc56..5165d964ab 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -302,7 +302,8 @@ static TCGv_i64 gen_mte_check1_mmuidx(DisasContext *s, = TCGv_i64 addr, MemOp memop, bool is_unpriv, int core_idx) { - if (tag_checked && s->mte_active[is_unpriv]) { + if (tag_checked && s->mte_active[is_unpriv] && + (is_write || !s->mte_store_only[is_unpriv])) { TCGv_i64 ret; int desc =3D 0; =20 @@ -334,7 +335,8 @@ TCGv_i64 gen_mte_check1(DisasContext *s, TCGv_i64 addr,= bool is_write, TCGv_i64 gen_mte_checkN(DisasContext *s, TCGv_i64 addr, bool is_write, bool tag_checked, int total_size, MemOp single_mop) { - if (tag_checked && s->mte_active[0]) { + if (tag_checked && s->mte_active[0] && + (is_write || !s->mte_store_only[0])) { TCGv_i64 ret; int desc =3D 0; =20 @@ -10805,6 +10807,8 @@ static void aarch64_tr_init_disas_context(DisasCont= extBase *dcbase, dc->ata[1] =3D EX_TBFLAG_A64(tb_flags, ATA0); dc->mte_active[0] =3D EX_TBFLAG_A64(tb_flags, MTE_ACTIVE); dc->mte_active[1] =3D EX_TBFLAG_A64(tb_flags, MTE0_ACTIVE); + dc->mte_store_only[0] =3D EX_TBFLAG_A64(tb_flags, MTE_STORE_ONLY); + dc->mte_store_only[1] =3D EX_TBFLAG_A64(tb_flags, MTE0_STORE_ONLY); dc->pstate_sm =3D EX_TBFLAG_A64(tb_flags, PSTATE_SM); dc->pstate_za =3D EX_TBFLAG_A64(tb_flags, PSTATE_ZA); dc->sme_trap_nonstreaming =3D EX_TBFLAG_A64(tb_flags, SME_TRAP_NONSTRE= AMING); diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index d4bcc5bad4..551c6ff347 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -140,6 +140,8 @@ typedef struct DisasContext { bool ata[2]; /* True if v8.5-MTE tag checks affect the PE; index with is_unpriv. */ bool mte_active[2]; + /* True if v8.5-MTE tag checks disabled for reads; index with is_unpri= v. */ + bool mte_store_only[2]; /* True with v8.5-BTI and SCTLR_ELx.BT* set. */ bool bt; /* True if any CP15 access is trapped by HSTR_EL2 */ --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108040; cv=none; d=zohomail.com; s=zohoarc; b=J9GgTsvAJp1fxqjYf9CyysBojc+ORvEa3Ek6Fzao9q90JbovNu1tjzwHwkgUS0kPNw6vplriuvILzRvr05PbsrFD0tWm2EESaF6PcaNP6DxKYPHzgLcaGF5kOlXECMqu/a06NPg39o5nHbp6A/OZVTs0Vgvf0YYL0lqZpDl1Ang= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108040; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=LfgEtjEofemnb9oUGlzyFUFatDRuSkVWaWombKIzix0=; b=Dz4V+KZ+xTj/JOUBx9NSpOJfiq8cMs3bagVVF4LRAeB1ofAc17uAkcVFvYSWML12d2AYeeTgAydNTonLJHzUExfN8SpeEBhv1vPzVp0iDdPZFRPLeucOVsHtuyGjMo9yBqbYISV1iBYruFhPm+Bi5AoHm5fQ6A3qaRtsH2XiH+A= 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 1781108040612742.3388490912796; Wed, 10 Jun 2026 09:14:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXM-0007aR-Uw; Wed, 10 Jun 2026 12:12:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXK-0007aA-UV for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:14 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1wXLXJ-0005Si-4n for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:14 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-4600cbb06deso13662f8f.1 for ; Wed, 10 Jun 2026 09:12:12 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107931; x=1781712731; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=LfgEtjEofemnb9oUGlzyFUFatDRuSkVWaWombKIzix0=; b=CWngeCRUipOlycukfzuobU7W7eIt6N81BBjnGjNtbUPDY5FJh2Mz+sMJtuRsK3L8tR pdeUEXqhkOJv4N5aIJBJpOx5cfDAhqrAY/9EMWnsmm/bzkbEzcbTdrByDV6Au/d37Q/a 6D292GleYVQE2KIVAgDyiOtuwN354r6dM9lrw9EE5C1zJkobx56+ZtPbeM/y4C7YpS/x XwpCk5a3Ax/EvEy9nToJTSZJ5yHKk1LnFBpI73ze2HobrYKqy706UHhcv+0Jid/LYcZx VfbwE0x7p1Px37Ngd3pcVFwaBNAUMpIK0kmfRNdOPcyW4u5xzX3RWXb76vDAwAFOJRYb Qtuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107931; x=1781712731; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=LfgEtjEofemnb9oUGlzyFUFatDRuSkVWaWombKIzix0=; b=KOCkt3rMguKKFA/nsDMDsWY1QggO6OWLSpSycD8gdjWc/YPi7iCSv8y1ZgEotWIB7E pghakHYv2ntZBb6nYiGdaMNLmhCEVuVwSyBivDL+ASDxYtNeBVPGPaKnb1SQcdANRbvG fUaF+lSH8cq/6/y/2+7rqUuHTDwDJlT6E89Api7HD1OeUMDhp9/r8N1T4KRlh3unODup 8hDMk8Q9QnMsHhBXXFvv6JVKxHqUOg9FUSmvIEPTTDviY7EucW4Ns0a6QEK9N5rlH0tU qmUJb6PbW7uYPEqTVdX+q2+/FtcdjvtItI18jEkYYXAFEoEsZgRV9aELPYgTL2Vxi4Wr VLog== X-Gm-Message-State: AOJu0Yyu7AIqo0Jxh1pPMvnCLzAUJgpXjh6A8Mou0UJzGp3aY2/Hk5eq izgAmejikCFnMqEZAn5QthvW8XOzQC7ELU9lg4Q8vk8WANIiMtTZvMvWRVVBxN+clsQTRsEeO35 xDoe7 X-Gm-Gg: Acq92OHcf0UnBshcD4ihcru3RhqYWs+Gzm4yUv4j5LMFoVrc13BUKp39HnQOJyhroBm JCA41zA34K9G0KNYt+oQCIuYtJKshkcI4ZRKTs4X+ymg5moTdwa8/bwXX34KdFp3LTHyc3FgXGw wPdhvbKHbEYktrv5trKJqxs265jlS7vJlsLg7wiRhOqF7nY4kTmc3eDMPOQ0ahloZbvCv/XkX4t zGF9RCdUZCtd26coXuVVCfIjMSRp/DFeqHa2WUq685mKRjNgFl4RWeee51BOBJVMtZjRMI946nd U1YYwS0Aykav6huYsKrZJaCQBAjKEl+pJucV/9XdCMsO0pqSRZnuWILZHdL3YxI/fOVzoU69smf dVreMIa5VjT1c2Y05+2woaIFc0nT6wRum1XXQSfyJ6eBn30Lh8gy/H9D5YyMa+SMvKdDDmbV4Lg 1mNEybxjH0adTiL0GD6CAVS1T20Jk1un1b1CBt7q7BBIU7wSQhCAaVYFpbpNTGsVVbftF/BgDgl Ncq+QDhMiwPo/fdsFtOzOTToJbi/1l4Ws+hnQe0rYo= X-Received: by 2002:a05:6000:400d:b0:45e:dd32:92fa with SMTP id ffacd0b85a97d-46032b81e04mr38155673f8f.12.1781107930880; Wed, 10 Jun 2026 09:12:10 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 05/71] linux-user: add MTE_STORE_ONLY to prctl Date: Wed, 10 Jun 2026 17:10:56 +0100 Message-ID: <20260610161202.2235298-6-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108042799154100 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman Linux-user processes can now control whether MTE_STORE_ONLY is enabled using the prctl syscall. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-4-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- linux-user/aarch64/mte_user_helper.c | 11 ++++++++++- linux-user/aarch64/mte_user_helper.h | 14 +++++++++----- linux-user/aarch64/target_prctl.h | 6 +++++- target/arm/gdbstub64.c | 2 +- tests/tcg/aarch64/mte.h | 3 +++ 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/linux-user/aarch64/mte_user_helper.c b/linux-user/aarch64/mte_= user_helper.c index a5b1c8503b..b5c4dafcda 100644 --- a/linux-user/aarch64/mte_user_helper.c +++ b/linux-user/aarch64/mte_user_helper.c @@ -10,7 +10,7 @@ #include "qemu.h" #include "mte_user_helper.h" =20 -void arm_set_mte_tcf0(CPUArchState *env, abi_long value) +void arm_set_tagged_addr_ctrl(CPUArchState *env, abi_long value) { /* * Write PR_MTE_TCF to SCTLR_EL1[TCF0]. @@ -32,4 +32,13 @@ void arm_set_mte_tcf0(CPUArchState *env, abi_long value) tcf =3D 2; } env->cp15.sctlr_el[1] =3D deposit64(env->cp15.sctlr_el[1], 38, 2, tcf); + + /* + * If MTE_STORE_ONLY is enabled, set the corresponding sctlr_el1 bit + */ + if (value & PR_MTE_STORE_ONLY) { + env->cp15.sctlr_el[1] |=3D SCTLR_TCSO0; + } else { + env->cp15.sctlr_el[1] &=3D ~SCTLR_TCSO0; + } } diff --git a/linux-user/aarch64/mte_user_helper.h b/linux-user/aarch64/mte_= user_helper.h index 0c53abda22..8a46f743f4 100644 --- a/linux-user/aarch64/mte_user_helper.h +++ b/linux-user/aarch64/mte_user_helper.h @@ -20,15 +20,19 @@ # define PR_MTE_TAG_SHIFT 3 # define PR_MTE_TAG_MASK (0xffffUL << PR_MTE_TAG_SHIFT) #endif +#ifndef PR_MTE_STORE_ONLY +# define PR_MTE_STORE_ONLY (1UL << 19) +#endif =20 /** - * arm_set_mte_tcf0 - Set TCF0 field in SCTLR_EL1 register + * arm_set_tagged_addr_ctrl - Set TCF0 and TCSO0 fields in SCTLR_EL1 regis= ter * @env: The CPU environment - * @value: The value to be set for the Tag Check Fault in EL0 field. + * @value: The value to be set for the Tag Check Fault and Tag Check Store= Only + * in EL0 field. * - * Only SYNC and ASYNC modes can be selected. If ASYMM mode is given, the = SYNC - * mode is selected instead. So, there is no way to set the ASYMM mode. + * Only SYNC and ASYNC modes can be selected for TCF0. If ASYMM mode is gi= ven, + * the SYNC mode is selected instead. So, there is no way to set the ASYMM= mode. */ -void arm_set_mte_tcf0(CPUArchState *env, abi_long value); +void arm_set_tagged_addr_ctrl(CPUArchState *env, abi_long value); =20 #endif /* AARCH64_MTE_USER_HELPER_H */ diff --git a/linux-user/aarch64/target_prctl.h b/linux-user/aarch64/target_= prctl.h index 621be5727f..d91e75d60d 100644 --- a/linux-user/aarch64/target_prctl.h +++ b/linux-user/aarch64/target_prctl.h @@ -168,6 +168,9 @@ static abi_long do_prctl_set_tagged_addr_ctrl(CPUArchSt= ate *env, abi_long arg2) if (cpu_isar_feature(aa64_mte, cpu)) { valid_mask |=3D PR_MTE_TCF_MASK; valid_mask |=3D PR_MTE_TAG_MASK; + if (cpu_isar_feature(aa64_mte_store_only, cpu)) { + valid_mask |=3D PR_MTE_STORE_ONLY; + } } =20 if (arg2 & ~valid_mask) { @@ -176,7 +179,7 @@ static abi_long do_prctl_set_tagged_addr_ctrl(CPUArchSt= ate *env, abi_long arg2) env->tagged_addr_enable =3D arg2 & PR_TAGGED_ADDR_ENABLE; =20 if (cpu_isar_feature(aa64_mte, cpu)) { - arm_set_mte_tcf0(env, arg2); + arm_set_tagged_addr_ctrl(env, arg2); =20 /* * Write PR_MTE_TAG to GCR_EL1[Exclude]. @@ -185,6 +188,7 @@ static abi_long do_prctl_set_tagged_addr_ctrl(CPUArchSt= ate *env, abi_long arg2) */ env->cp15.gcr_el1 =3D deposit64(env->cp15.gcr_el1, 0, 16, ~arg2 >> PR_MTE_TAG_SHIFT); + arm_rebuild_hflags(env); } return 0; diff --git a/target/arm/gdbstub64.c b/target/arm/gdbstub64.c index a4fa740caf..0c3e5b30bd 100644 --- a/target/arm/gdbstub64.c +++ b/target/arm/gdbstub64.c @@ -684,7 +684,7 @@ int aarch64_gdb_set_tag_ctl_reg(CPUState *cs, uint8_t *= buf, int reg) * expose options regarding the type of MTE fault that can be controll= ed at * runtime. */ - arm_set_mte_tcf0(env, tcf); + arm_set_tagged_addr_ctrl(env, tcf); =20 return 1; #else diff --git a/tests/tcg/aarch64/mte.h b/tests/tcg/aarch64/mte.h index 0805676b11..17b932f3f1 100644 --- a/tests/tcg/aarch64/mte.h +++ b/tests/tcg/aarch64/mte.h @@ -20,6 +20,9 @@ #ifndef PR_TAGGED_ADDR_ENABLE # define PR_TAGGED_ADDR_ENABLE (1UL << 0) #endif +#ifndef PR_MTE_STORE_ONLY +# define PR_MTE_STORE_ONLY (1UL << 19) +#endif #ifndef PR_MTE_TCF_SHIFT # define PR_MTE_TCF_SHIFT 1 # define PR_MTE_TCF_NONE (0UL << PR_MTE_TCF_SHIFT) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781107946; cv=none; d=zohomail.com; s=zohoarc; b=Gf6dZ9blDIE5MX5byrmQB6nmBxXIVDQGqlgBYzD6+e6nn9Z8NuuzGwpCkdEL7YdZBTVhHxOPuckK6rC5b+RZ8cr9QpU4KIzqZosA/YHz4K21EkvIGLuCY4NaWI6ss4P5A/bAHpYL5SYDgQIM9Pg7V0BrVNvM+caqCvtlFJ1J19o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781107946; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=K4S4bsXMTOcs5tjuWo68a0UsKUsVT7dNcjRQ9DsvzTg=; b=Fp8LJhAYdOuW6LMQQFevjzrWoXa2+froXVNvNJACSSKSMncyQE4n5TPmdcyP1h1ZvK2q7KbetGtHd0sn9bSji1gN19LKQIZJBz+QCO64db72+64FQ7UO4DhNVg5gA0w0N06jd55beFvN7+5p01L/892wSO8rTSEOm7xCHLvEL4o= 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 1781107946103872.9937188058487; Wed, 10 Jun 2026 09:12:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXP-0007bU-Ea; Wed, 10 Jun 2026 12:12:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXL-0007aJ-V4 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:16 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1wXLXJ-0005Sy-O5 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:15 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-45eeea039ebso3763064f8f.1 for ; Wed, 10 Jun 2026 09:12:13 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.11 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107932; x=1781712732; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=K4S4bsXMTOcs5tjuWo68a0UsKUsVT7dNcjRQ9DsvzTg=; b=GagITdjGNEudsU5fWYCOakM982sT0+S/pMTgprT2ks9xvvQO4TkyJNI8y6C8e4xVfH JNEzJ8fpIu4vfGqXMpvQuzjRjo1M4/Xxtbz7U3eNeFmHpOA2F8GOmMn1ZvXhucE6HDZ8 mV9TG8eggZmE0l3NufJMFfd/ANjC/hSFcIcogSsiy7u40o1z3SMruwJGJ9NTbFrjoKd2 oDjDixbsFEk0BzkkJoftFKHsNYxHFULtBj82rtziEeBxNFPbLVI49GKbyX+Onib6VRPv QGbCTatrtJ8sjQPXtqUDebdaVCj1dpoju8d/6QyIbw1FhuXNBPgjwIIIjlI5X5dPYY+f Wm4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107932; x=1781712732; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=K4S4bsXMTOcs5tjuWo68a0UsKUsVT7dNcjRQ9DsvzTg=; b=aFp06kHOh7QZ0TUTe6SxzcqL7qMtmFpZ6f0XxmIOneTWQx+27ciqWVbfknAVMELutB Admg0pXlXBBbhFKCWCutzTDJWd7LQKiqomKPtdeb32jHKnqD8dm06uTRuVJEsSO6Pfrl 7wHncOikbwav5nr8gifAGWwbSTW4rY4a+LHQs0A4W7prusnzHJMwidJKOLbHnDuQju4O XOv4pgrTPX9k4C6j6/oEyYsIjn4h+uqMddBSAGytvBrvhVUHsamIafFD409krzTkjypN tl87Mtu+vbQj8I8iB4QRv52Lziob0azKTac5TU2zy47XxdbmR5AP1VV+UK8TUMSCjnpv w9+A== X-Gm-Message-State: AOJu0YzogJX9aJ9f4uRGEozq+v6P3YCHoOLZEoUprzE29DfEvK47FVmv BnXgE31qigu8fG4n8PCi/G3asmF47vk/JMM+AtkUCoitw9CSAgdnvqs3GbpTSgLW4is/N1Wi29d ZMK06 X-Gm-Gg: Acq92OGNuikYALuBgAj4kMiPzwgT7Tdp8NVlQscll9FZcA4smgWL0bjYN85HFhY9Jcy B/wsld7yPXOvOwoy3ONyBtLJwiNlOmJX5+L69qBrz9lxBJDbKib7SFijOZhROM+f45Jt06o9VZ4 DgB0jaTaKpJfsrCAmo/WmgIUH6Buh/thWDdwThydokSzHOnQXbmuntMtAuphxu1imI8cdAbtup2 q3ADLPAuUZkAW7x2F8FXD4+jqTl50eub5oADkLMecOvVkTqvcgZgh4MDsrHo67T2sC+nKqqMBVN o4Xw6SxpbQaN/HCe2vyg8kfWy3AguShEqlI1bmwv8M8stxcVz8B6ipXUw8LlLgnFA4FPoIb7iSU Os3QGUr61zRzt6g2d9nf8oUZqxy6dBb8N4g6QcTqWqkxvrOhswQuTAa4bW+CA21c+9kny39lIsV oGpO5eSzCGK+ffMMSstjNX6KOVN+3vjqmFnf6cvhSE6GmGElx9y6WxjkG9a1RqTQp2tbhRwwkti S8qllBZyRAY/zkzjeeLYi3r9PA21NsDN+maUV/n2ScvUE1APJJ3ng== X-Received: by 2002:a05:600c:3e83:b0:490:af90:f9c2 with SMTP id 5b1f17b1804b1-490c25b224dmr411369415e9.12.1781107932275; Wed, 10 Jun 2026 09:12:12 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 06/71] target/arm: emit tag check when MTX without TBI Date: Wed, 10 Jun 2026 17:10:57 +0100 Message-ID: <20260610161202.2235298-7-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781107949555154100 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman Previously, the TBI bit was used to mediate whether tag checks happened. With MTE4, if the MTX bits are enabled, then tag checking happens even if TBI is disabled. See AccessIsTagChecked. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-5-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/helper.c | 10 ++++++++++ target/arm/internals.h | 13 ++++++++----- target/arm/tcg/helper-a64.c | 7 ++++--- target/arm/tcg/hflags.c | 11 +++++++---- target/arm/tcg/mte_helper.c | 9 ++++++--- target/arm/tcg/sme_helper.c | 4 ++-- target/arm/tcg/sve_helper.c | 6 +++--- 8 files changed, 45 insertions(+), 20 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 92400df649..13453bd8f4 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1201,6 +1201,11 @@ static inline bool isar_feature_aa64_mte_store_only(= const ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64PFR2, MTESTOREONLY) =3D=3D 1; } =20 +static inline bool isar_feature_aa64_mte_mtx(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64PFR1, MTEX) !=3D 0; +} + static inline bool isar_feature_aa64_sme(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64PFR1, SME) !=3D 0; diff --git a/target/arm/helper.c b/target/arm/helper.c index bb77cbae51..b989acd0f5 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9661,6 +9661,16 @@ uint64_t arm_sctlr(CPUARMState *env, int el) return env->cp15.sctlr_el[el]; } =20 +int aa64_va_parameter_mtx(uint64_t tcr, ARMMMUIdx mmu_idx) +{ + if (regime_has_2_ranges(mmu_idx)) { + return extract64(tcr, 60, 2); + } else { + /* Replicate the single MTX bit so we always have 2 bits. */ + return extract64(tcr, 33, 1) * 3; + } +} + int aa64_va_parameter_tbi(uint64_t tcr, ARMMMUIdx mmu_idx) { if (regime_has_2_ranges(mmu_idx)) { diff --git a/target/arm/internals.h b/target/arm/internals.h index f39a992012..3b60e4a469 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1445,6 +1445,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, = uint64_t va, ARMMMUIdx mmu_idx, bool data, bool el1_is_aa32); =20 +int aa64_va_parameter_mtx(uint64_t tcr, ARMMMUIdx mmu_idx); int aa64_va_parameter_tbi(uint64_t tcr, ARMMMUIdx mmu_idx); int aa64_va_parameter_tbid(uint64_t tcr, ARMMMUIdx mmu_idx); int aa64_va_parameter_tcma(uint64_t tcr, ARMMMUIdx mmu_idx); @@ -1586,7 +1587,8 @@ FIELD(MTEDESC, TBI, 4, 2) FIELD(MTEDESC, TCMA, 6, 2) FIELD(MTEDESC, WRITE, 8, 1) FIELD(MTEDESC, ALIGN, 9, 3) -FIELD(MTEDESC, SIZEM1, 12, 32 - 12) /* size - 1 */ +FIELD(MTEDESC, MTX, 12, 2) +FIELD(MTEDESC, SIZEM1, 14, 32 - 14) /* size - 1 */ =20 bool mte_probe(CPUARMState *env, uint32_t desc, uint64_t ptr); uint64_t mte_check(CPUARMState *env, uint32_t desc, uint64_t ptr, uintptr_= t ra); @@ -1656,10 +1658,11 @@ static inline uint64_t address_with_allocation_tag(= uint64_t ptr, int rtag) return deposit64(ptr, 56, 4, rtag); } =20 -/* Return true if tbi bits mean that the access is checked. */ -static inline bool tbi_check(uint32_t desc, int bit55) +/* Return true if tbi or mtx bits mean that the access is tag checked. */ +static inline bool tbi_or_mtx_check(uint32_t desc, int bit55) { - return (desc >> (R_MTEDESC_TBI_SHIFT + bit55)) & 1; + uint32_t mask =3D (1u << R_MTEDESC_TBI_SHIFT) | (1u << R_MTEDESC_MTX_S= HIFT); + return desc & (mask << bit55); } =20 /* Return true if tcma bits mean that the access is unchecked. */ @@ -1693,7 +1696,7 @@ static inline uint64_t useronly_maybe_clean_ptr(uint3= 2_t desc, uint64_t ptr) { #ifdef CONFIG_USER_ONLY int64_t clean_ptr =3D sextract64(ptr, 0, 56); - if (tbi_check(desc, clean_ptr < 0)) { + if (tbi_or_mtx_check(desc, clean_ptr < 0)) { ptr =3D clean_ptr; } #endif diff --git a/target/arm/tcg/helper-a64.c b/target/arm/tcg/helper-a64.c index 093c697e05..a0f9215f1c 100644 --- a/target/arm/tcg/helper-a64.c +++ b/target/arm/tcg/helper-a64.c @@ -1054,7 +1054,7 @@ static int mops_sizereg(uint32_t syndrome) } =20 /* - * Return true if TCMA and TBI bits mean we need to do MTE checks. + * Return true if the TCMA, TBI, and MTX bits mean we need to do MTE check= s. * We only need to do this once per MOPS insn, not for every page. */ static bool mte_checks_needed(uint64_t ptr, uint32_t desc) @@ -1062,12 +1062,13 @@ static bool mte_checks_needed(uint64_t ptr, uint32_= t desc) int bit55 =3D extract64(ptr, 55, 1); =20 /* - * Note that tbi_check() returns true for "access checked" but + * Note that tbi_or_mtx_check() return true for "access checked", but * tcma_check() returns true for "access unchecked". */ - if (!tbi_check(desc, bit55)) { + if (!tbi_or_mtx_check(desc, bit55)) { return false; } + return !tcma_check(desc, bit55, allocation_tag_from_addr(ptr)); } =20 diff --git a/target/arm/tcg/hflags.c b/target/arm/tcg/hflags.c index 6be84b68ab..d9d783489c 100644 --- a/target/arm/tcg/hflags.c +++ b/target/arm/tcg/hflags.c @@ -283,13 +283,16 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *= env, int el, int fp_el, uint64_t tcr =3D regime_tcr(env, mmu_idx); uint64_t hcr =3D arm_hcr_el2_eff(env); uint64_t sctlr; - int tbii, tbid; + int tbii, tbid, mtx; =20 DP_TBFLAG_ANY(flags, AARCH64_STATE, 1); =20 /* Get control bits for tagged addresses. */ tbid =3D aa64_va_parameter_tbi(tcr, mmu_idx); tbii =3D tbid & ~aa64_va_parameter_tbid(tcr, mmu_idx); + mtx =3D cpu_isar_feature(aa64_mte_mtx, env_archcpu(env)) ? + aa64_va_parameter_mtx(tcr, mmu_idx) : + 0; =20 DP_TBFLAG_A64(flags, TBII, tbii); DP_TBFLAG_A64(flags, TBID, tbid); @@ -441,14 +444,14 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *= env, int el, int fp_el, /* * Set MTE_ACTIVE if any access may be Checked, and leave clear * if all accesses must be Unchecked: - * 1) If no TBI, then there are no tags in the address to check, + * 1) If TBI and MTX are both unset, accesses are Unchecked. * 2) If Tag Check Override, then all accesses are Unchecked, * 3) If Tag Check Fail =3D=3D 0, then Checked access have no effe= ct, * 4) If no Allocation Tag Access, then all accesses are Unchecked. */ if (allocation_tag_access_enabled(env, el, sctlr)) { DP_TBFLAG_A64(flags, ATA, 1); - if (tbid + if ((tbid || mtx) && !(env->pstate & PSTATE_TCO) && (sctlr & (el =3D=3D 0 ? SCTLR_TCF0 : SCTLR_TCF))) { DP_TBFLAG_A64(flags, MTE_ACTIVE, 1); @@ -474,7 +477,7 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *en= v, int el, int fp_el, } /* And again for unprivileged accesses, if required. */ if (EX_TBFLAG_A64(flags, UNPRIV) - && tbid + && (tbid || mtx) && !(env->pstate & PSTATE_TCO) && (sctlr & SCTLR_TCF0) && allocation_tag_access_enabled(env, 0, sctlr)) { diff --git a/target/arm/tcg/mte_helper.c b/target/arm/tcg/mte_helper.c index bf35dc10ce..61cdf92c54 100644 --- a/target/arm/tcg/mte_helper.c +++ b/target/arm/tcg/mte_helper.c @@ -823,8 +823,11 @@ static int mte_probe_int(CPUARMState *env, uint32_t de= sc, uint64_t ptr, bit55 =3D extract64(ptr, 55, 1); *fault =3D ptr; =20 - /* If TBI is disabled, the access is unchecked, and ptr is not dirty. = */ - if (unlikely(!tbi_check(desc, bit55))) { + /* + * If TBI and MTX are disabled, the access is unchecked, and ptr is not + * dirty. + */ + if (unlikely(!tbi_or_mtx_check(desc, bit55))) { return -1; } =20 @@ -965,7 +968,7 @@ uint64_t HELPER(mte_check_zva)(CPUARMState *env, uint32= _t desc, uint64_t ptr) bit55 =3D extract64(ptr, 55, 1); =20 /* If TBI is disabled, the access is unchecked, and ptr is not dirty. = */ - if (unlikely(!tbi_check(desc, bit55))) { + if (unlikely(!tbi_or_mtx_check(desc, bit55))) { return ptr; } =20 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 0055e97a2b..2bfb12c086 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -674,7 +674,7 @@ void sme_ld1_mte(CPUARMState *env, void *za, uint64_t *= vg, int bit55 =3D extract64(addr, 55, 1); =20 /* Perform gross MTE suppression early. */ - if (!tbi_check(mtedesc, bit55) || + if (!tbi_or_mtx_check(mtedesc, bit55) || tcma_check(mtedesc, bit55, allocation_tag_from_addr(addr))) { mtedesc =3D 0; } @@ -856,7 +856,7 @@ void sme_st1_mte(CPUARMState *env, void *za, uint64_t *= vg, target_ulong addr, int bit55 =3D extract64(addr, 55, 1); =20 /* Perform gross MTE suppression early. */ - if (!tbi_check(mtedesc, bit55) || + if (!tbi_or_mtx_check(mtedesc, bit55) || tcma_check(mtedesc, bit55, allocation_tag_from_addr(addr))) { mtedesc =3D 0; } diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index a002006ea5..d05d8addfd 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -6388,7 +6388,7 @@ void sve_ldN_r_mte(CPUARMState *env, uint64_t *vg, ta= rget_ulong addr, int bit55 =3D extract64(addr, 55, 1); =20 /* Perform gross MTE suppression early. */ - if (!tbi_check(mtedesc, bit55) || + if (!tbi_or_mtx_check(mtedesc, bit55) || tcma_check(mtedesc, bit55, allocation_tag_from_addr(addr))) { mtedesc =3D 0; } @@ -6750,7 +6750,7 @@ void sve_ldnfff1_r_mte(CPUARMState *env, void *vg, ta= rget_ulong addr, int bit55 =3D extract64(addr, 55, 1); =20 /* Perform gross MTE suppression early. */ - if (!tbi_check(mtedesc, bit55) || + if (!tbi_or_mtx_check(mtedesc, bit55) || tcma_check(mtedesc, bit55, allocation_tag_from_addr(addr))) { mtedesc =3D 0; } @@ -7005,7 +7005,7 @@ void sve_stN_r_mte(CPUARMState *env, uint64_t *vg, ta= rget_ulong addr, int bit55 =3D extract64(addr, 55, 1); =20 /* Perform gross MTE suppression early. */ - if (!tbi_check(mtedesc, bit55) || + if (!tbi_or_mtx_check(mtedesc, bit55) || tcma_check(mtedesc, bit55, allocation_tag_from_addr(addr))) { mtedesc =3D 0; } --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108113; cv=none; d=zohomail.com; s=zohoarc; b=JyLMraboIsGksSUXpEopexazzejGR2Q7mOvK+XguqZ/C6CVgRfh6OZZ3a5de+4bxDjBIDhdeB9PZUFw1rBrPOOuFkKozsNEy/Vu7L/8G7D7vvRVvwOaGTGBEfeJVHNRr2sEoRyIeFVZ3WPYFPIFIGa+RABnyI9dOo+psYH8TBF8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108113; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=El56dZdw91xVdKpOmDbdLupw4D1PeRbVSNshzuKZI5Y=; b=bRytWKIyl1DIWLiHzpLp3dLLO8EvSuN6WtA0nzbvciv7LBnAPwfN0Rw3v7AZBniIc2PYbOwI+YgPCr9hinM3iVLiUa2EuhVclZZl9naaYOOvis3hjiWp4ScurEea0/2UzIqtHz5nEEna/fWBzd0GBm7ikxNqest2v31Z1AytfXY= 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 1781108113584805.5249759017536; Wed, 10 Jun 2026 09:15:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXv-0008ML-Mh; Wed, 10 Jun 2026 12:12:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXO-0007aY-1v for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:18 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXL-0005TB-1J for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:17 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-490b8a97b11so77596295e9.0 for ; Wed, 10 Jun 2026 09:12:14 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107933; x=1781712733; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=El56dZdw91xVdKpOmDbdLupw4D1PeRbVSNshzuKZI5Y=; b=J1kh7KtA9AEd4YG7U3JZZJIlAM8G6St6h5A2wjsipjgrQyzPZBHIF4OjykZcaDeZCT e8ldAu1qtrTHzpDt+b4BRZTFtIx7goPPr58j6V423XSgxduqCiykZhykZz/7LWLij0Vr 84YIpONeTxs5XwzmAOTUjTIHm940sv8faaOjuM3x/Iaqzg5UIz1OGyi/REvJzJX1dp5o VHEFsqTXk0r2uh09ptV3mC/XbCnIlk2a/Y1BZ5Xej8+m6g/2NIzYAlra9g8YdO4fA8on oFIaLQc+YvzW3QFEqK9qorE1vF2rld0Aa5IZwX+WnB+CD4C+2blY/o/CXJKyUAJgs5Cr Ikhw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107933; x=1781712733; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=El56dZdw91xVdKpOmDbdLupw4D1PeRbVSNshzuKZI5Y=; b=QOiCf2uRsg8c+R414D45ugkIyOv9VyVZ5xpGptqsvSjM3Ja0aB6iCskoudaQfgbFed u7VYbe/RpX+FsaciASawYRXLo0LjMzNGBEOE1huPeQugVBsiJGivCj3vtOAT9Ljv9ZrA VGw43X9UU3Em1qDwlQ40uFWuTY0wfqFlL2eW2vy9coDpC1GLm7qH6JbXgbctWAZsxDY6 AJvcfSLR0T3zHm4uY/f3lsPfy+bJdG9KkA+bWhfweXdj4NLVx/zM5zCpCL9WtluB/EyF girBzu4eTmQ7/5cPLerEjzWhupNp/w/BzXWqX0i5+8eUipAbSVGyU4rOGnnJYVYNRxsM 3vug== X-Gm-Message-State: AOJu0YzXla4g0TipTCF4pNBiAD+7hGR+BYkPx9xjz2MBUPTPLovyQqc1 /+v0lKLKRByhdeySZv90WGWHfl/qrAw/vflT7hMvt+rsFONZmDLruo18Vmz+KcRzX6yWN4DhNhH MyYvZ X-Gm-Gg: Acq92OF7scvC9/p1mSPoOw/qP919ep2Vy4YLVQHt44xc1yynzpix8OnRMtHF+YdKohC KB5uO0TAi0irOW6z3jSHWhY7b8n0aIiREUGmbBQD3aAIqQbeFW4xsIYLR3tDZNnGLruJl78mSjO Y+Msf+fkOjWPkR+S7vcmgubmf2mJEgiCsVWnVMRluqGgBu+gDzoItDBPvEX2oyMrbNC5gpSokZ4 pFFpXycWzNVCsJxzP8uGWpVERJNOdGmIcG+PHdohYGBVd9CYFuD46jMnarg1iPoGul0SQR06lul FpS0RIgCb3sEjrkxCsXHbu4/71Gepj5mjJ5+vyvlapzyqiNtryWZPOShrZB5QNyyNapayajkCgR KQQU3dA9bYLFDxP+RuDSo0LPpSEzbflGVDLS4eKhmTOj5MNZVRSPmSJ3KSwAszhd7E2+KU0HrGX Cna7FkXqL7HvLv4iRhMhtQN9v2gHka+MX0kQeJmeiZR3flaVw0wb3dVgkjidGZFbTncpXmLNLcp AIXa3EwJU5EklH8/Am3bxZ2pfpRKAFB+dX+ANhVYFE= X-Received: by 2002:a05:600c:45c4:b0:490:4ee0:82ff with SMTP id 5b1f17b1804b1-490c25fcfafmr438106795e9.27.1781107933305; Wed, 10 Jun 2026 09:12:13 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 07/71] target/arm: add MTX to MTEDESC and DisasContext Date: Wed, 10 Jun 2026 17:10:58 +0100 Message-ID: <20260610161202.2235298-8-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.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: 1781108116231154100 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman Add fields for MTX to DisasContext and MTEDESC. With MTE4, the fields will be needed in future patches that alter tag check, tag load and tag store behavior. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-6-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- target/arm/cpu.h | 1 + target/arm/tcg/hflags.c | 2 ++ target/arm/tcg/translate-a64.c | 7 +++++++ target/arm/tcg/translate.h | 1 + 4 files changed, 11 insertions(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 08f04a57af..dd939ab22b 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2536,6 +2536,7 @@ FIELD(TBFLAG_A64, GCSSTR_EL, 43, 2) FIELD(TBFLAG_A64, FPMR_EL, 45, 2) FIELD(TBFLAG_A64, MTE_STORE_ONLY, 47, 1) FIELD(TBFLAG_A64, MTE0_STORE_ONLY, 48, 1) +FIELD(TBFLAG_A64, MTX, 49, 2) =20 /* * Helpers for using the above. Note that only the A64 accessors use diff --git a/target/arm/tcg/hflags.c b/target/arm/tcg/hflags.c index d9d783489c..0716ca98fd 100644 --- a/target/arm/tcg/hflags.c +++ b/target/arm/tcg/hflags.c @@ -500,6 +500,8 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *en= v, int el, int fp_el, } /* Cache TCMA as well as TBI. */ DP_TBFLAG_A64(flags, TCMA, aa64_va_parameter_tcma(tcr, mmu_idx)); + /* Cache MTX. */ + DP_TBFLAG_A64(flags, MTX, mtx); } =20 if (cpu_isar_feature(aa64_gcs, env_archcpu(env))) { diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 5165d964ab..b5c9c9c166 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -312,6 +312,7 @@ static TCGv_i64 gen_mte_check1_mmuidx(DisasContext *s, = TCGv_i64 addr, desc =3D FIELD_DP32(desc, MTEDESC, TCMA, s->tcma); desc =3D FIELD_DP32(desc, MTEDESC, WRITE, is_write); desc =3D FIELD_DP32(desc, MTEDESC, ALIGN, memop_alignment_bits(mem= op)); + desc =3D FIELD_DP32(desc, MTEDESC, MTX, s->mtx); desc =3D FIELD_DP32(desc, MTEDESC, SIZEM1, memop_size(memop) - 1); =20 ret =3D tcg_temp_new_i64(); @@ -345,6 +346,7 @@ TCGv_i64 gen_mte_checkN(DisasContext *s, TCGv_i64 addr,= bool is_write, desc =3D FIELD_DP32(desc, MTEDESC, TCMA, s->tcma); desc =3D FIELD_DP32(desc, MTEDESC, WRITE, is_write); desc =3D FIELD_DP32(desc, MTEDESC, ALIGN, memop_alignment_bits(sin= gle_mop)); + desc =3D FIELD_DP32(desc, MTEDESC, MTX, s->mtx); desc =3D FIELD_DP32(desc, MTEDESC, SIZEM1, total_size - 1); =20 ret =3D tcg_temp_new_i64(); @@ -3093,6 +3095,7 @@ static void handle_sys(DisasContext *s, bool isread, desc =3D FIELD_DP32(desc, MTEDESC, MIDX, get_mem_index(s)); desc =3D FIELD_DP32(desc, MTEDESC, TBI, s->tbid); desc =3D FIELD_DP32(desc, MTEDESC, TCMA, s->tcma); + desc =3D FIELD_DP32(desc, MTEDESC, MTX, s->mtx); =20 tcg_rt =3D tcg_temp_new_i64(); gen_helper_mte_check_zva(tcg_rt, tcg_env, @@ -4960,6 +4963,7 @@ static bool do_SET(DisasContext *s, arg_set *a, bool = is_epilogue, desc =3D FIELD_DP32(desc, MTEDESC, TBI, s->tbid); desc =3D FIELD_DP32(desc, MTEDESC, TCMA, s->tcma); desc =3D FIELD_DP32(desc, MTEDESC, WRITE, true); + desc =3D FIELD_DP32(desc, MTEDESC, MTX, s->mtx); /* SIZEM1 and ALIGN we leave 0 (byte write) */ } /* The helper function always needs the memidx even with MTE disabled = */ @@ -5014,11 +5018,13 @@ static bool do_CPY(DisasContext *s, arg_cpy *a, boo= l is_epilogue, CpyFn fn) if (s->mte_active[runpriv]) { rdesc =3D FIELD_DP32(rdesc, MTEDESC, TBI, s->tbid); rdesc =3D FIELD_DP32(rdesc, MTEDESC, TCMA, s->tcma); + rdesc =3D FIELD_DP32(rdesc, MTEDESC, MTX, s->mtx); } if (s->mte_active[wunpriv]) { wdesc =3D FIELD_DP32(wdesc, MTEDESC, TBI, s->tbid); wdesc =3D FIELD_DP32(wdesc, MTEDESC, TCMA, s->tcma); wdesc =3D FIELD_DP32(wdesc, MTEDESC, WRITE, true); + wdesc =3D FIELD_DP32(wdesc, MTEDESC, MTX, s->mtx); } /* The helper function needs these parts of the descriptor regardless = */ rdesc =3D FIELD_DP32(rdesc, MTEDESC, MIDX, rmemidx); @@ -10809,6 +10815,7 @@ static void aarch64_tr_init_disas_context(DisasCont= extBase *dcbase, dc->mte_active[1] =3D EX_TBFLAG_A64(tb_flags, MTE0_ACTIVE); dc->mte_store_only[0] =3D EX_TBFLAG_A64(tb_flags, MTE_STORE_ONLY); dc->mte_store_only[1] =3D EX_TBFLAG_A64(tb_flags, MTE0_STORE_ONLY); + dc->mtx =3D EX_TBFLAG_A64(tb_flags, MTX); dc->pstate_sm =3D EX_TBFLAG_A64(tb_flags, PSTATE_SM); dc->pstate_za =3D EX_TBFLAG_A64(tb_flags, PSTATE_ZA); dc->sme_trap_nonstreaming =3D EX_TBFLAG_A64(tb_flags, SME_TRAP_NONSTRE= AMING); diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index 551c6ff347..37a7268b32 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -82,6 +82,7 @@ typedef struct DisasContext { uint8_t tbii; /* TBI1|TBI0 for insns */ uint8_t tbid; /* TBI1|TBI0 for data */ uint8_t tcma; /* TCMA1|TCMA0 for MTE */ + uint8_t mtx; /* MTX1|MTX0 for MTE */ bool ns; /* Use non-secure CPREG bank on access */ int fp_excp_el; /* FP exception EL or 0 if enabled */ int sve_excp_el; /* SVE exception EL or 0 if enabled */ --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781107960; cv=none; d=zohomail.com; s=zohoarc; b=CdsxXuDtcxk1fpyOX+YPJDlra7o+6KezH/geOkXuDxQ595tFfmM4qyH7vkFuvP8dFrL1exKHw8dzvqf0auDni2YBPU7Xhgj9wtTT2YyhTnw+IOC4cC2PaoE5F7SidhbO0bSsDl6ZmiHadActeJaZM2VmVsXzj5oB0voVgNFezJI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781107960; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=T91pk0gmi1pwKkfRCIUIQYRIgRBTfic+uUkQXwk6wK0=; b=aMNgX3g79x5wKkeehgOw4DsQ+d6S2Hab/00U2OECEALDQY7zH16ueDvCBaAnwgjaHasZyTWxwll1I3rS6SeFQNf0xFG77RiSc/uKxTIhfk4hNP+G5j8gH9ytvASDRvwr4trXrld/wPd4LcIjyoXjzFtRwVzGIXcJn9zYILc7Tvs= 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 1781107960121830.9783385522462; Wed, 10 Jun 2026 09:12:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXR-0007f6-Lr; Wed, 10 Jun 2026 12:12:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXO-0007aZ-20 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:18 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450: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 1wXLXM-0005TO-F9 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:17 -0400 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-45eec22fab7so3608120f8f.3 for ; Wed, 10 Jun 2026 09:12:16 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107935; x=1781712735; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=T91pk0gmi1pwKkfRCIUIQYRIgRBTfic+uUkQXwk6wK0=; b=VacK5dkENr2Ffb6VDnweToAMd3uyfgbrQ+wF0y4dLXVVY5lx5g/IvfXG29Gr0HE4Uw NUX0oQMZ8HEuPdUXV495bPN/JgvGEO+1umDJxtSwPIxIW9WeFwe1aXav/mx2De16zbwO +E/3rAtrek7PY1DqP/Cu6l5Sh3fUHQlqihsgVUeBf4XUVHu1NguYLASIVxItiq3Qqp0S Eoq489GcSZj3NDNwvteNVJ5GnIUSW7DayOX55E374heyxSF78E/7TDsTbGZIiVAuKBaq 9eY/dX5f+945St2n15M+bI42GeBp+cLOnRaUbuFsZaDfD8IJBaP3uiIdSZVEAQWoZaT1 qHdA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107935; x=1781712735; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=T91pk0gmi1pwKkfRCIUIQYRIgRBTfic+uUkQXwk6wK0=; b=aD/AFLklteZ4Q5O8K0JV4NmsvEbJWQLjVaIeOi7tu2FwsNoYgLvOCQto2Tx46pa250 BzSnxod35jLNuq962Nv389tnVxtUiwHSNNP0fHXrUvdklZrpAimcdpBfgOqI2P02Hh6J yg4zvTPrSLQTP4hHah4txqW31OtUzju6q56k5dAw9o2HlohzR+4c1YEPeb031v3XscOr dOXiMRxQFJHAYiQWXu8DeQhz/uuLoZ0Sl10cLgA8jzEEtNbaNoTqYsHZsen8xcPOBFQE VGrNdJWkLOoY/7bW8+ToQKnNS4cWKXHh77HuKJH5qhlKszXOnVh9NXV+jBgqFOSParQL 6u5Q== X-Gm-Message-State: AOJu0YxvGHvXOejw6uY/us0wZcpVPp1ZiEdHIBBFcP9nAT/qM3tzKcej fjhcKWHZZ4AUYCw15k/tYWFYUewffBzwYqAoufPASu+KDhsE177ZYLg8rCGiGldolzX8mk9L3S7 4623I X-Gm-Gg: Acq92OFJDagkAA5ST4KwWs+GgHPCkNewn16yvYBbupFgKNS+qnEv5H5atXtDvSnx618 TCA3a/L5jBkfhIdzPhB3oFQnDowYuR5slyYuP0eS/LP7DMRG+1NPnYgXom0Y+CZJzWYPI3a8rQC lOO5AZVuKvbu5b12VRdmYZ5sQf3w9EbFL+Qqc6fDHZ7fb6bgf+rPZYnaSC5+CK7loaabNWrZDsb 34jqon0GyFhN5iTbqo0fB45ZjnWmgvnWVscHkzT18sd6CPESh+FMaEqlN8U8H+W/vlftwVhAO2X sS4el4sLNgUvE31zatlcXzTAyZrByAPMmWyFqjjQluzBr001SRtg+alktmIV3TfIRitqxPSzCC5 h/qpguJbdj9H57IBUbdGT6gaCllOKxpV8/52sQHaqf3rSlpKrQN137UaY5gYhauCTaITGamWfIe EoFfi/AX/OYQJ4guQmzRfz3ygQxCiWCw3kv1ZmrpoyQQ6srckiNZeqw6P6Y9UIeif4oZR5Ifztm 4p7H1bRZ84lkA7XR09QzZiCTXIzGLDVm6xkRriyaiw= X-Received: by 2002:a5d:5e09:0:b0:460:194d:8df2 with SMTP id ffacd0b85a97d-460304eff44mr44357893f8f.3.1781107934745; Wed, 10 Jun 2026 09:12:14 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 08/71] target/arm: add canonical tag check helper Date: Wed, 10 Jun 2026 17:10:59 +0100 Message-ID: <20260610161202.2235298-9-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42e; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781107962494158500 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman Add a helper that checks whether mtx is active from MTEDESC. Refactored an existing function to use it. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-7-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- target/arm/internals.h | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 3b60e4a469..b91cde1795 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1665,6 +1665,12 @@ static inline bool tbi_or_mtx_check(uint32_t desc, i= nt bit55) return desc & (mask << bit55); } =20 +/* Return whether or not the second nibble of a VA matches bit 55. */ +static inline bool tag_is_canonical(int ptr_tag, int bit55) +{ + return ((ptr_tag + bit55) & 0xf) =3D=3D 0; +} + /* Return true if tcma bits mean that the access is unchecked. */ static inline bool tcma_check(uint32_t desc, int bit55, int ptr_tag) { @@ -1672,7 +1678,7 @@ static inline bool tcma_check(uint32_t desc, int bit5= 5, int ptr_tag) * We had extracted bit55 and ptr_tag for other reasons, so fold * (ptr<59:55> =3D=3D 00000 || ptr<59:55> =3D=3D 11111) into a single = test. */ - bool match =3D ((ptr_tag + bit55) & 0xf) =3D=3D 0; + bool match =3D tag_is_canonical(ptr_tag, bit55); bool tcma =3D (desc >> (R_MTEDESC_TCMA_SHIFT + bit55)) & 1; return tcma && match; } --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108284; cv=none; d=zohomail.com; s=zohoarc; b=f3KEOP47GS30b0kKIOg+izrjoUga6mIMqzEqmFZdH9ZmKg96qTnRehhG3oxl0TVPAZ4aLLsjEkaNL+WcJVvK+Z4rD89y7FVNnDSI8L2tEB+FGuyskzl7XMbMWbN7pt4Yq9FkQn6h2D9CQsSrLRkcv9mu98tByYjE1pr326IQgw8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108284; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=deRXAksXVwlWKJu5tBvZTAm1qNWC42H6x4YL1/I4Jis=; b=SwUyUNRtv/ZABW6zSDcQ4GxtOw+PIU6Coe8OK7St4hMnGyxTUCwXbJAhQHRgUFqJewcMF8ilLNl/M0tLgwelNqFAuz9bcfVm9I2Hh4UlSBI2kPIITqQ2sEiv/1Pes3YSkhEWx/xg18Qy/ivJlEdwkmVwVfGI+AwrGOpVWro/Ya0= 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 1781108284648136.36575560562437; Wed, 10 Jun 2026 09:18:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXZ-0007jg-Pf; Wed, 10 Jun 2026 12:12:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXP-0007bk-Jk for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:19 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXN-0005Tm-Ua for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:19 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-490b8a97b11so77596765e9.0 for ; Wed, 10 Jun 2026 09:12:17 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107936; x=1781712736; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=deRXAksXVwlWKJu5tBvZTAm1qNWC42H6x4YL1/I4Jis=; b=OhSN8fqIBqI0d2qe/rn9jZHo+1oOFQPYyb0dA67/12GcKKgRn63J+L81nsoZcE/N5b ZzepFQ0VcfHeQZ4MyymYwL7Sa0Er63KuBYW0BVPbGbw1nGqqe/HtQa9kKzef8gW9+aor jEahrhRG17aVAYRJ+Pgok2/XyrWin1GJQZUj3RSIrLfi2TVD9JEhqMoBuo79yknIMXdz 2n0zTPEzNLg1Spq1YG660QVujdTgCIqVg840YIKMCU+1TYcKbjp6RfEzjShXhHadUSCj 1OUfZa/KTSmY1gOdlP1ihDgWLHsJUnBGRpnn2uqxM6gSsg+3wvjeT16LHCoDJMLY8vrp iQ/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107936; x=1781712736; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=deRXAksXVwlWKJu5tBvZTAm1qNWC42H6x4YL1/I4Jis=; b=kawigH2Kzi/VS71l1o0trghWhJvOhjCPK4Qtz8ONH5g9Nyrf4arDpbscPGMagF80W1 YbwrG+UbmtYkdZHEFvJ2362ItO95LINBUNNaRNFGb2Gp7kxZJf1Q7TAwKS/w2z4tCCk0 FrqTZLQvY28soto3vjwQtfYsBi17mfg1RCeIOUdgH9mHEh/ZBacwXkjsVZdqWVKAjZ32 rwxd3bdnvpch3EDVbp1A8nczsEMwZ2OxcpLkiN57T0zFSoCttwtOfwqPXEPVlM+U0l8u 5OtRay6smxciId58TJEd5KAJETkejYcGCM14m+UAhNC89eisKVWwZ13VUEQSkb5knCqi 8m0g== X-Gm-Message-State: AOJu0YxjbGK6SLIEFUXdRUMbUu8r1Ax52NcUzbyctlk9Oxw8nriz27YX w4d8VODGGfKVwYoyFOQTeIbicNcYWrx2NxiTC+NzhM6HsnoEE9khcgnFY/w4kIrarB1qlDA1QeI +SIDY X-Gm-Gg: Acq92OEWGZmKKwRo7xyepD3j+2ZrwMgjPfx2MO6V9rID+daTWNIjah3ZQbFexLBNuzV 87pHFJzb5YU1I5Yq2RtPlFAJ9NidmWh2Rar5QWQ30dewdNMGSkjNyXrVtQwV7j1AnZvVtc4SJJ4 oXOOkuUgFlSyw06yzmJo6kbp3QV22yTdKCzf564XdQjHuwLrdkxDB1R7nW3AIOOF6yZZBgbE/D7 sS1csvnzzJDwjmD5zPuP2QjuFk+URKuqXnocu7huaH5XU7VAJwmJ0JiyoPNVWOofEy2pnSf1jSc LD+9LEFX2cAD/YvTv/AIjk7Jckz54VGEdKRqeLHWZfAqd0SIvx7Lyfmq7dRo/z1MUkpwUVe1rFQ DGrbI0wwoRzOK5H8wqE5AhARUFlsi87Pf3mJHkvusRv5INZrVn6vKYbDC1c+bPvZS8fz4oz6Um6 jv4I3d71Kj4se62srrTpGGJL8bBHWCFodCHK4JpKs9nnJ72FBEp/EhqVMkUYmlk8FbNEjANFenE Z4Y8cjT7dGxUJXtbYXuN251j6owTz+f8HqXC4/I6iJaGX0LCP9c7A== X-Received: by 2002:a05:600c:3510:b0:490:ab8b:1bb3 with SMTP id 5b1f17b1804b1-490c25dd857mr408612435e9.18.1781107936249; Wed, 10 Jun 2026 09:12:16 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 09/71] target/arm: add canonical MTE check logic Date: Wed, 10 Jun 2026 17:11:00 +0100 Message-ID: <20260610161202.2235298-10-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.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: 1781108287327154100 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman With MTX active, address tag bits are checked for canonicity if the corresponding memory regions are not allocation tagged. See AArch64_CheckTag. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-8-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- target/arm/internals.h | 6 ++++++ target/arm/tcg/mte_helper.c | 30 ++++++++++++++++++++++++++---- 2 files changed, 32 insertions(+), 4 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index b91cde1795..f8cbefec7a 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1658,6 +1658,12 @@ static inline uint64_t address_with_allocation_tag(u= int64_t ptr, int rtag) return deposit64(ptr, 56, 4, rtag); } =20 +/* Return true if mtx bits mean that the access is canonically checked. */ +static inline bool mtx_check(uint32_t desc, int bit55) +{ + return (desc >> (R_MTEDESC_MTX_SHIFT + bit55)) & 1; +} + /* Return true if tbi or mtx bits mean that the access is tag checked. */ static inline bool tbi_or_mtx_check(uint32_t desc, int bit55) { diff --git a/target/arm/tcg/mte_helper.c b/target/arm/tcg/mte_helper.c index 61cdf92c54..d35e3ef04d 100644 --- a/target/arm/tcg/mte_helper.c +++ b/target/arm/tcg/mte_helper.c @@ -858,6 +858,14 @@ static int mte_probe_int(CPUARMState *env, uint32_t de= sc, uint64_t ptr, mem1 =3D allocation_tag_mem(env, mmu_idx, ptr, type, sizem1 + 1, MMU_DATA_LOAD, ra); if (!mem1) { + /* + * If mtx is enabled, then the access is MemTag_CanonicallyTag= ged, + * otherwise it is Untagged. See AArch64.S1DecodeMemAttrs and + * AArch64.S1DisabledOutput. + */ + if (mtx_check(desc, bit55)) { + return tag_is_canonical(ptr_tag, bit55); + } return 1; } /* Perform all of the comparisons. */ @@ -873,18 +881,24 @@ static int mte_probe_int(CPUARMState *env, uint32_t d= esc, uint64_t ptr, =20 /* * Perform all of the comparisons. - * Note the possible but unlikely case of the operation spanning - * two pages that do not both have tagging enabled. + * Note the possible but unlikely case of the operation spanning t= wo + * pages that do not both have allocation tagging enabled. This can + * happen with or without mtx (canonical tagging) enabled. */ n =3D c =3D (next_page - tag_first) / TAG_GRANULE; if (mem1) { n =3D checkN(mem1, ptr & TAG_GRANULE, ptr_tag, c); + } else if (mtx_check(desc, bit55) && + !tag_is_canonical(ptr_tag, bit55)) { + return 0; } if (n =3D=3D c) { - if (!mem2) { + if (mem2) { + n +=3D checkN(mem2, 0, ptr_tag, tag_count - c); + } else if (!mtx_check(desc, bit55) || + tag_is_canonical(ptr_tag, bit55)) { return 1; } - n +=3D checkN(mem2, 0, ptr_tag, tag_count - c); } } =20 @@ -999,6 +1013,14 @@ uint64_t HELPER(mte_check_zva)(CPUARMState *env, uint= 32_t desc, uint64_t ptr) mem =3D allocation_tag_mem(env, mmu_idx, align_ptr, MMU_DATA_STORE, dcz_bytes, MMU_DATA_LOAD, ra); if (!mem) { + /* + * If mtx is enabled, then the access is MemTag_CanonicallyTagged, + * otherwise it is Untagged. See AArch64.S1DecodeMemAttrs and + * AArch64.S1DisabledOutput. + */ + if (mtx_check(desc, bit55) && !tag_is_canonical(ptr_tag, bit55)) { + mte_check_fail(env, desc, ptr, ra); + } goto done; } =20 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108475; cv=none; d=zohomail.com; s=zohoarc; b=hv0dsnAdnE6MAmsEPRGCJ9BYOuDV9Nwfy7IwfDxM4LTYvqiE0K6CQSfcDkUvweW7hRRP1TyR5Tasxq7pFWNBEw9OL1n5BX6ZAg29L9MJFVLIyoNUZ8s3bo4R0Akyqzp07mZzL/qSRtB43ipfhsLY3s7DlB7tqWQqMSyg1ldEWuw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108475; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=K+F6PgnA5j+iTjiRAUodyt/0uyyZ76nvV2j5nGbqtDc=; b=C1C5pCX3riEL0c6r6DjxMmnr4SE21Tp3bkQKKbhg6MtO9mRUQlaT2kwrCnluDxdjraaVAVxxSC+NiBxJsopqe9Gpbe81SMPxxcY2DE94sdOqzD3GnEyaS4ocmHhktBoQaHkV9HpL5fdUoRGUP7ZmIXZb8DOTyoata1xia95u/F4= 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 1781108475055445.6469263013407; Wed, 10 Jun 2026 09:21:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXv-0008LJ-ID; Wed, 10 Jun 2026 12:12:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXR-0007fB-HK for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:21 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXP-0005U9-Fk for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:21 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-490b915ded5so61340185e9.3 for ; Wed, 10 Jun 2026 09:12:19 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107938; x=1781712738; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=K+F6PgnA5j+iTjiRAUodyt/0uyyZ76nvV2j5nGbqtDc=; b=fu4XM0ma3NBLU6dLwrR6UqdgP47TSkineaUO3WRY8LuR2ZIUfBOiCbGQFB7LZVF9sZ rohgzLokMLNwrWJWrvxHCoz7CMG/RGJ1FheK+s0DDVSleoO8h0j1xNuZ6FQ8sb7GjBSX Hp1CmnscG6fZJ1RbbbHvoQq42vi2LKmneQ38vWFWOJBuvquFblpwWafcbXO39NVURQ/O ZNpp9DH9iZChlGZD9m9BgrbUvN6MKi8kVY2EEKbQ1yRQZ/auJKpUmU/UkK+bIud94TTQ Mkb2zkr4tOyrE9mZ/fv3x8g/bqRSvPNC+ddfhVTtE9o5W7ctZMoK6PuGMBVdkVvSD8Vm fl8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107938; x=1781712738; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=K+F6PgnA5j+iTjiRAUodyt/0uyyZ76nvV2j5nGbqtDc=; b=EFWOxFnPFh4fJ/BEqAQr4fIAjxoiXNwW/1x7SGv8VV8616rh09hmrOCjTvl09CGp3F 9XqR/Kyrd7NSdeqtokk+9vU5JLLYJe7Ztkf3vRRwqHAAj2l/t8DLK4/5JMQfsPZ2dcxE TrV8DduVsbc0rcYsjTMyh7UlXp+/Ze+Eyo9uCmzCkYFVycDR0/L/Kl2sWqbmrKHrKSD7 BdnISRYk1oLhArQieEZokd7zHtMREBxa23zi7Omw9jvGpQSZMY8OnkNtvpKFF6TaJrCv mlG6wCErR+lDAgULbUEsaS4KnH0hf4YSBGmYMRfq6PRqa++TjD2/FgtEws0OXjxapVqq rGOg== X-Gm-Message-State: AOJu0YwygHfnmEaPCYT76OaJY6yBt/HNLnkvzFf37UwyePcIFX90Ap6y VTJiUW1DuXV92Mj1Dt7fjtcIneTPATkL+wip8XGbM1CHLHKEHMzIIs+BH0DiqnLELM+P0A9hmjx s11gK X-Gm-Gg: Acq92OHxZ+3fBasIhN6dbQlvAa+rtQw0E79VvgcDnHlQTll3aQ25X8NPUYrMniffNJc ZV5UEmEnNEuGbNzY2CvaS/JhkjLRUlvMoJv5omMXH63jvt+/BR/OdfOrW/fnsXlL/x9GkN4qBEL 7+1Iufv5HZiUDSl7sOfpTRg00pvTSK6/0DgesYb5FHtaSPcmtfofjdbXfi9yYqzewacEgAeII7T 0BSLaS40ewTqEJ+EliL3Ey7bMZV1wAQcKBGfiyBO0nEGUk+g1zAOzx11Uw2wFz6CWFMztLiorbx NdMumFw12L0YYwjXhjs5GX+yc+acLvvzx+I5t60bNIdRbZWFagoooBQKyo4PpmGrtA2QTjCarIv TUX86VHO0Ov7VZK4mVbwxd3Cl7DkainMrZ1nEGGi85ryBRx0V1edGx+arDkYIZzZy0yqN0PZG12 oiqnhYsOdbNBCF3hqI0OCDLDTphKmPIFlXtj6RQXYiKfjW2u/62AuRYlR6W3nru6mLZ8fI1yVNB csE+WntVafSiWIzMpx6TUfXxUet10ppy/i1HHuyOJqyRJLZRJ843g== X-Received: by 2002:a05:600c:5010:b0:490:bb20:de64 with SMTP id 5b1f17b1804b1-490c25b337amr407885505e9.5.1781107938070; Wed, 10 Jun 2026 09:12:18 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 10/71] target/arm: load on canonical tag loads ext bits Date: Wed, 10 Jun 2026 17:11:01 +0100 Message-ID: <20260610161202.2235298-11-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.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: 1781108478183154100 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman Loading tags from canonically tagged regions should use the canonical tags (extension bits), not allocation tags. See AArch64_MemTagRead(). Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-9-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- target/arm/tcg/helper-a64-defs.h | 4 ++-- target/arm/tcg/mte_helper.c | 14 ++++++++++++-- target/arm/tcg/translate-a64.c | 4 ++-- 3 files changed, 16 insertions(+), 6 deletions(-) diff --git a/target/arm/tcg/helper-a64-defs.h b/target/arm/tcg/helper-a64-d= efs.h index cae543a7a1..c268b8c3cc 100644 --- a/target/arm/tcg/helper-a64-defs.h +++ b/target/arm/tcg/helper-a64-defs.h @@ -102,14 +102,14 @@ DEF_HELPER_FLAGS_3(mte_check, TCG_CALL_NO_WG, i64, en= v, i32, i64) DEF_HELPER_FLAGS_3(mte_check_zva, TCG_CALL_NO_WG, i64, env, i32, i64) DEF_HELPER_FLAGS_3(irg, TCG_CALL_NO_RWG, i64, env, i64, i64) DEF_HELPER_FLAGS_4(addsubg, TCG_CALL_NO_RWG_SE, i64, env, i64, s32, i32) -DEF_HELPER_FLAGS_3(ldg, TCG_CALL_NO_WG, i64, env, i64, i64) +DEF_HELPER_FLAGS_4(ldg, TCG_CALL_NO_WG, i64, env, i64, i64, i32) DEF_HELPER_FLAGS_3(stg, TCG_CALL_NO_WG, void, env, i64, i64) DEF_HELPER_FLAGS_3(stg_parallel, TCG_CALL_NO_WG, void, env, i64, i64) DEF_HELPER_FLAGS_2(stg_stub, TCG_CALL_NO_WG, void, env, i64) DEF_HELPER_FLAGS_3(st2g, TCG_CALL_NO_WG, void, env, i64, i64) DEF_HELPER_FLAGS_3(st2g_parallel, TCG_CALL_NO_WG, void, env, i64, i64) DEF_HELPER_FLAGS_2(st2g_stub, TCG_CALL_NO_WG, void, env, i64) -DEF_HELPER_FLAGS_2(ldgm, TCG_CALL_NO_WG, i64, env, i64) +DEF_HELPER_FLAGS_3(ldgm, TCG_CALL_NO_WG, i64, env, i64, i32) DEF_HELPER_FLAGS_3(stgm, TCG_CALL_NO_WG, void, env, i64, i64) DEF_HELPER_FLAGS_3(stzgm_tags, TCG_CALL_NO_WG, void, env, i64, i64) =20 diff --git a/target/arm/tcg/mte_helper.c b/target/arm/tcg/mte_helper.c index d35e3ef04d..c382f0149f 100644 --- a/target/arm/tcg/mte_helper.c +++ b/target/arm/tcg/mte_helper.c @@ -304,7 +304,7 @@ int load_tag1(uint64_t ptr, uint8_t *mem) return extract32(*mem, ofs, 4); } =20 -uint64_t HELPER(ldg)(CPUARMState *env, uint64_t ptr, uint64_t xt) +uint64_t HELPER(ldg)(CPUARMState *env, uint64_t ptr, uint64_t xt, uint32_t= mtx) { int mmu_idx =3D arm_env_mmu_index(env); uint8_t *mem; @@ -317,6 +317,9 @@ uint64_t HELPER(ldg)(CPUARMState *env, uint64_t ptr, ui= nt64_t xt) /* Load if page supports tags. */ if (mem) { rtag =3D load_tag1(ptr, mem); + } else if (mtx) { + uint64_t bit55 =3D extract64(ptr, 55, 1); + rtag =3D 0xF * bit55; } =20 return address_with_allocation_tag(xt, rtag); @@ -458,7 +461,7 @@ void HELPER(st2g_stub)(CPUARMState *env, uint64_t ptr) } } =20 -uint64_t HELPER(ldgm)(CPUARMState *env, uint64_t ptr) +uint64_t HELPER(ldgm)(CPUARMState *env, uint64_t ptr, uint32_t mtx) { int mmu_idx =3D arm_env_mmu_index(env); uintptr_t ra =3D GETPC(); @@ -476,6 +479,13 @@ uint64_t HELPER(ldgm)(CPUARMState *env, uint64_t ptr) =20 /* The tag is squashed to zero if the page does not support tags. */ if (!tag_mem) { + /* Load canonical value if mtx is set (untagged memory region) */ + if (mtx) { + bool bit55 =3D extract64(ptr, 55, 1); + ret =3D extract64(-bit55, 0, 1 << gm_bs); + shift =3D extract64(ptr, LOG2_TAG_GRANULE, 4) * 4; + return ret << shift; + } return 0; } =20 diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index b5c9c9c166..c472917f05 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -4801,7 +4801,7 @@ static bool trans_LDGM(DisasContext *s, arg_ldst_tag = *a) tcg_rt =3D cpu_reg(s, a->rt); =20 if (s->ata[0]) { - gen_helper_ldgm(tcg_rt, tcg_env, addr); + gen_helper_ldgm(tcg_rt, tcg_env, addr, tcg_constant_i32(s->mtx)); } else { MMUAccessType acc =3D MMU_DATA_LOAD; int size =3D 4 << s->gm_blocksize; @@ -4836,7 +4836,7 @@ static bool trans_LDG(DisasContext *s, arg_ldst_tag *= a) tcg_gen_andi_i64(addr, addr, -TAG_GRANULE); tcg_rt =3D cpu_reg(s, a->rt); if (s->ata[0]) { - gen_helper_ldg(tcg_rt, tcg_env, addr, tcg_rt); + gen_helper_ldg(tcg_rt, tcg_env, addr, tcg_rt, tcg_constant_i32(s->= mtx)); } else { /* * Tag access disabled: we must check for aborts on the load --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108016; cv=none; d=zohomail.com; s=zohoarc; b=h23l1Mi2hE/tjsbuMo0ekMACaz8ImknuGMgyIPirmXPS8d57wKukukhjBe8US19CmTpEzRyKRs+FHZONXWts80ErvPJPECXtAGER4gBVuzLLOt53O0EmotK5DHfoAVZOx2G8hSA94ESKMx6CFOVlyDGKA85zOtyxPCq0exQtrJA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108016; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=nkrgzvMtXthZQ5i83VCq0e/OsBHmqevvgm5pAGmepkg=; b=AFLnlauQX0SmTx2TI0R72fRU2KPf4RFlrs/zgf6vHSlWxQYaU/tG405LsmnKB9GRT4DnCdhErmc/cnRbozCVsOcaI6WoFxxb7phOhJ2Rc4Tl7qu2tyCIrzIgGucLGjV3ckWuOI+SnUOwxXF/EHi3oHR0MyLPtpoQPIOFwcpa7m8= 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 1781108016577356.58130986976937; Wed, 10 Jun 2026 09:13:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXw-0008Qr-D7; Wed, 10 Jun 2026 12:12:52 -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 1wXLXT-0007fn-Bf for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:25 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXQ-0005UT-Vf for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:23 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-490b8ac62baso291405e9.0 for ; Wed, 10 Jun 2026 09:12:20 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107939; x=1781712739; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=nkrgzvMtXthZQ5i83VCq0e/OsBHmqevvgm5pAGmepkg=; b=L0EjylFXbdOJ7d9jXQbKjqeDnvt039j5ixJnnK5FMXeGFm76v7WFFIU1mXvsx0TSGH /G+Ib1u03fHVg8PUceWKpUV0XrSh0iqlhd6nelxa5ljfaqbi2LH9lx3TUFhkW5GTO8DX hYem9EI7LNo4xOoY4aRpkyFZSttbTV/wEMHFeHcQOUZVI23O4Q/wq7/OFGKEYEwLesjy 09FycsyIspVc/5MGh+iy+ZEmerBtmVWx7PXQ84atORegCaEBTj/O++QG+Wj9cawa6g0e Om0OyAwNWAch6r8NDry9c5NPzgP8Hu3MTx1mVpsobdA1gHSlqaM+l/ixUpO30Vanzvdl OfzQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107939; x=1781712739; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=nkrgzvMtXthZQ5i83VCq0e/OsBHmqevvgm5pAGmepkg=; b=X+LGfKMOEpiE0qPZBhuWKLBiMXrJnqprA+d+mDwNBh8Lk0koJu+1RqwnuiH+0q8EcE H9+5kk0LFh3nqnJNTBJ9+o/tIs1GcIj0V+ZsAWqgFnR8Pnt6I2WUDNVpSX0hBBYcJO/C 9ueMwMOoJQ2jh0nlVwZ81RWXMeFgw949M2IJ02GXpGY4Qr0WbzEGgODzb3JOcDZKtg/E WHY41iJqxGtQOKdg7GrNZETSRGfLNDcNZAV6rtU1bhBxt2yqF+R1taXJOka515O+5e05 diDHp7R8UeQQEfnDa2GvO53a3TOddP49FOeLqbjXvQoMMt9HsDt8X+7R35KxgiUdpsFB yO6A== X-Gm-Message-State: AOJu0YyMxtdOvoSujbR1DxWKWKngaT2c5Wxfk6SzWwlFmSgblMby/H3y k9qkKrQ5UB/FDqwVHcJzylauRsd7XLSbr7SuADjBmLNGznLVndoQfI2tV70btjdEFhoccs47y/n Nn7Kj X-Gm-Gg: Acq92OGC5KteSADrN51wkZmMzv6EpbPOqRLZNLmBeFD2GX5tZNZ9g2M5q+v/cysgvx9 xipTkmKZBg2Y228u8sdr8XNc9YtJ6DnTl86Y/GSW2VrWD2fOcJaVg5b76qWoNiwQInlYR47L1IJ 8uacNl+Y8wyKZXI2k4gsd2FhLuOWLzrKXK1DleqKRPrdPJvtKXrr+hewC9HyDcAVYaNTkwgjGah 3G0+CIQ1gp7Xg2aVvu5jr8Wx6X/O7ajQ/sfVAunEpL5pfjDhcDX3se+uKhDcNBgY7kcivbPr2GW Un9BaHY4jiZqLNbAqhSMmb7rxC5Zy4ZWScsMiT5LPsX+p+uqRk/tq9tBWvBXCOhE57YntP+WTrk 79W9Sb3ZP6nuM1Q6BFZEQrA4TOaYsiN8zSXN21c83dc22Skt4doetHXSQ5dro+cyHPjYJkhlN6s ZP95aHxSQd8tzsBiY/EJNEQrM/xO3Tf8eDeUxxsQduUeqpSN4Yg1a1MZfa2VJn5K6UHRR5rndtu cXcSlnAZrsh9mpVgWlV0cHAxrYFj7ex8WjvRcdjfoo= X-Received: by 2002:a05:6000:420e:b0:460:58ee:d634 with SMTP id ffacd0b85a97d-46058eed666mr8346320f8f.4.1781107939339; Wed, 10 Jun 2026 09:12:19 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 11/71] target/arm: fault on tag store to canonical tag Date: Wed, 10 Jun 2026 17:11:02 +0100 Message-ID: <20260610161202.2235298-12-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.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: 1781108018362154100 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman According to ARM ARM, section "Memory region tagging types", tag-store instructions targeting canonically tagged regions cause a stage 1 permission fault with MTX enabled. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-10-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- target/arm/tcg/helper-a64-defs.h | 12 +++---- target/arm/tcg/mte_helper.c | 55 +++++++++++++++++++++++++------- target/arm/tcg/translate-a64.c | 26 +++++++++------ 3 files changed, 65 insertions(+), 28 deletions(-) diff --git a/target/arm/tcg/helper-a64-defs.h b/target/arm/tcg/helper-a64-d= efs.h index c268b8c3cc..0e56e00f45 100644 --- a/target/arm/tcg/helper-a64-defs.h +++ b/target/arm/tcg/helper-a64-defs.h @@ -103,15 +103,15 @@ DEF_HELPER_FLAGS_3(mte_check_zva, TCG_CALL_NO_WG, i64= , env, i32, i64) DEF_HELPER_FLAGS_3(irg, TCG_CALL_NO_RWG, i64, env, i64, i64) DEF_HELPER_FLAGS_4(addsubg, TCG_CALL_NO_RWG_SE, i64, env, i64, s32, i32) DEF_HELPER_FLAGS_4(ldg, TCG_CALL_NO_WG, i64, env, i64, i64, i32) -DEF_HELPER_FLAGS_3(stg, TCG_CALL_NO_WG, void, env, i64, i64) -DEF_HELPER_FLAGS_3(stg_parallel, TCG_CALL_NO_WG, void, env, i64, i64) +DEF_HELPER_FLAGS_4(stg, TCG_CALL_NO_WG, void, env, i64, i64, i32) +DEF_HELPER_FLAGS_4(stg_parallel, TCG_CALL_NO_WG, void, env, i64, i64, i32) DEF_HELPER_FLAGS_2(stg_stub, TCG_CALL_NO_WG, void, env, i64) -DEF_HELPER_FLAGS_3(st2g, TCG_CALL_NO_WG, void, env, i64, i64) -DEF_HELPER_FLAGS_3(st2g_parallel, TCG_CALL_NO_WG, void, env, i64, i64) +DEF_HELPER_FLAGS_4(st2g, TCG_CALL_NO_WG, void, env, i64, i64, i32) +DEF_HELPER_FLAGS_4(st2g_parallel, TCG_CALL_NO_WG, void, env, i64, i64, i32) DEF_HELPER_FLAGS_2(st2g_stub, TCG_CALL_NO_WG, void, env, i64) DEF_HELPER_FLAGS_3(ldgm, TCG_CALL_NO_WG, i64, env, i64, i32) -DEF_HELPER_FLAGS_3(stgm, TCG_CALL_NO_WG, void, env, i64, i64) -DEF_HELPER_FLAGS_3(stzgm_tags, TCG_CALL_NO_WG, void, env, i64, i64) +DEF_HELPER_FLAGS_4(stgm, TCG_CALL_NO_WG, void, env, i64, i64, i32) +DEF_HELPER_FLAGS_4(stzgm_tags, TCG_CALL_NO_WG, void, env, i64, i64, i32) =20 DEF_HELPER_FLAGS_4(arm_unaligned_access, TCG_CALL_NO_WG, noreturn, env, i64, i32, i32) diff --git a/target/arm/tcg/mte_helper.c b/target/arm/tcg/mte_helper.c index c382f0149f..dca4ef5a94 100644 --- a/target/arm/tcg/mte_helper.c +++ b/target/arm/tcg/mte_helper.c @@ -231,6 +231,19 @@ uint8_t *allocation_tag_mem_probe(CPUARMState *env, in= t ptr_mmu_idx, #endif } =20 +static G_NORETURN void canonical_tag_write_fail(CPUARMState *env, + uint64_t dirty_ptr, uintptr_t ra) +{ + uint64_t syn; + + env->exception.vaddress =3D dirty_ptr; + + syn =3D syn_data_abort_no_iss(arm_current_el(env) !=3D 0, 0, 0, 0, 0, = 1, 0); + syn |=3D BIT_ULL(42); /* TnD is bit 42 */ + + raise_exception_ra(env, EXCP_DATA_ABORT, syn, exception_target_el(env)= , ra); +} + static uint8_t *allocation_tag_mem(CPUARMState *env, int ptr_mmu_idx, uint64_t ptr, MMUAccessType ptr_access, int ptr_size, MMUAccessType tag_access, @@ -360,7 +373,7 @@ static void store_tag1_parallel(uint64_t ptr, uint8_t *= mem, int tag) typedef void stg_store1(uint64_t, uint8_t *, int); =20 static inline void do_stg(CPUARMState *env, uint64_t ptr, uint64_t xt, - uintptr_t ra, stg_store1 store1) + uint32_t mtx, uintptr_t ra, stg_store1 store1) { int mmu_idx =3D arm_env_mmu_index(env); uint8_t *mem; @@ -374,17 +387,20 @@ static inline void do_stg(CPUARMState *env, uint64_t = ptr, uint64_t xt, /* Store if page supports tags. */ if (mem) { store1(ptr, mem, allocation_tag_from_addr(xt)); + } else if (mtx) { + canonical_tag_write_fail(env, ptr, ra); } } =20 -void HELPER(stg)(CPUARMState *env, uint64_t ptr, uint64_t xt) +void HELPER(stg)(CPUARMState *env, uint64_t ptr, uint64_t xt, uint32_t mtx) { - do_stg(env, ptr, xt, GETPC(), store_tag1); + do_stg(env, ptr, xt, mtx, GETPC(), store_tag1); } =20 -void HELPER(stg_parallel)(CPUARMState *env, uint64_t ptr, uint64_t xt) +void HELPER(stg_parallel)(CPUARMState *env, uint64_t ptr, uint64_t xt, + uint32_t mtx) { - do_stg(env, ptr, xt, GETPC(), store_tag1_parallel); + do_stg(env, ptr, xt, mtx, GETPC(), store_tag1_parallel); } =20 void HELPER(stg_stub)(CPUARMState *env, uint64_t ptr) @@ -397,7 +413,7 @@ void HELPER(stg_stub)(CPUARMState *env, uint64_t ptr) } =20 static inline void do_st2g(CPUARMState *env, uint64_t ptr, uint64_t xt, - uintptr_t ra, stg_store1 store1) + uint32_t mtx, uintptr_t ra, stg_store1 store1) { int mmu_idx =3D arm_env_mmu_index(env); int tag =3D allocation_tag_from_addr(xt); @@ -420,9 +436,13 @@ static inline void do_st2g(CPUARMState *env, uint64_t = ptr, uint64_t xt, /* Store if page(s) support tags. */ if (mem1) { store1(TAG_GRANULE, mem1, tag); + } else if (mtx) { + canonical_tag_write_fail(env, ptr, ra); } if (mem2) { store1(0, mem2, tag); + } else if (mtx) { + canonical_tag_write_fail(env, ptr + TAG_GRANULE, ra); } } else { /* Two stores aligned mod TAG_GRANULE*2 -- modify one byte. */ @@ -431,18 +451,22 @@ static inline void do_st2g(CPUARMState *env, uint64_t= ptr, uint64_t xt, if (mem1) { tag |=3D tag << 4; qatomic_set(mem1, tag); + } else if (mtx) { + /* Writing tags to canonically tagged memory region: faults */ + canonical_tag_write_fail(env, ptr, ra); } } } =20 -void HELPER(st2g)(CPUARMState *env, uint64_t ptr, uint64_t xt) +void HELPER(st2g)(CPUARMState *env, uint64_t ptr, uint64_t xt, uint32_t mt= x) { - do_st2g(env, ptr, xt, GETPC(), store_tag1); + do_st2g(env, ptr, xt, mtx, GETPC(), store_tag1); } =20 -void HELPER(st2g_parallel)(CPUARMState *env, uint64_t ptr, uint64_t xt) +void HELPER(st2g_parallel)(CPUARMState *env, uint64_t ptr, uint64_t xt, + uint32_t mtx) { - do_st2g(env, ptr, xt, GETPC(), store_tag1_parallel); + do_st2g(env, ptr, xt, mtx, GETPC(), store_tag1_parallel); } =20 void HELPER(st2g_stub)(CPUARMState *env, uint64_t ptr) @@ -528,7 +552,7 @@ uint64_t HELPER(ldgm)(CPUARMState *env, uint64_t ptr, u= int32_t mtx) return ret << shift; } =20 -void HELPER(stgm)(CPUARMState *env, uint64_t ptr, uint64_t val) +void HELPER(stgm)(CPUARMState *env, uint64_t ptr, uint64_t val, uint32_t m= tx) { int mmu_idx =3D arm_env_mmu_index(env); uintptr_t ra =3D GETPC(); @@ -548,6 +572,10 @@ void HELPER(stgm)(CPUARMState *env, uint64_t ptr, uint= 64_t val) * and if the OS has enabled access to the tags. */ if (!tag_mem) { + /* Storing tags to canonically tagged region: fault. */ + if (mtx) { + canonical_tag_write_fail(env, ptr, ra); + } return; } =20 @@ -577,7 +605,8 @@ void HELPER(stgm)(CPUARMState *env, uint64_t ptr, uint6= 4_t val) } } =20 -void HELPER(stzgm_tags)(CPUARMState *env, uint64_t ptr, uint64_t val) +void HELPER(stzgm_tags)(CPUARMState *env, uint64_t ptr, uint64_t val, + uint32_t mtx) { uintptr_t ra =3D GETPC(); int mmu_idx =3D arm_env_mmu_index(env); @@ -601,6 +630,8 @@ void HELPER(stzgm_tags)(CPUARMState *env, uint64_t ptr,= uint64_t val) if (mem) { int tag_pair =3D (val & 0xf) * 0x11; memset(mem, tag_pair, tag_bytes); + } else if (mtx) { + canonical_tag_write_fail(env, ptr, ra); } } =20 diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index c472917f05..092a979198 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -3121,7 +3121,8 @@ static void handle_sys(DisasContext *s, bool isread, /* Extract the tag from the register to match STZGM. */ tag =3D tcg_temp_new_i64(); tcg_gen_shri_i64(tag, tcg_rt, 56); - gen_helper_stzgm_tags(tcg_env, clean_addr, tag); + gen_helper_stzgm_tags(tcg_env, clean_addr, tag, + tcg_constant_i32(s->mtx)); } } return; @@ -3138,7 +3139,8 @@ static void handle_sys(DisasContext *s, bool isread, /* Extract the tag from the register to match STZGM. */ tag =3D tcg_temp_new_i64(); tcg_gen_shri_i64(tag, tcg_rt, 56); - gen_helper_stzgm_tags(tcg_env, clean_addr, tag); + gen_helper_stzgm_tags(tcg_env, clean_addr, tag, + tcg_constant_i32(s->mtx)); } } return; @@ -3955,9 +3957,11 @@ static bool trans_STGP(DisasContext *s, arg_ldstpair= *a) /* Perform the tag store, if tag access enabled. */ if (s->ata[0]) { if (tb_cflags(s->base.tb) & CF_PARALLEL) { - gen_helper_stg_parallel(tcg_env, dirty_addr, dirty_addr); + gen_helper_stg_parallel(tcg_env, dirty_addr, dirty_addr, + tcg_constant_i32(s->mtx)); } else { - gen_helper_stg(tcg_env, dirty_addr, dirty_addr); + gen_helper_stg(tcg_env, dirty_addr, dirty_addr, + tcg_constant_i32(s->mtx)); } } =20 @@ -4737,7 +4741,7 @@ static bool trans_STZGM(DisasContext *s, arg_ldst_tag= *a) tcg_rt =3D cpu_reg(s, a->rt); =20 if (s->ata[0]) { - gen_helper_stzgm_tags(tcg_env, addr, tcg_rt); + gen_helper_stzgm_tags(tcg_env, addr, tcg_rt, tcg_constant_i32(s->m= tx)); } /* * The non-tags portion of STZGM is mostly like DC_ZVA, @@ -4769,7 +4773,7 @@ static bool trans_STGM(DisasContext *s, arg_ldst_tag = *a) tcg_rt =3D cpu_reg(s, a->rt); =20 if (s->ata[0]) { - gen_helper_stgm(tcg_env, addr, tcg_rt); + gen_helper_stgm(tcg_env, addr, tcg_rt, tcg_constant_i32(s->mtx)); } else { MMUAccessType acc =3D MMU_DATA_STORE; int size =3D 4 << s->gm_blocksize; @@ -4885,15 +4889,17 @@ static bool do_STG(DisasContext *s, arg_ldst_tag *a= , bool is_zero, bool is_pair) } } else if (tb_cflags(s->base.tb) & CF_PARALLEL) { if (is_pair) { - gen_helper_st2g_parallel(tcg_env, addr, tcg_rt); + gen_helper_st2g_parallel(tcg_env, addr, tcg_rt, + tcg_constant_i32(s->mtx)); } else { - gen_helper_stg_parallel(tcg_env, addr, tcg_rt); + gen_helper_stg_parallel(tcg_env, addr, tcg_rt, + tcg_constant_i32(s->mtx)); } } else { if (is_pair) { - gen_helper_st2g(tcg_env, addr, tcg_rt); + gen_helper_st2g(tcg_env, addr, tcg_rt, tcg_constant_i32(s->mtx= )); } else { - gen_helper_stg(tcg_env, addr, tcg_rt); + gen_helper_stg(tcg_env, addr, tcg_rt, tcg_constant_i32(s->mtx)= ); } } =20 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108412; cv=none; d=zohomail.com; s=zohoarc; b=j6Mt6KkyD47NYP4nvJ5MrZMrYPbc21n16HQI8ryW4y/bKsyJ1Yf+dnjbmGAZgxoFNAa84UPa95qh9h97Hoozq2VPYBCJAIoNM7aPBKHMEHP94uWlgsOze+ffCMQ8Ya9hK+UE78a2u/hoG2NFkf9DN+hhFMeoSVqwiGKQA0RV8V4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108412; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=uaSjLoOO4/Sgg3fbIePE2QqdKW6IQ7ptA28s3E+x4i8=; b=jCof2Tm13biVhzS8ztFt2w4BualXMT6cRMpsie5qYhF6cwff1cdnJsBbuyF7YB4z1QuCR4A/iRLJ4Gqraa6uhofYc31CSqLgdnuwCMOxik8yhBJ9g6qurVyvHUNfsIjG3MjrapmAKU11TyzuEDZfScZsSy+Yva5sE0M0d9ji3u8= 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 1781108412089427.5031149356786; Wed, 10 Jun 2026 09:20:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXx-0008W8-L8; Wed, 10 Jun 2026 12:12:53 -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 1wXLXT-0007fw-Vv for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:25 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450: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 1wXLXR-0005Ul-Tu for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:23 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-45eea68dd6fso3775021f8f.2 for ; Wed, 10 Jun 2026 09:12:21 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107940; x=1781712740; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=uaSjLoOO4/Sgg3fbIePE2QqdKW6IQ7ptA28s3E+x4i8=; b=WH7vAQd+z0QjD6WxHunvEGIIB7x6fQA86Lk6XQin48cilu7qNdvTtvNFHx17ToNSl/ D9DxfJwKR8jUtgtVy+l/zsHwhyskCqpTGPx2Kb0q/YifW9TiuS7PcpHfGWC71RgnlYRQ OJNdhc19ND6Ploly4Cr6ZD2PK8tVHBVtyfJ6M3lmQc9Q4FyIrReZh8/912dgyrnzBwjr UQ/aUjk3GXPNpBSwab34XYbrY/SLdAi/6krywcUxeIfo5IfXecu+nxIrjHLu+4NvRQwh gc7XL9hHCpHthwMtTvvYusLC0mN7FqL2P3gZCliZT/qy3739+qZCUWMzG4eb/dj0cynC pEsg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107940; x=1781712740; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=uaSjLoOO4/Sgg3fbIePE2QqdKW6IQ7ptA28s3E+x4i8=; b=YqoYhZ9lMlD1HDXR6NPzcQ0415r17Dx35qqIb7+tZeug8LTm/6oUyTiqDZ20NJHK/g 53DK0+h0NoeOx38+vrpsPywS3ikTaiJ6Zs4KCmLx+4MKimEHHt1zzU6/4N+WQbh4jtJC 2A5j+NTPxxyRixGz/rRiwQsdC70iXuOJxDmNCz6L4hsFuBeLPdSDjdGW0UzFR164XqSs vlB9ch6EqLf6OzjYNB8ZudwszkYGi9d1deUqig7u+r9G3RUjsUm4icLPf6xEeDk4b6DQ PUulbbPiIMp6JFjF6fikawEiA/I62246EthXu7lo8Jw2SyYfxCqj7ha4sJBRxtHRVRWx +xMA== X-Gm-Message-State: AOJu0Yw/3A89JdRyV15V4h2fqdAvJEHDQyXY0hXZ7uZ5Jw6WaHU4cyuV gXitpvwbVF+ZEK8gEFfOOFkIL1FeoNtk3vtwpBj/WMJX6W+8iHrYRSdn6a49WPnfSZYm5PJuz8O 7zumy X-Gm-Gg: Acq92OFMsXAKJwI3KwrSXT/adaXM0jEbHJQIgXOpBL/MyL+x7X/4AOISg3dD6hHojsd 3qToUenB02cAnYVqGZUWT+YZkGi8F3OZD73sUNWGiGiUoZoST8LLohYnjoDShTc+nhb9LjZkmLD 16NuKQRIYzn2Vl3AigL17BKsU6BDJQ6aP8cYBahMUocFcl2RGuL0HtUu6zSLdfh0hLisY5aJLL+ Yf0eibX7elXBUCvx0mfODSjSTQzfcw79XDLIAloctPnAcLc9DY56//IIshwmsIFWNwOxOoLEz32 YxBJewiyl0QtGCKX1K8zwgboSuE6Iael5NpehV7H/H5UkRx8arLOeif7rDYWD0KZXEYZGSf6Sq6 iXM/zlfBtrTwooQDd8Sw91ImzeDOkMjuA1NKF/K75Y6bz8ZLK91GU9JkYrYqrQ5jm9tHCxkp+Oj M4gtQAt4n3rOo4jfyMzAK6WbjiLLz4muq/LdsH2UC5EOPD+15MIQgTZAFmwoFmVFjEp41YYJltj /BTaf/nquYBJNZjEieJYZJXJM+nmua3oHXH/EI2vrQ= X-Received: by 2002:adf:f282:0:b0:45e:da57:be33 with SMTP id ffacd0b85a97d-46030502271mr29612963f8f.23.1781107940473; Wed, 10 Jun 2026 09:12:20 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 12/71] target/arm: skip tag bit bounds check if MTX is on Date: Wed, 10 Jun 2026 17:11:03 +0100 Message-ID: <20260610161202.2235298-13-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108413355154100 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman Virtual address canonicity checks should ignore mismatch in tag bits during translation step if MTX is set. This mismatch is checked during the tag check instead, in that case. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-11-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- target/arm/helper.c | 6 +++++- target/arm/internals.h | 1 + target/arm/ptw.c | 35 ++++++++++++++++++++++++++++++----- 3 files changed, 36 insertions(+), 6 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index b989acd0f5..c9536d2d10 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9795,7 +9795,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, = uint64_t va, { uint64_t tcr =3D regime_tcr(env, mmu_idx); bool epd, hpd, tsz_oob, ds, ha, hd, pie =3D false; - bool aie =3D false; + bool mtx, aie =3D false; int select, tsz, tbi, max_tsz, min_tsz, ps, sh; ARMGranuleSize gran; ARMCPU *cpu =3D env_archcpu(env); @@ -9832,6 +9832,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, = uint64_t va, ha =3D extract32(tcr, 21, 1) && cpu_isar_feature(aa64_hafs, cpu); hd =3D extract32(tcr, 22, 1) && cpu_isar_feature(aa64_hdbs, cpu); ds =3D extract64(tcr, 32, 1); + mtx =3D extract64(tcr, 33, 1) && cpu_isar_feature(aa64_mte_mtx, cp= u); } else { bool e0pd; =20 @@ -9847,6 +9848,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, = uint64_t va, sh =3D extract32(tcr, 12, 2); hpd =3D extract64(tcr, 41, 1); e0pd =3D extract64(tcr, 55, 1); + mtx =3D extract64(tcr, 60, 1) && cpu_isar_feature(aa64_mte_mtx= , cpu); } else { tsz =3D extract32(tcr, 16, 6); gran =3D tg1_to_gran_size(extract32(tcr, 30, 2)); @@ -9854,6 +9856,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, = uint64_t va, sh =3D extract32(tcr, 28, 2); hpd =3D extract64(tcr, 42, 1); e0pd =3D extract64(tcr, 56, 1); + mtx =3D extract64(tcr, 61, 1) && cpu_isar_feature(aa64_mte_mtx= , cpu); } ps =3D extract64(tcr, 32, 3); ha =3D extract64(tcr, 39, 1) && cpu_isar_feature(aa64_hafs, cpu); @@ -9953,6 +9956,7 @@ ARMVAParameters aa64_va_parameters(CPUARMState *env, = uint64_t va, .gran =3D gran, .pie =3D pie, .aie =3D aie, + .mtx =3D mtx, }; } =20 diff --git a/target/arm/internals.h b/target/arm/internals.h index f8cbefec7a..cd93499307 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1430,6 +1430,7 @@ typedef struct ARMVAParameters { ARMGranuleSize gran : 2; bool pie : 1; bool aie : 1; + bool mtx : 1; } ARMVAParameters; =20 /** diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 6cb0fe5645..8b54018c98 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -1951,9 +1951,18 @@ static bool get_phys_addr_lpae(CPUARMState *env, S1T= ranslate *ptw, * validation to do here. */ if (inputsize < addrsize) { - uint64_t top_bits =3D sextract64(address, inputsize, - addrsize - inputsize); - if (-top_bits !=3D param.select) { + /* + * If MTX is enabled, bits 56-59 aren't checked for canonicity + * during translation, since they will later be checked during + * the tag check step. + */ + + uint64_t cmp_mask =3D MAKE_64BIT_MASK(inputsize, addrsize - inputs= ize); + + if (param.mtx) { + cmp_mask &=3D ~MAKE_64BIT_MASK(56, 4); + } + if ((address ^ -param.select) & cmp_mask) { /* The gap between the two regions is a Translation fault */ goto do_translation_fault; } @@ -3514,15 +3523,31 @@ static bool get_phys_addr_disabled(CPUARMState *env, int pamax =3D arm_pamax(env_archcpu(env)); uint64_t tcr =3D env->cp15.tcr_el[r_el]; int addrtop, tbi; + bool bit55; =20 tbi =3D aa64_va_parameter_tbi(tcr, mmu_idx); if (access_type =3D=3D MMU_INST_FETCH) { tbi &=3D ~aa64_va_parameter_tbid(tcr, mmu_idx); } - tbi =3D (tbi >> extract64(address, 55, 1)) & 1; + bit55 =3D extract64(address, 55, 1); + tbi =3D (tbi >> bit55) & 1; addrtop =3D (tbi ? 55 : 63); =20 - if (extract64(address, pamax, addrtop - pamax + 1) !=3D 0) { + /* + * With MTX enabled, bits 56-59 are not checked according to + * AArch64.S1DisabledOutput. + */ + uint64_t cmp_mask =3D MAKE_64BIT_MASK(pamax, addrtop - pamax += 1); + + if (access_type !=3D MMU_INST_FETCH && + cpu_isar_feature(aa64_mte_mtx, env_archcpu(env))) { + int mtx =3D aa64_va_parameter_mtx(tcr, mmu_idx); + if (mtx & (1 << bit55)) { + cmp_mask &=3D ~MAKE_64BIT_MASK(56, 4); + } + } + + if (address & cmp_mask) { fi->type =3D ARMFault_AddressSize; fi->level =3D 0; fi->stage2 =3D false; --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781107984; cv=none; d=zohomail.com; s=zohoarc; b=PsUA+6oiHUxEf3nFPv7CblLoaU4iVUTO4YJ3Wk/fsjBmvX0zpqDxRnAKiqZc0HsXLHbsODFLxECbqqmlyIkppwWuyjUduvL15w3MhBYuJaqF6MhwuhEIJL0rMPBBQkEIH6KblTPifEE8FH/iUNlVlUXVCXHsEdJPDCXqpWfFlb4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781107984; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=y9bfY6SZ7Mqytp3KNtRVErbMA8CaOzHhsEk9wJ/yFSQ=; b=WVGy5Cti3BawU6BalbkDlIJAoINw++F4GZONUS+FFwP3zyIeTEaRGCHn33fYdI+GvEikpar20aNYiXAsYYwWiVTKnkjH8VjulNveywf7QfCFcTSSlqgnETCatIiBmMtMUnjrgs1es0KWAw/aX4haxHfw75dVp1G6pxbIOu5VPm8= 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 1781107984154442.8334521315762; Wed, 10 Jun 2026 09:13:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXo-00083W-DR; Wed, 10 Jun 2026 12:12:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXV-0007iE-DW for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:27 -0400 Received: from mail-wm1-x32f.google.com ([2a00:1450:4864:20::32f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXT-0005VJ-P0 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:25 -0400 Received: by mail-wm1-x32f.google.com with SMTP id 5b1f17b1804b1-490aaeabdb4so45681165e9.1 for ; Wed, 10 Jun 2026 09:12:23 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.20 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107942; x=1781712742; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=y9bfY6SZ7Mqytp3KNtRVErbMA8CaOzHhsEk9wJ/yFSQ=; b=d/Adjsy48LTqwkrli7FVK+CNOKyDuMI/g5/BfoxzA6pQus4wie1t9uqzlzUic2qRaC CrFnyk3IScEucWjOEQrxhvxFCGWT7KA+QN6DomTYD7dHH+AqRwvg/px13x7ECcDMZweV QOhJObtlwvJWDi9woK/M+YBvAMrWQ1zTynt/sPoTK97QgPbcUvf0MsY3iTckulcmVZ/u iV4WM4cWnvsyjlz1BGlB/KLy+1D1E040TUQ/z2mHYr/3ZJzGrNwZlMKCDPnz6qxsxFnd cOn39v2r2FfDdLxOM9Z6qd153AJpBIySpB+GA/0wefizUp9ljVUtoUAyzhdh+4e5ZIoY AXeg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107942; x=1781712742; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=y9bfY6SZ7Mqytp3KNtRVErbMA8CaOzHhsEk9wJ/yFSQ=; b=Gi08aczM+S+xB2fIMQlrbdzK5bIQWB7CMLz85ZTjKfHPFLBY4QbcQt76GPODJuxqG8 8HsB3UBVdKcgvPgIDnOhNplz3fR1VBP0U4srBdcVpAEjFfQaR367QjmbOWkInjO0Yu33 965+r7/PrXZKkbR2/+G3yW6xs4t9P+IyzdJJJcJttnQs/0nRjiIokoGijPV1cEQnzSVS lYFeZ2Xddqgz/9U35BLbxIo+zBRgEOINf9+n6yNJg60QUGxA31m7zIInxLLHhSayhj67 rs0eq+HvwT0+LFD/eFxniZTzyVXiwdr4S9xyfqoh1VNNtsxi2zsvU1Rj7pF2fxhIObEM e/aA== X-Gm-Message-State: AOJu0YxXErA2rGKrohiT5pd937uzP1gWVLVoJKKsWtv/cGhvroYifRiv ddzpz+BdTv/ZFhQnwgokxUQ+eJSWz1ruNyZ5125Q8wgj1ja0ImNzFrfYS4DK9tJnEPuDY3mvEET ynCyH X-Gm-Gg: Acq92OGprsiC7ImfbeL7BddPF1oXW0fs7wXDrPJA9WW9sLrR7SgHh+b35vdSUTjCYQI ehsFq2J4uJa/yP/jNCtWxtK+tsv7oOHdOyqaJmadetU+EwzwFtJajPG+yMJdjbU65sMF+VcfZea HvibZ56/Zkv5KpLgZMpesuAgemlXxaEgaofJ07h58klioYihH6bdOe+8XoY/jD0ymz5MxeDPJDQ BDeDODARCel5XUUCUQ8/ABlDGz+SRDA0EAwHy2iN20VzOVg3mOJB/Y9tLsgis3S/XmQE1GVZ/Jf js+O5IMgEwYF6lKlWvPg+NZvaMPD2FK4GKwcEslC1wYZjp6lPpd0HhZ/g3LIP1nG8GvotXR8tYh RoQ7C2R+09g4QK7io6Vz+KrGTW+y96gytV066Cq7pFm8fjHUwUiUc81o4/YEWmCrjX9YRCCzPrU l6zmHmkdutYai7E3Mq6m5HQtA7zUjkyihIXchRwqixgdBoom11URJH7xmR2/wkVgssDNNBhRdKf fS1V7tF4xCXWfXFy/7HotLwvSTANucPVPJAwCUu328= X-Received: by 2002:a05:600c:1d27:b0:490:add9:7f88 with SMTP id 5b1f17b1804b1-490c25dd709mr444817285e9.21.1781107942067; Wed, 10 Jun 2026 09:12:22 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 13/71] target/arm: tag is not a part of PAuth with MTX Date: Wed, 10 Jun 2026 17:11:04 +0100 Message-ID: <20260610161202.2235298-14-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::32f; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32f.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: 1781107986088154100 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman As described in the section on MTX, tag bits should not be used to store or compute the PAC when MTX is set. See also Authenticate(), InsertPAC(), and Strip(). Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-12-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- target/arm/internals.h | 12 +++++++++++- target/arm/tcg/pauth_helper.c | 18 +++++++++++++++++- 2 files changed, 28 insertions(+), 2 deletions(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index cd93499307..21cbd2b1db 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -1840,7 +1840,17 @@ static inline uint64_t pauth_ptr_mask(ARMVAParameter= s param) int bot_pac_bit =3D 64 - param.tsz; int top_pac_bit =3D 64 - 8 * param.tbi; =20 - return MAKE_64BIT_MASK(bot_pac_bit, top_pac_bit - bot_pac_bit); + uint64_t mask =3D MAKE_64BIT_MASK(bot_pac_bit, top_pac_bit - bot_pac_b= it); + + /* + * If mtx is enabled, second nibble is not part of PAC. See + * InsertPAC(). + */ + if (param.mtx) { + mask &=3D ~MAKE_64BIT_MASK(56, 4); + } + + return mask; } =20 /* Add the cpreg definitions for debug related system registers */ diff --git a/target/arm/tcg/pauth_helper.c b/target/arm/tcg/pauth_helper.c index 67c0d59d9e..3d83ca4c3c 100644 --- a/target/arm/tcg/pauth_helper.c +++ b/target/arm/tcg/pauth_helper.c @@ -342,9 +342,16 @@ static uint64_t pauth_addpac(CPUARMState *env, uint64_= t ptr, uint64_t modifier, } =20 /* Build a pointer with known good extension bits. */ - top_bit =3D 64 - 8 * param.tbi; + top_bit =3D 64 - 8 * (param.tbi || param.mtx); bot_bit =3D 64 - param.tsz; ext_ptr =3D deposit64(ptr, bot_bit, top_bit - bot_bit, ext); + /* + * If mtx is active but not tbi, then the top 4 bits are replaced with= the + * ext bit, while leaving bits 56-59 alone. See InsertPAC(). + */ + if (param.mtx && !param.tbi) { + ext_ptr =3D deposit64(ext_ptr, 60, 4, ext); + } =20 pac =3D pauth_computepac(env, ext_ptr, modifier, *key); =20 @@ -377,6 +384,11 @@ static uint64_t pauth_addpac(CPUARMState *env, uint64_= t ptr, uint64_t modifier, if (param.tbi) { ptr &=3D ~MAKE_64BIT_MASK(bot_bit, 55 - bot_bit + 1); pac &=3D MAKE_64BIT_MASK(bot_bit, 54 - bot_bit + 1); + } else if (param.mtx) { + ptr &=3D ~(MAKE_64BIT_MASK(60, 4) | + MAKE_64BIT_MASK(bot_bit, 55 - bot_bit + 1)); + pac &=3D MAKE_64BIT_MASK(60, 4) | + MAKE_64BIT_MASK(bot_bit, 54 - bot_bit + 1); } else { ptr &=3D MAKE_64BIT_MASK(0, bot_bit); pac &=3D ~(MAKE_64BIT_MASK(55, 1) | MAKE_64BIT_MASK(0, bot_bit)); @@ -424,6 +436,10 @@ static uint64_t pauth_auth(CPUARMState *env, uint64_t = ptr, uint64_t modifier, cmp_mask =3D MAKE_64BIT_MASK(bot_bit, top_bit - bot_bit); cmp_mask &=3D ~MAKE_64BIT_MASK(55, 1); =20 + if (param.mtx) { + cmp_mask &=3D ~MAKE_64BIT_MASK(56, 4); + } + if (pauth_feature >=3D PauthFeat_2) { ARMPauthFeature fault_feature =3D is_combined ? PauthFeat_FPACCOMBINED : PauthFeat_FPAC; --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108296; cv=none; d=zohomail.com; s=zohoarc; b=MT/E74p+Wa+CLG/u9uK2gFHjfLo2gbsPLHIUG7/zDig/CLUcQawvWTc06colYc6tDK48zE5BpJH8sx3Kgu18OgJoEz3xj2EHvDPmhUeuoL13+bS0tZazO64skTSWNpG00TehqqDCQk0q+7VxPYvmuaMv6l4kdQlnsmFU6/C+7CM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108296; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=UMFz/wTxxI7oQFZcEHYclGTYYq23TFNxjCedezj/4kg=; b=CC6o1ASFqRanbAJbCUWZXwpU3DnLHw0kqY0hCc8UBezM8nDt7qIQOEd/m5pzvEO4XINm9x9eyJs3Xxj+QYc3sju+kzZ9IfLo4MJGE97q1COQeTBnnAGCmEboonP0LKvCd94ZOHxS7c1nqoVMTEnOG9RKHLpsrQp8CYYkpGxMS+o= 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 1781108296693891.1018419444302; Wed, 10 Jun 2026 09:18:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXw-0008TR-Ur; Wed, 10 Jun 2026 12:12:53 -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 1wXLXX-0007ir-GG for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:27 -0400 Received: from mail-wr1-x430.google.com ([2a00:1450: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 1wXLXV-0005Ve-0q for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:26 -0400 Received: by mail-wr1-x430.google.com with SMTP id ffacd0b85a97d-45fd45e596cso3508154f8f.1 for ; Wed, 10 Jun 2026 09:12:24 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107943; x=1781712743; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=UMFz/wTxxI7oQFZcEHYclGTYYq23TFNxjCedezj/4kg=; b=oos2XZGFOe3VMtrm/DB9mPfZ3jZ5YgAmUowUYPKymj2MTkui1tWoK3XQmWOQawXQnU oYJsMHotoAopx7KZAOTBOyw1qgk6n2TH8/FlhP/Hv2OR3L2DV1bbWhTs4NlrCc3wVCxt SZMRwECTQFn4mHtnduorP/xC9gSI+cQb+A98w0ueZnSAdTS5xCbtuGIpemOed/JqPVpR bwGw3aX769VkY9zWiLDbOtxx/8OFRlb0tml9BD/dhFJ6Fc+ApurF7to1zef+9UDVmVaa TZBQQc6x1N9lGpPdpyUFzbMScTTYHggDh7NDgA0BsxiU4lkju5joJuKxg+pyHgW3/nvF B1RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107943; x=1781712743; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=UMFz/wTxxI7oQFZcEHYclGTYYq23TFNxjCedezj/4kg=; b=HWSm9FHUuTW385OrWdL8DQT7NVCaKQQNzHj3C2dMk7khI6j+IRw8MXyrc3zhLNGT58 UiZv+VzK+XunrbFS0Uft2B7GzcRyGzOSceMhNl9ZOG87ttquDNIwX3yU2LZvN4sw2ORW K4CgnysU8KszGAhSuMzvMVUv5diFvVtzw8+oZqlBL31yBKoPDBM3VSyAATNpE2LSdTgq wizdQx3DsMnplR5BHnulWGugCz7IgcLDzPW+bhDe92Cr6caulpz7B6PDoeYNkMOL1EVb lCSsLcd+JTkUD9+hj4yhfbQUVtmT3NtnR5EaszEjqgflCskYZXzk26MGF3tGHd5goBSk gzEQ== X-Gm-Message-State: AOJu0YwaZxUcPySYN9qPgZ8LRC0Oc2fDrd0rZXrmGsbfS8tHfohTzI8a RT6AtGMpOV/Gq3gt7wMQDYwDU2JFeaDcrG6SB9t7hvMsM1WFxRw6PBpKkbjo/xXB8IzRBZ97Z69 iTELR X-Gm-Gg: Acq92OHK5GPsgK1H3hbzC0kQ+btcgAxR3nWFeK0qEO1bIuz3gJkEgaczf4g8nEmUiNA m0VfcJN3RJTkmziPBEyw+V1czkDp4C584QOCoHaNwCZK0a8+fQaNfo77U+zI1FdK5q6zGokef42 JMkFJ+oCCq1gJzbr+n3RoFVchvWmFaBcjqM3ZBuCZxPL1Fa1CPeC6OcynTChuSWzseSbiCR9H8f eJ6D8yhtzmIM2Mj8FtaFn/8gHRsBSOUsy0vvEHY5mQzcwWaUjd8W11Alrir1c2+mCnRsk2Esrfj ZfngL93Km6gkPv3B4TfJIlbMV1D5CehDNZplSA9SS9c6ZYaRIKiAauzzBhQViUSc7WBVc5KRFGq C5kA4rav8eadxoo8XSwcNY4zrXgWim0cqNofR+PLhQ6ouRI2xQSPiYhOmP8boKOZJ+9q1RW/HmP vn13ODUmt5TMwh8uuMCt/3SrL72t9uEA2JyIksHwFq7aQEuWc751nffZHgj1TSbFGG0L4c8MadO sZ1jWW+quZPeqLEMv/sbcrFfByCoacdqnRJuPhO56g= X-Received: by 2002:a05:6000:4a09:b0:45e:779a:302c with SMTP id ffacd0b85a97d-460566c94ddmr9731723f8f.29.1781107943500; Wed, 10 Jun 2026 09:12:23 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 14/71] docs: add MTE4 features to docs Date: Wed, 10 Jun 2026 17:11:05 +0100 Message-ID: <20260610161202.2235298-15-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::430; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108298899158500 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman The implemented MTE4 features are now present in docs/system/arm/emulation.rst Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-13-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 5 +++++ target/arm/tcg/cpu64.c | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 18c6355967..df82b7f44b 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -114,6 +114,11 @@ the following architecture extensions: - FEAT_MTE3 (MTE Asymmetric Fault Handling) - FEAT_MTE_ASYM_FAULT (Memory tagging asymmetric faults) - FEAT_MTE_ASYNC (Asynchronous reporting of Tag Check Fault) +- FEAT_MTE_CANONICAL_TAGS (Canonical tag checking) +- FEAT_MTE_NO_ADDRESS_TAGS (Address tagging disabled) +- FEAT_MTE_PERM (NoTagAccess memory attribute) +- FEAT_MTE_STORE_ONLY (Store-only tag checking) +- FEAT_MTE_TAGGED_FAR (Full address reporting of Tag Check Fault) - FEAT_NMI (Non-maskable Interrupt) - FEAT_NV (Nested Virtualization) - FEAT_NV2 (Enhanced nested virtualization support) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 1a4f50486d..c7b1dd2e90 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1296,10 +1296,15 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64PFR1, CSV2_FRAC, 0); /* FEAT_CSV2_3 */ t =3D FIELD_DP64(t, ID_AA64PFR1, NMI, 1); /* FEAT_NMI */ t =3D FIELD_DP64(t, ID_AA64PFR1, GCS, 1); /* FEAT_GCS */ + /* FEAT_MTE_NO_ADDRESS_TAGS + FEAT_MTE_CANONICAL_TAGS */ + t =3D FIELD_DP64(t, ID_AA64PFR1, MTEX, 1); SET_IDREG(isar, ID_AA64PFR1, t); =20 t =3D GET_IDREG(isar, ID_AA64PFR2); t =3D FIELD_DP64(t, ID_AA64PFR2, FPMR, 1); /* FEAT_FPMR */ + t =3D FIELD_DP64(t, ID_AA64PFR2, MTEFAR, 1); /* FEAT_MTE_TAGGED_FAR= */ + t =3D FIELD_DP64(t, ID_AA64PFR2, MTESTOREONLY, 1); /* FEAT_MTE_STORE= _ONLY */ + t =3D FIELD_DP64(t, ID_AA64PFR2, MTEPERM, 1); /* FEAT_MTE_PERM */ SET_IDREG(isar, ID_AA64PFR2, t); =20 t =3D GET_IDREG(isar, ID_AA64MMFR0); --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108162; cv=none; d=zohomail.com; s=zohoarc; b=g7nZ3spHJNBWCQLBcc/Us0ylYqUTsojxbbnfS+K3l1p++RGpEwAdXuGD5yAHuhqWqiNPj3XB23MzB2HW8TuYxY95+CavgKvnxuORGFlK/g77Zhn5cTB8tPu6p4Q9623qFoNoESaEUNL9XAlqL0jJm1OiPdgj7JDC27yGLKIIvqY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108162; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=RIOhe60Csom8C5yKptAinH/iPxRN928G+lz8/fHu/oY=; b=OhUH8TLQLEMEbNdLx2ozFNI68zkVWzpBDR9ybjx4Bp3crHbPG0GP/09iW1xa1NHgMxgEZOJeMRm9X+w/N1iwrwTR1NIgBEE1cSvM4Ed/nGxehk0aolJLCRMmEzO8KPJNa5NG0fT6d4jkJhXw1lO51JnZ/g8i5lhtuk3KwzFA1fc= 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 1781108162339862.291747435359; Wed, 10 Jun 2026 09:16:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXy-0000B7-D3; Wed, 10 Jun 2026 12:12:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXY-0007k1-Qw for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:29 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1wXLXX-0005Vl-8i for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:28 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-45e9f4a3510so3530661f8f.1 for ; Wed, 10 Jun 2026 09:12:25 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107945; x=1781712745; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=RIOhe60Csom8C5yKptAinH/iPxRN928G+lz8/fHu/oY=; b=puUmk/jZ+RABdL2u+SLWSzJu/ZiFqp+h/2QXYHhuqrKwIxjGdS+8eIOvwRL/LrOqq4 jX88hhlY4m1dFhdH+bf/Xczo37PhXDMY9LnDO3Cz0T0wVtTxB90PtilVOJ+gCbVmbRgH UzWQxr9MZ2HCNNZz2zkaxmOpCyTg9ItORF/HFBQKraYl6LWanXlEGkgXeaF9xn192eUK HbDINQBRi8GU3PRYv8CvXY+rRW9rKmWlpx8QYiAfbVj54znKM52VIU9G6se7A9Q1gqtt 09K/OrSVgLtbiKpl5cnKCp1uaer1banigUuLAljOATl9jDDp35zYYlyC1NOUGBfrIOK0 i/Dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107945; x=1781712745; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=RIOhe60Csom8C5yKptAinH/iPxRN928G+lz8/fHu/oY=; b=SzYVuvbht7rgsQ6xiuYh4PJia0Xf0YAaQ2AIrx/prB0Kjt8bnO8kPm4ETxfYWF5paE QZdmqoCkLPACDgGQo0Naq56KhUVtZ9fuQgCKN4J+2ZTOEPBMiDEAnpsFcoQa54MCBvsx IrIo755931+hNZJrY0BpO4lPj4cza3XCyLTzzBO2p7MD6lcsjEiJYIvEpb5MWEzxNMwf KieFHjWhXyaSrPKe7++zIta0ouWOM0dLX4aGocGJkPSrHLBaFO69/50k8k+hF5E2CZSR P+iucF78FcEMFvntcUqoVYfdwKQEqDKPWCQOeAjSmpmxWxwGGEiFhfa65VdCLhM0NqgI zetQ== X-Gm-Message-State: AOJu0YyUupAd8tT0ZssgHxH/GXA1dUPTA7u8cUr43PRBkKYef2VQliSM buObSfQzEG37om2XYzYOpKl3j5xNYLrLWwdJP5fCunTygixVpfQ9MSOEiNVKHkkf+3j5MMFlPgR V1TYh X-Gm-Gg: Acq92OGALe6zeezttyYAlz2m32Ktg/Lru8Dimg7omzKiu53Uvt5TlrXqWJ4M/K/oBlg mevllKXbW99lLNRF+fI3xooGFofaKcwVKTiyr3miZ2hhz6QpteMCvwj33G6fjOptERv4aM7z063 Rkhjr9xyznS0zjtT88IP74FmNDUHt7pgmdmp02Xlpt+FqUkKfvLbWF0gGq3TDUnEneF35KVouLI m2LdARykR201Q1S3cVfyQa1yWRQtpnkiI6eIydjHiaP4EH4zWq5DuJwzipBGK/ioLYhpjt/GaEb EIPNsRUWjmdAGoBrFnNSSvIETSZ0oNQyd/ujCIk6cOP77wUHclcYx3B9oLChxAoBNFY7RP7aDT+ QxD7VqErDaIIgZc+5MrO9H0+IL2gk7HQPA8mOxU9BEzEp5FQc8lhT24YCwRUqK4SzDSiIrI98fd AAA2z9DZUMzix7vkq8VBbH7xz/Vu4Y1phxKZv2ONvRxd5bu+uylp197uq6udxXJawe8IdvI2U/R 9raV7XPk8suHzPbTy+qHzcA4oMhmam161i4A3cKBugEblSdpuse6w== X-Received: by 2002:a05:6000:1861:b0:460:3234:77d3 with SMTP id ffacd0b85a97d-4603234789emr38498424f8f.41.1781107944597; Wed, 10 Jun 2026 09:12:24 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 15/71] tests/tcg: add test for MTE FAR Date: Wed, 10 Jun 2026 17:11:06 +0100 Message-ID: <20260610161202.2235298-16-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108163818158501 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman This functionality was previously enabled but not advertised or tested. This commit adds a new test, mte-9, that tests the code for proper full-address reporting. FEAT_MTE_TAGGED_FAR requires that FAR_ELx report the full logical address, including tag bits. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-14-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- tests/tcg/aarch64/Makefile.target | 2 +- tests/tcg/aarch64/mte-9.c | 48 +++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 tests/tcg/aarch64/mte-9.c diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile= .target index 9fa8687453..b491cfb5e1 100644 --- a/tests/tcg/aarch64/Makefile.target +++ b/tests/tcg/aarch64/Makefile.target @@ -64,7 +64,7 @@ AARCH64_TESTS +=3D bti-2 =20 # MTE Tests ifneq ($(CROSS_CC_HAS_ARMV8_MTE),) -AARCH64_TESTS +=3D mte-1 mte-2 mte-3 mte-4 mte-5 mte-6 mte-7 mte-8 +AARCH64_TESTS +=3D mte-1 mte-2 mte-3 mte-4 mte-5 mte-6 mte-7 mte-8 mte-9 mte-%: CFLAGS +=3D $(CROSS_CC_HAS_ARMV8_MTE) endif =20 diff --git a/tests/tcg/aarch64/mte-9.c b/tests/tcg/aarch64/mte-9.c new file mode 100644 index 0000000000..9626a90c13 --- /dev/null +++ b/tests/tcg/aarch64/mte-9.c @@ -0,0 +1,48 @@ +/* + * Memory tagging, full-address reporting. + * + * Copyright (c) 2021 Linaro Ltd + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "mte.h" + +static void *faulting_ptr; + +void pass(int sig, siginfo_t *info, void *uc) +{ + assert(faulting_ptr =3D=3D info->si_addr); + exit(0); +} + +int main(int ac, char **av) +{ + struct sigaction sa; + int *p0, *p1, *p2; + long excl =3D 1; + + enable_mte(PR_MTE_TCF_SYNC); + p0 =3D alloc_mte_mem(sizeof(*p0)); + + /* Create two differently tagged pointers. */ + asm("irg %0,%1,%2" : "=3Dr"(p1) : "r"(p0), "r"(excl)); + asm("gmi %0,%1,%0" : "+r"(excl) : "r" (p1)); + assert(excl !=3D 1); + asm("irg %0,%1,%2" : "=3Dr"(p2) : "r"(p0), "r"(excl)); + assert(p1 !=3D p2); + + /* Store the tag from the first pointer. */ + asm("stg %0, [%0]" : : "r"(p1)); + + *p1 =3D 0; + + memset(&sa, 0, sizeof(sa)); + sa.sa_sigaction =3D pass; + sa.sa_flags =3D SA_SIGINFO; + sigaction(SIGSEGV, &sa, NULL); + + faulting_ptr =3D p2; + *p2 =3D 0; + + abort(); +} --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781107991; cv=none; d=zohomail.com; s=zohoarc; b=QiBPa3ojs/dWVafMiBCzGdSHg14zG371u2aJkrDnKrlVlS0ZfLqvNU0ELD639Dmt6Jdv224pBXFKMUkK4MXoWFbKA/6EN9ltBnfjMl6qUD/5JeHij6X6Rj4mj0LqEdhjSh6qsTvxzX7XCq2FAOrVK1HLU7ecjsPRPGl3EeImt2U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781107991; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=4uGAVZ/Kxewos7hP6gbWmF3IZw8G3tTldc9FPXvLwic=; b=lo1SQvJ/YqMCCBkocyLukrXg05X/y5DUqO2yx5TGH9uFV/+xKC4jEMtb7ZqSZBe273YrT9LJkrxoAKISDVvxLiNSMlepRpHFzpVaTWoZ/TUNXJ3l00+bFbCdDjfvQ35sH5NYPqKBDMiKSpok1DVpgXuRLOWVANeRcKleOSIdBSo= 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 1781107991625992.4734107630446; Wed, 10 Jun 2026 09:13:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXs-00084j-8U; Wed, 10 Jun 2026 12:12:48 -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 1wXLXZ-0007kh-Tt for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:31 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1wXLXX-0005Vv-Le for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:29 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-45ef1198766so22254f8f.0 for ; Wed, 10 Jun 2026 09:12:27 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107946; x=1781712746; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=4uGAVZ/Kxewos7hP6gbWmF3IZw8G3tTldc9FPXvLwic=; b=Msqo60wlLZJkii3lRo2URmkldNgwDBJDbqFcWDa9zImkLmBuguMAaUtnYFp31MTAOi hnHWUCoMNXBVOZ6g8f4S79BtYuZgUmEABW6DCBY0wjRs87zR3L5OM+GFlka7E/El3VJu tAcWy3qPow3E+tdbgbm+PyiMtzVHyp2kw4txoYmp/isGDsF9junpdeHEfD+N31G+PuNZ Sng0AP+b2rZorGgBeG5yARFClULnyf+wFJ1f9J4mfffdfC9dr3ys14hgxyy3QRjLLfUe HbRlXozci1cvqm+9Ia/pPx4jrCXy2CZhd/LEZ1Rjh2X8IOR9AIwdznyDal7aSJkEQH2b v1Pw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107946; x=1781712746; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=4uGAVZ/Kxewos7hP6gbWmF3IZw8G3tTldc9FPXvLwic=; b=RzvZHcA+8ua7I+QFr/KQgu2tzZBlMYykkznQX+/vGfUd3TmefxArdj6iyK4iMCUUy9 WQd3YgLiKHRk8M25rQfTihvrQ6LBEdptVHGDlxSTR65rz3a/Ue3dG/VgIBq7dfmlAvlA rqv8RYTVGNs+U4wVGmCDlTG5qiqey3362Z3NHucDIPJu6pceT8PLW5gPcgzb88VleGOS su85KFfifbpKJdO/DsIhj9CPAJXEAHrBcXaMf5SBeOZwRnmq2mLt55/kwuUzB8iDYFS4 QIGWB+NE+6cucwGyYXIdnusaMR2FHByOdA66A2GOLGgFOxya/mrRqcoH5YH/ZXhREqTd jP5g== X-Gm-Message-State: AOJu0YyKryewJJ8DReJt+orEYg6lp94/BJaYNPJX5PuzXL0zFtU6PmSQ 4eVG8MWGXf+U6+rmcConTpP8TB5kwpcXtDlpiHw7CkkgCVN1HCsocyF4dm//9H7DboYeu8Elndm +dzv8 X-Gm-Gg: Acq92OFZTwNxFNcYZoZh8GCgfAWLeS6dtqhQfYpJQ75GoaYISbWPCGWwtrdpwhXu4V/ MVw3To9eyN1ba3xHnyRTlSG1zNMWyPGy1hZkA0c5h+T8GpA3rBVNoLol9rgey/cYtvcO7BhvxL/ TpKDLFYZGN+KacsPeUTjuVWxXVQJS9jZEBNEd65VMyttKJR70fVo5SDY3uDI3qcufRFSaK7NP9L UTB7sESXj1ugvEhc/vMY9TBYIzQVW22zBRJP41xu4Ini7CA4jslDj+294mq/3PpNQfg8ZzDuE/o t4x+21lBJeGdTF1RF4EE6OepERwO9tZvZilQqZEmD9cAxJK9oZ5Ffn0S4WufK1AjWjdLCbLI2Ui h3gPWaiIcHh/b5Eq8j2La/UExmXUjliL6mFcG8Nsr3ZQt8lypUp5z7oWRttd1+1IheL5udI2OKe 4r+wfCzhpa0XcDgWV3GEStTWF9InnUz+8EIHKoaAD9A7yPwZoi4WX+lMhR8NVZC45S/gQcgDjKo mua5EmDSnbLfFeRk+iOnGMDFnyM5BhPe50nLd7N0is= X-Received: by 2002:a05:6000:220f:b0:45e:8526:7dcb with SMTP id ffacd0b85a97d-46032b7355amr36197238f8f.7.1781107946228; Wed, 10 Jun 2026 09:12:26 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 16/71] tests/tcg: add test for MTE_STORE_ONLY Date: Wed, 10 Jun 2026 17:11:07 +0100 Message-ID: <20260610161202.2235298-17-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781107992607158500 Content-Type: text/plain; charset="utf-8" From: Gabriel Brookman Added a test that checks that MTE checks are not performed on loads when MTE_STORE_ONLY is enabled. Signed-off-by: Gabriel Brookman Reviewed-by: Richard Henderson Message-id: 20260529-feat-mte4-v7-15-ccbd3c14eb3c@gmail.com Signed-off-by: Peter Maydell --- tests/tcg/aarch64/Makefile.target | 2 +- tests/tcg/aarch64/mte-10.c | 49 +++++++++++++++++++++++++++++++ tests/tcg/aarch64/mte.h | 4 +-- 3 files changed, 52 insertions(+), 3 deletions(-) create mode 100644 tests/tcg/aarch64/mte-10.c diff --git a/tests/tcg/aarch64/Makefile.target b/tests/tcg/aarch64/Makefile= .target index b491cfb5e1..6203ac9b51 100644 --- a/tests/tcg/aarch64/Makefile.target +++ b/tests/tcg/aarch64/Makefile.target @@ -64,7 +64,7 @@ AARCH64_TESTS +=3D bti-2 =20 # MTE Tests ifneq ($(CROSS_CC_HAS_ARMV8_MTE),) -AARCH64_TESTS +=3D mte-1 mte-2 mte-3 mte-4 mte-5 mte-6 mte-7 mte-8 mte-9 +AARCH64_TESTS +=3D mte-1 mte-2 mte-3 mte-4 mte-5 mte-6 mte-7 mte-8 mte-9 m= te-10 mte-%: CFLAGS +=3D $(CROSS_CC_HAS_ARMV8_MTE) endif =20 diff --git a/tests/tcg/aarch64/mte-10.c b/tests/tcg/aarch64/mte-10.c new file mode 100644 index 0000000000..46d26fe97f --- /dev/null +++ b/tests/tcg/aarch64/mte-10.c @@ -0,0 +1,49 @@ +/* + * Memory tagging, write-only tag checking + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "mte.h" + +void pass(int sig, siginfo_t *info, void *uc) +{ + exit(0); +} + +int main(int ac, char **av) +{ + struct sigaction sa; + int *p0, *p1, *p2; + long excl =3D 1; + + enable_mte(PR_MTE_TCF_SYNC | PR_MTE_STORE_ONLY); + p0 =3D alloc_mte_mem(sizeof(*p0)); + + /* Create two differently tagged pointers. */ + asm("irg %0,%1,%2" : "=3Dr"(p1) : "r"(p0), "r"(excl)); + asm("gmi %0,%1,%0" : "+r"(excl) : "r" (p1)); + assert(excl !=3D 1); + asm("irg %0,%1,%2" : "=3Dr"(p2) : "r"(p0), "r"(excl)); + assert(p1 !=3D p2); + + /* Store the tag from the first pointer. */ + asm("stg %0, [%0]" : : "r"(p1)); + + /* + * We write to p1 (stg above makes this check pass) and read from + * p2 (improperly tagged, but since it's a read, we don't care). + */ + *p1 =3D *p2; + + /* enable handler */ + memset(&sa, 0, sizeof(sa)); + sa.sa_sigaction =3D pass; + sa.sa_flags =3D SA_SIGINFO; + sigaction(SIGSEGV, &sa, NULL); + + /* now we write to badly tagged p2, should fault. */ + *p2 =3D 0; + + abort(); +} diff --git a/tests/tcg/aarch64/mte.h b/tests/tcg/aarch64/mte.h index 17b932f3f1..7093b93dc7 100644 --- a/tests/tcg/aarch64/mte.h +++ b/tests/tcg/aarch64/mte.h @@ -40,10 +40,10 @@ # define SEGV_MTESERR 9 #endif =20 -static void enable_mte(int tcf) +static void enable_mte(int flags) { int r =3D prctl(PR_SET_TAGGED_ADDR_CTRL, - PR_TAGGED_ADDR_ENABLE | tcf | (0xfffe << PR_MTE_TAG_SHIF= T), + PR_TAGGED_ADDR_ENABLE | flags | (0xfffe << PR_MTE_TAG_SH= IFT), 0, 0, 0); if (r < 0) { perror("PR_SET_TAGGED_ADDR_CTRL"); --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108542; cv=none; d=zohomail.com; s=zohoarc; b=g1gce5brBMm1AKyzOgoybqI2924cq1nPTbGENqEispbnoFosG9Fmzda7Xd6H8I+FXnFGXjuIfqq/1gaICQYoa2d/BQwL9wjptoDnToc6flhkx6Y768h6BsZXTQZ5wLFASaEgsjDeaWDSWrPE9E0hbSyGeFImU6gKry21LXv9Ybw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108542; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=YtZV5xmB1eK7d5I6gu73vHS8Io1YEt6tDLylGTFsGcY=; b=mwlVlFXjawsHrdGP21xTVbENeMgMX8U/KwmqqLeaoq4li6ZK53MYNAdzvd7qELFNCWMv8DPt4qnCdy03o5sn+1eWu8AuGBfZT13kXCk86q2y34U228Mk0k/VQWWP4V2puUKJobxXb50SdC00LpPPfoKBCtTPwQnex/XFGO+0GXg= 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 1781108542300443.59462108695095; Wed, 10 Jun 2026 09:22:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY6-0001Hk-LE; Wed, 10 Jun 2026 12:13:02 -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 1wXLXa-0007mI-JH for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:33 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1wXLXY-0005W5-VG for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:30 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-45e9f4a3510so3530694f8f.1 for ; Wed, 10 Jun 2026 09:12:28 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107947; x=1781712747; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=YtZV5xmB1eK7d5I6gu73vHS8Io1YEt6tDLylGTFsGcY=; b=KI8wRZTq3j4/HamXB3EuVOasVUKgi5rQ6u0rfwPLN/w2qzfHeHHbSenqrI8LI88Ddn YQlkZapBcfYWVckFOsLzbD0QWJNO73X9IPCkg88kiar7MMpRZ07yWhvIqzwqX9KlbJRG VUEQlO9X+8GKrM+mlUYFipWiv6pUFNZYnmjDqB+V7Tc87Q69tjUkDW34f0al6/MfilA6 kxyOt5s7ZNJEEm4xbOWFiG4B/eN7c6/PAi0au4Y0Kh91355HtEA+/NxMLz2b2AJOv1oq xtTXHQ44OiHMDj/tPCKDWMnz3HLc//YjRZvAs7rJEBn/v4X77A9SKgdrZKdcFE5UqIs2 d4Rw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107947; x=1781712747; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=YtZV5xmB1eK7d5I6gu73vHS8Io1YEt6tDLylGTFsGcY=; b=WmBUEgNm5Pcc8pIWH6BqyW1L1mqUeyDB54XQbFGTp2IGTTSqFtkBqzXwRE5Xiu4hHz 5uxjIAHXdKfyhhsUMdNi6H1aoZUfTukNdzqdYlAWwkMK42WvIXlc8wOlSn3M41vBBgdw RAe764pXhYM50sR+0vLnJoHw9dRyzkMAu2jb/OW1yR8Ye/UTzTpI2P/0rDGirDNCHnHo vMR4rwvPEZenC1xi6VfGUk5bYo0Be6c+n1+IwIGYdawjQXsO6dLdOdnoxAgZioa4VnuI fvuzwqq2l6DaaJ3VLGlnopwqzWe7G6rDsBqigntLosa1LHMKN5GHeBnYYK9uGot3psR5 LvSQ== X-Gm-Message-State: AOJu0Yy3+L4EylH33SI8Wt5xQmaWAZ3Ca5WRD/LsqZU+QwC9oIFUY1IW bHvO1moTltWBNqkAhygCVVWL+R9OaE8ejbFoUfzeLdR9puEDLw4xS8hPQCPp55E+iAHR3ffTHPd YP3F1 X-Gm-Gg: Acq92OFn4pMHvrTow2kgS2+RbezZ/Dc4jUBXArgXrbuevy5drFbIjsH9ipldeRgKXyQ QylTCdN+yq159tevyldqrgy/8sFuCxBqg6JIzzpjDXlqnvrjUesUChyjpqwV44TULuV6wJ315k6 OTxz1KmgPG3ZvD0+WLaEeZexxQL+Q/HcIGYQeuoeBfCPa3jSUW6DIaOGEkZ2t60EsFhteDhmN1c AMP/pxRpFetyDg4ZCuUUfSIw2NQc1oMblRYi5rCrs+Qcjp9MmB86iTUtWqbvFng12uWBqQYbPpT zzqTkC9L6UWe2dgmSbexR9u5KNOE85c+WscjygT1y4ldcMBiHZmj7Qikui+Elp/yu2KdIxGS7M9 2AfZK8Ktffme7FabSZqLMIxnmJAz98bUnYvlyRsOQI6gxlTPtSL78tezYdFOyReO8O0gmqOMgpJ LFrnQGr5yvksAp4+4BjLJEtUKGBlMkFHOHbSAEK1rthV1p9LoZZ//IsDp6ppLegdlIitS+IkUbB fY1srk484KiNgSaIm22usOo1aQgI1tv1Ev8rH7qOybqFSj+ZX/9BA== X-Received: by 2002:a05:600c:c16f:b0:490:b8e6:be40 with SMTP id 5b1f17b1804b1-490c25fc0d5mr411422455e9.21.1781107947594; Wed, 10 Jun 2026 09:12:27 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 17/71] hw/usb/hcd-ohci: Assert isochronous TDs are never deferred Date: Wed, 10 Jun 2026 17:11:08 +0100 Message-ID: <20260610161202.2235298-18-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108543365154100 Content-Type: text/plain; charset="utf-8" From: Munkhbaatar Enkhbaatar Suggested-by: Peter Maydell Signed-off-by: Munkhbaatar Enkhbaatar Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/usb/hcd-ohci.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index 6ed8046fc2..8f4de0066e 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -746,11 +746,10 @@ static int ohci_service_iso_td(OHCIState *ohci, struc= t ohci_ed *ed) usb_packet_setup(pkt, pid, ep, 0, addr, false, int_req); usb_packet_addbuf(pkt, buf, len); usb_handle_packet(dev, pkt); - if (pkt->status =3D=3D USB_RET_ASYNC) { - usb_device_flush_ep_queue(dev, ep); - g_free(pkt); - return 1; - } + + /* The USB core guarantees to never defer ISO TDs. */ + assert(pkt->status !=3D USB_RET_ASYNC); + if (pkt->status =3D=3D USB_RET_SUCCESS) { ret =3D pkt->actual_length; } else { --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108526; cv=none; d=zohomail.com; s=zohoarc; b=YeyFVZRVvzlASm1oKJfjqFK4Aprcn7TIXqRkwB2a596zfPCGRlDJ/qSj7iLMlRYW/fah3F06uAos/QQtsE1uZ1huApz93lMb4n/+N403zbMnBZs0sSr4/gyH5zoSOAMuW3Qnt8lbvaVIwWsJCrQUMKIDEKNcURr98KGY+SKT98g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108526; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=GZKxoyMSnbKsvfb5DvITG7DMsLNBYfuh4Rm0/Eix71Q=; b=cYLMl6q1kHN5fBvw5bAlRSoY0NnU0QuH8s0Ybv95cISV6yYGgtEImUPxMpbYYywe0Y6yLWAiFsudM7q3HQCQyA4TuSNij3GhsMWBca0GHowtmPi7LazzoFfb3jnfDE4JHOc6ME+0y3OCEmofADH6L13OfX9sAK+1jpelqmumCJU= 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 1781108526114900.1219633132367; Wed, 10 Jun 2026 09:22:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY6-0001K6-TI; Wed, 10 Jun 2026 12:13:02 -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 1wXLXc-0007qG-0Q for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:33 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450: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 1wXLXa-0005WQ-B2 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:31 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-45ef56d9b67so5457472f8f.2 for ; Wed, 10 Jun 2026 09:12:29 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107949; x=1781712749; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=GZKxoyMSnbKsvfb5DvITG7DMsLNBYfuh4Rm0/Eix71Q=; b=B387Fdj/8e7jwpLEn+KBqMiybkNpJm1K4IsmvGVk/fcA9yxCWGTagNr7oQIWHYOkhG GfgEWl6M8bvYFU3lPfsqwTmZKtCOhVtlX6XKpGtxsktOeTVrm2PtO/kJ/Ybpxhwwt71z 4JducUc078Os//D4GXpa3W6TcD0wCbzEop3JUEpYsCwOs9KZ41zt/LGqZlHJHzcICBSH f3KH5WNSY08iLViDwxQdHncdh6EcAGCja8YpkNQzTDMhm/kqa3hqL1m/xhaf/ploiTwi Zht7CMWH9YMlulgvqJ20EE5yjDyBBjiQ/lnQntBzhGrRYuI9J3dQLWOkAjfhi7ios5y4 C+FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107949; x=1781712749; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=GZKxoyMSnbKsvfb5DvITG7DMsLNBYfuh4Rm0/Eix71Q=; b=NQBFNJca21tHQ8//t+qgHTBywfWrmJxU9ZhrhlBjU1tYDJ81Pi4xvjFC/mihWinkNo DWp8g8Jd73o7Xy0Sdi417AAjNVAqcuskbQ6toxwT765/Fr4oTs7dIBbv2AuinuY/vzrk RAiVayE07mjK40sH44KmDkgYApUCqekRhQggcpftTzzX+QXV+8mgTqV1qXJ3RH3QUEu1 rykioJFJPy0tOzuM25422O2xVjfcDKPDbjZOVVnLa5fcI+eZyo6fpulGrfxqgskuP89j itw5HRD7UxGdWivYNwyOyc3m+T/rQ+9AXp0tSIAjtfOvWwz6JSyZfWVt+YQ0etHNDSsq h6GA== X-Gm-Message-State: AOJu0Yy5BwXEOM0By9BNBBk5YIMVS1hbm5Tsrz91gz0DW8x60LP3f8cN +4JsmGN0qfF6Gq1vae6oDfO24AlCejFgQZEycmroRgP+Tl+7+JUM4QrVF0f1bg06QEbwGGeYZR1 88380 X-Gm-Gg: Acq92OE7VmYnFvDHCONHcogCsLfNvZmqYk4jAKzxZdbnEvzuWk1/vVzoAcwIqjNrnno 74bU7scWjl6ToYC1iH18Wxpcq1D4tqU/3So+iG3+Fph1L/atiVIiQvJ/GR6xQQBZ04SKGPFlbCQ gUdb4Q0XTJB0PStngNWJ0cxK9Oc2NmgS2qrt5ifeO4D6MNR+FLiOm5LhUWH1supYZh8DJQQp6Wa RMiz52a8YMS6oEhve+84y+/6VQVYWGV7fEqn3VQyIUrnNl5RzuKZk3SbdOYm/zofk3z8SJEwcAc jHjiZFLLoghZuQ1du8iHKTNrdxPzfw1Q1v3gMAOLqC7QcTBOxsNiLRzhxMLmSwpQRbbdJDFZKCf zUJrSylwiIJ7AL1j22bbpeBJlud0wXm838lNxeROWwrctOBqeczr/ChuUaA/w5afQpYLt3gag0x KiPjD6mjSJ+7hhXhn0YmJTPLmu+7IZZ1V/00MaSgqqgCKle4i8QplWE5KF4MPn9pQZa+4RbVNnd Wm/MEWIu0drfylKKN2+OWFdTP8fftj/nq/A0Ssg7ys= X-Received: by 2002:a05:6000:15d2:b0:45e:f228:830d with SMTP id ffacd0b85a97d-460305061f8mr25792069f8f.23.1781107948644; Wed, 10 Jun 2026 09:12:28 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 18/71] hw/usb/hcd-ohci: Clean up USBPacket before freeing ISO TD packet Date: Wed, 10 Jun 2026 17:11:09 +0100 Message-ID: <20260610161202.2235298-19-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108526889154100 Content-Type: text/plain; charset="utf-8" From: Munkhbaatar Enkhbaatar ohci_service_iso_td() allocates a USBPacket and frees it after synchronous completion, but it does not call usb_packet_cleanup() first. Call usb_packet_cleanup() before g_free() so resources owned by USBPacket are released. Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3463 Signed-off-by: Munkhbaatar Enkhbaatar Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- hw/usb/hcd-ohci.c | 1 + 1 file changed, 1 insertion(+) diff --git a/hw/usb/hcd-ohci.c b/hw/usb/hcd-ohci.c index 8f4de0066e..40ebafb4dd 100644 --- a/hw/usb/hcd-ohci.c +++ b/hw/usb/hcd-ohci.c @@ -755,6 +755,7 @@ static int ohci_service_iso_td(OHCIState *ohci, struct = ohci_ed *ed) } else { ret =3D pkt->status; } + usb_packet_cleanup(pkt); g_free(pkt); =20 trace_usb_ohci_iso_td_so(start_offset, end_offset, start_addr, end_add= r, --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108321; cv=none; d=zohomail.com; s=zohoarc; b=G2SldHoSFaG5UlKY9NoEyKPKTMQT8zjx+bBkEosY7By3FI35SE8xM/9cEj0ngTbjU7ujjJjJuA+hPXqKB22sRsCzQCqAiYqssxAH5SURz0rgvIHlBwHrnZH8xASIaMbN8N5HnYLfV5NUF7JhxxQ1PXzGEPXtWcR2XMGe2/DGxoY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108321; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=LsRjLFUmJ1hcQBJiBCZFfEsHuHktB8bgTf+/mpgAy+o=; b=WussoHfWts5/n7R8yho7sXXbbyTadmIokCbmAJogDvXokiWCs+jLcM1M+eTTEGY/44fle1BRyl9xahDPDVOhzBUFuXirKVM/+iRj5Z/n4D+xBJnItKNkdB/I/IUolSjCwA+6/bhTbwMpUmdNnp707X5UNUBD3yZ8aKRoVWdMAxE= 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 17811083210811018.5858737853996; Wed, 10 Jun 2026 09:18:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXx-0008Tz-3D; Wed, 10 Jun 2026 12:12:53 -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 1wXLXc-0007xB-TU for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:33 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXb-0005Wl-7v for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:32 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-490b613a17bso68569795e9.3 for ; Wed, 10 Jun 2026 09:12:30 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107950; x=1781712750; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=LsRjLFUmJ1hcQBJiBCZFfEsHuHktB8bgTf+/mpgAy+o=; b=DWEpHSzuywQavbqmZHG7NcW26AADNp4LpYRlYsf3Qn7H2CioNrGQdwSj3YvDxkYWj9 LTmf303cd//U/5rSLUgKTjAEmOAhkmNbEoNcn+agIjnMxrVoIH6ix+EcMEdU5rMR0HSV PIczCiPYAAS18KHPqeg3rfnhQoMOjSHHdrXDTqyhmv/CSN0ird8Br8AYs+dmcqO+bLHe GnM7GtU3qZAgbV+U5pC8MoaTQQJY9rkPHaOmd7G9HhaQNaiDoomnPuU2gs9CrL5gO6xc xT+taxQAm8fwWvJWpnKk1qEHt3kIJl5P0e4fLhly23FVkP7AKjRRxtm6PMzkDb9QmrMi 17Gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107950; x=1781712750; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=LsRjLFUmJ1hcQBJiBCZFfEsHuHktB8bgTf+/mpgAy+o=; b=tJ9rkMQSx3aKnguLvwQ8ysXpZif4aYMc7GsDWex+Pz0Iv9HcGAzkii5fIgNMYAcXFp xugqLbw8u5aCGxciD+gu0rBaadM+Pn22BTeAZswVHVHsSR+S7PF8YpGF/5SWf5hmGhrd 3xznM7cfLw05ZEEow8K/hWz+B8Pr/0qh8YHeGXgu6nxVmuNRvb1dkadLmHoDg5qo5DKu AVBuuJ9RT06nWaj1lojHho6XIxdasqueyhRJ2Pi7oA8Se6sXM4d/4kCNNTEfZEVll9d0 FJHhl7P4iQ2mwUFGvK0A/6ByKTq1fRpAnjmRKst9/1cmZzTO+j9EnvepVf5dFdico7gF ntXw== X-Gm-Message-State: AOJu0YxZQqhVA7w3/MfDCAPRTLlSGs3+pSlWjSethY16aTxNw3z5uO3h Bg5XJADiiDezLc9vHU9y49lqDo0vuX4HIfZz4JxcyNWBnfGzRoJMltAZjdd1j3zXi8gPh+SVBL2 5bXV/ X-Gm-Gg: Acq92OGmbZyivY/TPiDDgDx+q4xpNU8ygDnW0YMB0+W92fqAEO3+mn1aXRxBULflHCr naN03NbyVUXQGnIDbSfd61SDcNJavXAnhncn1OnQ2BRp0whyAqNvYiraukDwz2vRPGJ6OBDLRFd rE5UjO9WXTPIguvHvnOWU3cZsZk8xZ3/Nmo78EkZOM05rsFcnrWXZTewfblh/HPyJLtwykC5k8s g44UXE0LCyOfP+wxAPjpdKd8YOi50kJcwD5tCjfzGsULpslWSkXei+xQkbor+ZlQV+7YvBDJSdX sEyfX0B0L57MUcaw9m+NGp1xBXIk/Ih3tGZ/nVHikdCk7TUfQdvRvZGAVk3CzXL+tB7kenn39ve GDc1RgsESJRAXrKNqBX2oE9Ko/Cdc2sKesruUKfTdWAWBMSqxpN0dThe2CKnyFyTKSHWdrAeOGi Uchy8fennpvX+SHADStvdAUySB3lhfdBj54XWeEUDmc6QR2jfXf1IHe0ETKTPDwRAtvAzvttA1N PNRmoTF4ErFU4I5ZOL2b5Re7uSwMIQ/s+O8LZOjUz8= X-Received: by 2002:a05:600c:190f:b0:490:53d3:47a9 with SMTP id 5b1f17b1804b1-490d71ecc8bmr108641265e9.3.1781107949731; Wed, 10 Jun 2026 09:12:29 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 19/71] target/arm: fix WFET typo in syndrome Date: Wed, 10 Jun 2026 17:11:10 +0100 Message-ID: <20260610161202.2235298-20-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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: 1781108321576154100 From: Alex Benn=C3=A9e A stray x slipped in and we didn't notice! Fortunately we haven't implemented WFET yet so nothing is affected. But we are about to so lets fix it. Fixes: 4575da5ecb7 (target/arm: report register in WFIT syndromes) Reviewed-by: Richard Henderson Signed-off-by: Alex Benn=C3=A9e Message-id: 20260529082948.363931-2-alex.bennee@linaro.org Signed-off-by: Peter Maydell --- target/arm/syndrome.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/target/arm/syndrome.h b/target/arm/syndrome.h index 4d1f1c529e..0eb54c15ce 100644 --- a/target/arm/syndrome.h +++ b/target/arm/syndrome.h @@ -674,7 +674,7 @@ typedef enum { WFI =3D 0b00, WFE =3D 0b01, WFIT =3D 0b10, - WFET =3D 0xb11 + WFET =3D 0b11 } wfx_ti; =20 static inline uint32_t syn_wfx(int cv, int cond, int rn, bool rv, wfx_ti t= i, bool is_16bit) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108602; cv=none; d=zohomail.com; s=zohoarc; b=KgTUPtEzM+6BkHGkDha3oHY5hfq4j+GSJ8CLNM0tUCnDiuIB68FwMgGHNyaXYLve0cdin3rIxRWqwSKXE4KL54dsiUxAIz5bVHCt/Qa6ZA2SRNcgmLUJ160NZXlLZXjclcsdBOwgonwqtjkgJI+TYNG/y3wSXS6hSS/qqxmH90U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108602; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=VvM8xCSlh7vjTts6V3IXM9KRwLBfPW5iUjLSNHCo+yU=; b=APjUbHWQQ/EtenW4mTy+2oMy6U57Tft93H4JPz6VQoBE/nYR6fM+TQQSwRi1tuvYBJTomlgIJ/SLXuu18Tm8u7I0djWmEIJOYZq/QITVPihE6F75RxEJDXrO19Ym/lQTjcACDj6HTCBds7lWg3PyBIUjN7+LxNolLzI0Y/CIxyU= 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 1781108602137950.0886007932719; Wed, 10 Jun 2026 09:23:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY7-0001Vl-RV; Wed, 10 Jun 2026 12:13:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXe-0007xa-SV for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:38 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXc-0005XI-L2 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:34 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-45eec22fab7so3608269f8f.3 for ; Wed, 10 Jun 2026 09:12:32 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107951; x=1781712751; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=VvM8xCSlh7vjTts6V3IXM9KRwLBfPW5iUjLSNHCo+yU=; b=i6ZuNjF7rgHwq0riQLFCEwsCAqLYm2MPTQNghDn0c/Hr0gVv4uLihGdIMmU7LMW/ec /mQKdDJ7dvYFKvJEns+Y+J1jJsKTkIdyDrMBYsSQpTAQtqMT48oT7Zx+gtMdZT1daXHK vTLVtg3VjU1AUcbDc5DEiwY0nc+tUbW++weoZ8uRaD13EemEtjSKmjqq7dJ2vm7UZ5qe 14lAtWoISgjgnhbYrTSodv5Gcbz5UVm7KyMRi3P/UPSkHqpBg7N/haCfTf9GKhJ95XQ+ fGfhF5XPV3ExHrnpxeI83pGIjHwli5LBivD6LcNs8mPsA80Q6Cf3RA4VE4CfeHnZ2PhL 9qrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107951; x=1781712751; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=VvM8xCSlh7vjTts6V3IXM9KRwLBfPW5iUjLSNHCo+yU=; b=IuoYOOho9ddfVXrPO3Ov7uwuhte8W7g+K9aBNb23DTRfbquTpPt0l6v45k0aua9iDM p7ZyDfL2H6aRJnTaOjKbMKJoOYLw5qSijMHw91l+LSBlR0TOrKxOx1QzKocEOrL842NR lyCFKFqJeKDO2VezdCn8yNMy/0OeqR8aWsqRwSwPUVVR5f1uo3NN5eYUn5zmjSvHMCjc OSs/rw0F9VKQFLtV7Odzttl1CIup9EcQmAmas538xRAt1VgtSBEhBsOWKJbzO3q/7ELf Dzxgjy2SQxI9U3vY5qOAiGOSvlgNOzsA5iF1MlxQVONWb2eLlXx17ULf53+p7ZXF3v57 470Q== X-Gm-Message-State: AOJu0Yw3EJ+O6jxW6u0VafbcdclUlbhyhvK8zy7khgyCmEwCXBLGHiFA nFpvp/P5hipv1DEzBjYMh5aakUCLEgcZDIU7+QXGu+uFn9mQjH4Xn2ibXRTNAzpCT2FQaowbzZX 0cgFG X-Gm-Gg: Acq92OEUYX4kKAU608PFUlY9KnsC7xx8QA/5ejCEBZDZ0ETPzEsxUN84Uwo+WMck5p8 W6wnp9BoX0MIZOi4xC9x+7PYlacoSUsmfSAcLt3+1XkgnKMxjmFabW+iXfpMOnduSkJ1Y0OM5X9 b3D5wba/VvLcAMWXNan6RsZSyYExyXjWJfcfp1HU32B/wQnDyaNz0iG54vb/blD1bGOOPgjrLpF NLdlTKLQmIiiTWBn7+MQCCUM48Brv97l1mwLqDq5474c4iv9mo4IchqwmKiINJ8dZFhXW/wTNKX 3V6bBYPpR87up2iv78sXxPQzWTBAbYqATOeD6oSTm8MIl4MfdOKkE803Jh2wGD5T+FwDwWgsD9o DU04dfVR/N5k/XLj9bw8+7u9FZUEPDhzBk4aEFyGHI1FIMqwZ/tcHg7/leTU+l9/aNoN0CPbQUL esfmrNamCxe3tebK/MFJxK6GLHScEPLgTdoAsUF+5PQiiujx5raH9rWqmXD5hYo8pyXOy5ka8lf E8BsHasDJu8fxcgCuj2SuzdUz3jzHAMa2MeAN0xyE8= X-Received: by 2002:a05:6000:4609:b0:460:3234:4472 with SMTP id ffacd0b85a97d-460323444d8mr35916551f8f.40.1781107950917; Wed, 10 Jun 2026 09:12:30 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 20/71] target/arm: teach arm_cpu_has_work about halting reasons Date: Wed, 10 Jun 2026 17:11:11 +0100 Message-ID: <20260610161202.2235298-21-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x431.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781108603293158500 From: Alex Benn=C3=A9e With the advent of WFE and WFI we need to pay closer attention to the reason why the vCPU may be sleeping to figure out if we should wake it up. Create env->halt_reason to track this and then re-order the tests so we: - ignore everything is the vCPU is powered off - wake up if the event_register is set and we were in a WFE - otherwise any IRQ event does wake the vCPU up. Reviewed-by: Richard Henderson Signed-off-by: Alex Benn=C3=A9e Message-id: 20260529082948.363931-3-alex.bennee@linaro.org Signed-off-by: Peter Maydell --- target/arm/arm-powerctl.c | 6 +++--- target/arm/cpu.c | 40 +++++++++++++++++++++++++++----------- target/arm/cpu.h | 16 +++++++++++++++ target/arm/internals.h | 11 +++++++++++ target/arm/kvm.c | 5 +++-- target/arm/machine.c | 2 +- target/arm/tcg/op_helper.c | 3 +++ 7 files changed, 66 insertions(+), 17 deletions(-) diff --git a/target/arm/arm-powerctl.c b/target/arm/arm-powerctl.c index a788376d1d..a06be5cc99 100644 --- a/target/arm/arm-powerctl.c +++ b/target/arm/arm-powerctl.c @@ -78,7 +78,7 @@ static void arm_set_cpu_on_async_work(CPUState *target_cp= u_state, =20 /* Finally set the power status */ assert(bql_locked()); - target_cpu->power_state =3D PSCI_ON; + arm_set_cpu_power_state(target_cpu, PSCI_ON); } =20 int arm_set_cpu_on(uint64_t cpuid, uint64_t entry, uint64_t context_id, @@ -186,7 +186,7 @@ static void arm_set_cpu_on_and_reset_async_work(CPUStat= e *target_cpu_state, =20 /* Finally set the power status */ assert(bql_locked()); - target_cpu->power_state =3D PSCI_ON; + arm_set_cpu_power_state(target_cpu, PSCI_ON); } =20 int arm_set_cpu_on_and_reset(uint64_t cpuid) @@ -239,7 +239,7 @@ static void arm_set_cpu_off_async_work(CPUState *target= _cpu_state, ARMCPU *target_cpu =3D ARM_CPU(target_cpu_state); =20 assert(bql_locked()); - target_cpu->power_state =3D PSCI_OFF; + arm_set_cpu_power_state(target_cpu, PSCI_OFF); target_cpu_state->halted =3D 1; target_cpu_state->exception_index =3D EXCP_HLT; } diff --git a/target/arm/cpu.c b/target/arm/cpu.c index a13e6dae2a..8771b695d9 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -145,18 +145,36 @@ static bool arm_cpu_has_work(CPUState *cs) { ARMCPU *cpu =3D ARM_CPU(cs); =20 - if (arm_feature(&cpu->env, ARM_FEATURE_M)) { - if (cpu->env.event_register) { - return true; - } + /* + * Only another PSCI call can wake the CPU up in which case the + * power_state would be set by arm_set_cpu_on_and_reset_async_work() + */ + if (cpu->power_state =3D=3D PSCI_OFF) { + g_assert(cpu->env.halt_reason =3D=3D HALT_PSCI); + return false; } =20 - return (cpu->power_state !=3D PSCI_OFF) - && cpu_test_interrupt(cs, - CPU_INTERRUPT_FIQ | CPU_INTERRUPT_HARD - | CPU_INTERRUPT_NMI | CPU_INTERRUPT_VINMI | CPU_INTERRUPT_V= FNMI - | CPU_INTERRUPT_VFIQ | CPU_INTERRUPT_VIRQ | CPU_INTERRUPT_V= SERR - | CPU_INTERRUPT_EXITTB); + /* + * A wake-up event should only wake us if we are halted on a WFE + */ + if (cpu->env.halt_reason =3D=3D HALT_WFE && cpu->env.event_register) { + cpu->env.halt_reason =3D NOT_HALTED; + return true; + } + + /* + * Otherwise pretty much any IRQ would wake us up + */ + if (cpu_test_interrupt(cs, + CPU_INTERRUPT_FIQ | CPU_INTERRUPT_HARD + | CPU_INTERRUPT_NMI | CPU_INTERRUPT_VINMI | CPU= _INTERRUPT_VFNMI + | CPU_INTERRUPT_VFIQ | CPU_INTERRUPT_VIRQ | CPU= _INTERRUPT_VSERR + | CPU_INTERRUPT_EXITTB)) { + cpu->env.halt_reason =3D NOT_HALTED; + return true; + } + + return false; } #endif /* !CONFIG_USER_ONLY */ =20 @@ -327,7 +345,7 @@ static void arm_cpu_reset_hold(Object *obj, ResetType t= ype) env->vfp.xregs[ARM_VFP_MVFR1] =3D cpu->isar.mvfr1; env->vfp.xregs[ARM_VFP_MVFR2] =3D cpu->isar.mvfr2; =20 - cpu->power_state =3D cs->start_powered_off ? PSCI_OFF : PSCI_ON; + arm_set_cpu_power_state(cpu, cs->start_powered_off ? PSCI_OFF : PSCI_O= N); =20 if (arm_feature(env, ARM_FEATURE_AARCH64)) { /* 64 bit CPUs always start in 64 bit mode */ diff --git a/target/arm/cpu.h b/target/arm/cpu.h index dd939ab22b..31a5567c95 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -224,6 +224,19 @@ typedef enum ARMFPStatusFlavour { /* Architecturally there are 128 PPIs in a GICv5 */ #define GICV5_NUM_PPIS 128 =20 +/** + * ARMHaltReason - the reason we have entered halt state + * + * To be able to correctly wake up via arm_cpu_has_work() we need to + * track the reason we went to sleep. + */ +typedef enum { + NOT_HALTED =3D 0, + HALT_PSCI, + HALT_WFI, + HALT_WFE +} ARMHaltReason; + typedef struct CPUArchState { /* Regs for current mode. */ uint32_t regs[16]; @@ -746,6 +759,9 @@ typedef struct CPUArchState { /* Optional fault info across tlb lookup. */ ARMMMUFaultInfo *tlb_fi; =20 + /* Reason the CPU is halted */ + ARMHaltReason halt_reason; + /* * The event register is shared by all ARM profiles (A/R/M), * so it is stored in the top-level CPU state. diff --git a/target/arm/internals.h b/target/arm/internals.h index 21cbd2b1db..b2035b9417 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -2063,4 +2063,15 @@ bool arm_cpu_match_cpreg_mig_tolerance(ARMCPU *cpu, = uint64_t kvmidx, ARMCPRegMigToleranceType type); =20 =20 +/** + * arm_set_cpu_power_state() - set power state synced with halt_reason + */ +static inline void arm_set_cpu_power_state(ARMCPU *cpu, ARMPSCIState state) +{ + CPUARMState *env =3D &cpu->env; + + cpu->power_state =3D state; + env->halt_reason =3D state =3D=3D PSCI_OFF ? HALT_PSCI : NOT_HALTED; +} + #endif diff --git a/target/arm/kvm.c b/target/arm/kvm.c index 7d194ea112..a54ef51ec2 100644 --- a/target/arm/kvm.c +++ b/target/arm/kvm.c @@ -1149,11 +1149,12 @@ static int kvm_arm_sync_mpstate_to_qemu(ARMCPU *cpu) if (cap_has_mp_state) { struct kvm_mp_state mp_state; int ret =3D kvm_vcpu_ioctl(CPU(cpu), KVM_GET_MP_STATE, &mp_state); + ARMPSCIState state; if (ret) { return ret; } - cpu->power_state =3D (mp_state.mp_state =3D=3D KVM_MP_STATE_STOPPE= D) ? - PSCI_OFF : PSCI_ON; + state =3D (mp_state.mp_state =3D=3D KVM_MP_STATE_STOPPED) ? PSCI_O= FF : PSCI_ON; + arm_set_cpu_power_state(cpu, state); } return 0; } diff --git a/target/arm/machine.c b/target/arm/machine.c index 58f8dfd53c..fde3b3e8d7 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -916,7 +916,7 @@ static int get_power(QEMUFile *f, void *opaque, size_t = size, { ARMCPU *cpu =3D opaque; bool powered_off =3D qemu_get_byte(f); - cpu->power_state =3D powered_off ? PSCI_OFF : PSCI_ON; + arm_set_cpu_power_state(cpu, powered_off ? PSCI_OFF : PSCI_ON); return 0; } =20 diff --git a/target/arm/tcg/op_helper.c b/target/arm/tcg/op_helper.c index e8f0996ed3..504526153a 100644 --- a/target/arm/tcg/op_helper.c +++ b/target/arm/tcg/op_helper.c @@ -402,6 +402,7 @@ void HELPER(wfi)(CPUARMState *env, uint32_t insn_len) target_el); } =20 + env->halt_reason =3D HALT_WFI; cs->exception_index =3D EXCP_HLT; cs->halted =3D 1; cpu_loop_exit(cs); @@ -463,6 +464,7 @@ void HELPER(wfit)(CPUARMState *env, uint32_t rd) } else { timer_mod(cpu->wfxt_timer, nexttick); } + env->halt_reason =3D HALT_WFI; cs->exception_index =3D EXCP_HLT; cs->halted =3D 1; cpu_loop_exit(cs); @@ -507,6 +509,7 @@ void HELPER(wfe)(CPUARMState *env) return; } =20 + env->halt_reason =3D HALT_WFE; cs->exception_index =3D EXCP_HLT; cs->halted =3D 1; cpu_loop_exit(cs); --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108084; cv=none; d=zohomail.com; s=zohoarc; b=IU/9u+uCLvmdqK8T90qUxGnoNGbogNy/j1msKWj/xxJJudmN8p3MzUa/kLiRQxamkUrtDbieWLdTr1b5hz4HRPb1QyWqdbWCVSkgBGTUTjXnyzTahl2e7u+TwB2wFo5dMXK+nEYZ3vEvX4uWWX8Lp03536feHJ/d03yvcr5cTf4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108084; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=emZi/jwxDyfSmnVHZEDPcSupdD6XjFSln0KsNJdhnnU=; b=nNjSvVIgatoTcQAOhWGsDucfYpPtDG3avp6tW5Kl/FGmkibIW+CU1iyHUp4ziHat4nAS6vdgcKwQ7d75s454XQoO/d+uyqJZcWzhVcaGIJGYtR9pitHiZDF0YybzdKEOSEU/b6RU2JXTuf7orH7IpXCxEDNuCJExoOJMahesQUs= 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 1781108084960381.7105222924706; Wed, 10 Jun 2026 09:14:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXz-0000Gp-DZ; Wed, 10 Jun 2026 12:12:55 -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 1wXLXf-0007xn-IT for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:38 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXd-0005Xe-Og for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:35 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-45eecb8bf67so5279923f8f.2 for ; Wed, 10 Jun 2026 09:12:33 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107952; x=1781712752; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=emZi/jwxDyfSmnVHZEDPcSupdD6XjFSln0KsNJdhnnU=; b=OR5ns8/DBK2lX3MsStubQtfVyi+fnGPRvGUu9lkq3/PyO1DYMy1TrMg2Bo8jVq3FzP /1sjM4pP0XSzPl7Xi2bZXLOHQVfms37OZxlTqkXXCfXXbiYJsneAFApIlWcVIMBmbvQZ PvRotAj0LSdW34GQQLTnuloYCklZD4PWrErhVhjd+JTJziYIt3DeGl4FPsBQIaODZ2+1 OY0Tgsj2m+DdMoqEe4tZiMpia/2TxKkLc38iQGPcAEBcjOqylhRCtVUiXHvz44VPDbhA 5/Zx7rmpwitptCLsaPZbmcj3e6b3xN7+VJBz5VDHmG+uHMi2aByWpRGjzzjjyqLqP1Yb lgbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107952; x=1781712752; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=emZi/jwxDyfSmnVHZEDPcSupdD6XjFSln0KsNJdhnnU=; b=KAMyusvHJOgZse2SW95vj1HD6Zt1/gUiIjqcAHyYkqXADtDu6QNPmXLcuzY4GZqLj1 D4w3bU/+ukJ71tmg/V3bvdAgovViQ6vlcMxCyKRp5WtUHBnSQpBmkojNxrPF80QtVU2Y XG12oibYUifqck3sADZ13NuRp70JL9OfKJuWzqnsMEkuCySk1O2XfQqIAaI4oKbsWEFw 9I3b5k+MKoS03jjOyZnnO9fD/lttZ85K/nLQVGbOKfa0MNFv0waHF2K4re4NqBAKdEmD YtQX7CSZmrgTFaM+25ToSqpO8s0Zbsk/4Xoa+aS1UD9NqMih+wKuCZEy+uArmCpwyslk Y+MA== X-Gm-Message-State: AOJu0Yxzbgjob5+dcNzQU/EcbWPrST52cIfaPKUgcRG/EY1WkrOgtmhO 7aIw7xApI1QJ9Sp2YwQ+2I8fNR/8LGE90YFcVwBoFYfG0jg6rT5dXhDVwK0quDcH64LuFi5kRCB JiMnY X-Gm-Gg: Acq92OFnSCjpSLkJO4u7+rN87S2c8Wzn3RhS8G27mer3T4BxcyIgKuQCzcSzzCw6Twb XwCUi34PKpJJSMIjy7pl2r6u/N5hfU97kob8D441l/BZlSdUzz2gACuksgUTemMAuVmPVyZNZkC w2Ham0dbFhVqAldkuHfoYsjFWU07w0OyqwrIVqWSRrraYZBffzAerZGHkpqImgX09WRMyOYG2dh P0dZ7LX5wjGBhdIzpncNQzqATlJS9jmA7nfs6KkLWEjHv4kBr/QzWcv+lY7KOffaFyIUw0tVcuo 7K284sQHBrIoWzkqT1AHaZzUMfEM4GHm9TL12f70kLIxwu/UCi1OcqlFJMyqiNGuGUwB2MIglvm H1NCStrDqZrHkiG3aPdn0TcmNSsQfM1vKAZcXJA8CjjjoLyKQD5FZ1NO84QbNs9vyjF313USltn JJj87l4n/b/KrcFmoOVGw+Qyf9vcegGiSd/IlZqIAMB1zIsOFEhDdnCqKWq8Q9Ru97yQXHZ/uye dDSoLDFZ/M0H+GZWAFKC4F7bQGsbKvpWjD97ygje+Y= X-Received: by 2002:adf:fa89:0:b0:453:e3a1:6580 with SMTP id ffacd0b85a97d-46030501f74mr27229916f8f.25.1781107952133; Wed, 10 Jun 2026 09:12:32 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 21/71] target/arm: redefine event stream fields Date: Wed, 10 Jun 2026 17:11:12 +0100 Message-ID: <20260610161202.2235298-22-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x431.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781108093447154100 From: Alex Benn=C3=A9e The event stream control bits are the same for both CNTHCTL and CNTKCTL so rather than duplicating the definitions rename them to be useful in both cases. We will need these in a later commit when we start implementing event streams. Reviewed-by: Richard Henderson Signed-off-by: Alex Benn=C3=A9e Message-id: 20260529082948.363931-4-alex.bennee@linaro.org Signed-off-by: Peter Maydell --- target/arm/helper.c | 8 ++++---- target/arm/internals.h | 11 +++++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/target/arm/helper.c b/target/arm/helper.c index c9536d2d10..22e71a2804 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -1772,9 +1772,9 @@ static void gt_cnthctl_write(CPUARMState *env, const = ARMCPRegInfo *ri, uint32_t valid_mask =3D R_CNTHCTL_EL0PCTEN_E2H1_MASK | R_CNTHCTL_EL0VCTEN_E2H1_MASK | - R_CNTHCTL_EVNTEN_MASK | - R_CNTHCTL_EVNTDIR_MASK | - R_CNTHCTL_EVNTI_MASK | + R_CNTxCTL_EVNTEN_MASK | + R_CNTxCTL_EVNTDIR_MASK | + R_CNTxCTL_EVNTI_MASK | R_CNTHCTL_EL0VTEN_MASK | R_CNTHCTL_EL0PTEN_MASK | R_CNTHCTL_EL1PCTEN_E2H1_MASK | @@ -1789,7 +1789,7 @@ static void gt_cnthctl_write(CPUARMState *env, const = ARMCPRegInfo *ri, R_CNTHCTL_EL1TVCT_MASK | R_CNTHCTL_EL1NVPCT_MASK | R_CNTHCTL_EL1NVVCT_MASK | - R_CNTHCTL_EVNTIS_MASK; + R_CNTxCTL_EVNTIS_MASK; } if (cpu_isar_feature(aa64_ecv, cpu)) { valid_mask |=3D R_CNTHCTL_ECV_MASK; diff --git a/target/arm/internals.h b/target/arm/internals.h index b2035b9417..f7a57d3ea7 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -272,14 +272,17 @@ FIELD(VSTCR, SA, 30, 1) * have different bit definitions, and EL1PCTEN might be * bit 0 or bit 10. We use _E2H1 and _E2H0 suffixes to * disambiguate if necessary. + * + * The event stream bits (EVN*) are in the same position for + * CNTKCTL_EL1/CTNKCTL. */ FIELD(CNTHCTL, EL0PCTEN_E2H1, 0, 1) FIELD(CNTHCTL, EL0VCTEN_E2H1, 1, 1) FIELD(CNTHCTL, EL1PCTEN_E2H0, 0, 1) FIELD(CNTHCTL, EL1PCEN_E2H0, 1, 1) -FIELD(CNTHCTL, EVNTEN, 2, 1) -FIELD(CNTHCTL, EVNTDIR, 3, 1) -FIELD(CNTHCTL, EVNTI, 4, 4) +FIELD(CNTxCTL, EVNTEN, 2, 1) +FIELD(CNTxCTL, EVNTDIR, 3, 1) +FIELD(CNTxCTL, EVNTI, 4, 4) FIELD(CNTHCTL, EL0VTEN, 8, 1) FIELD(CNTHCTL, EL0PTEN, 9, 1) FIELD(CNTHCTL, EL1PCTEN_E2H1, 10, 1) @@ -289,7 +292,7 @@ FIELD(CNTHCTL, EL1TVT, 13, 1) FIELD(CNTHCTL, EL1TVCT, 14, 1) FIELD(CNTHCTL, EL1NVPCT, 15, 1) FIELD(CNTHCTL, EL1NVVCT, 16, 1) -FIELD(CNTHCTL, EVNTIS, 17, 1) +FIELD(CNTxCTL, EVNTIS, 17, 1) FIELD(CNTHCTL, CNTVMASK, 18, 1) FIELD(CNTHCTL, CNTPMASK, 19, 1) =20 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108469; cv=none; d=zohomail.com; s=zohoarc; b=LLzaCzNRvX0oZUdhtEs5WxH4RjM1fG4M25RRveJn+2p7wVFANJq93nwf+VrAr0zZkbcjAjtJ9NTwHKkGC8KB+3I3xPlQ3/hYcoIpi0S29Ew7ckfrMOSQ1EGhCH60zW3DYPba2CJVc0B0/sgDrIVIFdGDPILErkp0T4GCzBHidRQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108469; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=jrlaG88FPR3tY2VMFw9TJ9vpxsFUwMc4Vdf0h1F2Lrw=; b=gDsKmmbXRCFNKn86pcqtBxYy8xgoTCCxs8PKos2jInQY00VTu/YmxlajLScVZuX4441tVOLFaVFQnFslZVbqi/AID8out1XkH7NJNp0EIUM817kjj0Z/ZagvEdwju1FZ7REx84IIENu9mPvgFNIKcsDZ0+4j+LasbbdB95SQW90= 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 1781108469047892.3805569196354; Wed, 10 Jun 2026 09:21:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXu-0008EY-2K; Wed, 10 Jun 2026 12:12:50 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXh-0007yI-10 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:38 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXf-0005Xy-2O for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:36 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-490c0c92cffso50937155e9.2 for ; Wed, 10 Jun 2026 09:12:34 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107953; x=1781712753; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=jrlaG88FPR3tY2VMFw9TJ9vpxsFUwMc4Vdf0h1F2Lrw=; b=jvvH3F/etzB2D9Ylp/4Wa8gog69VXPGqrl1u6eAX/lmSOKYN3Fo2tP9jTFlDjpyz0J dI9xCtIKJKHhntiZOTHJq9MTK4Bd4sywrNzpqDffPxdOQL/ZKDy3bmPJpe3My+OwVF8w cfqCWb+KNh2hVDpKJfAGNpZjWyyHiSYB4iBjyNSv7E/aJdHuxnQG5/6EhWnpDpBX4Kb1 jLoNGF0b29EjHJRHWs4SfAIMGmDXtnMovajg7Q7qmaCdhQlTLWPxH6HPlW+L9Bo61sew 85ctTFTaD5VcxvZA/2xInG7CDQMBKX9ulmvHwezl41uI3jPy4a7M36oVfLK7uiz+yhPx FT9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107953; x=1781712753; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=jrlaG88FPR3tY2VMFw9TJ9vpxsFUwMc4Vdf0h1F2Lrw=; b=PFhwB1jML5w77yL+KnkTskMEvXz/3uje8lI4GOTT0Yal7bhoW2HTGaLUAp5WtBc4bx QP0MpORS+b0dwuAzciIU6DpgFmqZyNbsmfjfe2vASxRwM2pKATs/kX3sBEGl8x5WW97F /8vdUpxDYuRkU4w3ebfkIx0lHXvL3uoL5xWJLbdfemFlUEGzmgwDJueL0/irgZoUkZvP 3RvqzddEeNGqITrHd8qEAOX9KX+ooeFld6M9fF7RD4Uw9RhfE9abNEPmRi6oEq4j7H97 Q0GsyhaInXS9zuAG2LIIzZXcPtGPcgR4YMnY9WkGAactdIaacfqypuvXRG+r/5YJv4xr appw== X-Gm-Message-State: AOJu0YwoypJ8MDNtvOxN79II7U5FEmwisCCK+0KuGK8B2RV7YjyOgn+Y Y4LNDaK7nvIMXsovX0D1lSqzl7re5WKqL38fPRNjl6/U+zUck7QNKuPe4qt6WQhXpecRJHNDBco qolOk X-Gm-Gg: Acq92OGHxh/qhXqrkFIPDTP2yNh0CsGaS5EYkmyKR1YqS3smuVeI6O2qHpbYXy5sYql yY4CVK6gFhWC1LyOxkIss1og6lsArv5aYDYIm2fuZf+TkunhlCdVYJOaR2UvdxCllZzQjWH8Nww OwKlduOOiNaKhNyVGFpobIVktj1NH3WTALM4ff4anvLrBbNYgOAdiJj58pgoQ4w+r/aizLU/0OL BU7XhwIfXrqkU3k7EfQJTZXCvXqwQ4N4jeluMtmO3bulxEeAeaHIb1jO+WsMxU1kUZvs/9HRiCh 5v6XIYOivyzRi9zyTF1MwKbaOglUCk5nLjKaxRfb4exjO1TlBRceReVlniU0rjt6L1ENYtb+5yx SNVrEAykHGanZPBJ3K0WmqRVFV47M40ZGwxqPqilR7LvdPtk8FuQiey2875vjBEqhhQYy0OxYlw 6EKxZUb00qp9dW/1c7iGf7oszpmotZMeyJuJmIPjg+Sak3qfv6Hu5gjDjWMdJSygZuS+ipZN5Td OOD/w5mVdJV5uPadH/Qw/FQI3t9oNZvMiSbga1WBXE= X-Received: by 2002:a05:600c:a088:b0:48e:5fb8:f80f with SMTP id 5b1f17b1804b1-490c25f9100mr405189375e9.24.1781107953477; Wed, 10 Jun 2026 09:12:33 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 22/71] target/arm: ensure aarch64 DISAS_WFE will exit Date: Wed, 10 Jun 2026 17:11:13 +0100 Message-ID: <20260610161202.2235298-23-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.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: 1781108470014158500 From: Alex Benn=C3=A9e This mirrors the logic for DISAS_WFE in 32 bit world. As the WFE/WFI have similar behaviours shuffle the case statements around a little and update the commentary to cover both. Fixes: 252ec405768 (target-arm: implement WFE/YIELD as a yield for AArch64) Reviewed-by: Richard Henderson Signed-off-by: Alex Benn=C3=A9e Message-id: 20260529082948.363931-5-alex.bennee@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/translate-a64.c | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 092a979198..21ec3a5de7 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -11042,25 +11042,25 @@ static void aarch64_tr_tb_stop(DisasContextBase *= dcbase, CPUState *cpu) case DISAS_NORETURN: case DISAS_SWI: break; - case DISAS_WFE: - gen_a64_update_pc(dc, 4); - gen_helper_wfe(tcg_env); - break; case DISAS_YIELD: gen_a64_update_pc(dc, 4); gen_helper_yield(tcg_env); break; + /* + * Both WFE/WFI can cause exceptions or exit the loop to + * halt so we have to make sure we have rectified the PC. + * However they can also return directly if they don't + * enter a wait state so we must add an exit block so we exit + * the loop and check for interrupts. + */ + case DISAS_WFE: + gen_a64_update_pc(dc, 4); + gen_helper_wfe(tcg_env); + tcg_gen_exit_tb(NULL, 0); + break; case DISAS_WFI: - /* - * This is a special case because we don't want to just halt - * the CPU if trying to debug across a WFI. - */ gen_a64_update_pc(dc, 4); gen_helper_wfi(tcg_env, tcg_constant_i32(4)); - /* - * The helper doesn't necessarily throw an exception, but we - * must go back to the main loop to check for interrupts anywa= y. - */ tcg_gen_exit_tb(NULL, 0); break; } --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108443; cv=none; d=zohomail.com; s=zohoarc; b=XwQpbBfT1CL3P8uKERNZeS3CC5ik5LKIUS2CjWQfi/C17BFYj4hu89IGuoZTtlHTc1Y5b/zr9NTFWdQ0qfowDnnU7yYujvvRF2Ud+rYbK+SZvxK3R6y5LvDyfRnmGT4Lj9UbAOoBi8XRpi6+EpoLl1DzVF3+znc/2wqQHlSE6Uo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108443; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=BoKYvhpRM62DBTZyJs1LhrLuI01hIhiG3D16LBlIpes=; b=aQDX8jrpjjSIXg+6xdwcx5+WK8lRKsAmCYlkZ5t4apWICum/A9v+lZHH+qvPkmQNDNtmPKQVtRG/kjeSVk0u/EpFwCH+R1K8bhBpODrVshzzobA/1qzIpTnBVBA0JptKICW6e8LChCdf501kqhnoUL3SW+3C2pp4R1Vzm6JK58s= 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 1781108443340926.396050394565; Wed, 10 Jun 2026 09:20:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXv-0008Jc-AL; Wed, 10 Jun 2026 12:12:51 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXj-00081y-1G for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:40 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450: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 1wXLXg-0005YR-W4 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:38 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-45eec22fab7so3608296f8f.3 for ; Wed, 10 Jun 2026 09:12:36 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107955; x=1781712755; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=BoKYvhpRM62DBTZyJs1LhrLuI01hIhiG3D16LBlIpes=; b=a2SRE5QOakm84GzawcYFGZN7HTcpIeBF7CEitKuntxk5Qwt2sVNHXLY7gz5u/J87qQ jOsFgJWf1WyGOYhKpR3hzvA+mdhUzEPS9Li59Ebbc/382eYZ6DYJrji8V992f2q41Uye 6INQeXr1AvvTZC+PLxuE1iiSRW4//lAvsHOTOfuxzewN1chL153QhPfg+LXQDUabvznC Jm4kC0VI/j/iWBsCVrzr4dZ6Ze8jP1683tLxpnt5Oy+zk7LIWw4LVZyOa+rmYLfE/QTg mDY0oT8RnHoK/L2XYiww1cYwenp9IfJrm+EHT0780vWmM4r/7vUJg4ruJMWAIZp9urCb pLRw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107955; x=1781712755; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=BoKYvhpRM62DBTZyJs1LhrLuI01hIhiG3D16LBlIpes=; b=jLX1gmNdhPeR1UQO5ngn3iC6QAoCwqdgtCbWCIX/H+0CA6stenKHMaqV37TDFLxDJD JTfvomsNjx3s9iRoQfsUm4ykU+k/6x6I/hfX2t9Xbrb28YBpBLhQcZ0v5D/0HhuRBKUc MU7voBUFv91sc9LcWyPYxxhVKDRDEG4Zw+j+/A/2pTLyTaI8dKQfV5BZUjZ9c1tL1E96 9KTuFilG9I/xPH0NxZqSiUt/IXyriVsTCdtS33H4uaGUevM93lvN6hKF/MiOZvMhqgMt 5R8hbhNNhcpwI90VZarkxKQiA28vdQXV8VTvuFkCdWbCRJFFwXoaOL1AG3gJz5tAgJtt EL9A== X-Gm-Message-State: AOJu0YzcR8745wa68IINc1emo9RGOcKvhRyICfsgJGxec5KAIl5DMZBn FqdYvGo5fEUKruuh1TQ13D8I2csODKlOvSloT+113fh3DQ2L/VJO3rcprWeOIA4zk86+gjXhrhl PhPE3 X-Gm-Gg: Acq92OGDa48G5zIdhJ5AJdwwTm4U2YmeYy8iJL+c2qv4kZEo8G6nPskJ2FYc7NpDVsM k71CoEW5idsbATdtuMnHtY+7I5hHBKYG+xR/gx6+mN0ELEqINv4bh8zUR+O7QWETp+AWiHTrb/A AIHQku9Wmfynal9iFSNSccmfNtHy2MO4Vij3glhSxSrqeaTycv7GLM3GOr5ni2FClWdeZI0Pc5K +zimHirluqpYTN91QJQKThoIDrcmggnlIwXqLvOYeltnt6r4aB8NwOzoGHU179Sr4H4UBNdFOM8 E3uOjOM2b5tO/kvFAcdgq7sfDhtzCHVIZeQk1i79QnIH7p7PeGyt7Gbi0POYQa1W+Nstias9Mpb TiVi+DEbd1xGX+WjvyhSepzZBSL+qqnbkmuWGiPoG31hPw88guzaipkmaiA3q7q/pfIUFEbJFJh anoV8eH+cmSD033+1KCCGP0DBmxbkcHL77BS+KNFPGkL8jVYMul7dkWDO/fxkLOjo5TUBzVyXQ6 2qwneeuuDSgVwGaAmxlhC1Msu6CEfEZR2LBbOFf+rE= X-Received: by 2002:a05:6000:1889:b0:460:1987:7bb9 with SMTP id ffacd0b85a97d-46030753534mr40205194f8f.29.1781107955130; Wed, 10 Jun 2026 09:12:35 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 23/71] hw/intc/exynos4210_combiner: Avoid hw_error for guest errors Date: Wed, 10 Jun 2026 17:11:14 +0100 Message-ID: <20260610161202.2235298-24-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108443829158500 In the exynos4210_combiner device, several cases of bad register offsets passed by the guest are handled by calling hw_error(). This causes QEMU to abort with a guest register dump. These days we prefer to handle "guest does something wrong" by logging it and continuing. Update the hw_error() calls to qemu_log_mask(LOG_GUEST_ERROR). Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3396 Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260529143624.158935-2-peter.maydell@linaro.org --- hw/intc/exynos4210_combiner.c | 29 ++++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/hw/intc/exynos4210_combiner.c b/hw/intc/exynos4210_combiner.c index e8cac331e4..dbbdee4d31 100644 --- a/hw/intc/exynos4210_combiner.c +++ b/hw/intc/exynos4210_combiner.c @@ -28,12 +28,12 @@ */ =20 #include "qemu/osdep.h" +#include "qemu/log.h" #include "hw/core/sysbus.h" #include "migration/vmstate.h" #include "qemu/module.h" #include "hw/intc/exynos4210_combiner.h" #include "hw/arm/exynos4210.h" -#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "qom/object.h" @@ -119,8 +119,10 @@ exynos4210_combiner_read(void *opaque, hwaddr offset, = unsigned size) break; default: if (offset >> 2 >=3D IIC_REGSET_SIZE) { - hw_error("exynos4210.combiner: overflow of reg_set by 0x" - HWADDR_FMT_plx "offset\n", offset); + qemu_log_mask(LOG_GUEST_ERROR, + "exynos4210.combiner: overflow of reg_set by 0x" + HWADDR_FMT_plx "offset\n", offset); + return 0; } val =3D s->reg_set[offset >> 2]; } @@ -183,20 +185,24 @@ static void exynos4210_combiner_write(void *opaque, h= waddr offset, reg_n =3D (offset - (req_quad_base_n << 4)) >> 2; =20 if (req_quad_base_n >=3D IIC_NGRP) { - hw_error("exynos4210.combiner: unallowed write access at offset 0x" - HWADDR_FMT_plx "\n", offset); + qemu_log_mask(LOG_GUEST_ERROR, + "exynos4210.combiner: unallowed write access at offs= et 0x" + HWADDR_FMT_plx "\n", offset); return; } =20 if (reg_n > 1) { - hw_error("exynos4210.combiner: unallowed write access at offset 0x" - HWADDR_FMT_plx "\n", offset); + qemu_log_mask(LOG_GUEST_ERROR, + "exynos4210.combiner: unallowed write access at offs= et 0x" + HWADDR_FMT_plx "\n", offset); return; } =20 if (offset >> 2 >=3D IIC_REGSET_SIZE) { - hw_error("exynos4210.combiner: overflow of reg_set by 0x" - HWADDR_FMT_plx "offset\n", offset); + qemu_log_mask(LOG_GUEST_ERROR, + "exynos4210.combiner: overflow of reg_set by 0x" + HWADDR_FMT_plx "offset\n", offset); + return; } s->reg_set[offset >> 2] =3D val; =20 @@ -245,8 +251,9 @@ static void exynos4210_combiner_write(void *opaque, hwa= ddr offset, exynos4210_combiner_update(s, grp_quad_base_n + 3); break; default: - hw_error("exynos4210.combiner: unallowed write access at offset 0x" - HWADDR_FMT_plx "\n", offset); + qemu_log_mask(LOG_GUEST_ERROR, + "exynos4210.combiner: unallowed write access at offs= et 0x" + HWADDR_FMT_plx "\n", offset); break; } } --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108020; cv=none; d=zohomail.com; s=zohoarc; b=LE47FDT7PZg5O9D5/KMZpb0bM3sgH0t9cC4G8mjg6g3aXTo5EJ3o8NSGzHGCcbtSpYtqAmTGXMyTXvzuclfrSpP+/Xns6YXDe28EUgZZys3cbv/EpEKQMFNzq25T9UpCer1EISLTGdOPKtidVlDdNiNuHpM2hGaAOM1TQeZIcTs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108020; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=cvP8aOq+dkmxUYFr9yBP2ILGw50KTwLpfscjHW38iRg=; b=QirJYnVAFXF6csHBHLWjFWbaH8gB11q6dNJfoKUgi2r2MG8Jreoo1ZaZOyX4Q9p7NTiz20BnpHeitl29U1V1bMl1qDWk/YGocluTV/WJYTDIfFVBffdaSnCebvoqh/H+draD6+uGVcFk34sNfLB5MUNjYeQXHDmBNANLoJUp1vg= 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 1781108020664481.0098450475775; Wed, 10 Jun 2026 09:13:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXy-0000Ay-BZ; Wed, 10 Jun 2026 12:12:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXk-00083X-5F for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:42 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXi-0005Yk-3c for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:39 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-490b4a8e28bso59015855e9.1 for ; Wed, 10 Jun 2026 09:12:37 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.35 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107957; x=1781712757; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=cvP8aOq+dkmxUYFr9yBP2ILGw50KTwLpfscjHW38iRg=; b=oyl1PyjfgnzN0ZH2G6A+Le+udO8G1kO3f3trTqdsQ5HwxYwaFA99p2vX3n7fPmr8Vn oiwyJX3yENdSIjxUEXhpJxfZX25xS6Vct4aVKDLVKGJwH9J+e+Gu+kk24RmUYareRqmx JQVLygjtarDGq87SVJxrHrl+904q7HOEKmlYFh0v1fFyXSPwSiZBKXITYWhdobkfCm8i LfNHXU38O6V/cqIIxzcYoN/GQBDaDIdapp5EYXndcqX4rFd4nSsS0SmvALOuT6+7iFNE 2hcbD2h7CKILwgg2o53DmZD2ENx81AuP+mWHYYAl7RPWSHsnVaeCexweOW/kZdzrKDZH 25RQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107957; x=1781712757; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=cvP8aOq+dkmxUYFr9yBP2ILGw50KTwLpfscjHW38iRg=; b=QzAe2CJ2f4OtPxNF75C7zyLD2NW7CyVETC3pdg2d9amkfC0xOhMBQ7yOZjj6WYBtS1 1psnVWiCIZLUKxrhZ4YeguBSm9IbhfPzeOF53TcM2K61bJOGRiTUVXAUMabjMAQK+vk9 hWuSMtl7fhCiMCplC0PLEyBOOFycwhr3rAY3enpN23e0ZR20us3RUsqcwtl67X3xHjUX KgQj1WxJ2tY0Ccz9huiD4nWQGWiyZVIWqOlrCkXRiW3WojZ22cvbYAHwd9y/8omxQ5cb +eGUukYNpJ78i4fiwrftNQRnXxvNpDDBhHbd0VbE2Y0gNTfHIee6NoCtnGxQyTu7ORlP uAjQ== X-Gm-Message-State: AOJu0Yycaja89nR1WwWroUoYLE3pwXhEbFUGeuHUWzp0PQW5ZoEv3krI tTV5lZVmjN/mQWZQWGq21TSFhMBp5epdJoN22tnbOGw1VBF+H5Ijf8qVRomko7y4UhqjBuocvSh Imo8P X-Gm-Gg: Acq92OG3i219+f3f3gc7PXwlQnft6lQNMc6K5PYew/icrs19BE/PKOLcrDLGV35cEhH Frf5tXp1pkSaANToBXLAFb93pQhMfWTpJ/uCzbVbE179xJGhHvgIoHgGAp2nKQ+qbZY6HUyfdz7 zDeWRJuTBzUFeHHRID9WTpJjlEC1lyDiD/1hcaIvjO0o9bbRkZtqSvy5bCVasTedlgdnpFjKBQT +OCVV/TEpJsWZQuyClmLf+ariupDiIoa4t4MHJNR/Dd1VNdFWHjJ//ASO87IG57rW7xpSkEFOr1 V4UIBzSi6K3j6RGsfpQTLPWVn6OU3WuQm6RWI5IIAZTHr9NcDDjpVFMNrN5L483o7UXNofOkldF mYstuBXQrvCD5+3JqZe/5r/7H9Vf/rX+A1APgh4yGyf55L18g8OcA/iU2u40XCOZSltki0ZcChl tbIQw9IHReBpr0usns3R223Rob88cstRWDxf17cPxsy6+GOcSrtWrPPeo0oAKN4LqqxjynZN4WM xlDFYlNGuoOt9E1Dahwm/180HF81f0H8nRIzH7wrhQ5N5SrkMhFKg== X-Received: by 2002:a05:600c:8705:b0:488:ac01:72de with SMTP id 5b1f17b1804b1-490c25898efmr474061165e9.5.1781107956661; Wed, 10 Jun 2026 09:12:36 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 24/71] hw/dma/pl080: Don't use hw_error() for unimplemented features Date: Wed, 10 Jun 2026 17:11:15 +0100 Message-ID: <20260610161202.2235298-25-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.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: 1781108022426154100 In the pl080 device, we don't implement "peripheral flow control", which is where the DMA engine can be programmed to transfer data until a source or destination peripheral tells it to stop. We currently call hw_error() if the guest tries to use this missing feature, which prints a register dump and aborts QEMU. Change the hw_error() call to the LOG_UNIMP log-and-continue, which is how we prefer to report guest attempts to use unimplemented features these days. Resolves: https://gitlab.com/qemu-project/qemu/-/work_items/3409 Signed-off-by: Peter Maydell Reviewed-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260529143624.158935-3-peter.maydell@linaro.org --- hw/dma/pl080.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw/dma/pl080.c b/hw/dma/pl080.c index 4a90c7bb27..f9f1e3e931 100644 --- a/hw/dma/pl080.c +++ b/hw/dma/pl080.c @@ -13,7 +13,6 @@ #include "qemu/log.h" #include "qemu/module.h" #include "hw/dma/pl080.h" -#include "hw/core/hw-error.h" #include "hw/core/irq.h" #include "hw/core/qdev-properties.h" #include "qapi/error.h" @@ -132,8 +131,9 @@ again: continue; flow =3D (ch->conf >> 11) & 7; if (flow >=3D 4) { - hw_error( - "pl080_run: Peripheral flow control not implemented\n"= ); + qemu_log_mask(LOG_UNIMP, + "pl080_run: Peripheral flow control not impl= emented\n"); + continue; } src_id =3D (ch->conf >> 1) & 0x1f; dest_id =3D (ch->conf >> 6) & 0x1f; --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108460; cv=none; d=zohomail.com; s=zohoarc; b=TGXRrZRbbepR9S6Ye9ZQQvI19mSWtVCfvTL2QyeOEYCrvmCelQ1GuAlkxW2eZfqZMiLn6EbOxcpASEV8tg/stoRlSNc0rsl4AGGn1v0Kv/0ePpDPE5Hk+GQxSnvwj0DvVCXP+ibZYfTllYPm64saPDwIPRNwDpbrP1FFxIZv+bQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108460; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=SAW30Hz/JyRwYpKHJIGNsXhTml6Z0bCpb1cEKyFbxqM=; b=RaFEzynbLQTxcKBtYaea57eDmFbhGctpZGZtTIZt71XNv3zKWQv5SybtLRkjU6FExe82xrEb50VlsQKl69nm2AyRtH6+Nwo+YR/oyIg7CEvwKuirLPpFGUjLGU/GnUQ6LyG0HfjEl235YdZovokTRIRRdBywcnjXmxEJQCWOKdA= 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 1781108460878452.2801454438222; Wed, 10 Jun 2026 09:21:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY0-0000Q9-7A; Wed, 10 Jun 2026 12:12:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXl-00083u-By for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:43 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450: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 1wXLXj-0005Z7-Oz for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:41 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-46013161068so3571879f8f.2 for ; Wed, 10 Jun 2026 09:12:39 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107958; x=1781712758; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=SAW30Hz/JyRwYpKHJIGNsXhTml6Z0bCpb1cEKyFbxqM=; b=eie90+rrOJEJfpOMQC0//sCZEEHZf79d/puimNTCCkbMWCQDib+6GnraQXX/2QO4hT wqxv2NqraDwvjxwU3ZDrEnty187JXuZyV6+/P690CClsiKD2wFEFR4k2uJKHapgbFkHp ry3K/ogaPF3e+1emigmtfEb9B2OrnrbZjQ8MsqF0bE18m2R6gii8hoqXBy3HgIivdvnE dsFt6vX/1lZdELJmwn5SJRUonyJTYI7YU7/HVKa6WywpsvKAqdQui8mPWYfIO8zN6H1b Xhamm/IGoeArgzRUokkOZUbPhk2K4FKGaNKsyDgukyeCi66YwAvLvitYJDvCAzqxP15g oPCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107958; x=1781712758; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=SAW30Hz/JyRwYpKHJIGNsXhTml6Z0bCpb1cEKyFbxqM=; b=E3nOrgnqeRwFNcoQcf+zXUhMvf7wwID8BvFJXbrdOAh48S8D9V3/PCK2mwQD74kPTC +Ji2B6RTZLf53XS+4/+UstLg+WkwTu0vn7Z/JxqmKerpydu6bq+u4x4tVwFpRsUF+aky ZVoxYXJWO3efHPk0atowFwuYpww78hs8ns4ygmtMhX0RxUJUAnEN81THWRSAZ53NHWgl xgw50GoFdHslpvQLcQ39Zwjga55ttEycjLvtN1DjLSHeGFkyX3+5Ae063UApZ3FJVCBj qFYC9gMNtk9PItLQG/oM5XdB+fl6K1bMBMiQVN+8SUJB/suv0Ah0C2GuyDYqDFGvzTb9 LZPA== X-Gm-Message-State: AOJu0YxTJjg1X+G7McGE13aXL4jZxKfjpqJ4r19tCGtEfIjHaGePP0H/ hQkimi0VHZVX10uQA2fdLZAbGGUyIEHw38BWNy82K+RQPSl06LsBbIky/5TKEqAhH3JhxCVeIUR yC1bB X-Gm-Gg: Acq92OG32ZIx+aLBFROB4UJrV31+TAGnlXqCLGWhMpOMM1E3oa2c1jK5Cu+S2PGExl8 KOz3dpwi003/CiWSakhvBzxwUtEqsKsp6sB6G8f84v8Eb7vu1Oq26aMpX1kuzgGv1U10aWE5SNr 9fjiISOtJ3c6hzPtatVO3/DUbVO9LibN+ANMFCsiy2WyhY9KprNVpjDz/NhZTm4w5n/HVXYB8w/ 94kiWXXBr8ySjR/4EQmZJNRoUxCkOoTSN7zT9cc/CYpSFT96HxhKgVClXHa5/34WRWWHFEcuTur Y8t0EC361yPKVN4WawUG4zpN5Qa/J3AtrQARy6I02Bq3OJZCom0cJud4687j2jKFn82+TSxCaDU 3uvPNsAm5YnHHRajM2/Ppp3Sz/KlbBVhQBZ1tf4updbJwhLUmo53IE6/PJd0QtXjqbN76YVYE5T XSgeYYVTLNU/yjaa/tXbgca5yxVA+R1Y8kahsfBPOkOBjjk+E9xoYNDyAF+51HiphCpGx2c93ln sXE4heDrr4GB/Yw49jqXA/OCdTKxm8FU48j+hzydro= X-Received: by 2002:adf:fe01:0:b0:43c:ffee:ee94 with SMTP id ffacd0b85a97d-460304fae00mr32245803f8f.11.1781107958351; Wed, 10 Jun 2026 09:12:38 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 25/71] fpu: Handle all rounding modes in partsN_uncanon_normal Date: Wed, 10 Jun 2026 17:11:16 +0100 Message-ID: <20260610161202.2235298-26-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42d; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108463887154100 From: Richard Henderson Missed float_round_nearest_even_max when recomputing round. CC: qemu-stable@nongnu.org Fixes: 72330260cdb ("softfloat: Add float_round_nearest_even_max") Reported-by: Peter Maydell Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260608190155.637067-2-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- fpu/softfloat-parts.c.inc | 1 + 1 file changed, 1 insertion(+) diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index a154faf32b..c86fc9ccc5 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -437,6 +437,7 @@ static void partsN(uncanon_normal)(FloatPartsN *p, floa= t_status *s, /* Need to recompute round-to-even/round-to-odd. */ switch (get_float_rounding_mode(s)) { case float_round_nearest_even: + case float_round_nearest_even_max: if (N > 64 && frac_lsb =3D=3D 0) { inc =3D ((p->frac_hi & 1) || (p->frac_lo & round_mask) !=3D frac_lsbm1 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108486; cv=none; d=zohomail.com; s=zohoarc; b=eIw4b0VnyI7RK6UePGAmbkufl+E9PIVANpXcxOSx9jIzAnMvMsy85ej8PFheZQdyP9aocCg2XjslQ/qcN+JNRYfj5BdCEC/hSBKbvtQ/UU+4fQq9lyGj5zUcWbjYcaTGkK8G2vefHizeRgtz8E1byQfF4jBOaStDcAIXHxB+H4U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108486; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=c/TfSGVvY8nzxqxkofw6FPXPq3S+M9BJuc8yb76835U=; b=E79dnyjzc87At0fJQDHHBwyo4/xy8hIdqgSTDuIvwrU//4gHG7iGRPefKPQ4+rtex7GR9KylKCNjNTCJlO1f5qEOxPXvREVQRL1nhcj74vBaXs8wyDe/HBicUqWd4hcDv4Uosi5pcVDJqS0vU12sgYGTGndoZ8OevSDIxLFkKeI= 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 1781108486429716.3157381072526; Wed, 10 Jun 2026 09:21:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY8-0001YI-1Q; Wed, 10 Jun 2026 12:13: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 1wXLXm-00084E-VS for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:43 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXl-0005Zk-Gm for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:42 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-4600cbb06deso14154f8f.1 for ; Wed, 10 Jun 2026 09:12:41 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107960; x=1781712760; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=c/TfSGVvY8nzxqxkofw6FPXPq3S+M9BJuc8yb76835U=; b=hyXCDqwliSBoPbxwujPhVfK8cMuikv4nvEyvsmiCX9moRzfRW7kD+/qRTtO3mOR1bu pIBUcXNNq+lFsgIGmJZMPxD55wileXNv+qyRJMAHLHV6QonEjeo+7Lb0hNEYW29cSj6W XhWXxECiiWMcuL7MiYkX/tejPHzIEDdCWtnUMfPieseKQsGwFznA/tkEfMjSTpdMvc7L 77Q1ArSa/Dhw9qhQsNkEatjCkf9moOrIFehktz9GE8pYgVPx9eYksmfDUEg4YK5aMm4I v/YlC11e3no8b79zMkDU6u9IPu7sErb5S7ZPhuvBvO5xYBeUMeQYCvzzaYy5X6vxa4eK f4Sw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107960; x=1781712760; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=c/TfSGVvY8nzxqxkofw6FPXPq3S+M9BJuc8yb76835U=; b=RH7MvDzMWJMDQTIZpffWrofTB3ndVdT0rAOOy+kA/660ilXnmIpkRHQw1uZbNY6bsu oQyzRXiWLsqKAEBy2wUVG0L4YTF3Q1mb+KbB+KZ1wcjPTydchmK2sFDfibEaC4YWpG+S wdllsouXhn4xt2i5UrZcEOrA3O2/MXcLfcth4NEwBR+qTesLhwO3uFdzt/bKzQ/vN8iB j6EFDt3xGC9wcXZxYGiG1ArTTuNmxkoIEu6rOXqjn88ouYv5dCqqIffJn/MdA0P59M7p /wraKvo8Y+5F9S44koEpcUW/v1+UzW6nCB9F3u9wG17aV+fo9patwzgNSJU4OozxhTKJ 4ufA== X-Gm-Message-State: AOJu0Yxg1wNUGhZDM9EnUPwm/IukDbDv103/lMevg38VA5GUtatyatBz eVljRbYZD5d9dAscPTKMBvmhkMiP3yuqz1d3o8ZjDSYAM8wdm2Rbnvgc6g1A4/nOS6/7Ex8Zu1J vJ4wW X-Gm-Gg: Acq92OGreu1wJtjgX7d35sVTdGN34htuffbZmFVgZExpqFnE8vbCoOIzOcMWv7Sb2pJ tin4d9rdI9862tWVtmxnKmxGprINv+e9pPvaRWvX6dppTHZlYnLKvU77pkUIEsMtLvGCXJcdfVi dDkSj/nu5UtgGUJUxqz5uv/pFJ/66JGiD/h3l4lOI1TpjJfAQACt2hrvACqya7G7UoB9jdDnnb/ jvW8SpRnBItdi3hHlzB6MxXXETm6eKz1Cz6El8pDZ25DMZHNvwxVkBPE6wK4OJ02ugI+qsWh9uJ b/w8B0ot98eE7P0lHHYbAGptbZxcXTYKZ2GB+a6NFN9iNj7XTSB2M1H1hQvzc/3g3nX77NjGK4r FbxmkcOt7RR5n4SI3UmsLP1lai7StMp5Tgroca/7raOmrdHp5VHfayIvFJMow2bKrm9z567dG79 I6b1mOHsrkwKiOr7IwLibvoP69elSrl+nIqyzMme+QArv1cfMSfK5bWDucscFOWCErMjtDkIQns +eOredUZDvJL4OY3q1N+VuYa/ylvNOk/2+4nILtlZU= X-Received: by 2002:a05:6000:cc1:b0:460:3210:950d with SMTP id ffacd0b85a97d-46032fd7d26mr23905451f8f.21.1781107959932; Wed, 10 Jun 2026 09:12:39 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 26/71] fpu: Handle all rounding modes in partsN_round_to_int_normal Date: Wed, 10 Jun 2026 17:11:17 +0100 Message-ID: <20260610161202.2235298-27-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x431.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781108488266154100 From: Richard Henderson Missed float_round_nearest_even_max and float_round_to_odd_inf in both switch statements. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell Reviewed-by: Philippe Mathieu-Daud=C3=A9 Message-id: 20260608190155.637067-3-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- fpu/softfloat-parts.c.inc | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index c86fc9ccc5..deb712e092 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1127,6 +1127,7 @@ static bool partsN(round_to_int_normal)(FloatPartsN *= a, FloatRoundMode rmode, /* All fractional */ switch (rmode) { case float_round_nearest_even: + case float_round_nearest_even_max: one =3D false; if (a->exp =3D=3D -1) { FloatPartsN tmp; @@ -1149,6 +1150,7 @@ static bool partsN(round_to_int_normal)(FloatPartsN *= a, FloatRoundMode rmode, one =3D a->sign; break; case float_round_to_odd: + case float_round_to_odd_inf: one =3D true; break; default: @@ -1195,6 +1197,7 @@ static bool partsN(round_to_int_normal)(FloatPartsN *= a, FloatRoundMode rmode, =20 switch (rmode) { case float_round_nearest_even: + case float_round_nearest_even_max: inc =3D ((a->frac_lo & rnd_even_mask) !=3D frac_lsbm1 ? frac_lsbm1= : 0); break; case float_round_ties_away: @@ -1210,6 +1213,7 @@ static bool partsN(round_to_int_normal)(FloatPartsN *= a, FloatRoundMode rmode, inc =3D a->sign ? rnd_mask : 0; break; case float_round_to_odd: + case float_round_to_odd_inf: inc =3D a->frac_lo & frac_lsb ? 0 : rnd_mask; break; default: --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108126; cv=none; d=zohomail.com; s=zohoarc; b=RXdJdY0NYrV8H9JToyvvJwa0hXXCoKRGBn1wH/oStaqgbtudBFxwoky5Gtm7/pIBD9aDRCqhf9Z3qkSzGOuhj7kz6e8KVAWmVSe3JcnwoMXZvG2s22KDkUCIOQ0pJmQdn4uH2IvD+VNohUHEKSndEeLFCaKNxmJOFauRkO65ez8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108126; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=kk5yPmaEwbU+tK815yLwz23ZBvPuXDa1/0rsNRgsUl0=; b=ctBf0TrVQZ5RCByLcCUpPBVJoLu4s2Sp9bEQppOiunf7II48uzWv/pgpP1zFmA8NgAvnukRq9nXQOz6Ani54r7q4iqeKlXsaSVMEnHmlDgTzcnB9AqY8530RVaRBiteHhs/fqlocK7X/TN4PPnA5YQuD9UDSUNamaQbcGphcqQQ= 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 1781108126262569.1234536938359; Wed, 10 Jun 2026 09:15:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY0-0000Tk-Ir; Wed, 10 Jun 2026 12:12:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXo-00087B-NI for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:46 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1wXLXm-0005a1-Qa for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:44 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-46015dc517aso5625646f8f.2 for ; Wed, 10 Jun 2026 09:12:42 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107961; x=1781712761; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=kk5yPmaEwbU+tK815yLwz23ZBvPuXDa1/0rsNRgsUl0=; b=CxshXtzOA+t+Yusa9pg61gJLjROM026QsBqmDUCvpAHvdpfbaC9HP2By/A0hyEaU9l ldrnqjzF9J0QC+hJY1uSR8iQfy/08+MDP4CX8cdu2Rug3NLw8KU9YPJ2+TEbv882Jz/d 0kd91uDlIqR5nN3yhUBY+CI6ptGo3P3tE1GoXHL4qRC8IuiT0EUNiCcK0d354AXJw3B9 d8no9XyUU3yJqqF7mhnnYsy1yUHakl5bn13Gb3EULJoVC6XdywOP0LD3HzemEnmR53x+ yO+LKd9AGwRcfq7j3+tFVWU2UikF4YmjK1PEBgPUGI4QBZuSs+USR6t4pKr0mNi5EEHo J9+w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107961; x=1781712761; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=kk5yPmaEwbU+tK815yLwz23ZBvPuXDa1/0rsNRgsUl0=; b=GC0FIez58N693pD8oGkb8amcP9IB/iSUQidxhNl3HJ+2Zs5K/4E4SahwMglfU77pRA 2RSNk2q/cDcj2LfqgYR0t46H2lr0dFF5L/HjRYcuv/x5YTn4wKiRrR/YPf/+G9yvS44L fnDOOj8jPov7FFxYad+Pflt9Ui3iWf5eT+H/R8n1ZqaZMkzbu9Z9a/uweH7r3hdZnmuP 35T0cGVjka9jjb+hxFERxZvVwwTK9unU3RzlqsHaGOse5IeH3MCVCqTZHowZVcVHZAXD +vyHDZWrS5FmAEAKroPozLoayqBX9l1LIqipgfMq+nT4f1EJ/wWXi6l15XIy6+5Rl5S8 5PTg== X-Gm-Message-State: AOJu0YwuucwdmmCkaNfW1X8ZPwbP9MCr/csPf8okb170LUHbmbysUq8B DpjBbFa/3Yyah+Ph0MwPwAHM39qcPwTk4/oqR/7SZOLWAMsn2rAhiDnW3HWfnH8XNVYeigvZdUP /09Cq X-Gm-Gg: Acq92OGF1oEtkCAC0z0/82jveREFT7t45Vw66lS9egflHSCFozjqapgVedCleZtwCic ZwOw3IXH+8C/l83zuGCVWI6PvkpnCqjZp3v5MCqBfC+YJeCNgg4iHIHKfx7In9w0jEouIgLChU4 m7DyaMguUlVjkwjIUm+BZK2LIM8LOY8wTrDccO9hLP8FRPfz+zaZJyfJ5gd17DCE/SYQKx704IY /DtekTRzRDgf8AWkJ5BtyzRNQ+wxpH0m4+l8CqQc64PUcapy2ANI7mfsih8uthSCBL+zdRXZxQB P2+pe7DmwqXzM+mfHRIZEhZ0I6u1ZjRgHefdwtCpWOY6RNO4h3ZrkbsQfGKut60UCG2QI9AKzdt dcWHFDYkW8+pnixhq+Aib6ditW8ECqJLL3rr0hxAv46Pq/xl0IJJOU/1pk9FH4PQMh2kR8IBWk+ 0+T9vYLVcjCdMGQ6DOzR6Or2tV6ZgJWXE7ZoN32O88O/fUHDfrDbi2hBbd1Gs0SS2W2FK4IY+Cg vE8kxw5AAnVfoCcNnaRXlVwrcpy+dNAAjJelGAaDf4= X-Received: by 2002:a5d:4e03:0:b0:43d:740:fb37 with SMTP id ffacd0b85a97d-46030641a81mr30626698f8f.24.1781107961126; Wed, 10 Jun 2026 09:12:41 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 27/71] target/arm: Use FloatParts64 in bfdotadd_ebf Date: Wed, 10 Jun 2026 17:11:18 +0100 Message-ID: <20260610161202.2235298-28-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108127528158500 From: Richard Henderson 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: 20260609192110.752384-2-richard.henderson@linaro.org Message-Id: <20260517002550.321291-9-richard.henderson@linaro.org> Signed-off-by: Peter Maydell --- target/arm/tcg/vec_helper.c | 78 +++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 38 deletions(-) diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index 91e98d28ae..12fb62958f 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -22,6 +22,7 @@ #include "helper.h" #include "tcg/tcg-gvec-desc.h" #include "fpu/softfloat.h" +#include "fpu/softfloat-parts.h" #include "qemu/int128.h" #include "crypto/clmul.h" #include "vec_internal.h" @@ -2895,61 +2896,62 @@ float32 bfdotadd(float32 sum, uint32_t e1, uint32_t= e2, float_status *fpst) float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, float_status *fpst, float_status *fpst_odd) { + /* Unpack two BFloat16 into two Float32, trivially. */ float32 s1r =3D e1 << 16; float32 s1c =3D e1 & 0xffff0000u; float32 s2r =3D e2 << 16; float32 s2c =3D e2 & 0xffff0000u; float32 t32; =20 + /* + * Compare f16_dotadd() in sme_helper.c, but here we have + * bfloat16 inputs. In particular that means that we do not + * want the FPCR.FZ16 flush semantics, so we use the normal + * float_status for the input handling here. + */ + FloatParts64 p1r =3D float32_unpack_canonical(s1r, fpst); + FloatParts64 p1c =3D float32_unpack_canonical(s1c, fpst); + FloatParts64 p2r =3D float32_unpack_canonical(s2r, fpst); + FloatParts64 p2c =3D float32_unpack_canonical(s2c, fpst); + + int all_mask =3D (float_cmask(p1r.cls) | float_cmask(p1c.cls) | + float_cmask(p2r.cls) | float_cmask(p2c.cls)); + /* C.f. FPProcessNaNs4 */ - if (float32_is_any_nan(s1r) || float32_is_any_nan(s1c) || - float32_is_any_nan(s2r) || float32_is_any_nan(s2c)) { - if (float32_is_signaling_nan(s1r, fpst)) { - t32 =3D s1r; - } else if (float32_is_signaling_nan(s1c, fpst)) { - t32 =3D s1c; - } else if (float32_is_signaling_nan(s2r, fpst)) { - t32 =3D s2r; - } else if (float32_is_signaling_nan(s2c, fpst)) { - t32 =3D s2c; - } else if (float32_is_any_nan(s1r)) { - t32 =3D s1r; - } else if (float32_is_any_nan(s1c)) { - t32 =3D s1c; - } else if (float32_is_any_nan(s2r)) { - t32 =3D s2r; + if (unlikely(all_mask & float_cmask_anynan)) { + if (unlikely(all_mask & float_cmask_snan)) { + if (p1r.cls =3D=3D float_class_snan) { + t32 =3D s1r; + } else if (p1c.cls =3D=3D float_class_snan) { + t32 =3D s1c; + } else if (p2r.cls =3D=3D float_class_snan) { + t32 =3D s2r; + } else { + t32 =3D s2c; + } } else { - t32 =3D s2c; + if (p1r.cls =3D=3D float_class_qnan) { + t32 =3D s1r; + } else if (p1c.cls =3D=3D float_class_qnan) { + t32 =3D s1c; + } else if (p2r.cls =3D=3D float_class_qnan) { + t32 =3D s2r; + } else { + t32 =3D s2c; + } } /* * FPConvertNaN(FPProcessNaN(t32)) will be done as part * of the final addition below. */ } else { - /* - * Compare f16_dotadd() in sme_helper.c, but here we have - * bfloat16 inputs. In particular that means that we do not - * want the FPCR.FZ16 flush semantics, so we use the normal - * float_status for the input handling here. - */ - float64 e1r =3D float32_to_float64(s1r, fpst); - float64 e1c =3D float32_to_float64(s1c, fpst); - float64 e2r =3D float32_to_float64(s2r, fpst); - float64 e2c =3D float32_to_float64(s2c, fpst); - float64 t64; - /* * The ARM pseudocode function FPDot performs both multiplies - * and the add with a single rounding operation. Emulate this - * by performing the first multiply in round-to-odd, then doing - * the second multiply as fused multiply-add, and rounding to - * float32 all in one step. + * and the add with a single rounding operation. */ - t64 =3D float64_mul(e1r, e2r, fpst_odd); - t64 =3D float64r32_muladd(e1c, e2c, t64, 0, fpst); - - /* This conversion is exact, because we've already rounded. */ - t32 =3D float64_to_float32(t64, fpst); + FloatParts64 tmp =3D parts64_mul(&p1r, &p2r, fpst); + tmp =3D parts64_muladd(&p1c, &p2c, &tmp, 0, fpst); + t32 =3D float32_round_pack_canonical(&tmp, fpst); } =20 /* The final accumulation step is not fused. */ --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108470; cv=none; d=zohomail.com; s=zohoarc; b=cH3s6dbrpwKOo89K6Idq09PCAbtZqt0q/i/8bCll4obhOp9KSsNy/asZgyBXoDj7wtvyPyFJEsUOUhyUa5iqphqpi7trCWJWBnhZzwq2JhQ0nQjzzB+C9l897Z89W80Rpfhobmr75I6XiRvX8XbUVei1/DW9mPzwpnyigVTrZps= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108470; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=SdxfOJk0kp4xmvVmtIv6T9t9OoURW5ztFY7x/wpK7SM=; b=cKNkFIyJFuQZjuURzbULuSDuh+4UbrHTGx7k2Y4eyBphCa+6+hJWeKHtec1/ilDjizOrbH58aFrrp29HoAHXAuu3jfqm1mYQKBVtCESrB/v1B7/MbnbXPxdf3iXTSr3zPVO46rNml1gz3fc7vPnailoJGXxuJ+tf5xJEV6SeIYo= 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 1781108470940800.3039709093805; Wed, 10 Jun 2026 09:21:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY1-0000ao-H0; Wed, 10 Jun 2026 12:12:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXq-00087w-Dl for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:48 -0400 Received: from mail-wr1-x431.google.com ([2a00:1450:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXn-0005aF-Vl for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:46 -0400 Received: by mail-wr1-x431.google.com with SMTP id ffacd0b85a97d-45ef616daf6so6478507f8f.3 for ; Wed, 10 Jun 2026 09:12:43 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.41 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107963; x=1781712763; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=SdxfOJk0kp4xmvVmtIv6T9t9OoURW5ztFY7x/wpK7SM=; b=BvvrV0WVRbkRePJRlgn0Pc9JJ9WeopwQRIcwjB4jQ2MM9xwYC+vz5H/fG3voZRggaJ ZMhWyGu3Z0R5xNgBr8Cn0JT/eQotEtAvCCYTSUkWV+AC64bRyHJMVFQ/meFLFUQDiKE7 zXb81elEDDbXXFBM4VHqRdNQzIgi+nW2S5Z/45AjpbeTZDZKuwGnd31Mu/EecQ3aYcNK xpjjNa7vbvuPzrKsEHHvh+SeLJRTw9n2oCHCjId1LBWYMYOjfbDDkcZtQcIO8DHKZGqI mnEWzRblEA2teiSVNDVJkW1P1BR+IC2uX1ioJg+MhIhm5kNHTolRsLACfPEyQsP5Q5Pv TVnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107963; x=1781712763; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=SdxfOJk0kp4xmvVmtIv6T9t9OoURW5ztFY7x/wpK7SM=; b=XKIptjJhoLIb1FuubBi9Y4Xhvn3udx2QTtrK/DKW8B2u6lYSfK/yhPJ7OVtdaydxmk hVRPSQWfTbhL6L2T/6ECZMgCAn2xORF+t76hT6o4bE43Gp8BgQQDkVAuOwTevXX9Ll+h 1PinfMMLvucplOijXncFSaR8BMw9Dt/DuoA/uKJhC63Y2a+8X62Vw4kvmOHM3FiGGYgj QB96OkmXrgTlprAqTXSKyUTxL2+t19/24LuZTG3w6eyQuX4M/pqEBnQ5BUWWu1TrVxJ8 xhDrUnDHN6HJAo4gX58f8XJBgbt3kode/PoT8zDUDgBWawAwlBc/PhN1MwYzDC1IyIkB 2Nlw== X-Gm-Message-State: AOJu0Ywu13BWmAOcD02HEFwxheRtfisvbZTBj5j9qdbLlGoUD9wXCIdB 1gqeuYxc5u2OcbigtuisNWADKGfj3JmoeLdurXE4GMXZxYrmI/q/OU/g6rw/jDDt9spHrIcWQqS xPEAG X-Gm-Gg: Acq92OGd03DiZZhq1bODVPe4Otkswv1jEFDSWcwc1wScmV3ak3/mfmiM2HACVMuIhsR izBAfFsKdTrql2sJ+0eow9YpEFDY0tJs6upRQk9geo8k1kEkvLHVVEHVGUw1i7QWFzFlqQzppc7 geKGJNLPPPlEMS4OILwfS0RTptg279h3a7vMSEHbmaylNnDDg74KH5LInS4pBgUlXOsHau7p9Pv x47yArysQl7vUt2D6+3VSZ32XuzpCYVdXedBL96rntgwmqV1bt2Kzo2p0PTkUN95N7AdGmVlUVj mpAueXxM4dLNhWyLrpIVhtiFqCwA0MnqIgnN55JZ4jmMq56kyL1mWP85xOm6p+zpDirnK4CXW5E QaxDZFJ/5yyThNT/D/PRW4Dar/yd3htFlXcStjCvApTYKyCP5pGq+Q4JpdIAwVJjDwRIrdb+DYn ZsXHHPkZjXwxmeseydmFn168KJFZYC6dix2rRWrCFdcQ4P7GjWyXgdDmETZJpyQQc6ebATQfogd NUprOea4+hA+QlnKucaJcuf6dOnnlJbYXL5SNNgik0= X-Received: by 2002:a5d:598b:0:b0:45e:73b3:8118 with SMTP id ffacd0b85a97d-46030512fa1mr40225945f8f.29.1781107962595; Wed, 10 Jun 2026 09:12:42 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 28/71] target/arm: Drop oddstatus from is_ebf and bfdotadd_ebf Date: Wed, 10 Jun 2026 17:11:19 +0100 Message-ID: <20260610161202.2235298-29-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::431; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x431.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781108474058154100 From: Richard Henderson This argument is no longer used. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-3-richard.henderson@linaro.org Message-Id: <20260517002550.321291-10-richard.henderson@linaro.org> Signed-off-by: Peter Maydell --- target/arm/tcg/sme_helper.c | 6 ++--- target/arm/tcg/vec_helper.c | 50 +++++++++++++++-------------------- target/arm/tcg/vec_internal.h | 12 +++------ 3 files changed, 29 insertions(+), 39 deletions(-) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 2bfb12c086..a1c08c91d8 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -1429,9 +1429,9 @@ static void do_bfmopa_w(void *vza, void *vzn, void *v= zm, uint32_t desc, uint32_t negx, bool ah_neg) { intptr_t row, col, oprsz =3D simd_maxsz(desc); - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (row =3D 0; row < oprsz; ) { uint16_t prow =3D pn[H2(row >> 4)]; do { @@ -1452,7 +1452,7 @@ static void do_bfmopa_w(void *vza, void *vzn, void *v= zm, uint32_t m =3D *(uint32_t *)(vzm + H1_4(col)); =20 m =3D f16mop_adj_pair(m, pcol, 0); - *a =3D bfdotadd_ebf(*a, n, m, &fpst, &fpst_odd= ); + *a =3D bfdotadd_ebf(*a, n, m, &fpst); } col +=3D 4; pcol >>=3D 4; diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index 12fb62958f..bd8ae5d6a4 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -2845,7 +2845,7 @@ DO_MMLA_B(gvec_usmmla_b, do_usmmla_b) * BFloat16 Dot Product */ =20 -bool is_ebf(CPUARMState *env, float_status *statusp, float_status *oddstat= usp) +bool is_ebf(CPUARMState *env, float_status *statusp) { /* * For BFDOT, BFMMLA, etc, the behaviour depends on FPCR.EBF. @@ -2865,11 +2865,7 @@ bool is_ebf(CPUARMState *env, float_status *statusp,= float_status *oddstatusp) *statusp =3D env->vfp.fp_status[is_a64(env) ? FPST_A64 : FPST_A32]; set_default_nan_mode(true, statusp); =20 - if (ebf) { - /* EBF=3D1 needs to do a step with round-to-odd semantics */ - *oddstatusp =3D *statusp; - set_float_rounding_mode(float_round_to_odd, oddstatusp); - } else { + if (!ebf) { set_flush_to_zero(true, statusp); set_flush_inputs_to_zero(true, statusp); set_float_rounding_mode(float_round_to_odd_inf, statusp); @@ -2893,8 +2889,7 @@ float32 bfdotadd(float32 sum, uint32_t e1, uint32_t e= 2, float_status *fpst) return t1; } =20 -float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, - float_status *fpst, float_status *fpst_odd) +float32 bfdotadd_ebf(float32 sum, uint32_t e1, uint32_t e2, float_status *= fpst) { /* Unpack two BFloat16 into two Float32, trivially. */ float32 s1r =3D e1 << 16; @@ -2964,11 +2959,11 @@ void HELPER(gvec_bfdot)(void *vd, void *vn, void *v= m, void *va, intptr_t i, opr_sz =3D simd_oprsz(desc); float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (i =3D 0; i < opr_sz / 4; ++i) { - d[i] =3D bfdotadd_ebf(a[i], n[i], m[i], &fpst, &fpst_odd); + d[i] =3D bfdotadd_ebf(a[i], n[i], m[i], &fpst); } } else { for (i =3D 0; i < opr_sz / 4; ++i) { @@ -2987,14 +2982,14 @@ void HELPER(gvec_bfdot_idx)(void *vd, void *vn, voi= d *vm, intptr_t eltspersegment =3D MIN(16 / 4, elements); float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t m_idx =3D m[i + H4(index)]; =20 for (j =3D i; j < i + eltspersegment; j++) { - d[j] =3D bfdotadd_ebf(a[j], n[j], m_idx, &fpst, &fpst_odd); + d[j] =3D bfdotadd_ebf(a[j], n[j], m_idx, &fpst); } } } else { @@ -3021,17 +3016,16 @@ void HELPER(sme2_bfvdot_idx)(void *vd, void *vn, vo= id *vm, uint16_t *n0 =3D vn; uint16_t *n1 =3D vn + sizeof(ARMVectorReg); uint32_t *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t m_idx =3D m[i + H4(idx)]; =20 for (j =3D 0; j < eltspersegment; j++) { uint32_t nn =3D (n0[H2(2 * (i + j) + sel)]) | (n1[H2(2 * (i + j) + sel)] << 16); - d[i + H4(j)] =3D bfdotadd_ebf(a[i + H4(j)], nn, m_idx, - &fpst, &fpst_odd); + d[i + H4(j)] =3D bfdotadd_ebf(a[i + H4(j)], nn, m_idx, &fp= st); } } } else { @@ -3054,9 +3048,9 @@ void HELPER(gvec_bfmmla)(void *vd, void *vn, void *vm= , void *va, intptr_t s, opr_sz =3D simd_oprsz(desc); float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; - float_status fpst, fpst_odd; + float_status fpst; =20 - if (is_ebf(env, &fpst, &fpst_odd)) { + if (is_ebf(env, &fpst)) { for (s =3D 0; s < opr_sz / 4; s +=3D 4) { float32 sum00, sum01, sum10, sum11; =20 @@ -3068,20 +3062,20 @@ void HELPER(gvec_bfmmla)(void *vd, void *vn, void *= vm, void *va, * i j i k j k */ sum00 =3D a[s + H4(0 + 0)]; - sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 0)], m[s + H4(0 + 0= )], &fpst, &fpst_odd); - sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 1)], m[s + H4(0 + 1= )], &fpst, &fpst_odd); + sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 0)], m[s + H4(0 + 0= )], &fpst); + sum00 =3D bfdotadd_ebf(sum00, n[s + H4(0 + 1)], m[s + H4(0 + 1= )], &fpst); =20 sum01 =3D a[s + H4(0 + 1)]; - sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 0)], m[s + H4(2 + 0= )], &fpst, &fpst_odd); - sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 1)], m[s + H4(2 + 1= )], &fpst, &fpst_odd); + sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 0)], m[s + H4(2 + 0= )], &fpst); + sum01 =3D bfdotadd_ebf(sum01, n[s + H4(0 + 1)], m[s + H4(2 + 1= )], &fpst); =20 sum10 =3D a[s + H4(2 + 0)]; - sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 0)], m[s + H4(0 + 0= )], &fpst, &fpst_odd); - sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 1)], m[s + H4(0 + 1= )], &fpst, &fpst_odd); + sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 0)], m[s + H4(0 + 0= )], &fpst); + sum10 =3D bfdotadd_ebf(sum10, n[s + H4(2 + 1)], m[s + H4(0 + 1= )], &fpst); =20 sum11 =3D a[s + H4(2 + 1)]; - sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 0)], m[s + H4(2 + 0= )], &fpst, &fpst_odd); - sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 1)], m[s + H4(2 + 1= )], &fpst, &fpst_odd); + sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 0)], m[s + H4(2 + 0= )], &fpst); + sum11 =3D bfdotadd_ebf(sum11, n[s + H4(2 + 1)], m[s + H4(2 + 1= )], &fpst); =20 d[s + H4(0 + 0)] =3D sum00; d[s + H4(0 + 1)] =3D sum01; 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. --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108461; cv=none; d=zohomail.com; s=zohoarc; b=TFqa3p6hGHzGrURknOH62X3mEhNzQTlp9bGI5IG186AZ8Ff8GzsTnBGqJa5pYGdtCrZ0rLprFZCrLn76V10dV4W6sAC9q2zdvcxSlt6Sf1Bn/4eevTOCmt8L8ccHz5i0EiPv5rOobeuy4GAB3ubG6ZYzzeQQgHey2O4DcdweSCg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108461; h=Content-Type:Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Pd6eD7/COo7WWsV/8JWVxxw8rUqDyIpp0imJUbZ0UTk=; b=cPM3KS9m7HGxfQGaOWeCwS5Z1ERaTEXu2rGCzBhJJPcLVD8eokAz1jbhLj/VlCXmdId6hSE2PFq3hBW/7H96en+9XaZX7yN1MRI00CJiGtSbIJ6odqxCj/EOpr2ueUSOBlx0FAlnBvWPn1McZi5ntCyif3dQ8mMXNNgLznx3d5k= 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 1781108461073763.1245312382773; Wed, 10 Jun 2026 09:21:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY2-0000l0-N0; Wed, 10 Jun 2026 12:12:58 -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 1wXLXr-00088K-Ld for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:48 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450: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 1wXLXp-0005aP-Km for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:47 -0400 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-45ee5cdbd28so10263f8f.1 for ; Wed, 10 Jun 2026 09:12:45 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.42 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107964; x=1781712764; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Pd6eD7/COo7WWsV/8JWVxxw8rUqDyIpp0imJUbZ0UTk=; b=QmQMJMZM0N80A6ghrhZU/5JJEuadtbQd8YZjkPH7bNCM7x/uhZxjylCtMtLCU2KFBn PaWdyjCT8pb/mEmzLv2MWrHfuJTBTgWdzaa1w9B1cd7bYPBttHHt1GgwEmor9bfpEHeY zy22R4BHGqJB1nTa/BzHQyqDMy1LDM+AYU8nAxCPUFAz32TTMOppRVLmDGvz2LDMpROa MR2pn5ExrBqJP9wx/Q/i+3fyZpRgAsHaX6mfmj4lrHPrl52jaDEWEJ5bspkdnL8il57e noVP/nh0YomhE/dLhHCC/In7wRugFln0xcrpQ8FcY/6NoT3MDRwik0i2l22Zp5JyvdHl 70nQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107964; x=1781712764; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Pd6eD7/COo7WWsV/8JWVxxw8rUqDyIpp0imJUbZ0UTk=; b=joc4fSjpRx3YPdnGGZTJWoP/L6SMK35/2YkNr1Ualh9zCzP2NSOVAa5Xw/OlgP6Q94 lEUWrAAZBUd/ZB7APCFLtS9JQjqmxJrgNCVh9ihZWeSJ+l4hxvnaN7HwhCcK4sONQBRw /uSuvGXveF0RhL8PFP2hbYWdXYoVkjIMMMgK7xA9dkmJWHFGYA3jhJlxwEpevVAMBE/e UuDDRnizy7l8ychWwXHDcoOVQwFnoZx76D6DT6vhTUM2iIy3z0IxnxfDuHjZWkskk+eo 5KUCZ4Ow3za8a5n/9ye5isIRG9MTZQgUyKhwmdfUcFRYBFqzkRe4xJ2n1wSaVRwOM6Ih WVVw== X-Gm-Message-State: AOJu0YxOBE+YIlz2K0eZD8cjtqfg+L2vbnac++Vb2v7pIrk5TY3LXG9X MlI5UONH7RFqBLUqyeAs/YAi1TbFGzVp/a0nRM4hUNWGOE7+sKfy9s3NGpwAEEJIC8ppshxjNqn PKL6P X-Gm-Gg: Acq92OFVL0Y1q5ShJRmeDPqhIb6cQ6BRjxAQIq+Y8mpM/OuU0HV+dxISE17V4lJJh96 4rWSDwebUxVcQ4ajE6b9BpIY/sxNyppl0Nr8j5MsEqnGZUQP3KF23n1U/1nGqfcsIrOqECihUdU Ww/rF30zpibLk69M4546gXVyC/wtuQPIWlBYBJJuBjAZD3E6ZRSWdS3lW8Vs5bSYZpi/k+x4ySH LvpHAY9ZSDDE+oqha3QdaJJyhfOdUl8zYChjbkR/ByOQyJ7ycZrTiDIXJeq+NwDesUru1q/mzI0 AxnwDTDpq3xIOU9icFHfKMAvlMm3xG0+nbbOSmdCdEoA8jiZWXsDXwXGJyyrOmcYyj6jMatcppV +uAh27qopvP6OkfmMsyMT6Ipo328USE8L+Rtmg/auulG3GPJX53xB0cs48MSUFlWnetqdUGqUbi UWDrZLx6xh8Ge27rdWKbqmrdwF8kQDpmlv1VPlYxbOG8ZsW6iqAwKrj7ROu9cja11Jy0F9gnRlU IIz6vS5dK630tmGwc6MdnILdEcLDTye1lkLjLZHCIs= X-Received: by 2002:a05:6000:2083:b0:460:1378:7b0 with SMTP id ffacd0b85a97d-46032b6124bmr31452682f8f.5.1781107963718; Wed, 10 Jun 2026 09:12:43 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 29/71] target/arm: Use FloatParts64 in f16_dotadd Date: Wed, 10 Jun 2026 17:11:20 +0100 Message-ID: <20260610161202.2235298-30-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::435; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108462048158500 From: Richard Henderson 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: 20260609192110.752384-4-richard.henderson@linaro.org Message-Id: <20260517002550.321291-11-richard.henderson@linaro.org> Signed-off-by: Peter Maydell --- target/arm/tcg/sme_helper.c | 97 +++++++++++++++---------------------- 1 file changed, 40 insertions(+), 57 deletions(-) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index a1c08c91d8..bd207de755 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -27,6 +27,7 @@ #include "accel/tcg/helper-retaddr.h" #include "qemu/int128.h" #include "fpu/softfloat.h" +#include "fpu/softfloat-parts.h" #include "vec_internal.h" #include "sve_ldst_internal.h" =20 @@ -1221,18 +1222,15 @@ static inline uint32_t bf16mop_ah_neg_adj_pair(uint= 32_t pair, uint32_t pg) } =20 static float32 f16_dotadd(float32 sum, uint32_t e1, uint32_t e2, - float_status *s_f16, float_status *s_std, - float_status *s_odd) + float_status *s_f16, float_status *s_std) { /* - * We need three different float_status for different parts of this + * We need two different float_status for different parts of this * operation: * - the input conversion of the float16 values must use the * f16-specific float_status, so that the FPCR.FZ16 control is appl= ied * - operations on float32 including the final accumulation must use * the normal float_status, so that FPCR.FZ is applied - * - we have pre-set-up copy of s_std which is set to round-to-odd, - * for the multiply (see below) */ float16 h1r =3D e1 & 0xffff; float16 h1c =3D e1 >> 16; @@ -1240,48 +1238,48 @@ static float32 f16_dotadd(float32 sum, uint32_t e1,= uint32_t e2, float16 h2c =3D e2 >> 16; float32 t32; =20 + FloatParts64 p1r =3D float16_unpack_canonical(h1r, s_f16); + FloatParts64 p1c =3D float16_unpack_canonical(h1c, s_f16); + FloatParts64 p2r =3D float16_unpack_canonical(h2r, s_f16); + FloatParts64 p2c =3D float16_unpack_canonical(h2c, s_f16); + + int all_mask =3D (float_cmask(p1r.cls) | float_cmask(p1c.cls) | + float_cmask(p2r.cls) | float_cmask(p2c.cls)); + /* C.f. FPProcessNaNs4 */ - if (float16_is_any_nan(h1r) || float16_is_any_nan(h1c) || - float16_is_any_nan(h2r) || float16_is_any_nan(h2c)) { + if (unlikely(all_mask & float_cmask_anynan)) { float16 t16; =20 - if (float16_is_signaling_nan(h1r, s_f16)) { - t16 =3D h1r; - } else if (float16_is_signaling_nan(h1c, s_f16)) { - t16 =3D h1c; - } else if (float16_is_signaling_nan(h2r, s_f16)) { - t16 =3D h2r; - } else if (float16_is_signaling_nan(h2c, s_f16)) { - t16 =3D h2c; - } else if (float16_is_any_nan(h1r)) { - t16 =3D h1r; - } else if (float16_is_any_nan(h1c)) { - t16 =3D h1c; - } else if (float16_is_any_nan(h2r)) { - t16 =3D h2r; + if (unlikely(all_mask & float_cmask_snan)) { + if (p1r.cls =3D=3D float_class_snan) { + t16 =3D h1r; + } else if (p1c.cls =3D=3D float_class_snan) { + t16 =3D h1c; + } else if (p2r.cls =3D=3D float_class_snan) { + t16 =3D h2r; + } else { + t16 =3D h2c; + } } else { - t16 =3D h2c; + if (p1r.cls =3D=3D float_class_qnan) { + t16 =3D h1r; + } else if (p1c.cls =3D=3D float_class_qnan) { + t16 =3D h1c; + } else if (p2r.cls =3D=3D float_class_qnan) { + t16 =3D h2r; + } else { + t16 =3D h2c; + } } t32 =3D float16_to_float32(t16, true, s_f16); } else { - float64 e1r =3D float16_to_float64(h1r, true, s_f16); - float64 e1c =3D float16_to_float64(h1c, true, s_f16); - float64 e2r =3D float16_to_float64(h2r, true, s_f16); - float64 e2c =3D float16_to_float64(h2c, true, s_f16); - float64 t64; - /* * The ARM pseudocode function FPDot performs both multiplies - * and the add with a single rounding operation. Emulate this - * by performing the first multiply in round-to-odd, then doing - * the second multiply as fused multiply-add, and rounding to - * float32 all in one step. + * and the add with a single rounding operation. */ - t64 =3D float64_mul(e1r, e2r, s_odd); - t64 =3D float64r32_muladd(e1c, e2c, t64, 0, s_std); - - /* This conversion is exact, because we've already rounded. */ - t32 =3D float64_to_float32(t64, s_std); + FloatParts64 tmp =3D parts64_mul(&p1r, &p2r, s_f16); + tmp =3D parts64_muladd(&p1c, &p2c, &tmp, 0, s_f16); + t32 =3D float32_round_pack_canonical(&tmp, s_f16); } =20 /* The final accumulation step is not fused. */ @@ -1293,9 +1291,6 @@ static void do_fmopa_w_h(void *vza, void *vzn, void *= vzm, uint16_t *pn, uint32_t negx, bool ah_neg) { intptr_t row, col, oprsz =3D simd_maxsz(desc); - float_status fpst_odd =3D env->vfp.fp_status[FPST_ZA]; - - set_float_rounding_mode(float_round_to_odd, &fpst_odd); =20 for (row =3D 0; row < oprsz; ) { uint16_t prow =3D pn[H2(row >> 4)]; @@ -1319,8 +1314,7 @@ static void do_fmopa_w_h(void *vza, void *vzn, void *= vzm, uint16_t *pn, m =3D f16mop_adj_pair(m, pcol, 0); *a =3D f16_dotadd(*a, n, m, &env->vfp.fp_status[FPST_ZA_F16], - &env->vfp.fp_status[FPST_ZA], - &fpst_odd); + &env->vfp.fp_status[FPST_ZA]); } col +=3D 4; pcol >>=3D 4; @@ -1357,15 +1351,12 @@ void HELPER(sme2_fdot_h)(void *vd, void *vn, void *= vm, void *va, bool za =3D extract32(desc, SIMD_DATA_SHIFT, 1); float_status *fpst_std =3D &env->vfp.fp_status[za ? FPST_ZA : FPST_A64= ]; float_status *fpst_f16 =3D &env->vfp.fp_status[za ? FPST_ZA_F16 : FPST= _A64_F16]; - float_status fpst_odd =3D *fpst_std; float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D vm; =20 - set_float_rounding_mode(float_round_to_odd, &fpst_odd); - for (i =3D 0; i < oprsz / sizeof(float32); ++i) { d[H4(i)] =3D f16_dotadd(a[H4(i)], n[H4(i)], m[H4(i)], - fpst_f16, fpst_std, &fpst_odd); + fpst_f16, fpst_std); } } =20 @@ -1379,17 +1370,14 @@ void HELPER(sme2_fdot_idx_h)(void *vd, void *vn, vo= id *vm, void *va, bool za =3D extract32(desc, SIMD_DATA_SHIFT + 2, 1); float_status *fpst_std =3D &env->vfp.fp_status[za ? FPST_ZA : FPST_A64= ]; float_status *fpst_f16 =3D &env->vfp.fp_status[za ? FPST_ZA_F16 : FPST= _A64_F16]; - float_status fpst_odd =3D *fpst_std; float32 *d =3D vd, *a =3D va; uint32_t *n =3D vn, *m =3D (uint32_t *)vm + H4(idx); =20 - set_float_rounding_mode(float_round_to_odd, &fpst_odd); - for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t mm =3D m[i]; for (j =3D 0; j < eltspersegment; ++j) { d[H4(i + j)] =3D f16_dotadd(a[H4(i + j)], n[H4(i + j)], mm, - fpst_f16, fpst_std, &fpst_odd); + fpst_f16, fpst_std); } } } @@ -1402,24 +1390,19 @@ void HELPER(sme2_fvdot_idx_h)(void *vd, void *vn, v= oid *vm, void *va, intptr_t eltspersegment =3D MIN(4, elements); int idx =3D extract32(desc, SIMD_DATA_SHIFT, 2); int sel =3D extract32(desc, SIMD_DATA_SHIFT + 2, 1); - float_status fpst_odd, *fpst_std, *fpst_f16; float32 *d =3D vd, *a =3D va; uint16_t *n0 =3D vn; uint16_t *n1 =3D vn + sizeof(ARMVectorReg); uint32_t *m =3D (uint32_t *)vm + H4(idx); =20 - fpst_std =3D &env->vfp.fp_status[FPST_ZA]; - fpst_f16 =3D &env->vfp.fp_status[FPST_ZA_F16]; - fpst_odd =3D *fpst_std; - set_float_rounding_mode(float_round_to_odd, &fpst_odd); - for (i =3D 0; i < elements; i +=3D eltspersegment) { uint32_t mm =3D m[i]; for (j =3D 0; j < eltspersegment; ++j) { uint32_t nn =3D (n0[H2(2 * (i + j) + sel)]) | (n1[H2(2 * (i + j) + sel)] << 16); d[i + H4(j)] =3D f16_dotadd(a[i + H4(j)], nn, mm, - fpst_f16, fpst_std, &fpst_odd); + &env->vfp.fp_status[FPST_ZA_F16], + &env->vfp.fp_status[FPST_ZA]); } } } --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108321; cv=none; d=zohomail.com; s=zohoarc; b=hAEvi5ZjTrxVqvkdA2JZBhPsaTUg8lw+y3mUaFihcrV5KjnpCsbjFr/PVr+v69xoXQIrIedJT3JFJ2Pioo4/GQnMJfLkG/kuOYKxUkOzR1HemiS4r7g8qPX3OrW1LgfN+obS1hslGVbhZKC1ByRHWyE18W3bRLd7VXv0IrJLk0A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108321; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=2x25ZWjIELcsSEd0ptqxdzALncLgcmwdwaJarOGjONw=; b=YpuBYGaTZbqt17AG2N981lCwGh+Ha7+16RgxuPbd0QOYs9V1lmJUJZ+fgqylup+K8bXQ+0LIE44lzJ0d+oYgnTGQs8/HH99Rz6fHPmR9wCZs/2SS3x/vEOhvRglkWQUd3W00Yrlk+D4mJxhx0LvaLdlw+fIPH685kMT8sgRFKto= 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 1781108321706777.3732455369727; Wed, 10 Jun 2026 09:18:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXz-0000M3-P3; Wed, 10 Jun 2026 12:12:55 -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 1wXLXs-00088y-DW for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:48 -0400 Received: from mail-wr1-x436.google.com ([2a00:1450: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 1wXLXq-0005ah-AG for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:47 -0400 Received: by mail-wr1-x436.google.com with SMTP id ffacd0b85a97d-45efa80e0afso5456945f8f.2 for ; Wed, 10 Jun 2026 09:12:45 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.43 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107965; x=1781712765; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=2x25ZWjIELcsSEd0ptqxdzALncLgcmwdwaJarOGjONw=; b=IWYY2AR9VDAHwAiEke2hZhy61p2N19D4rwR39g5y7cqVjr9pc8z8RwCtMEvEKbLcxf 3Y4OC/WSGoihVo1s+oKoJp9N04NgabkDasLO1ipz+cA4FD82QLKXGx66DS85cFDuyccA rXqeR4gXNqaehpnF9NQ7HmhaCFWrw9GToqzfDvFIX1F0FWf9A+AOywbfUL5BcJQI++Rd /g1LfleY9X5Ys0tnFrsO/0UUw2/uT5gE5/LrT2Rj8ZhIFxL8FOOqOUiAK3oO0P0Jo0W4 YDMnShM66wpLEFknw4/AUoT2fUzzHrPj/0J0IQjddWCjUYNSFs2oKzYWD7LXVGmlHqyH DNBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107965; x=1781712765; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=2x25ZWjIELcsSEd0ptqxdzALncLgcmwdwaJarOGjONw=; b=nVqSTLe0bRoRdV7MmRjLc2YZ4TXnoiDnp7BapccTApz13KGNDkWzhT69z9Duw4YKfn FYHKmkO5S9TBcr+EzHb6nzQe3rgF5BQrJKIrD7vlMeYp8XNpoa5l7g04JMr9VvK+ddhU fiPEwGG6wCVEdVAc0EAgMfbIu6+60J9qSaRCeN/FsuL+dms8sPkC1n9eT01pmLx+bWmt 2oBGDmo6bvjsdgtnDfrEmRWVNR/a20NgGWHdzcMGG7J8vPswpzspNG0dnV/4SEnps7Fn eoWsRXa4JBWVYw482vAEsgikYb/8javx0khgTn21BIX1xQsTwC4jJQk2w/bHyuJqyDjh fwhA== X-Gm-Message-State: AOJu0YwV1OGgV7seC8vpKPtX3tnXvBlLEUadrTeivDiyg6yvnM26X4QO U9Z0CCUUqfSRuUPtknc0bHZczjdFmAG9HiStG/2/tYK6vMTnSzhhZvpm3utCF5kceVNxbUEzlLe AULTc X-Gm-Gg: Acq92OFoBCCOmUzbUIx++uc5FxcFXhLoGPQDOAUoxHUH4iW8q3clVtaxptyl3u3unQJ R1strkS8xsI9ubEQi6Rw37gYDedbuGYRnFrQfopYL/BzMKUBIf5sUi9hD4ScxF7cOhJvLetRt93 ZeLOw4JuP4bjObprUEe/WuRv81Gel2CNrTQztW9cf1V1lCAkH7fhVunnXdkrl7NRapot1hYPTgR Sc4u0HcArnJDgMzZvkC8zfZYYfcf7UvO0YBH5FJVIwNfMmn03aghGjombF7JRww4YLL6tOsFR1e RWl9iTL+5bpbJrR5PPKZgKYmq6fS5SdI0LbehX4zFz1nRF2JIS9taNfKaOJ2ArLvkB+8RfGb7lF jr3VqcNF+aHEvsqZnuBZLdgeowpf5Y4+umNw3t+xZqbiqriIEzbxH+v+bulgtHke9l5+yc0kV3V 9xVtV5TUtlzplBSCGd+/ziAlDXiAmerE76m1Zwv8i3d0lFAq7/4+PVjUjOQsspHYmYvqMHnlCuf zYBuzozwvfy9MnmgLsOvXAe6t8drQ+AQvP/ttQx9QE= X-Received: by 2002:adf:e906:0:b0:44f:da08:18f2 with SMTP id ffacd0b85a97d-46030507507mr29862131f8f.12.1781107964875; Wed, 10 Jun 2026 09:12:44 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 30/71] target/arm: Generalize TRANS_FEAT_STREAMING_SME2 Date: Wed, 10 Jun 2026 17:11:21 +0100 Message-ID: <20260610161202.2235298-31-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::436; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108323019158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Rename to TRANS_FEAT_STREAMING_IF and add a new parameter. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-5-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/translate-sve.c | 12 ++++++------ target/arm/tcg/translate.h | 6 +++--- 2 files changed, 9 insertions(+), 9 deletions(-) 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); diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index 37a7268b32..ae3897b456 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -880,12 +880,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 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108530; cv=none; d=zohomail.com; s=zohoarc; b=NwZaYy9L5zl1MzY39FD1kQiNfsP+vOGi2STjy0xgUywVdr8wxB1TL6r1SOm5oO05csU6T8i+g7N0wbQmAZCtji/j1pyiGEftNXd6snVQmFAEDdagOBJj6c3oR2eaMKTxw8jHYtomGI2K0cX3n0VFj9z/O7N8cklCSf+1Ig4fsGM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108530; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=wJCeBrpEENm6xQJkJZv3yaCpjhQMSJugeFLYjZ19DHM=; b=l8e6uhOy0jvz2LP7PihGUU+WPRfg0kfEnlxxiudiM0roQxv2h8bp+K2uJJfW9F6bOFqmitlTC4cTlJbPspaul5VRg1G/rx9TgXJpOucLX5mIhmwLxGzky2Ne7p4zszTxOeyNixyiYpXSxHZoIcoDJzQl9bzr5pqdX1v3tIoImEc= 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 1781108530649272.7543325966386; Wed, 10 Jun 2026 09:22:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY0-0000VJ-Nk; Wed, 10 Jun 2026 12:12:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXt-0008FK-O7 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:49 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXs-0005b2-4k for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:49 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-490b613a17bso68572695e9.3 for ; Wed, 10 Jun 2026 09:12:47 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107966; x=1781712766; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=wJCeBrpEENm6xQJkJZv3yaCpjhQMSJugeFLYjZ19DHM=; b=FhnHlvmT/6+Q5ScIoKuMWS7+liVs7FSI5+V97EkbXyaenq3vrQt/mZooQkny62ALkg 4DmNT7chRv6Wd9jJUdaSXAkgiouylSsc7qKBSTvQcbNgLuXkf/9OzAtHteTEUp5FlTZH hudU9y+rLZNLVWgmHzsYStjoyZuxkIyDlSWjd5yVyIWapHkx8xpINDQf8o6D7ZIOsw67 o6bm9GGrnKsANdXen5bvYaP7yZ/fxNsKabCVy/bJkk5WaZvVdOw1qmTk8QTlzr9rAWME kHO0LtwhTbL7nOZaLAmzbKWm4yzTpW7TZnAXqIzVM0C7ZkaFlR2O1TjSNUHXPWtgpRNr q6Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107966; x=1781712766; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=wJCeBrpEENm6xQJkJZv3yaCpjhQMSJugeFLYjZ19DHM=; b=bI4dsEzeNkt6vIg0qegDutlz7X4C5yygEJHpEqOq+cAdk6G1fr/Q9oAoxKsbxPh0nD o3lvJuI91OXkswU1KJnV//G5z6H2IyI2GMTwpo4FzMwi/5GCxXCcVyTM71SbifyO5Q5a s+KPOSKaIhQi5K1GuMGquwHW6upmE2AEFc4efdKYP2Qn1l+CWsX1wUf/rYUlaaS4TABj J/krumJ3d4HDA9Bx1l05N8iXukhy2T5Gz7PrVq940Gz8/Gp2XjU/JSpV0NsP1PF4WnvF 6TWIwfYUjm1aLtyLn55kDHok4Ol2c1KMZ9SMZSc2kr7dBmm3PG8Z1mEZz0DyGQJqqNSs +ATA== X-Gm-Message-State: AOJu0YwbDWZWLyyPlX3OFepSMG23Z/MomSxpZbXszbYRz8cvsnj9idYp dVQI5iZZY3nEXnlaBvY/Dd4l6aZAmUxNK8eDPhXlLiHRB+B5I/awfNCso05bI+9N0R1UC/GBhJr fF+DO X-Gm-Gg: Acq92OF97txEfR6KT0ArSuCl+MVl7NkyLbIHypOw49c+pr0cmrRekYvvAJ78UBRM2k+ oq9eoWcPQzIKN/TNkP/YFbob66WrM1gOAe9cu0sOwJUhJEzJZ71aARhkTC35omHugM9YxbqT7ei N7NKKTy8C58uLCjmaDl/uX8saMlAKet1S/txGkGdCRywoV280qtgSu0ZJ3a7tlXow7ZefMO0qgn 93u7P5bPNTAU09g175YahIwargGyMFL2MFT2JH9AHg3E9DmMxEtwkpkgol/ZkKSJnIWW227mXWa /wqWzPmCIuVB4spEIrXCombHy3wjxYOtakM3qR7Ka+yzverwvPc/iyYsGcstTc4AxhQC3G/AlZH jLU8oRfFbUk32bpYO49S6GQXdvRT/wTMeY+9q60mP9C9/pVzf8/WdT6E+XSf9SI2Gch3jnqQIo9 C1EEO0WY7ui5gBfhohhCPE0BgonGwsRq28DGi/fl0upCcWYi3KNlGxSwUz/mTDCjpHgva01Hq+/ gB9jIx1xGE5xxVcyHg4CmJV5NDB8uUpE5kbzozTesM= X-Received: by 2002:a05:600c:821a:b0:490:4973:91a0 with SMTP id 5b1f17b1804b1-490d71fa976mr102376305e9.10.1781107966265; Wed, 10 Jun 2026 09:12:46 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 31/71] target/arm: Introduce arm_init_fp_status Date: Wed, 10 Jun 2026 17:11:22 +0100 Message-ID: <20260610161202.2235298-32-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.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: 1781108532465158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Create a function to set all default controls for a float_status. Other settings for specific FPST will be set afterward. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-6-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 8771b695d9..10daca0ad6 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -322,6 +322,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); @@ -644,20 +651,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 Sun Jul 26 14:11:02 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=1781108285; cv=none; d=zohomail.com; s=zohoarc; b=YYevZMjq8PRk9qB7yHUMDGbIkOq7BuQGx1aLuXMReqlESBsd57Y/XD7CMykujq40shGaajiLlAwuNGSaCOSjo9f1dZ2mxTHeUffyi5xXSjmvM+Q2N6UGtpHnuT0TKzXc82vh5kSvCD5K6vkHrOPlTYcXnYZa6qIB1UZ9DR9RIJM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108285; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Z84GzXxQ7U2GULN3oFy8cILUf1DiwIBW7XhtGdCfcHw=; b=EjeElg9Nv3edzXu+3LWKlN92TlLFCztNo/hrPLmaS5PR/NM0rBkeYqYCJjs1eYo9pzsoz82dVZQeriSVguySnQH9LtAxolQ3yzl5UTsxLKhCtvr07pXV9CGxgWo8CkfxSpVJ1fcHQxOONSuE3ZVKNY2VelBladG2MZhtMWIXTdI= 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 1781108285033434.65181985961124; Wed, 10 Jun 2026 09:18:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLXz-0000Lz-Mc; Wed, 10 Jun 2026 12:12:55 -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 1wXLXu-0008Ht-Hl for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:50 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450: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 1wXLXs-0005bE-Vu for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:50 -0400 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-45ef4223be7so3860293f8f.2 for ; Wed, 10 Jun 2026 09:12:48 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.46 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107967; x=1781712767; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Z84GzXxQ7U2GULN3oFy8cILUf1DiwIBW7XhtGdCfcHw=; b=LO82+gv2fKY2CXm4UD6ayfElHOO8AnKUVnqVisuyS2yJrQ5CTwqnwERsAM7LsMtzpa rku0PfgcNAjMM68eE00a9qhid0Qjv0hCHm6fwEqFhibIK9QPC1+1lGqqhJAI647QCZU2 jls1sGJDYICImZia26d8WhkD8dBd3qbq6FRDljEvfchCBFRFlVK4k0e9gRdvlDGIPko6 UrHHOvsGNni2MfHNXW8IDaA8qyxzlwmWDb8S8IZM6Yab+NwTBBk5GlR2mH55n8dL7tqR mtS06dq0oXXj03DwqzlzB7S6AVW/v4tfPuCD3ur3NuMtIM3YyHWEeBD266lBK90F9IDT CTAg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107967; x=1781712767; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Z84GzXxQ7U2GULN3oFy8cILUf1DiwIBW7XhtGdCfcHw=; b=dpNhGr4bwvVCmwYOH+hLdBhFVwhdcFDaOkJ9HnfJ14ymIxpI/OWNMXdJuyF0IagUZ1 9PhT7cDnQXaPrQEcQBuvkVl4E9m73ArlrVg5EEKDUtK/cwCyjhone/aeDLLUu/AemIK4 J1KQVOSuLDXD2ol5ott0aO2czjpxOVITDPsNFJweFFWxdvC2uryXaZM59LX1IF5hBfB0 Jwo0kdsP1rpidOH5IPiB7/NuBmDR/9iLQ/9HAk+6p8fSt06RSUiJIVcNuVbMAqlP7hOI Y9itQQwrzoilTPFCMOCfVIKyJ2H+fL/XnQ5zLNeOSD9M3CcTCoXtaA0J1Roouwc523gt ybZA== X-Gm-Message-State: AOJu0YzXobuZzTx51zQV3e57FA0FDyD4hbwERwe7OuCsSnDiOvUObT9L E30bDsuBS1gcgA3c6d+QNVA2p0nQWIRzgRj98B2F6KF+KH1pIqx67TBhVtRMsj/CsozZVUKMYgQ 2XKhM X-Gm-Gg: Acq92OHN1j69/sc6hQY2Tw/b453QGKJ1R+DrHaweZqAkFyKhMe5VYdnpV6AcSJ55E9a 72tDjI8DLlXNZ/oH677O6EpHowgZWqez3NlSmyyxdyZRFDuD5sEFhGWzRh5vHR+6oQjzYedeZea Vn58dFzrpn9Fa2LDJMgkAjb4+UcIi6CVAJ1MEXZ85zQqyQJ0h/Ey7Ki1GdjhBFn4KZKLFrzRmag Eo3uDl2FVZhaNVxHsYXNhHZIbqiltLo2pjcID675CJEUo5UGH/XpXU3Oi3Jjrs9Mqc2S98L3LBC Lx7WIl+qSfyYMTdeYMpFJy5NEGqbWG/LsTR4VD7d/mtbZhubrHdeaadp/qIE4vea1KzdasR2rF5 Ud6ffBKqMdZcry1SBoKfyraGUhpkxoWuWCXoWX/JfAitbVWNDSo5xyhq6Bz+5rKBULhGWA4382C 0EDwiHjVr0zVrOWYr443CQNgTUptrgBgc3iiwAM0RheMWn267Omo8WoCaA8EHP9bH6aBGAfT+V9 HlZq3Blvll5Cz1q0niTeOfSalfctztkw3BjE1AetAg= X-Received: by 2002:a05:6000:2504:b0:460:3b5d:43b6 with SMTP id ffacd0b85a97d-460566c97f1mr11745637f8f.31.1781107967425; Wed, 10 Jun 2026 09:12:47 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 32/71] target/arm: Set e4m3_nan_is_snan Date: Wed, 10 Jun 2026 17:11:23 +0100 Message-ID: <20260610161202.2235298-33-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::429; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108287180154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson The unique e4m3 nan encoding is SNaN for Arm. Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-7-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/arm/cpu.c b/target/arm/cpu.c index 10daca0ad6..419e0b3ed4 100644 --- a/target/arm/cpu.c +++ b/target/arm/cpu.c @@ -326,6 +326,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 Sun Jul 26 14:11:02 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=1781108533; cv=none; d=zohomail.com; s=zohoarc; b=giCDSdJxunYPOTYKn/viYENkE+9VOy6/B48m8x1rJkYC13ON/LKBGEtHD93G0xXmEDZz7Cz4hhiG4sUblrFYkgRPAt3HFjGTa79T0djHtCK4O0xRBAot+cS9zsvPNMf+ENnya74vj4UEU6J+XZ1Q6vLrD/Tuvu6828ww3EhDYy0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108533; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=6wyWgybJoSnU3PFN3aAEZO/QQxJJXzyYqEFGFozTYqo=; b=O3MMgNK4JS5GI1K0KNwuKBOwan7qk5rmBLRLdbfD07JdwGMv+lnulPRB8qUf8y9Km8C+KQlLend4MCOxVQXHg2Gps4TZYc6cMIyd3HOC6pdwLTGFM/kPBCa91LIAIS9Gf30e0CZjCO9269vAKDG6SDPi2iBif5GTPb9AqwEyMvg= 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 1781108533739522.304770626065; Wed, 10 Jun 2026 09:22:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY4-000123-Nk; Wed, 10 Jun 2026 12:13:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLXw-0008Tv-On for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:52 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450: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 1wXLXu-0005bf-Eh for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:52 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-45eeba68948so5011995f8f.1 for ; Wed, 10 Jun 2026 09:12:49 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.47 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107969; x=1781712769; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=6wyWgybJoSnU3PFN3aAEZO/QQxJJXzyYqEFGFozTYqo=; b=WHL5+Uj3Fobz+9uXJhbofZ/5gpDPCbkqjEtZtFLdMh1UiDM3vnYarHCFtTwI40RRD+ nRZIUUR2zvfh77jFROdSuZzpEpS/WOX9O6DLcp7ebWG5Pgshbp8wfm4NzgJFsbWwKJrf Xkru2R5o1TSfhI0ZPgUKaz8aL7oslowWomr7DM1m2iSqywP0ngKX/pkYM9PCOf8quQ/X DvrChiB+ZHBjGvksnQZRMVl89DEdEic6MzkBx+yygHHVZ7YKmkdOKynWgOafcKQZ37E9 92hlwqQjtoO5KIYagS0ZokTD7AC2eHVhInsTYj1eE10mIZGSlxwtRmUApSeJ7yunyV0i 8Eiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107969; x=1781712769; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=6wyWgybJoSnU3PFN3aAEZO/QQxJJXzyYqEFGFozTYqo=; b=CTFJ0Uxzd9Lbh4CXPOxeo1CJ6NPDcoMVNo6k+dcUxtiJS0IyDMTpPwewWukSSfUsz/ W0Nj3Z6JStf0BSEdXliIL1Ra83KCGBOH49l2++SxypqM0JcOqh+ZX6R4YeIkL2JvyQUM qTPSRTj41qL5r7x7oyo5YaoDgZ0JleH9WJYhdw5bJh0MN0dcGQG66VxwP8G68ShaOkN2 uOaZzwq0DAPdtrd6Uh7W+wjABpWHLVn7mukbcWAXPgtpNIsb3Xzlqz4A9nXXzrMsXags VgNdzau6g5yV+bevy8dtuA0qyP7qjclrmh8JR+TLK2dHfTzBL4syaIFDoxvnrld5hKfm VNWw== X-Gm-Message-State: AOJu0YwqNWmI+qdVL9UiiKgP+LewLjAOMcDcfwD1XDiqhmmqpTZAJ3hG /SntZTn4sot2y1GvTFVyfAp+ze61kWnFwRkw1tROouUkqmDc+UhxhKGVVXRX0D+NRrXvz+om6LB xZrpl X-Gm-Gg: Acq92OE/Co351zh+WGVj4O+oNmmdT39jPpiM6QJYZ+wNvlMaUJArXtPSE5PIaJ+Cihf kVdSaF8Sj+rG3TLHVQ6fYIvD4YKzfmKf1EY4QQtYHYkBOq71KjLskDk22FRZuUHgUan7o/+kTsO P4LnjAXCSMpC+Ew4ObidrBmtl7V7DISasVuAJCRqkgeqEmYunzifCd48cZ9JyCWtZVSDdclahPE cwQ6moSWS1NkGhIl1roFHUZNyaGHm38sKyoMpTpVL6aNeiYZJW2uhZ2Wao5Cs3JIl9iBG7WoiB9 BUhMnhfHbjaoiz5B/a0SBSY/AXZxvCgM+xsU6UxRw5N0jTKGptqjtmYVSpu1ZDg9u7M4U8L3l8E 5YxPFvGEf8Eok11DGPQcK2IeDEKs6pY9udsP8xZEpGGNxw2I8QuP1TIcfySsOOsVleOI9v/w0fq W+XTRlmh2UET3T5ZFHC0PUUtSr3kW8NNPYbnOkKxdx7tGNnXESyXcgGrpV00FwJiiKZTVbd2xZu UFrZH8b+bv+cNOO7FGf7M+vUSfQAZt0/xd+Aru/0EmOF7oyPD1LcQ== X-Received: by 2002:a05:6000:468e:b0:460:2477:2284 with SMTP id ffacd0b85a97d-46030630b07mr26093754f8f.39.1781107968872; Wed, 10 Jun 2026 09:12:48 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 33/71] target/arm: Implement BF1CVTL, BF1CVTL2, BF2CVTL, BF2CVTL2 for AdvSIMD Date: Wed, 10 Jun 2026 17:11:24 +0100 Message-ID: <20260610161202.2235298-34-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::433; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108535151154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-8-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/helper-fp8.h | 14 ++++ target/arm/tcg/a64.decode | 3 + target/arm/tcg/fp8_helper.c | 124 +++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 6 ++ target/arm/tcg/meson.build | 1 + target/arm/tcg/translate-a64.c | 34 +++++++++ target/arm/tcg/translate-a64.h | 1 + 7 files changed, 183 insertions(+) create mode 100644 target/arm/helper-fp8.h create mode 100644 target/arm/tcg/fp8_helper.c create mode 100644 target/arm/tcg/helper-fp8-defs.h 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/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/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/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/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= ')) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 21ec3a5de7..5e8c86235b 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" @@ -1461,6 +1462,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. @@ -10709,6 +10728,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/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); --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108431; cv=none; d=zohomail.com; s=zohoarc; b=Yix77IQ2lyN3T66q8k338Hpm5uiSUEljMvUpwVCN06p5dG06EfT2Je2HNfmeZD642hCqj4ZJjy6ie2GUXx0mNCD9xygSJxV8MfoZx7OdOwoPkbpRqxgwhH63XNqfbGVN2V6L2dkhXlIQltfJUlTTwGW844/ukS4Whj9OxVr2DrA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108431; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=5MAq/+zOPquUvnjQyptIkEBsY5qNKxyao34ulQ4Vi+M=; b=HeIVhNEw0MVfcz3FVR/B0kt8+aEEeeWLK9cuPo92z7BPjPpaCw+yE89C7PJk0Be/0p1auEs2ze9PMwnAREue5b9WfTH7WhMqMwgb8ZbjJeCZNTkNiMaPVpfrgb3w/fF9UF6mQY4DlCpd5so3oSBnMHkSbDGJosCUmn3axp6Qfj8= 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 178110843193193.44361404149049; Wed, 10 Jun 2026 09:20:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY2-0000mA-Sh; Wed, 10 Jun 2026 12:12:58 -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 1wXLXy-0000FB-Em for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:54 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLXw-0005cI-38 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:54 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-490d1e54b3bso32600565e9.1 for ; Wed, 10 Jun 2026 09:12:51 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.48 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107970; x=1781712770; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=5MAq/+zOPquUvnjQyptIkEBsY5qNKxyao34ulQ4Vi+M=; b=Fdzh/Vv1yy1Q6lp0q9ass+TsaTsrrPwg9Fo5tUaTVn4/J8hE4m4B6I27idL0jqXDwz MBm0VQ3s5wAG5PPV+PgjT5/4KYyWImlMdc1CMew+5i6v3q6Yl4ybC/hshQ7wd7KnFeuH 8IxOBGDjRgljltkwZ9Jr9MH/48X4jNpEjqJP0oMcyPyLhZK1cKo4tF4vqbKBG7ObSF6e GYxCz7AKY8x1CenHowlhvMpJO45ygI9Rmb1F6MVD8mROvk1s/6DF3K5J8F6gMghAU8jm hM5T2vaEMUuptdEFmFCHcnOJ1cRPrV8jVT7fz+ddc0t9Iy9zcQZxU/dQRq8q38afZeRM 1qWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107970; x=1781712770; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=5MAq/+zOPquUvnjQyptIkEBsY5qNKxyao34ulQ4Vi+M=; b=hfqXbvOGBcoW2W1aDEpmGuVoclFb3qW8VoqA6q1DJ6Vlm6E+9IgvMpd6Ahy9xkj7dK i8K/7b4k9zFQ0hLMRne3QsleIFHciFgQ0Ud8iQQSfhkjSI0tGJQqrTxa5gckLtAw1w2P 6B3nmYhTGJYPxkCyt93yEiwaB7avsSmdVup0Dqoq585rCxAfYkY6pS0Z48gFBZEySu4f RgU9SiOjZDgXK4Da+LZUXuyCltG6jsv0yBqKFz9C+3Qwskgi2LjhI0gft4UEZEPFFKjI o9ZKchW1lShiZqWVQ9ajQ0I2LxhNh+BL++I11qB9GJAFQNX8bmKQ0wUyqRntR9BAXR4x zQ7g== X-Gm-Message-State: AOJu0Yxoo8EUv0PxT13taitAECvTvGygjIHkMdKguBZ4F/cMBA9L+w3d JVcsUQPcLsytNY2vMS2UlTHpj4CURUa/N49XqHsGL/e0nHHfZFYFH003j4KR9v/99soluvoX2Yo swmAB X-Gm-Gg: Acq92OHUAveqjFQNl3T/e+/W7HFWNzOOEjKPeJusuvGw/mWsX6Sj5YC4EMsR2RiblBp 27YXgZIzdUVa7otxqyTx30FVvgQFoZn0cBQ8l+vJIjsWw1HDtqzoGwEEz+kzKqkmJmkCzw/pO1D /+yjKMKtkQKk7A3/rvaDyPkSCneoGLiGnRoqlQqnNjcWNKYY2AFsC+5M/wmtt51FJqAtAlOVAuC YtSzJz3Qa7culCsJOn2PTyMDHEOTzeFDw61clp2C2yNsX9kt3WkVwnZ1WznM/oGoRFWc+j4a5ap XARXJ1fFeYgSaqbIw6mhtbvC0Yzz1RKAhUTSDvOlDEuY1w9nq4oqo2LiwqMqCWFuJbb8GWkIIR3 Gy15dx4jdrmwlcJdnt9CzgRQW28oc5UQHdxBnLUFVlHQG9oUsKH003lDmu2DLH98IK9AhlhLGVu +yfNr2dsitqnn/WjCbqiIg2dNlAEA+dPyQoNnV/U96/S8O1zR0Z73RKBy8TqONk1zsAJf420ClS W0Elr2ZBYIlTDM0AkzkzXWEbHBAA2crGyTMeyjlkak= X-Received: by 2002:a05:600c:468c:b0:490:469c:556b with SMTP id 5b1f17b1804b1-490c257c3c8mr429905225e9.12.1781107970327; Wed, 10 Jun 2026 09:12:50 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 34/71] target/arm: Implement BF1CVT, BF1CVTLT, BF2CVT, BF2CVTLT for SVE Date: Wed, 10 Jun 2026 17:11:25 +0100 Message-ID: <20260610161202.2235298-35-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.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: 1781108433499154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-9-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 6 ++++++ target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/sve.decode | 6 ++++++ target/arm/tcg/translate-sve.c | 23 +++++++++++++++++++++++ 5 files changed, 52 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 13453bd8f4..e285f57d25 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1668,6 +1668,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/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/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/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 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 */ --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108010; cv=none; d=zohomail.com; s=zohoarc; b=fRbNUxmYoQlFAaZN/QJK9orf5CDhp2cmP/0lMwWiyYyqqyAAUNlkVLYOh/u6cL38Qe5COfhlVGCVc6Cb8Jr5UhcdTdD0X7lwrdBpDWodDtlyQtkhfrIGRiItiIA59ZmQHXprP7++MEyp2AF7UaL1ELnA1TgGY6NuTXQk661wgl4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108010; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=A2R1q5pRZ2OfWAMYKkq4Lv2KWKmCUbmCVmUiB62Lcts=; b=BH74ESJynMBWDq5Ns7KAjit8H1FmjXhkSrK0G6EWceAF9+81tWeU+V5rHRq9KrH05jbvwlmJ9lOgVYY/B4vOZELJ20ZgdUmjRgUhcJu4bOwJADFuUqeDv3w35ldmQSBH98GXjmWwSzYi0q1z9XzENeWF32pq/yDAtpUp3r93BDQ= 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 1781108010740978.4656673398679; Wed, 10 Jun 2026 09:13:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYB-0001qU-1K; Wed, 10 Jun 2026 12:13: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 1wXLXz-0000Hu-0h for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:55 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450: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 1wXLXx-0005ce-6D for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:54 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-45fd461e4a5so4869419f8f.0 for ; Wed, 10 Jun 2026 09:12:52 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.50 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107971; x=1781712771; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=A2R1q5pRZ2OfWAMYKkq4Lv2KWKmCUbmCVmUiB62Lcts=; b=rEik9CNXIphBxK45l/mG+t7bsPDS11pqX01HFRVK1TuXFccuOhWnHk/du9To4CUS8G JRiG10mWMQfpJWIUd+kIqfx2scNpPv+YnoXW2wnlxoXMboziUA8Lx3toWqXfosXgLL1o fm1ot/+c6h3Ru6zpjJsrKeayIu+PDs//UO9MJQWl4EECM5GR2hhiYEqntcqhwOq/Mhqh z3Kr+NOZbaWFpkVA2TS8O2WJ7LRQOBOK+7xVIanUamTU1jlLJtRX8AAkOJTZRPDy2FJx Qp5RpWI1IuxHRXrgk4Kmxls6Co5SJAtbvTRpMm5xrS2WfW9allpuOQy54HfbiRyQzNyM tfzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107971; x=1781712771; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=A2R1q5pRZ2OfWAMYKkq4Lv2KWKmCUbmCVmUiB62Lcts=; b=jNNEq0lUrly5+1hnxgmK2ANk3+DX4sdY5na4m192fJdtvQVoeGBTzm/cuiNOn0ieDg Uf4Tuks1TcJV56/dldCO12Jo3CXNga87+JOM3mWIIEdtpTNcNGmOSWHxAqd1uedHIMEO lXWA4mMxr/nm8emEkuQXFKISkK8GFY/xgas4kbGWfrtrLbZ95oMKM2aIgwRElq4jCkqA VqX7wxl11vALekXAbjagfZ7O+xdj5Wf5wvntwx5C6aMg/dRBqnjEUssuDctKcuBnpO30 +LOG+CHUnUgLV1Duk/mI7oLybG8KupeiLfh2MI2AD9Q01nfKgceTXA5A0pCpS33mE/Nl djbg== X-Gm-Message-State: AOJu0Yz8PKEmDuyenRDjGqEFy/i8z7VxTSlldgpA5FXya5GGvkJyVJhu zheosjyC6sgm4knD6g9UyE/CXhTbzwjA3wSSFbOihIBIOx6b0QDuqOgwiK0iAft+Nxqpau/u7i6 3Jbut X-Gm-Gg: Acq92OEtd+lU/ISBt1RukjyOwPzEfABeQWAbd/c9XbLjgWPUnfjvPiLE7qbP45u0u0s kWO+eNM6T+28Mz43kfKtPjpFSfdN3VQmh6QWL30VGmPH4gsdO8GCBuJZfc/ZcLFZcDhPW/PRT9m pjKZffGNHnDoA1cTlUvRCZbSrwRtItlubSZMmpv5GBIo0DAV/Gn5kgA3Lv2p0QlvO/wRjv+1ibI iqMZK6Tmqa9PPPn/3TkNg8IyTf8Su2LQdhk1/lkjKVJHBbX9FDdHzNGC+NU3PZCGft0MRKWe0ZI D3uxGRIkV+DVuYU0lAYBDPln7ZxzbZiHHhvceZv8g4ZOPKTPS0gtIndYiElEPTprZs22+38HZ/g /JxlAXrfxwm/Y/eYyWGOiPzbp7r0WlCOvkULg8/tPhmmBluAUpw3IPE+/x9roju+Ps752Bh8t5h NMrkSgnRQHFy+IIkGi5tu/Nu19AsCxWiTMxsgbZ4iscynTodzoONHvwZfSKAOyraurD0qnt7/Xk m1VesHpt5bzg4VA8S9CJeQ2oO4BejQnXGGf6mgqLhs= X-Received: by 2002:a05:6000:46dc:b0:460:1d74:a1b2 with SMTP id ffacd0b85a97d-460305146c4mr29247259f8f.16.1781107971474; Wed, 10 Jun 2026 09:12:51 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 35/71] target/arm: Rename SME BFCVT patterns to BFCVT_hs Date: Wed, 10 Jun 2026 17:11:26 +0100 Message-ID: <20260610161202.2235298-36-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42d; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108012340154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson 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 Message-id: 20260609192110.752384-10-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/helper-sme-defs.h | 2 +- target/arm/tcg/sme.decode | 2 +- target/arm/tcg/sme_helper.c | 2 +- target/arm/tcg/translate-sme.c | 4 ++-- 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.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 diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index bd207de755..8e8e6c00ca 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -1725,7 +1725,7 @@ DO_MLALL_IDX(sme2_sumlall_idx_s, uint32_t, int8_t, ui= nt8_t, H4, H1, +) #undef DO_MLALL_IDX =20 /* Convert and compress */ -void HELPER(sme2_bfcvt)(void *vd, void *vs, float_status *fpst, uint32_t d= esc) +void HELPER(sme2_bfcvt_hs)(void *vd, void *vs, float_status *fpst, uint32_= t desc) { ARMVectorReg scratch; size_t oprsz =3D simd_oprsz(desc); diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 82aa14131b..652a72e972 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1448,8 +1448,8 @@ static bool do_zz_fpst(DisasContext *s, arg_zz_n *a, = int data, return true; } =20 -TRANS_FEAT(BFCVT, aa64_sme2, do_zz_fpst, a, 0, - s->fpcr_ah ? FPST_AH : FPST_A64, gen_helper_sme2_bfcvt) +TRANS_FEAT(BFCVT_hs, aa64_sme2, do_zz_fpst, a, 0, + s->fpcr_ah ? FPST_AH : FPST_A64, gen_helper_sme2_bfcvt_hs) TRANS_FEAT(BFCVTN, aa64_sme2, do_zz_fpst, a, 0, s->fpcr_ah ? FPST_AH : FPST_A64, gen_helper_sme2_bfcvtn) TRANS_FEAT(FCVT_n, aa64_sme2, do_zz_fpst, a, 0, --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108368; cv=none; d=zohomail.com; s=zohoarc; b=KnZ0OVGYBUYHC4CAJc/zJm5lPf9+APtacSkOUwGACnisYdkaDSn/cm7FPoqof28PePZpxV6kt9uD7mduKmce7yp+6o3jZS0L6Nqd/YlySBizj3yksnlhgJ8f/HXg5j48TKRY0E3zNI1HscIXfycCQ+J2qyTryFvNUeItXRfL0QU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108368; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=bp3VKJuidFVjj081xUJVA63m9Lsvt712wvoEeIrrx5I=; b=hnz8LZbCSMkuBipgexq4fBccTVFf0tTMJZxyxbU8d+Yru4NXYYKFzBl/H0Fm0XAx6E27j255FD/PcFDYcZ3YAuGVNUGpQosQxL7xmKWimb/J1kJLtRn2RcwXhjylU3I/zUkzUiA3IERNYswdJC+z3B5ipzyfPbpQd+TjPYDTzSI= 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 178110836894597.7956156002574; Wed, 10 Jun 2026 09:19:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYF-00020e-6a; Wed, 10 Jun 2026 12:13:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLY0-0000Vs-NS for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:56 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450: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 1wXLXy-0005d2-H8 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:56 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-4600cbb06deso14276f8f.1 for ; Wed, 10 Jun 2026 09:12:54 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.51 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107973; x=1781712773; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=bp3VKJuidFVjj081xUJVA63m9Lsvt712wvoEeIrrx5I=; b=TQzBt0qO56xXDd+ZW5Dno/dBDOYgNtra4r4b4cm9NL6nsjCBCEBd6+Zm46QznMSEcV gcu0uX2s1V+6/dkEeoVQUvZ/FuhMe5J+BKORzVFf74HbpowKrSJdBpUn705RowbuHKtl YvmKAxIz3gzwgDt0hUn7wGOajS/K1hS6SeYbRycxSHT5b8lAP6dqNcY4HZYoc6XK1BK0 cNnHO6GT0eC0ansuL96VdlYmaeYWAI3iWPFdw/oQVBiEqdGfYKsCE3xJ/arcsdoxgpTC fRzlN/t+59qqrPxhG+1U5fQhy8UazqjQ4YV/6RA0gvpy7a2iqGFr78/o3POw0MyEwvBi jsXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107973; x=1781712773; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=bp3VKJuidFVjj081xUJVA63m9Lsvt712wvoEeIrrx5I=; b=ByvYu1boJ8Jh/iO9xqykndQ+/EMdUmJmUjhgVxDcgsscpquKxav0ybrRulixDSMypx S4+oqgpujBO7fnZyOlfp4fx3X68J//pYBuajuFp8GNkowXKM4vYzRnUH6xG+aIn+53pu f7nO20AAC+VgQg7d+HDWMAH9A+L0XyrqQKKJaHrm0pSk+PhQ2D/PKjut612wuUvVGA0n Y1brPnTq+SdYrh1m1YrwNHpK5H4WBc5vE+WEeG/KgPA9RPhbpH42SMp6KkHqwiDFjOTP QGiJKhRfiIyl+NWA3+n7TK17ZISnEVEaPfCEI7sZCz4f3rcSR75JrwGaTPenTpGOdwOw SL0w== X-Gm-Message-State: AOJu0Yz3JbZgm8qkw9rjUZF7T1PeuAC6IT5pX54FqjiXnNfVoypc7PqR 5BCmOwQgNHUq0GD6lJZIjs2nTMraDvh+9j1Ei4AOfMoMM5Wi7eYM72tgZEm4Fmp9FVcQ0hhA+VY 0G7LC X-Gm-Gg: Acq92OFZp6FEd9THnrm8sJX1aqyeh/0qu9mdviVaQMcIvC5qKv7+X6gLUKd+0D7Lq95 0OWxnXjKaiFD5VYDwqki+nDpuTQEkhzjuUIJqgSTv8C2I6nSal6V1txVZscG4g2NsY31lETPK3I gk0uTLVrvhe9EuFvCp7Op5dVg5FQlhM+XaxgAoH9BBKzeBiQU/5pCWPXI/oCJxUHkZrxQJgFG0U RMMuGBi19XnQXVOcjOXd8dL8T2PkOrIaz5flcrrsATPDO3YB0UbrpG+O+oZmo2uyaTDNOlmg/TI fpLs19kEOmVNQ9g2i8HKg4wg0XJO6IUZlv3dVY4t5yerggO8BTHXZwsJMyMBEKpoGEk1DTVll5p hvehY2bEcnujIcmO59RLp6u3RnH2dfiu70mt9nbbhRixLR6wexGbK7bqCbzyps3LzbXHs9WyJAP Z1lilBF7xyECk87xcneMm3C2f9SklIKpswc226LP59G/P6LUS/oJT7tnVOsfswTR1lJvAKjWQ2t 0Jy5z2OgZSHD/7UHZvlNCgbnFoy+FCYXhzyBopWNLY= X-Received: by 2002:a5d:5887:0:b0:460:10f6:a554 with SMTP id ffacd0b85a97d-46032da160amr34815437f8f.14.1781107972769; Wed, 10 Jun 2026 09:12:52 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 36/71] target/arm: Implement BF1CVT, BF1CVTL, BF2CVT, BF2CVTL for SME Date: Wed, 10 Jun 2026 17:11:27 +0100 Message-ID: <20260610161202.2235298-37-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42b; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108371459158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-11-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/sme.decode | 5 ++++ target/arm/tcg/translate-sme.c | 19 +++++++++++++ 4 files changed, 73 insertions(+) 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/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/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 \ 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]) { --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108035; cv=none; d=zohomail.com; s=zohoarc; b=gcoLDFDwVlObdwqgqoBnZF2DFTnKV18pfzsH1KArhiWPk36XD5+NuO9q+DaWyz+NDv0VT9BIJyre3Ki6LQkCXujTyVb+bhg+qth+NpSbiW9mtq0wl9Xk8bUNUFKlVnXQKfThj4pROVIJcvdIwIl52/rpEx2BPPGvgfeR5KCB144= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108035; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Fg+Av3nHRSmDgv3J78A1wQ5bvDMK+OkVvsRiCkfAwl0=; b=QbCdQ9o9B2RQJXk3Py/QfKwpz186DYHikSR9rwIyq/ZwGG0mNLiKGhjPjDg9QVWetVlxRwSUgv0jJSUZxwN0UVmGdwfJ0k3e0C1tRxuVvKSYYRRWY/AO1NqgjGmCEJts580S5i+9Juif1AkjLLDZpMXrh0KMfqllgJq9MpRMQxU= 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 1781108035176157.25103839155292; Wed, 10 Jun 2026 09:13:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYB-0001sY-Pf; Wed, 10 Jun 2026 12:13: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 1wXLY1-0000cR-K1 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:57 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1wXLXz-0005dj-O0 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:57 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-45ef1629ff4so4877706f8f.0 for ; Wed, 10 Jun 2026 09:12:55 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107974; x=1781712774; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Fg+Av3nHRSmDgv3J78A1wQ5bvDMK+OkVvsRiCkfAwl0=; b=NNJjA03E7N4tEq7MczDBC9EZNU9BKlRbG+xLmnoyJp68Kw/LhTXEQ7y5efBFBOj9uE UrZn+mtbaZaIWhRna0VgyzHcr73V21Kaul5O264C0JBzmSfQQr9PciiPnp4zLt8l8hiA 3vOqGjPvwN8c7AaNLbTrY5q7HYxLZywJdh6aUHYy3N//h7hjQ/9+5PZ+KUY4emI4FD9D DnQuI7AK60ApY+FVB2UATjh4LeXt0t6qHbX3PNGIMjOP7MlluqJVkVB9OAC9HhNYpNv4 6G1mE0s63Re8vONco3oO+OcfvMKw7TxtvgSVflTidd7QEEt6zOPKjofRyCl1GkzYt7SX 2XWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107974; x=1781712774; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Fg+Av3nHRSmDgv3J78A1wQ5bvDMK+OkVvsRiCkfAwl0=; b=cfocgYP9CJioQyRA93C2+/SUD4NcGn2E1JBSP+Gt7UHR2qC2VJ5G3i2p5V+n21yn3a iNaxCM+9YZmVnkvwfMQ9lusA5z5SRcpeMPunj1NXW5RAQDrOebcB3zxfZRDfTZcNhHl8 IN+ENqMBhIVz5/jHRapi6Ce2KJ7a6f+Ayp5+81PkyI7+2vhi9gPYFix/0icM2O9DCbwJ oPYfSk4hXeeIjlISn3Ppe5eEd6yqCm1wyUQhXIHeF0oPmND71Zj6ARw4czrdc8ovAloD JedFCM//ipw9nImqXycapOHXrtaFh6fq8fCDYK7ofiDcVGrQfoNDAeQSjOzQhgQN3Gtp YHDg== X-Gm-Message-State: AOJu0Yy0D0BjBCgr5h7RMPm5J6WWR9SSaXtDfUpK/uqLgOIJ2m2wpfhC 8hPhUNV4tBOke/dzn5WMuiUUMnt+Zp8OIV487rumt2QKlSaKkGz0XvFi/eFjweIAmx8rOqOIMZe DOtDU X-Gm-Gg: Acq92OEni6itsl82SXgKcQ/5DOCDHoHfIZJ0g66V1BZ8UgpmiA4HzcBmn+EENtUvHkk l1UTgzJdqFnXXD0VJzabxQhDKwjE6BjfNrKcR9yK0NQxj/D3qC7qxYGVaTsFA4CChMi17BibyyJ 6cIFUMMGe9DSdW5QMgwV/vLBJ92wD/b1/3hn41TiFF1/HB4QYNybDgoZDnOGXLqIlWmUluirYgR aCXufeWNubbCE8aoO52wXd8buT+PNzS9YfCG6GP0erHIF+VpVrSFgTw7cd3wvVHNThEaQ+CtHCj asnNeylCeOKmUH06QVx5R8sSvVugbBQJB2yJySMecLtmgoNbyD8wHP2IiiLMUsLng5r77dtZp5X 80NtZP4Of5OK9NNd96gbq9PoPdXMATKT8u9cLXF07Gtkq519vXTZItBw47UvgxaixKf/9/oYpmp +bkXoNq6jNgOLQcfzBx7Nz6V1C/0nZt9//B1GHeNfUKU1RFZJ1yW5yFRMBqCwqslA2tzkv/2fcx NgyNAh7LGeqHyEXUpa+Zo+XIJq6pjgCuylBuN+DPqIx53tzsx+/kA== X-Received: by 2002:a5d:4574:0:b0:43d:733f:aee6 with SMTP id ffacd0b85a97d-460302ec8dbmr30578977f8f.10.1781107974297; Wed, 10 Jun 2026 09:12:54 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 37/71] target/arm: Implement F1CVTL, F1CVTL2, F2CVTL, F2CVTL2 for AdvSIMD Date: Wed, 10 Jun 2026 17:11:28 +0100 Message-ID: <20260610161202.2235298-38-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108036605154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-12-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/a64.decode | 3 +++ target/arm/tcg/fp8_helper.c | 29 +++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/translate-a64.c | 3 +++ 4 files changed, 37 insertions(+) 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 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/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/translate-a64.c b/target/arm/tcg/translate-a64.c index 5e8c86235b..439a405064 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10740,6 +10740,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 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108026; cv=none; d=zohomail.com; s=zohoarc; b=KXJhkaZZMNh7GTCzbpVe+qT4ggPj1Ujy0kcT3pnieDvxFc1WvhlTpcfVlPtLM2VySZwT+Hb8m/btC2+Q7G/jDHk4atKeQexLhO12seLc0tl7/rM3kC35SVQPS8wDkJrtG11LUaTBZOIfxhUBGs0MmeCWXkwwxBI2ZFTmiyMGM1s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108026; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=tzGzc3exx4mCieFx/ieLeRDvt5423vgELp9DrdtzgNU=; b=JJkPbPWG/ugviAzG3hFz+Gz/YnIAfa22daCFIFgAffvQoU8ud0KbDd1DSlcVhnG8VAdzK79kUn9TLLGUEEjxubotjJtybpO8zVEE2oJzpymunX0437u59Qzy8QXAuH2kLGjLkxkUj/9IQ/wYtkCML2rbnmcSlW+KB2ZWsMxPZ50= 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 178110802616036.418353065842894; Wed, 10 Jun 2026 09:13:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLY9-0001fb-0M; Wed, 10 Jun 2026 12:13:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLY3-0000rk-Ef for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:59 -0400 Received: from mail-wm1-x32c.google.com ([2a00:1450:4864:20::32c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLY1-0005eI-HP for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:12:59 -0400 Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-490be03d47bso61609705e9.0 for ; Wed, 10 Jun 2026 09:12:57 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.54 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107976; x=1781712776; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=tzGzc3exx4mCieFx/ieLeRDvt5423vgELp9DrdtzgNU=; b=YDrqlIN1OjSJR3QMIlJnmZ9A7C5miVdjtiFp/d8Wt+rCWv04oCrU//WmS+9zzZvHBZ FiuvSAcHy+iF4DkYwYKVeZw6EFqJHdBwnknvZLOW8+XbEQOzrBVay4y4+2uLlSYWkoZj buRGZv+iphQ7ayvZ+NJX21j3zTQE9sEIQ+MFs7nsKdvBJn2Of/6qB0Aw7bbDVR+OJgkZ sh9hic9NvZd7RfA33/pWwfhnoSnajojelRrNYiU62Iw4KmpaHpTxvc0L/gM7ZY498DNw CyaJfuGmAb1slUkVotRiLRfnHXK/OPbztXunmj8ZQeEIbpnOqAHkT/523pmB+go/ab+Z 3pQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107976; x=1781712776; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=tzGzc3exx4mCieFx/ieLeRDvt5423vgELp9DrdtzgNU=; b=BAz9BWHP28YQrLyCPJvx4yxl2TFr6R048JM7G+xizwxezZ5Fdng+bYkhkeM2U44FxP HDGaSIMGe9MEdOdqUGujk1bUhT/g4mK6IHFnJXIN1KapMD7DwIv0fpL/v4+MKxpSpDKk 7baMpiDiOJk19sWq5ft5KVqfXbB2r0c+kzuJ3ALG/LvXjHYoNkftnsI3ELZ+efG/pDcB IB/iBkwPvyWN+iImGfrVdKUgOdkDN+zLggGj38YzjhMAU1VzYTeTtJ4dexEYFRXsDHaZ Q3XNxRdYbzDUYvuJiGSaYFK7urDwTaq9XKaLGpWMWLx2UHRxl0THojwNhk9byoExEkMn 9n7Q== X-Gm-Message-State: AOJu0Yy25GUxZFzUif2E0+EkkHfZHdUNrzgcAdTSFpkwT6Q9OD05owuG yz4mv3y8dGuqNsNZ7CRpBEh+udJuR/t4UZR+Xoz4l46W3iXI8rXI3dxmlD1uavjzrg+mQbg7lDf 5Kjqj X-Gm-Gg: Acq92OGcKv3PjNicxRpeJ5ZXF+iA/VschqOj4NdjUuxdcPbtjj867RB6Ejms//55erz CG+wd0HFXpoyVYaYHm5Ta77o7gFr4EOQRhZ0iMRqpmMzQv7QiBOLfxDPMf2U915IaLQylq8v7c9 x3NYmyLaSxu5d00Xo429gA6qM20LQqvVa/j/mTwkM5o6MKFTHVjDP+LqM3t8RGTMV1TwmpqjPBW DX4NiDnGB5EAqrxXi3azR2faF9+DMbJI5KagnkQH2NuzLEQzmzHSxn8gVs1ZkRThIPK/cT/bYlh b2jRigCkHB3okco6VajeZWVSquEXBzmE36lBtiTC33NUt3hwjtYjuHHU5vjqIsOhxHdlJ9BaG72 8F5Dch0mgFfW4d/W4qiMX6axpLiSXHmjb+l6yAfc55QnZAcjAV8u9KYiE8mexEWdE+M8bg+557C r0aruxa7vpC87IkaCRQ6omSlNvnt/jok8BvN01jVDEHjaU2C1Jxevq8vr9K1zdg5Ce7MS+bojOK 1BOL6CFW4iqgB5NzinW56kKLHmYMvKJ3cdY3n3ZxTo= X-Received: by 2002:a05:600c:3b09:b0:490:b475:af32 with SMTP id 5b1f17b1804b1-490c25f17d4mr439290265e9.23.1781107975996; Wed, 10 Jun 2026 09:12:55 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 38/71] target/arm: Implement F1CVT, F1CVTLT, F2CVT, F2CVTLT for SVE Date: Wed, 10 Jun 2026 17:11:29 +0100 Message-ID: <20260610161202.2235298-39-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::32c; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32c.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: 1781108026739158501 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-13-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/sve.decode | 5 +++++ target/arm/tcg/translate-sve.c | 9 +++++++++ 4 files changed, 31 insertions(+) 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/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/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 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, --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108560; cv=none; d=zohomail.com; s=zohoarc; b=PmrzOcNoSeJrNWb6ESy0Md/K6ZGhRKaBpYQFrTMRyr5o55swwOU50cX2+a+TcarloLIUoL6VovxvCBWHuuqkBhowSpUDji7v1+LBB334Mbrfi8XcfyWWRw+NNTZkwWfe+KqrAFg8+jDi5GY6jHqjYsCu6CGvX/mzAQqV8LGoTrg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108560; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=rTlzPyxhhz5DBR4QWUxqzFZjbVnEPimONtd17WJ1LHg=; b=Juc2Q+/4hEMTTtiWf/kLCqS8oX9Ox8yrPxDqzqpe60EYleMkAjaY/CA/n3iJ7EEypbS/x3JhKm/zjUkERTrHacMQlAowPplvFA+cK1jUvfsjjrC/OveEeFBLABjThiUNcThmT61INEUv74Tt9oos2NLabXyZySfJ7QJurI7TXAY= 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 1781108560373656.4256442300174; Wed, 10 Jun 2026 09:22:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYD-0001xD-4T; Wed, 10 Jun 2026 12:13: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 1wXLY5-00014M-3P for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:01 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450: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 1wXLY3-0005ez-7y for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:00 -0400 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-45fd464d51fso3865473f8f.3 for ; Wed, 10 Jun 2026 09:12:58 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.56 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107977; x=1781712777; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=rTlzPyxhhz5DBR4QWUxqzFZjbVnEPimONtd17WJ1LHg=; b=gag/lb6n/Knva3QOD+6QElcRhEX68AMxm05Koqi4sOm7mjMhZXe7GtS2Dj3SCzeDB0 0aCXaTXvLk49+2IF33Rzc1a0cvhS00xSwMHVVRoXmgULLAINyc2VdlXfR6dZC4Fg4yBF VN48yrugggpltaUEapMLUnhyTf+YSwqcfVA5cqq4as/EFJP4KkxEtpelEC2QpfSNXACX E3itT7R6iAxXkMSbreBBfm35q3Yt9wvYuCn6WSZ8r9L+7Q5A9oG5Se8Q/NG42s7wuZjz YPdmJiskkxdLZl5lr38ZsgFG48CHZbvaP5RaIvRbkp/XCHZQUTiar0bcpscpdFLI7XcC 4pCQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107977; x=1781712777; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rTlzPyxhhz5DBR4QWUxqzFZjbVnEPimONtd17WJ1LHg=; b=IzRdhKgNWsgqN8vLIcqbiwkFClXNa5vXQ+A2ccLuuk4qAhNnFvg07azxC6pxVJdblm 4NX296Kb86Jpk8MQ6x+fOvHPmFM9uHmx2JQEjhHFKpn0gNXw+4LkT3AjINWtFreTjqDv NJ5m46dLOq8o1x1nU6wfoBj6zyul32HBxulFZ5pPfKfXT/eKHFll7txI+DHsN6dILTKz EfReqC0GF0J/uP7mOO+ImpbBMKX4dTMMkA1bs/whqQ8XknVJKDQ1cq5wENTKt+jJxPHZ o8rBfkiYXJxYs4nyXRvKhoxcaU7TKVyH/4MfOWcXN8W2olf8IM+Qirtqg3OsDUpzf6C/ 8EKQ== X-Gm-Message-State: AOJu0YxrWrpix0sxNe/nnQ5+asgoGjNiGMNlJjaO7R4i6P7upwGVAqBS xKf+unxkv/uzrIERwSuRKf2HSB49/xXqhZNLwu9YcIExRwnVo28UN6cgQEKE3DwcFmI508x4dO5 ars3H X-Gm-Gg: Acq92OFFgA+9X/0v1tA5w19cbpIyxCQpE5wUe4EYH7GfUfwfJHuggd6VHCn/pYOlZg6 /Y3oBlsOsOjLWHGwxjdUZ7sS+JKk5L8wHTcAkKT4IcFrp5Cmz3DVkkApgITaAa1xXSGyiWxz2xK 2tzjOKCRLLic80zy9jAHXn2Vbu/cX/OXL6ynfM5wHcnsEnFzUNaFTnBphKzuEdEqHBYhJcFLlsO Cm/EaNsipzpeXcfFsP32M2tZ95HTDGUQRzwUuJFi4RAfwYQl2/ELTcpsgaF9bkBajl+pB9Roh1h 0sP/GVSpvxFT7hFqk6WtMkCfVOL/E9oL0/w4aff1hJUkUBhQQ9A06BcNiKZQDyvbDzI9wC/iq40 DnmoLGWEnhpoDvq3NU0M/OccBAU//Z/dj5/Ieti1BuaVNXGAqiyKpZEQKmrwgh8XYaOAEl38nGC uiz6odbvJ62iMShWsWFBL80jOYvrc2OJokSYZC5947yJcUKwPCc7ZiLJZg493tyA70+4d5iUmfp 62PLi8kyqcWywosDm9RMLJW5AV52Djx0m2KDFmlQVU= X-Received: by 2002:a05:6000:b82:b0:460:1301:dec8 with SMTP id ffacd0b85a97d-460302dc4a8mr27536423f8f.3.1781107977618; Wed, 10 Jun 2026 09:12:57 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 39/71] target/arm: Implement F1CVT, F1CVTL, F2CVT, F2CVTL for SME Date: Wed, 10 Jun 2026 17:11:30 +0100 Message-ID: <20260610161202.2235298-40-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42e; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108561480154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-14-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/sme.decode | 5 ++++ target/arm/tcg/translate-sme.c | 5 ++++ 4 files changed, 59 insertions(+) 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/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/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 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) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108020; cv=none; d=zohomail.com; s=zohoarc; b=UQP/AQh1tAA2EkKeuWDf56olaD4t/PjStoXQH5AVpf3F6wmb2+7iTusllSJg+ZQv+zMW5fLchKh3EXfe8cqJNUwgSEWlbtOK+/RDo/7sgt8YR/eXELi+e4I8osxC5kOyvwQkijEZWgd0TPrl1Bd87Wwd1mRMWHLYH5/aFHHiYMw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108020; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ldD7uq8CtKbO8z66zG95Ud/dRrfQ003dYkJ1EjnaVvY=; b=mNcokPXhHKnRA/1ZPCBCFvIYeyAljn+cu0pj0N1hy0L8Rwiatgds1nm9RCodNuBgxfgEHqU127iDJ7s4hiTw+FbXffxo2KVG6UPXRF8LzoTgtQeDPEWFOq5puK7nZVCQ7TQ0b22i3JaRWrnMh3gCxuzD2DirQ43n9EcRU8j8Of8= 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 1781108020543324.8392399941422; Wed, 10 Jun 2026 09:13:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYD-0001xr-Go; Wed, 10 Jun 2026 12:13: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 1wXLY6-0001N5-R7 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:02 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLY4-0005gB-Ja for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:02 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-490c1915793so49983425e9.2 for ; Wed, 10 Jun 2026 09:13:00 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107979; x=1781712779; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ldD7uq8CtKbO8z66zG95Ud/dRrfQ003dYkJ1EjnaVvY=; b=BjJwpqNcioS216DWhCDPPfUcJX0ywDgpapZ4cl+FdCEpuYUuRWZNTiSdqjWKP7wjda 54Hr+Gpg37nU5vLdfyvIBmVbILZYyaYGrqA9XcbuyTTolrd2bzDOPomKalmyV1jTMk17 rD6ihAQirOj5tvmPYk/zJ2Oiju4QGyQUa8IKg0Ly/gFStgGa7O5KsGpKPKkng3W++Ntp s/owqBppnhugEDIztb3o8Xb9vPZVjcSqTsriKV0yYXVPz7ZBqhepmoKneN6GALmfhe7V JglEE2OJEVxsQFhg06QSfPcybKttPP+KWW+3rfE5jh0BKRJD37FWgpfl5hv8mFRkQLHy K+Kw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107979; x=1781712779; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ldD7uq8CtKbO8z66zG95Ud/dRrfQ003dYkJ1EjnaVvY=; b=Lkm0C0G6tmCkAtPPHPDC70LHj8hA0tHtCjpUNLQyx9kMbGMs1xh7hivVByhzXwhne9 xIE4kYO92sJK9jgbgvTowfpkH04PDuD83EqcJ1mlIxtCLtxaYL8sNYNW3AgOHgMZOcn8 T7B0Dbhe+sOfloZyjNG3N/cfw3UILmByMcUTKOMF75DHhzOPmi810VANuIeIk3IV4Jn4 tAwzu/snGEQIhWpsoH3EgJZsIFf35NOnElD9hGv9YzpcXrmShZGvfNsjZ75eSdvNEofp X17LKdqXgAQmd1Tc+in6pfGaSSnSEttIFdWS1R4ya+8IZqVjBEn27ouNjgENK0IJUmCk F28g== X-Gm-Message-State: AOJu0YyZrknWniBrsnN/XE7fd6IyQdnEB2izbwLuhRbqBibaSpfn0R71 Vwocmvnbe1tvhnseTSU64oDrtS1RTcAPvvMzyH6IQ3C+YSRamNgCsmlhVBwhsoWkPCTqpNSAcEJ nhOEs X-Gm-Gg: Acq92OFezkfV0JpYf4A+iv+dSa6I53DD0lFiTZTqwd8WMYqnlU6f5ZhK8FiiXnDXOZx VRs/RJF/JrVHZj5MIOiUED3FiftrWXAMwO/yNwcEhBFx1YhZ/j4B/Gq52hZF5lCUS06K6HJX3eC L595C/rdT5C08u/e3JAAw2xvNszLaoNJO5Seeyu8HxWeQMkyOFW9cfU5qx5pn/EkLLvs+xBWRsy aHdeZQ21fDMgyaEJqBEClA1ejOykndYdsoUEwqUMm7xei6V1pXVTZCw22Dqkd2FHCRgQvteBiC2 YUnk7m5BcwmGUe20+xZrjbdMQdVAnd8bBQAB1A01qdp0Q98XFrRISJ6mX7bkVBu9Ifdu5sKWS4t BH1Pn0BcFC/H/bxKp4CBZCev+G7UoPpEPfk5JaSCGTYrNxeKeXI71KlcrlyoA6OJaC/l9XXAGa7 1NADlZ2HRRAnu33owxrOYLi96BzYJm5e4pMo8hNirWmS6/UbXwNUGlliV5XPues7tNxFMMuIKGc Jje2ckBTxmtmuwuwLo41pdt/AKFmxWzSr4AuVegg4Q= X-Received: by 2002:a05:600c:620f:b0:490:5074:651e with SMTP id 5b1f17b1804b1-490c2612cb7mr361383875e9.25.1781107978826; Wed, 10 Jun 2026 09:12:58 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 40/71] target/arm: Implement BFCVTN for SVE Date: Wed, 10 Jun 2026 17:11:31 +0100 Message-ID: <20260610161202.2235298-41-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.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: 1781108022512154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-15-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/fp8_helper.c | 92 ++++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 2 + target/arm/tcg/sve.decode | 2 + target/arm/tcg/translate-sve.c | 3 ++ 4 files changed, 99 insertions(+) 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/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/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 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index c47e79637e..6b2875a451 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4100,6 +4100,9 @@ TRANS_FEAT_STREAMING_IF(BF1CVTLT, aa64_sme2_or_sve2_f= 8cvt, aa64_sme2, TRANS_FEAT_STREAMING_IF(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, do_f8cvt, a, gen_helper_sve2_bfcvt, true, true) =20 +TRANS_FEAT_STREAMING_IF(BFCVTN, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, fal= se) + /* *** SVE Floating Point Compare with Zero Group */ --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108394; cv=none; d=zohomail.com; s=zohoarc; b=FoT5DWuwYavlwLXIdQsXbZtgfCzfy5FdZIOP3kMcqOuPB/V4MB6BkwPOBa7uWIBeuhcPUS7R3XFLU5i0ZqIUNgfUwAPsRpnKSk8s6HBN5Ipj8NHPqzLKbttbFVp/1I+16GJvXNgd5Qlf4Ist+v7gMvS5GP/Xi1lZwHVUSpIecBg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108394; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=xIcw2j+jYbwZvS5SD+V7MBy9w8jFI43T6DkM9/xs82E=; b=XE/OfAcePzuHQzhQXlC8/4mKLh7fR1goqNNXdVduFTAk/I9jQqj9Yo4kSPo6K3bkcV5l9r/Nmwq+rBUvR55DhGAC9QKV0Ku9Tn12zZ9njy5Odn0xSXr+L/QcPOf1bKmAiebrgT8CvQ49eKB8a6KfwZKGu0xADI8GmuAUd5NM/kQ= 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 17811083948121015.0545916039144; Wed, 10 Jun 2026 09:19:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYG-00022v-Iq; Wed, 10 Jun 2026 12:13: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 1wXLY8-0001ZQ-3E for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:04 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450: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 1wXLY6-0005iG-0p for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:03 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-45eedc94d37so3607589f8f.3 for ; Wed, 10 Jun 2026 09:13:01 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.12.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:12:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107980; x=1781712780; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=xIcw2j+jYbwZvS5SD+V7MBy9w8jFI43T6DkM9/xs82E=; b=iMu4uclG5HFO1SBxmgbMmYix4VdaqLACnTEfaAgLakkp8ENeNldVJfn5KZlSqBKZTa sHBBCetiTQ88M8m/zDYKWHRTg9qOCxU2g4r5eMlnTcoWAFxoEhp9t5gjgOBZdvXZL4xe yJbjPU/pOcv/sG4xk5cAWwHu7Hf3tRhsepG2ouCOKCPzUp/WMaTcv5KPbr1Hxub6f5TR 9JBskvABQJunC4RgngptHX8f+DXTv35GeWiVKoGXgZiARdYoxyr0zPMBvIufXHnDUNIz 49g6uvEtq/uZ7tVSM45pFBBo8i7L46KDjLIPpLAs0TrI4IP5VZ8ele0WHcio6rloTXn8 6+eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107980; x=1781712780; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=xIcw2j+jYbwZvS5SD+V7MBy9w8jFI43T6DkM9/xs82E=; b=ZgI+MnaBBgBCY8Lovr8wGwA/PalXGJ7NBdclFx60xz2nl6vmxFvqdvMZxtyWIbQLOD uJwCUJPMLbP3o4+75TlwazRHTxxJ0be3Hwfc3JqQq8L77bEWxzu91VgmyUT5OhpNMYTn GBOIpfkmsGx2QkPeNTmBsiJHw3g4nbKHUjyaV00WH+xiBMwUYEzOJ9c5gbePpeXzoaCz DJKhinyn1jY/t8p3eyz13WqrNolKPHpSXwwnLA96Vp9xgl7dRPVWm0+kfu/SjQAHozUz wWe1qq2IQCOn1Uh6RJM13fBIh8etw7C91qycfHAlGwmlQfjmKjqlLVS7saE5zoIK+BT+ 7S2Q== X-Gm-Message-State: AOJu0Yx94HoTFGxXOskjczwDr5C4jUNzj2iawdM4im/mzQhDdQSDB9sE W7LaCpLMlJIDXMX+fPrS8SHUvjca+6KY0N50SZuNyCSKB407Z1nvjBNeSUKja0gRra0fATzglPT 6w9DB X-Gm-Gg: Acq92OEMZZPRqqhf3/skjbvf6suTAEo2giMDCbRd9Xz4UV5P9zEnxSiKY5fAou1D7Ck JREe6rlOo3jIMYidkt2DoLvmX32E9FEOSIIT4myxEtO/orEZUpry8nDWNPSCvqowcqlnBbd76hb B7rtBjp14YXK+dhb3lgpEMbQF6wCm4ZODj4vcx0TF6i6tiUcLytujnWRG8LBJgSCdffLQth1GIK dA5qziwtD0y9z82eaLkDn4PWbh39GTAdHtqJucxY/sB8FsUc1wjunX3HtDRCoWF8LR6THkeFam6 xg4/0Kzae44a1TZIDPcvIXrd8o+jjtkd4Mucyo6nKR+KwTDMQHYUXO/8hpbV2Vlo0MnSgaRkrAb kdY6C1jXwt1D75Ws0qmDKbnavdIkveSn7hfFP7G0CdpgT4x+laQRY5wvCxktJ1DRvAD+GpaC4ZR ohfnbN3z0VXDlB0CEjCRbZ92NIVe4aXi97OiQ/Uwj9wN1Z8CTMncrkXwSlLbmt8uL0tNFoddCTb YHPPGYOi/PlKi7HYNmpyFksJA49qK8bKKlTmToWwbU= X-Received: by 2002:a05:6000:2912:b0:45e:e44b:3147 with SMTP id ffacd0b85a97d-46056680a66mr10480134f8f.5.1781107980470; Wed, 10 Jun 2026 09:13:00 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 41/71] target/arm: Implement FCVTN (16- to 8-bit fp) for AdvSIMD Date: Wed, 10 Jun 2026 17:11:32 +0100 Message-ID: <20260610161202.2235298-42-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108395506158501 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-16-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/a64.decode | 2 ++ target/arm/tcg/fp8_helper.c | 37 ++++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/translate-a64.c | 15 +++++++++++++ 4 files changed, 56 insertions(+) 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 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/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/translate-a64.c b/target/arm/tcg/translate-a64.c index 439a405064..538b318415 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6619,6 +6619,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)) { --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781107994; cv=none; d=zohomail.com; s=zohoarc; b=YwQmGwatmTZ8ZOARUFvw4PGz2xDZ/bGLOZBkPZgUVwSxfKCy8+NNTmEzfKVgb2DktMGnYu7SY+52e5LV2IUOMR6ispeF00X49GFtlI0Zq+97zMcuQOY2nYyIgnfQkl5ILjxngIF19KRKRWGXQ5iij3o+DnoeNDDqTgGQysOkZNc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781107994; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=rO0w5lKp2t3uHyRlz4tqze431l11PFiz7PA+zveNqgA=; b=j8oUyoRPAa/ngw6eugihwr2c1dilOBisnRbO+ACF44OWnmByrptD1aqDoNeUb5bwYK5z/YWZFbK4Iygc5oSej9Fu9wfEQbOK6i8cRK6ctvKXWUG6NPWgRjQXsvKc2HmBMqv5g8whRtGijVIbsbA8igG6Qx61f+Kl4vATTTyK+OM= 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 1781107994775805.5857384789961; Wed, 10 Jun 2026 09:13:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYB-0001tC-Uz; Wed, 10 Jun 2026 12:13: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 1wXLYA-0001la-3w for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:06 -0400 Received: from mail-wm1-x335.google.com ([2a00:1450:4864:20::335]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLY8-0005kt-5D for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:05 -0400 Received: by mail-wm1-x335.google.com with SMTP id 5b1f17b1804b1-490b915ded5so61348675e9.3 for ; Wed, 10 Jun 2026 09:13:03 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.00 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107982; x=1781712782; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=rO0w5lKp2t3uHyRlz4tqze431l11PFiz7PA+zveNqgA=; b=TbQrV01qSARjI9gCImZLBU4zMmOexxqYtiXDL1+mv+5cWCYJ57HLYLCsY9eMBpe3nj LZPE1qq+MKbpMndhn+j6Zd0zGgHHtwLrXDqdDXVWUglKYtalR5vaKb1Pi1/jvx6BW9ok f4SSM+FORYRPNUfMOksIioHyJR/8VqMT4olPKgzOVMi52PAimUiRs2/kCm0XNjMJaEWJ E+2sQNJvxNLI4Zh9awNQ3ccIpalorSb5ihWZhC8+KNgu0VDmN0oUfxh38PeDRNr1XM3U 5vBDWq/N0Nm4VUCx+PLb4nCH0Ie6vIqBJJTYrEmJn5g7PtRonB1rynwL34Gpbq/wphbS oKkg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107982; x=1781712782; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rO0w5lKp2t3uHyRlz4tqze431l11PFiz7PA+zveNqgA=; b=MTAbQqR4EmdUTUeMlvWfNzNgt4RFBuwcYWV6jA8x+FE4mDH94dD+byR1TadCwTEf1g fNJa5FoKyUL3npW6YanxYD/1KB3G8ocFfotkoxyDEUijSYBfclUDf9t/YWgR3lR5KUdP r7fy855ht7cA9gwzG9LYioAFgyhqyPzEap+WXZuj568+D853GYVW18iHBEucoDuZiVby WUcg+vV1vVCr2fzI3UWsXFEe60U8KEmWtIIT6RjxQcckxg6VSb4ehwWxTmoJFSgc6yDv 642uK0VHlJuFOPHySy5KrhAj2asf3etJyHLWaFspUu5qNJmvTPil0OdgZ1XFxcVpNwoH Foyg== X-Gm-Message-State: AOJu0Ywa6o3Xu28g5rhlNRUFn1gJrf2Kkn32NNEv/KqQ1E03FAP6CBvc WllK+2XC6wf4dn7Ivp0jyTuCOYBaR3tiEzdkw2hmtw/NFuE5jG8h1xlTRYKk2cCOJAz4HDp1Dvt 4OD++ X-Gm-Gg: Acq92OElu3tuMSWoy8jByF0JFfo57D0dOjtVSzAwGy60NCG4lN6QdYSVU91P/pImr1K ZF0FYXvlv/65rGCX372wB65ApFXAMqxEGNe8wQx3Lip6H3iJpN9JefvmaGItwD92uLq4/qxaIuF Sa5pE41mgsA57AlcD9Vti5Bbg+eY+5q8FDYgU8wAZ2kDRB9ztMLOV8dmcDmkJ1959jL8qs26P77 iPJHphZiio7fG+mWKpOa1oszmkj+GU9D1++cMoRMQmNsI0g52UflHgkg5zCjYVgJ8eluOQuZ88E 06zwtik6x3Jr674rN5sW63HrWQPOl17iI+AmtmiQQzj42vUSOKARjBmwbah7bRyFpX023ugRWy0 lH/wTa2sJLt+dXp54oimmzuGR0vmyzle+/3Y5onVTMbiZp8UCKXCUZ/M5qYzb6UK5ttahrlJ3dL qYqlGnKDmaK/f2ia+0ccA9HpYb6yFdgdGX0kK/opfFmB707iWkwSHrzG0KIu44Zho0u2gOT4eR1 wWWD6vcWbjpUdZd5E7pT28wXj+N/Zjo9HPIvPaEGW4= X-Received: by 2002:a05:600c:3107:b0:490:9588:bdb6 with SMTP id 5b1f17b1804b1-490c264cc2emr426628775e9.33.1781107982066; Wed, 10 Jun 2026 09:13:02 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 42/71] target/arm: Implement FCVTN, FCVTN2 (32- to 8-bit fp) for AdvSIMD Date: Wed, 10 Jun 2026 17:11:33 +0100 Message-ID: <20260610161202.2235298-43-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::335; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x335.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: 1781107996050154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-17-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/a64.decode | 1 + target/arm/tcg/fp8_helper.c | 33 ++++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/translate-a64.c | 16 ++++++++++++++++ 4 files changed, 52 insertions(+) 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 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/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/translate-a64.c b/target/arm/tcg/translate-a64.c index 538b318415..5606f610c8 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6634,6 +6634,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)) { --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108369; cv=none; d=zohomail.com; s=zohoarc; b=e6ziaxNdYsNKhAVD91KxzCX/X/6hdLy0OUxUxyBa2TibvsrPyTqQAUNKbBeAD1xJb9BE5+op5hDfN2nmlYnEvDsHKcsnHIk7Ek4XXYVh8mExObjqvk1RMDkBu20AXaUZ6f8kpF8+dA8KonWoROxtXV2PFczoBpAxQDuj5veXOSc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108369; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=CCsyYx72Y2y+q+4CS55j2/wvjV1TF5ioEILuC3vwmX0=; b=Xexu48jTdQcxPcJ2iRiWLRj+KwVSDtHxMxzCLSJlkHNZE3DDAVdtfgNz6c3LYNnajyqfU/+u1mdH/bxaJqC4e0M4YBl84SBVoe9DA1OYEeC6DxuLrNngBkWUkskh/SlFfqb0VAPNNZPNqJoXpUku1e16cp3nMASyXkoKOm+IV2I= 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 1781108369152787.8403752411757; Wed, 10 Jun 2026 09:19:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYF-000203-3f; Wed, 10 Jun 2026 12:13:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYA-0001no-Fl for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:06 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLY8-0005mv-Mp for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:06 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-490ac10e337so58103475e9.3 for ; Wed, 10 Jun 2026 09:13:04 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107983; x=1781712783; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=CCsyYx72Y2y+q+4CS55j2/wvjV1TF5ioEILuC3vwmX0=; b=iEd5ylvXDmUGi+Or7aXQO1Q6MJpulAhp05v//XH1Bz2mbDd+/eAfvB6cWDWG7M8pUK uh8F909WlbaIY74qJ7yMaexvsa3oLA+bmS/JisSJ1o8aBZet87y7WEszAn7PQcjFDS2n HUVFycnZvMhnzDZ2n0i0P+1k3CIfo+PfrDJvHI2+Tw2tjMJns4NtbDMNLOXajo3m9bBV 38uT0fqvjauweQvIAIiu70ZTJ5iNvn2wvyxguWWBp7DYMPbYh/0sBTgiCuDgnwlXcWzz 1gjlKZccgVLW7uuNdAhx4fiRcI0XHeF0NcHB1RHUHEGQZEVik0+83nTNQwnepjW6+knQ KoDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107983; x=1781712783; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=CCsyYx72Y2y+q+4CS55j2/wvjV1TF5ioEILuC3vwmX0=; b=nULvMo3+qKO0jpmhij0sWGNsZF65dyBrrOf+B103p4QjolE1UyIJyT12V8bwlymbKU i+0Ng19OudyJVR94KYLrNXr2gRCOEJFAj+cMw30Kk2dDr8DQEqDbym9i40Ay66HB4gxK O4UH+ftMLpjXvh/3/3Zms8vzjlHRH2yCm7CIL2zRfljZKAkEhMxUAkm3Jn1ZTck4JDF1 BGTJdzgxj+x++agq8J22SrY3c8A8w6oN7/Y0HgWAZ855wvM/Y4Xv/fg9k/e7FELqN8Fn A1wJbuCUD27uNWFadwGXuS4kAUF+fOYiDGjm+ySnN4AAz7jiL1Bcpyaq0FTxCETmrsYE Isag== X-Gm-Message-State: AOJu0YxxECyuUpF6hW5hxfs+FisCTkVpDwgZGtkKLgCAR9mnxOJoF3aN lTeMPHR7WDeuECHva537yMYSH4n9pPzJ2tF2hCaMptRAToLCV0+3OxnVW7KJL66nWR0NvP0qMgc CRkqJ X-Gm-Gg: Acq92OGU5y/d7Vz3Jq6Xwu+PklR84tIs+iNl34DqCaYki6w1McVBUCpDEQ1nlwDH3L2 hqUa3DJaMG6HBznML3O/PnLqY/laXQBGBM5zhtsI0MaXw91bPUD6ax/5WMRAuODEO96uRFpgp90 1JeNtHeTXzT5dTWEMX68jHXdXkkvBFHqsqX1hi3K5qBzSxdBHdm8fpCVZ/1wHO5w5P9jV+uehKe +JZVrKYyFix0apvEKBvoM/qGiR7GMBdli4HSw+KH7UH3VCMtgDsyidbIn8jJC6va9ZuVG4/+NFo iu8XJERXhk1lzHSHHH1P2RRx97CoAmgRwlK7eOHen/efPMGrByNLvikD003JcvtBjjKiun9wVLI PZcd6+xBEQGydrAukLe3k/DGACrEtEJZCcHT6GFC00X63Adcb7ZJrKPBWxYshiaybUjG4n+9679 Le6SQzBVrwgx6wdDbivAKGERf8V/tInvwx2lODIt5Vbl8fRUOjTu8Gga6yjh+Bl7jkIDrQn+US6 XxY2Wth512/pdbgwq9tWdq23x9uaKvgGfNOa7ITpgwnGrWQJpVAew== X-Received: by 2002:a05:600c:441a:b0:48e:7854:1608 with SMTP id 5b1f17b1804b1-490c26e1b8amr275009495e9.25.1781107983193; Wed, 10 Jun 2026 09:13:03 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 43/71] target/arm: Implement FCVTN (16- to 8-bit fp) for SVE Date: Wed, 10 Jun 2026 17:11:34 +0100 Message-ID: <20260610161202.2235298-44-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.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: 1781108370635154101 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-18-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/fp8_helper.c | 23 +++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/sve.decode | 1 + target/arm/tcg/translate-sve.c | 2 ++ 4 files changed, 27 insertions(+) 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/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/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 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 6b2875a451..446fedb5b9 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4100,6 +4100,8 @@ TRANS_FEAT_STREAMING_IF(BF1CVTLT, aa64_sme2_or_sve2_f= 8cvt, aa64_sme2, TRANS_FEAT_STREAMING_IF(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, do_f8cvt, a, gen_helper_sve2_bfcvt, true, true) =20 +TRANS_FEAT_STREAMING_IF(FCVTN, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_fcvtn_bh, false, fals= e) TRANS_FEAT_STREAMING_IF(BFCVTN, aa64_sme2_or_sve2_f8cvt, aa64_sme2, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, fal= se) =20 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108014; cv=none; d=zohomail.com; s=zohoarc; b=kX28DGYjbYdzwSebcdB/+QTlPWpfzgWAD/Wi+FEIKJ8r6aXlUvi0AWBtXy2E6BVbjPBj+QzXMxV6+rs21huIU14N4KXNDTru6ChDAW+2PLsWQmkjgYfTuemGvODfUCBrmME/zox9iOFizbuheCiKn4IaUICkJ7trN5GTmMjAe9I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108014; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=96gfwOgDQ7TQX2Cy0IGMrZVt/LAFVcWaE2Pfi7hy+Yc=; b=MRWYqVSDVK9dqhQ8VIZKIF2nN1bN7ZhfH3dmB6zQ+iX1+YojLW484WBXWkjuBDBl5GlLFxlGQwluaZBkjOUb3bpL2G5J3+xqxHQclKQSAOIa1oFZxTz/RKpqRI95NqfaTcZbGTjLiTrgfg9YCNXoEjHoRgtqPSDmhD4sRKsOy0I= 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 1781108014832967.1761148862753; Wed, 10 Jun 2026 09:13:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYE-0001yI-Cr; Wed, 10 Jun 2026 12:13: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 1wXLYB-0001te-W1 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:08 -0400 Received: from mail-wr1-x432.google.com ([2a00:1450: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 1wXLYA-0005p3-19 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:07 -0400 Received: by mail-wr1-x432.google.com with SMTP id ffacd0b85a97d-45ef779c1c2so4816015f8f.1 for ; Wed, 10 Jun 2026 09:13:05 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.03 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107984; x=1781712784; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=96gfwOgDQ7TQX2Cy0IGMrZVt/LAFVcWaE2Pfi7hy+Yc=; b=lQrX3+6vnlJeycEkNBFXNHdiBbl2T1/zeHx+PdMI9BHOtMfpj10tCNIjDcnouaG2OO 1/NF5Z6z3P8cINe23rz7JjXYOwcDDHUseSYj518jvwhGofdOZqnu+M0dk17hfEFu8mxQ rHQMLR1Nucxw1JbsaclaewvkJBFRhdL34iig5kxA77qf0+fnpUBYa6AVd3aBF7eEq6bo /R/mTuzHYxFQ1A1A6QW9h0wOCOgqs+l72NvJeI9sYnpuLDylugOuxBsQ7sZvaHq2f0UG rdDeUFpx9dXHp7p9NljeS2f1SxKvy2yt/FqF5Cvy0mnJTzpq+5dHyqRJCfRRLPNeTf9S kW4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107984; x=1781712784; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=96gfwOgDQ7TQX2Cy0IGMrZVt/LAFVcWaE2Pfi7hy+Yc=; b=mVwghliFQRKwbZF62pa2WFpweGL+sXGuXJ4Zgb9HxjdY961LBpHZkNYeqOBxa85iUp /lLaKScQoI2mPBDWyZnEesFyf2NXYyzTiK/rxDxba5D2UDcRPDI14Ryj47zJzS3LMGrm pmQI0O599QDu6ZM4OnxYmuVF5+ABBxWxeFFZJsAv5cr5hOqvf5Qgi2OjH5q4w6Fs+hk3 jLLvqzJjntH/T5lmcbVg0GvxXTFcGLFLVtPe0f7Q0PbOoIuZufkubuVexTahc8oGm1A2 IPybQQDpw1VSXwMdy1EQkF/1QvyiEv2MWBjxw/IvZzYoFMkfG8ZM7p3nxdff01lrAfkp Zo8g== X-Gm-Message-State: AOJu0YwJC0r9ShM4LEfau2o4NlfmZJUYYRpudZg1Bh7KmuL1ewqRN0yC tycyvFbAtM9okqJ22GSYH7MyFR8LsFXmendLWHtGnVQP8KLuuXqcTbh0xs9lebd9CYH5eR4OO1I Sajsp X-Gm-Gg: Acq92OGUMb21f5VTNb6rEn+omagI3vqwBUHufOwWB+dkknPJhKKS2Ay/Vsbr3UUasTy UYmX2+R/0xXu9L4fzPzv9N7mRWT/zvLUEGhgrMrH4+r8sbtf+a1d9IypYoxUyg652+Y/mk8Uk25 MDN+8VF6SN5yPjqnxP4rY0f1Nib3NAfno13kydL7IOKPXV+AC+j7ruYAqPv204L72a8HvBjsjm7 +KIx0YU6EG5taLglBsr/iNuf0uf9wJhLQg/ynlGIm2qSLlfE5+4WXqDmZmqy94R5ys8JsavzrPT V2r3WMd+OYTUiuiN7bdpfPmsA3EP+PTo9ibk27eH5ZLdy29fOCE/EDK+eE0mSDm1IgDx4tuyntO mcBvXjbfriFx9Eyj5+uIK3SWc4N/R0MSefjgSAXc+XFayiIySuBs3I/gyb8sBodTi/KLL0xhh7R 7aObsshiVaPICFD1oFk8JoLwVjsh8zBGT61kMWlHvbEVEll4CCAuV9e6KEzAqly8dgI68zlJfHK Idso3HyAG0GBRG1rD0G4LCFYVilWrXAY2IwdQMoPJT2qKqRRz9/Qw== X-Received: by 2002:a05:6000:c41:b0:455:70bc:216d with SMTP id ffacd0b85a97d-460304fc121mr29667660f8f.12.1781107984491; Wed, 10 Jun 2026 09:13:04 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 44/71] target/arm: Implement FCVTNB, FCVTNT for SVE Date: Wed, 10 Jun 2026 17:11:35 +0100 Message-ID: <20260610161202.2235298-45-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::432; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108016346154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-19-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/sve.decode | 2 ++ target/arm/tcg/translate-sve.c | 4 +++ 4 files changed, 55 insertions(+) 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/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/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 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 446fedb5b9..065f16d899 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4104,6 +4104,10 @@ TRANS_FEAT_STREAMING_IF(FCVTN, aa64_sme2_or_sve2_f8c= vt, aa64_sme2, do_f8cvt, a, gen_helper_sve2_fcvtn_bh, false, fals= e) TRANS_FEAT_STREAMING_IF(BFCVTN, aa64_sme2_or_sve2_f8cvt, aa64_sme2, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, fal= se) +TRANS_FEAT_STREAMING_IF(FCVTNB, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_fcvtnb_bs, false, fal= se) +TRANS_FEAT_STREAMING_IF(FCVTNT, aa64_sme2_or_sve2_f8cvt, aa64_sme2, + do_f8cvt, a, gen_helper_sve2_fcvtnt_bs, false, fal= se) =20 /* *** SVE Floating Point Compare with Zero Group --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108443; cv=none; d=zohomail.com; s=zohoarc; b=C7p0VM/kJnHwljacQhw50YKbBuNrvrrusBGw1gp8EWlT2l0DFb3ML8kC7M9b+2I8VWTGq6aOmtdtlDzGD1rrONoiNVym/UIsjiilEcM87SOVTY4utokD7RH1dQoPdjym+CJUimOpb48stop/wOmzrpVDIPY8cqFGJwYfGhB+YVg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108443; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=dgNe4qeau5gf9dgYjxgGzW9GrSqcbiaaaJG2kNHdFaw=; b=QHFJO8OIu9iHgYoGMLA1WsXG2O/Aq1JjH8R0HhatZNddgX/KT32GDLGXy096WZdo1zU8gg2Tu0BElOJp6EV1UdYE/ToShHb1KGQJB3Tjl/asKXCvJuJpa9zA1K/iMl227B9n8XwEuXmOuxjgWVJBQ/Oxz1BLQs5+/WxAndQMKrY= 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 1781108443355640.5933309331614; Wed, 10 Jun 2026 09:20:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYD-0001xv-IL; Wed, 10 Jun 2026 12:13: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 1wXLYC-0001vy-Hy for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:08 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLYA-0005qF-W1 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:08 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-490cf3000f0so43277145e9.1 for ; Wed, 10 Jun 2026 09:13:06 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107985; x=1781712785; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=dgNe4qeau5gf9dgYjxgGzW9GrSqcbiaaaJG2kNHdFaw=; b=HLEQ8wVCWsIIro5sRUwXh2Awr84LKvKc4i08uS8QQgToucaASWvYFw+Wv5XoZ5iq4Z m+xHwi/jVcGiEBc2IMAW7M29HGe6NPT+nbCjv0dUaxUj+fwEXOAzI7AEd1nhIt7SllFz GOsME1RYU57XPlKKcPcNlh7BRJiUKsoF5bGFW/I5CQApuXqTAXG3umaWY/Iz8jIUQ5z9 UJZyniXGzZpXF4s2koEKYrsR/V7xn+u0C/2BRB9vqpsIhy3g68JUnFyxm/8ClB7mxtfs lqzW820Wh5sW+uHoAHbZnJt4mhA1M39jHkKG7Jh2PxumASqwdA6nHPzyiZnRUHHu/7C8 13/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107985; x=1781712785; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=dgNe4qeau5gf9dgYjxgGzW9GrSqcbiaaaJG2kNHdFaw=; b=I5M58lBh7qK8JszerjSEukqFC+w7DZKwZp5LTtWl/7+3qPje4bbnLdxYpM/CcTVRch Gr+oq05hBLt+7/Lmwy6iH+y0zldjYW3Oq5bQtMlmUu/PJGhQewrfn4rxSzuNd2nIPEOt h/cW7lCajGvaae8zJwyTJj7Tmw3saqRch/d7FFj4CVMfVrgWAAHurqinXgB3L1L6VrFp c+9YTvJUH1dAEXuz23x35Cj7hkFKWlH7LCE3DIRkYD7Kqcrejv7o1ZXsBIepM4q6K42k DI4o36YRxeEnLEEE7XRi7oHWl+JZPKPGnd9NiHpKXKNH/avRwfiK8GVOY/Ky1YgXjL+R dieg== X-Gm-Message-State: AOJu0Yy/5CKd2IW2oes8N0CuY7Kxo//uNL7O9+HMciCoXqHnVPafwD+E pt4Yq1AZG6L6PFYFffJoEpbcDyvNZ7Z4nZARBN04xqNEqwmBsY2YdLexANp0lp4zHk3B5MQEvXj rUmdT X-Gm-Gg: Acq92OGV96stuzZnfqEfpjGecu8MOXsQNXWcHnMweixziQqVEvqPdpB/SWj9UqkXtYD Tm+tnonIJBIzkhfM4Q7PmTtOt/kuGEoOEBG82yZyQi413fEBHFU/RdHUwC8MksvUoe2IGL5+i8O VgKg/MF4j1H8EuPhYP4YjgGkaE/JREvg/Lbp1p5HJrwWT1tLncizWLPPvjNbDvFwaECHjnsKSsZ fsXezmYfcLbVEcbCE3PNIIuIlXz+Ka01e2xOhAPafF33BW29whmUQTov8S/1o3FHPF+wLaJ8UhV c3oypQ+EF2nc6eQylRliY5n4ppPY+5IxZrM82yX0hYV/6OBHYvOVFAHhbKb0JmmAh6a7BbwQ+Sr A7u0NnV7zas5DjHZHOYWSC9NWw4IAAtfU5IGjePO/K7FBEnXjdL+Q2CtJECP5NqMcuTX5rsLYFe UKMTSIQh2KVtJXv+0WFA+bjBCc240psiizwLy5GVByFY6rgePvolR+oeqWwelGp2ANUSVd3QuyU vBs9M3LyuVcWd4MyBbTXdIH6XDGWiWZ9pICtXQVAGc= X-Received: by 2002:a05:600c:3b19:b0:490:e190:38f3 with SMTP id 5b1f17b1804b1-490e1903b3cmr20288815e9.21.1781107985483; Wed, 10 Jun 2026 09:13:05 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 45/71] target/arm: Implement FCVT (FP16 to FP8) for SME Date: Wed, 10 Jun 2026 17:11:36 +0100 Message-ID: <20260610161202.2235298-46-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.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: 1781108443866158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-20-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/sme.decode | 2 ++ target/arm/tcg/translate-sme.c | 16 ++++++++++++++++ 2 files changed, 18 insertions(+) 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 \ 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]) { --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108160; cv=none; d=zohomail.com; s=zohoarc; b=MCth6afi8fdoLvVbDOC0wI89H6idW63cihDkXRNrQbqfxaQBHibO6EQw/LrrQH4W+CC4LPPNoIG99NQXeUOanvAnovXRnkewMC3JKgob1qltqhwMCNKOB4FbY/OvC3g4tOu+kqhet5TRSj/qnqAFqRJ/kobsE4VBkJ2ILhiG1MA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108160; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ftN4VbZgXk5klPBBhRve5YXNmghakPrf14CCWqLU1ok=; b=MG7iWDczqYOcLgII1vI2NgOu4a7AgDHIl97Fc+/xHOKlBNtCpWcAuTQNSE1Dss4wCPvExEqx8pO+KQPM3FeXxmeKZZNMb1UVJ+V9hlp3f3xFr9+N1RoHX+tG0VHwERDuhhZEm+Bf5A037s+XQHdmu5KSiR8QIu2w5yvB+h14dKM= 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 1781108160507589.5123111658863; Wed, 10 Jun 2026 09:16:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYJ-000283-3d; Wed, 10 Jun 2026 12:13:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYD-0001y3-VK for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:09 -0400 Received: from mail-wm1-x332.google.com ([2a00:1450:4864:20::332]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLYC-0005sA-6G for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:09 -0400 Received: by mail-wm1-x332.google.com with SMTP id 5b1f17b1804b1-490b64c8311so77042145e9.3 for ; Wed, 10 Jun 2026 09:13:07 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107987; x=1781712787; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ftN4VbZgXk5klPBBhRve5YXNmghakPrf14CCWqLU1ok=; b=kbOHTYQmBHBNUsiiHvIgABRtTs858GxjGst8HFauPsXgLAwfvZc1UHtTy+Ph+cGkc+ YddvjqW5eeuMRPifoSdCieARYEnAw6orz7m5V9qpF6u7kJBbyIHrwm1dA0+FCE8VbLE5 RLG++4+sJDFYi+WeO4c/mVSwtrpY/SISNZzV+BoNbTHE6QC1FvxUH1Q6s+XKY9O8bS4m 9zZmIZoOWGnoGNVjPvhUBhjvBP65PkrlCqqlyEdl7KKUcIR5/V/unva47xWJ+KmxP77G ZNdJ+OxRWQhLG+hRxU7d9OurH3hT6STI42aIOgYzx7B5VxOUuxmmuUVGktcGzEquaWcZ GhLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107987; x=1781712787; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ftN4VbZgXk5klPBBhRve5YXNmghakPrf14CCWqLU1ok=; b=rwRHta6Q8dIvJYNtbB3XbdlUqBRE427upvcJDX9BVdkGq+1UBzvUhtPMAwYOJuidpB morHAn3c0zi6NdWRoaAeg7Hwgf2or3vMPO7GfbWdBHc7ebNWODx/rG+CLLiIHtRlsH/N b3/T2LVp7CTvFBA1nS0T/KNZIT2m9LeTAB160xOlqCRREovbqr2s4mg+0INjglX2qVaU 4nCe9dzJ6Fk8cN1i5Z2Us1ZYZEBG8T0YY9kLgwomlC6MEVSqg2XMvj5tunjyNAtbgAKR QF26YpcM9Bdl8BZnp9KkMB+Y9OdLebAWCZ3qnvJW7sH4MREkQ1UTEzscBc7q409VqUfb jHoQ== X-Gm-Message-State: AOJu0YwRgSuQbR0e5cAIrxMnK2ydgNK1qiNLWiLJ3182uFrlk/Dot/Ji dPQtx1VBY6gNoVIOW2Fn9GMEENEycA93i9nXlAYTkHd0nzIZxw8bJfC4mi+T9nGqO5EvQGpt40Q UVbma X-Gm-Gg: Acq92OGRTk30yJUZSY4eWB79ohzWE55qi6P+ahOFk+TFrOXBDAUYYWrgcM83+uvPqhS Rw0tkRdyBYkr3BueTjmNS81NIqBsRYM0g5HsouF7ewKUFSITUz1vVDbgRS4Q+hpf7mQRSP5hVEq LNZl7yrkye4zmQVO9umlD6ZNuDSxSKjrPVWrvzj/YZgCOSpuVSdKy7BtTBAG1m1eET4kSoUa8+r h/HtbTzpmBuCth7yqu1EwnaBtvlVd2Cuks+LvZzjMjpRyp2GLM9NZs9RuaNHf2soBJsRv3EungC EwDxoNvq2Npd8ItPVprl4u3/1pMCNAtj5XBNyRHnqPr68VyugriVZJ5+I3pdZyj+3GyG++CjP9x n6gEjgbtUuiiuSwuar/H+BmwrmBJVFRGEi3r9HWgnxksrz7UTSvBwm3piYrTUjOTKR35LGvMYz6 +4nTPKhGU52e2L+etzjP8MGmVpzqQjsU5FT9a63RMAM2mmjEJ+CHBT5UYWSXc600IPzzEPUOs7r lkHSZwPjmz1PTGAQn+mvN9OgRpiWarithy5dc9aupY= X-Received: by 2002:a05:600c:5248:b0:490:cb90:3e00 with SMTP id 5b1f17b1804b1-490cb903f1emr268478765e9.14.1781107986746; Wed, 10 Jun 2026 09:13:06 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 46/71] target/arm: Implement FCVT, FCVTN (FP32 to FP8) for SME Date: Wed, 10 Jun 2026 17:11:37 +0100 Message-ID: <20260610161202.2235298-47-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::332; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x332.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: 1781108161783158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-21-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/fp8_helper.c | 59 ++++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/sme.decode | 3 ++ target/arm/tcg/translate-sme.c | 3 ++ 4 files changed, 67 insertions(+) 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/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/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 \ 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]) { --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108612; cv=none; d=zohomail.com; s=zohoarc; b=S5wuKBJ4SZMy8trB1Swwwr60K1a7ZqcOen0hJAr03Mn62AdxArVGFQSXxG4/ax3xvzKzCtTDlDAxu4WDg55ZoMXck9jYac8UtC6woH9kKNcaLck1pIdTMrzarXDz9xSp8Efh96qVVL+bmJvhYGUDTtU0qyI7cjyN34ybb4ZPtfw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108612; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=lf8wPmZJU46wuhYvQOeyoSsFpA/7mbyswfhdhoFFMh0=; b=UtUoJINPXYgd1oNRt8fEYITIk7eMx5hPVyjaYpvUdlF8vPsiZelNUsJjkWxgob709AU396ZkNDmH2byY5xeu96k0+KYZ9vmXMwWfbo/Nz6+c9lQzgbUPs85nZSwcJB+7iT4GkqbMab2ws62AuQgA1OKKAX4Vshs3G9SQ/m4lgcY= 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 1781108612209745.6038630576488; Wed, 10 Jun 2026 09:23:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYI-00027Z-D0; Wed, 10 Jun 2026 12:13: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 1wXLYF-000219-FD for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:11 -0400 Received: from mail-wr1-x42b.google.com ([2a00:1450: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 1wXLYD-0005u9-1A for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:11 -0400 Received: by mail-wr1-x42b.google.com with SMTP id ffacd0b85a97d-46019b190b6so5233849f8f.3 for ; Wed, 10 Jun 2026 09:13:08 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.06 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107988; x=1781712788; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=lf8wPmZJU46wuhYvQOeyoSsFpA/7mbyswfhdhoFFMh0=; b=JSZPsmh90GJv4Ep/DuIRGTWFgRdQTSCVdDYeM10UXz2ekxgBh5m/Cr0ZOPSjdFTQey MQdmv8JtWK1dvtsH4FPCmVcMdKgv/bkpwAMUi8Pz9e7uLpjRDrSNe+HpTg76kPIqfPxE RA3fJc0yZ3QqtePn8zKGDO0jijflLDT2shj7H94vUQSyXrB3uU+MqYGnARAe0CO88uIU hp9NM1g18NAW1SIONUkp1cR0Iz4WD7FVmtjOGi005ku1jxnxNV2Jbq8t8Q8GRjWzXYZG o6mfEGpPDL+oqTa/3PKR3OKpqCzK4UsxFghGVdG2tIujFkKmtV+Oeaceyww/58B8oxDb dBrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107988; x=1781712788; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=lf8wPmZJU46wuhYvQOeyoSsFpA/7mbyswfhdhoFFMh0=; b=dMIz2mVDTwPypO2gQLmq2ICDaxAe9bLdMcvxMGdDHnYXbFjERTlYUbXLJZtD5hrfEe XyxH8FQGJqRQG6jxPbApdEw1W1fV6UuFTueN9zB4nywvWPfbox2rkYPRKsD0rpBS1tPi R3hefhK75qEufESEp/Jq6QcCzcj70wKiQWr5H6jqq1xwEI1tJO+Y8E9bCC7tIu2T3AkJ 8MF2/3+e3hiqCUhB+bVriUBN0FYGCbG5VFERrN6Kz7eOTjPy+NM3ZnBwueX2J2lgmKKW O4Pi5R+EhQZQX5Uv4o0K6Nsd4JoxUJqAkpw1vg9h1vVTqmZ7vWoIQEflANuS1mNvKptT X7bw== X-Gm-Message-State: AOJu0Yx+AXJRRiqD0IaY3zzdnP/N5n0Va/qrstjH+aH5YBkFphcgzBn1 +cU9hphWj8THCpmzEVBGLQuvr6eqQfi/a4spu93FIZkF1Vo7hml5dOJwtUkggjg+7415Q1qV+lF nXVoS X-Gm-Gg: Acq92OH0SzwnsAx0DtngR1III5sNsWyis15vrTuQ0X5mJh+OYy9y5wyS/3DWFbUNlI3 Rmkm4zVp01WkMIu/kClNfGqC+/59jRR2DFkYyyDd2bT1xiM8oedVwbWuCUOTNjC5Brk0Hk+Ub1T j5WiAcIOGiqye5+n4K2yRXutPvwI2N4zAZkJv1DJgzMOmfxRTN7NbaTYyNmjaTXLder5c4HjdTS K7SRT0kzf82HMkh0QQfnB7jXMMati+M39f8AiqOv/C+HVrxCyH/3Ntly6pzfraTbvTBY64AC7Sd s89UfI1ADffgB9x09r1XyTxaTdU6EuD1Ic4Ch+bCQqds0IdTDrzHfwP+gocaVjItbY8YOgaO/l7 7bGa273xdFjl6NAs8N8hQ8r+mWqdqoDBiVeFmuElCgoShsyZcz5feG826JNXBJWeZLtJ5/7OUGL EmQsmHG4vuz12/iw14WjXEUZi2TFPfBbDaNYYRcxBp13l/zRVJ/JlVvBtj9GTeY4MujspOk7C63 wDqmnd/Tt5l6kFAPX2N6AEmJqV5nHC+1L0BRPbgHQA= X-Received: by 2002:a5d:5549:0:b0:45e:ea68:5237 with SMTP id ffacd0b85a97d-460302e7187mr29927552f8f.11.1781107987689; Wed, 10 Jun 2026 09:13:07 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 47/71] target/arm: Implement LUTI2, LUTI4 for AdvSIMD Date: Wed, 10 Jun 2026 17:11:38 +0100 Message-ID: <20260610161202.2235298-48-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42b; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108613067158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-22-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/a64.decode | 6 ++++ target/arm/tcg/helper-defs.h | 5 ++++ target/arm/tcg/translate-a64.c | 38 +++++++++++++++++++++++++ target/arm/tcg/vec_helper.c | 52 ++++++++++++++++++++++++++++++++++ 4 files changed, 101 insertions(+) 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 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 5606f610c8..ffd505601c 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -5502,6 +5502,44 @@ static bool trans_TBL_TBX(DisasContext *s, arg_TBL_T= BX *a) return true; } =20 +static bool do_lut_1(DisasContext *s, arg_rrx_e *a, gen_helper_gvec_3 *fn) +{ + if (fp_access_check(s)) { + gen_gvec_op3_ool(s, true, a->rd, a->rn, a->rm, a->idx, fn); + } + return true; +} + +TRANS_FEAT(LUTI2_1b, aa64_lut, do_lut_1, a, gen_helper_gvec_luti2_b) +TRANS_FEAT(LUTI2_1h, aa64_lut, do_lut_1, a, gen_helper_gvec_luti2_h) +TRANS_FEAT(LUTI4_1b, aa64_lut, do_lut_1, a, gen_helper_gvec_luti4_b) + +static bool trans_LUTI4_2h(DisasContext *s, arg_rrx_e *a) +{ + if (!dc_isar_feature(aa64_lut, s)) { + return false; + } + if (fp_access_check(s)) { + /* + * (Ab)use preg_tmp to merge two disjoint 128-bit quantities + * into a sequential 256-bit table. + */ + QEMU_BUILD_BUG_ON(sizeof_field(CPUARMState, vfp.preg_tmp) < 32); + unsigned tmp_ofs =3D offsetof(CPUARMState, vfp.preg_tmp); + unsigned rn0_ofs =3D vec_full_reg_offset(s, a->rn); + unsigned rn1_ofs =3D vec_full_reg_offset(s, (a->rn + 1) % 32); + + tcg_gen_gvec_mov(MO_64, tmp_ofs, rn0_ofs, 16, 16); + tcg_gen_gvec_mov(MO_64, tmp_ofs + 16, rn1_ofs, 16, 16); + + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), tmp_ofs, + vec_full_reg_offset(s, a->rm), + 16, vec_full_reg_size(s), + a->idx, gen_helper_gvec_luti4_h); + } + return true; +} + typedef int simd_permute_idx_fn(int i, int part, int elements); =20 static bool do_simd_permute(DisasContext *s, arg_qrrr_e *a, diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index bd8ae5d6a4..f4ff56e034 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -3344,3 +3344,55 @@ DO_SME2_LUT(4,4,h, 2) DO_SME2_LUT(4,4,s, 4) =20 #undef DO_SME2_LUT + +void HELPER(gvec_luti2_b)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 1; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_b(&scratch, vm, vn, elements, ibase, 0, 2, 8, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti2_h)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 2; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_h(&scratch, vm, vn, elements, ibase, 0, 2, 16, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti4_b)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 1; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_b(&scratch, vm, vn, elements, ibase, 0, 4, 8, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti4_h)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 2; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_h(&scratch, vm, vn, elements, ibase, 0, 4, 16, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108303; cv=none; d=zohomail.com; s=zohoarc; b=mRZ9n4ZuOUCf7L5maTK/lpT0Y04gXV1SuLzC3i4oG9kgsiWck6DSTO+OJU2JZ+OHWzQu/1HbHhqTAaLbTj8AlYsafXNeISlZy80Dz6bBbzdecHkROLtPD9tE5LW1mj/V7iaqW+SEa2ELozUL0Ym9orN+J80WLfGKUV+ozG9qE9M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108303; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=nHNiAxcsamDuqssqGG6CRDh6SRjbGKNnt1wIjn9qaVI=; b=lUaNBsIYwr9qec0ZdXnJWWQ9hybhwuEgn2Ws0HoFRLIlbNBLwz7rXBTdUyMVjkKD3bz/VDCaYsHsfe0XoaIlv5WQTUGyumvKojU3xADamC1mWWaOYPONRQ4tAQmzFM40NCzEJQUg9OLoI3L2UzY0DX6NlFOE3ac2K4/FYL+MKk0= 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 1781108303678460.46612832661356; Wed, 10 Jun 2026 09:18:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYH-00025v-V0; Wed, 10 Jun 2026 12:13:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYG-000232-NB for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:12 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450: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 1wXLYE-0005xP-Ob for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:12 -0400 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-4600ddc4017so4824011f8f.0 for ; Wed, 10 Jun 2026 09:13:10 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.07 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107989; x=1781712789; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=nHNiAxcsamDuqssqGG6CRDh6SRjbGKNnt1wIjn9qaVI=; b=uo5xYltD00luUyMeyPFEK6Dta4uwnh8se29uByJZ1lggu824matGrb7NvFA8+aJQ9q 7/NZaXHyNWdpQpY2Ll/0z29hMjzZVqophcG2FwEbwRXmJfE+CgG0dd8JXFH1M2gCORW6 5dd60dSNQwJuLWgkqsf3qHJf0n/CnsK7ttMxH+RIR7HhnOzZ1SrppBt1IogqwHKUhIQQ Jx+0Wfyp53wacrKudRl6T+58xiZ+4hOotVb0YtWkn3Z8fdUrnMNeOm5u3I6Tdifeanhc fxyCbvHxDNQS0WKVZQaMvz+Iz1baJSx1kEBbRg+VGv2QKAyitELEkiIGvTKtvze+eo9Z Y8kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107989; x=1781712789; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=nHNiAxcsamDuqssqGG6CRDh6SRjbGKNnt1wIjn9qaVI=; b=Eoq651nxnfSmb6axRdivkX6k+2zmdTr3YbQILSj98bm2W5teQuxRHs10d9scw2gH26 eT9Eo2wqTL+HezJ2l9+qazgafXXVWCmGdCdh23JrqBLBv4D1X7GQoUPnrhlz7TX1MI5Y hzPYJ7NN4MnsIASs53+D+KgfdS0oOeqJm5YEoxChi7i6P/q4gn1fTQTitLw3b1AbPFRy NQDrRTsi+FEtWNRfg7C6TU+MIWjCDBiHuRutFoQ7WpOUUB+fClHJX3DO+SCwAPkLbwSg YlWO38ki2PqObcXGcNT2kn0hFbxvDw25MEmgjZahDSmnu8kxOVGBfdHqitAnpVodhoN2 o3Ww== X-Gm-Message-State: AOJu0YzdFxwxlmj/sbx0gl60L/XjZgKBc3Y8WGx2YRdKHbK1nfzsKzmu xHglMd1ddO346FQpHVMp1aEcCVTIGVVrvsW7XGLB2E7i+xmiyqxhdVm5Vc+HHHlLVdheqKMykrg zbqyU X-Gm-Gg: Acq92OEoK0KH7DSq/UfiDlyXmCo/hBmLTx5WBAk4KX706HGoI4fZl0MJk9HXhfd+7Vj BC4Dh36gPJpQlQ17yJPAoF2KLMdme7Hge8yDRdfg2TJJ+WCs4hsX9LNrgnf49hxgIXzZvUqV0hj tFEVBeWOUL0WDAipnWcWIv+T+tyzB7RkyXPUZg3khUff24jNcv69PrxILQjd8alNKp21/Jn2NT/ +S11EH4msPda06+lzIT7g9MI2fygwXhlcWbNcx1ykY92/1iwkT+WlzIws53/q81l8KDFLASeS7O Efk/QRpVZKL+gpD9mTHJNiyJxLCD8oOFGN4B+ton0Fs0Ox2nX1TqhnUwSHwGgDTIlexdVb/mVZA wxYxUgzfznMMIPeBYDdKQNZS539VsDQVHO0gKdOiaEEKRXdH3A2AAAlC4T432dZUIuuQcz02KlE 7MGqttqPiWQqQazyMaEHitHNgNGsv/nueZuTFaExJlMFybBD7qag9xd9qiYy2afAqCizVUiu6TO lZLKZ3S5CBM6/PXtTmJAKlguoPV3elEHwCXM9+PyYE= X-Received: by 2002:adf:fa89:0:b0:453:e3a1:6580 with SMTP id ffacd0b85a97d-46030501f74mr27232904f8f.25.1781107989314; Wed, 10 Jun 2026 09:13:09 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 48/71] target/arm: Implement LUTI2, LUTI4 for SVE Date: Wed, 10 Jun 2026 17:11:39 +0100 Message-ID: <20260610161202.2235298-49-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::429; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108305270154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-23-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 6 +++ target/arm/tcg/sve.decode | 11 +++++- target/arm/tcg/translate-a64.c | 1 + target/arm/tcg/translate-sve.c | 68 ++++++++++++++++++++++++++++++++++ target/arm/tcg/translate.h | 1 + 5 files changed, 86 insertions(+), 1 deletion(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index e285f57d25..8770fce2fa 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1674,6 +1674,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/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 diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index ffd505601c..25579d4ba0 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10917,6 +10917,7 @@ static void aarch64_tr_init_disas_context(DisasCont= extBase *dcbase, dc->vl =3D (EX_TBFLAG_A64(tb_flags, VL) + 1) * 16; dc->svl =3D (EX_TBFLAG_A64(tb_flags, SVL) + 1) * 16; dc->max_svl =3D arm_cpu->sme_max_vq * 16; + dc->max_any_vl =3D MAX(dc->max_svl, arm_cpu->sve_max_vq * 16); dc->pauth_active =3D EX_TBFLAG_A64(tb_flags, PAUTH_ACTIVE); dc->bt =3D EX_TBFLAG_A64(tb_flags, BT); dc->btype =3D EX_TBFLAG_A64(tb_flags, BTYPE); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 065f16d899..0e0bc4cbfe 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8287,3 +8287,71 @@ TRANS_FEAT(LD1_zcrr_stride, aa64_sme2, gen_ldst_zcrr= _c, a, false, true) TRANS_FEAT(LD1_zcri_stride, aa64_sme2, gen_ldst_zcri_c, a, false, true) TRANS_FEAT(ST1_zcrr_stride, aa64_sme2, gen_ldst_zcrr_c, a, true, true) TRANS_FEAT(ST1_zcri_stride, aa64_sme2, gen_ldst_zcri_c, a, true, true) + +TRANS_FEAT_STREAMING_IF(LUTI2_1b, aa64_sme2_or_sve2_lut, aa64_sme2, + gen_gvec_ool_zzz, gen_helper_gvec_luti2_b, + a->rd, a->rn, a->rm, a->index) +TRANS_FEAT_STREAMING_IF(LUTI2_1h, aa64_sme2_or_sve2_lut, aa64_sme2, + gen_gvec_ool_zzz, gen_helper_gvec_luti2_h, + a->rd, a->rn, a->rm, a->index) +TRANS_FEAT_STREAMING_IF(LUTI4_1b, aa64_sme2_or_sve2_lut, aa64_sme2, + gen_gvec_ool_zzz, gen_helper_gvec_luti4_b, + a->rd, a->rn, a->rm, a->index) + +static bool trans_LUTI4_1h(DisasContext *s, arg_LUTI4_1h *a) +{ + if (!dc_isar_feature(aa64_sme2_or_sve2_lut, s)) { + return false; + } + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); + + /* + * The MaxImplementedAnyVL check happens in the decode pseudocode, + * before the Check*SVEEnabled check in the operation pseudocode. + */ + if (s->max_any_vl < 32) { + unallocated_encoding(s); + } else if (sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + + /* Then there's a second check against CurrentVL. */ + if (vsz < 32) { + unallocated_encoding(s); + } else { + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + vsz, vsz, a->index, + gen_helper_gvec_luti4_h); + } + } + return true; +} + +static bool trans_LUTI4_2h(DisasContext *s, arg_LUTI4_2h *a) +{ + if (!dc_isar_feature(aa64_sme2_or_sve2_lut, s)) { + return false; + } + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); + + if (sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + /* + * (Ab)use preg_tmp to merge two disjoint 128-bit quantities + * into a sequential 256-bit table. + */ + QEMU_BUILD_BUG_ON(sizeof_field(CPUARMState, vfp.preg_tmp) < 32); + unsigned tmp_ofs =3D offsetof(CPUARMState, vfp.preg_tmp); + unsigned rn0_ofs =3D vec_full_reg_offset(s, a->rn); + unsigned rn1_ofs =3D vec_full_reg_offset(s, (a->rn + 1) % 32); + + tcg_gen_gvec_mov(MO_64, tmp_ofs, rn0_ofs, 16, 16); + tcg_gen_gvec_mov(MO_64, tmp_ofs + 16, rn1_ofs, 16, 16); + + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), tmp_ofs, + vec_full_reg_offset(s, a->rm), + vsz, vsz, a->index, gen_helper_gvec_luti4_h); + } + return true; +} diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index ae3897b456..462d4c1c74 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -91,6 +91,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; --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108068; cv=none; d=zohomail.com; s=zohoarc; b=dxn2FV4sKugH2mTStU0AGmGo/mOzVD+9baSOTU2z0VP1TZs0XjuTEv/Z07MJHUtokc8O4nVsHChcNuTLQstZ7ayKz5y1wLmxXBVa69Ey1L6+1JehikMrngVHF8sOphDmHRDhtAY/X3ve6pMGzcuq2dtrF6E4ZyFS5BukR2aRctw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108068; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=r8wjXZ/QtpVzCx8ETVlJ4ncbyArSk6MsrV2vSYfscQI=; b=SyyeIxP0zVN4P9C+96pXBrBKbQOyvJQ/9Q+y8CvNi3s7KMtNq6qiC2X8+7CUn+adJtTmDE8z2oeUmBYC335If7GHo07tS60FD8Dk7j4Va3Rpf6QbTkioJ5VOnFi35nP/DVHD82YZmGrpPkBt9mlxLptamZ8ctWUQ6X31e3qGHUI= 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 1781108068619932.0102333861944; Wed, 10 Jun 2026 09:14:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYJ-0002EN-W5; Wed, 10 Jun 2026 12:13: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 1wXLYH-00024B-FI for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:13 -0400 Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLYF-0005yb-UQ for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:13 -0400 Received: by mail-wm1-x333.google.com with SMTP id 5b1f17b1804b1-490af320e2aso76642725e9.2 for ; Wed, 10 Jun 2026 09:13:11 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.09 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107990; x=1781712790; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=r8wjXZ/QtpVzCx8ETVlJ4ncbyArSk6MsrV2vSYfscQI=; b=HBWcPZI0ZlCWjD8odjXXbC06n2VB0M229d9+Hs3DlLmYK8iGwT4QCqxZSP57/KEQVe 7seM+dPltTQ0EEQP/u0HhEpvwv8YXQZlbP164vp1oKNzBOA8FTGQuYeL3i3AHinzqLa5 iMq3bAhs2rV9jo+Dqw2aVx/EkzomhhdHT0meOPF5IBvMvTJuZYeYEDqSR6uCFItHZAld NS5OFkZEUMmwdXVJyWMUxyDZlx24ZgPle86eZMO/EZQzL1BqZI2npudoSCqqh2phBD+L 2OF+oy4Af2BXf1BoQnToiHEt8bT5YWIVdPV8YNcPpOQCMhxOUU7n/A6Owylgi1h04sjU uvew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107990; x=1781712790; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=r8wjXZ/QtpVzCx8ETVlJ4ncbyArSk6MsrV2vSYfscQI=; b=Xc0AjFW1xnA9u7HzwqsiO4c/gP7zQRcYSXZGu/lppEmG2Q9ESBnaq1MQns0OhD7339 A0qiy1w+UPoqMQYOYJuShTdoMBOCbAb/t46UYwD4pP4TLDhvgVO3jRBF/LTcrCXDrwou Aj7LN3xlw1Rq9rTfGATe5sX/8VfGHHfWUW9ot0ZXyWhAThZrmjnsyj1x4W5jD4i5+cGB SA7r6pCXSNjuiycSNBGBCrw7e7olrIHIzTmxOsn/VFx9isGs0FpeKUVrean7p/Y3b3ii JwILGbFi/eAp6CTRNt84Kqkmmkwao2pcEnlNSiuPdHGhbRAXbDjK3xGa8Y01Mm5kVZkt uBwA== X-Gm-Message-State: AOJu0Yx4m60x2M5LJyJJpJrfYNUNFopyDjWcZ+qZAAaF+LU121QrAZyJ BHPDVySnUo3juvQJYCswAurOUu2bTLRObDABGt5l7jgK/7mrHnm1lFn5SF7bjoIF7a/Ovk7HhuO xqact X-Gm-Gg: Acq92OEEqGqwVmOIAYUa5ANJzEMJRvW3U44YcOA5bvGB3PwBjbsh4bF9gcgq5I63Uwl cy9cfoBNw+104Wb1ipmc4b8MB4DRwKTxrH4bO9jKSESfx86yb6DoleJf+MkPYgBfUiWQfwZdZ4a Uc29wTnWMTAjd1UuSIFXJ5uUnSm1nsEiqnWtafUgO2lYu0tm5mi0x9CF70iPAqoBotVFD7F7LQu FDMqRbCY2FS78cXN2keluTP2/HJIQzi/91boYCJzuhrtGHJ/8lJIuhP+TZQHM4mYTPoALkF3VCf H5L/mlyFUai2hnRRJpjNJ4PkMfdCBG2bUAuRqRXtePobicojFFatXuzwh+9/aRVkPQYhIjZYAH1 I+ewmpW+rWLqyFD0fOBW9Uvn6us8LoCIgSungbF3rdzGPT9VFFUQVEPkQE+4/RQTkUWLR+MPspG 1O5gq+Ac5G+asIRlaRFDjm+ESONbcPedmKj6F75Xatl7A+Zh96J56/2nAbbmQBOKnnLnN7zk0Ix nSNtmDC72+Z8M1KZ6IbKYrMaBITX+rMr3dHEaRdc84= X-Received: by 2002:a05:600c:1549:b0:490:c7dd:7cc2 with SMTP id 5b1f17b1804b1-490c7dd7defmr331549205e9.24.1781107990467; Wed, 10 Jun 2026 09:13:10 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 49/71] target/arm: Enable FEAT_LUT for -cpu max Date: Wed, 10 Jun 2026 17:11:40 +0100 Message-ID: <20260610161202.2235298-50-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::333; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x333.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: 1781108069386158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-24-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + 3 files changed, 3 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index df82b7f44b..1328cce15c 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 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 c7b1dd2e90..234368ba7a 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 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108126; cv=none; d=zohomail.com; s=zohoarc; b=OzUF80lXq/t1zlL6kZCo+Vg4XnS+SlaDg+dujzE2mZF2bH81DrWaTdvqbsXiymYJIZH4GAhqTPS7Ighkax86SpOzu1dBdg1CgPJXC/QgOMFGHsLYJO8NUvpI84xQGgfJugPSSB8nUu9T9BofH+Ww9kNDslkpJDUnwD1bmtC/LjE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108126; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=uBnE02oZ6ge03IDSrd0TW8V+eHFhRn3CLIQlSGcmlTs=; b=alDKyBMmIGK9FZ4GD1u5M1ekxma2dt1JgundUc1i/NRekxtI0cm1ZX0lq1LidS+/mVMG9XrVuDa5nSZR65Z93yLeEB8lpW/N7hsyndsU8sWZIX0RbqImTcPK70ep4jXD6P4qY10rOkDo/MEuMreETgj9h9CJWCNivCXsjAZcjPo= 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 1781108126040215.27435769769943; Wed, 10 Jun 2026 09:15:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYO-0002Rd-II; Wed, 10 Jun 2026 12:13:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYJ-0002BU-Ab for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:15 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLYH-000603-Ik for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:14 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-490e1904089so3416825e9.0 for ; Wed, 10 Jun 2026 09:13:13 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107992; x=1781712792; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=uBnE02oZ6ge03IDSrd0TW8V+eHFhRn3CLIQlSGcmlTs=; b=wxqL/EOhWAWWcEB5N3f6yYke884gMPk0aTaIyAoiBSn2YWkkvNA4XgLuTfYmLKlrnv ZJcBOUz2LH37DIA0uxr/OodTtQYTU6p8MxvlYLm0VII3FvoBU61jCafsEd3g/PQJiGSn 7kfN3M0+sl85FmebhmjdyeIBPnmOXcwyQ+SgPcNOfaDt7iw0BGiGPM3grUO5aLhMQGPN xOmzQvZsQuqunZdB4A/h+uBna1MEl5HCb/aVAJRSDJiv3h+rM26koeDzqgf1ztbZV32p zk7oCy9d14OvuZq/RZPm3z/7pUYM2DP1ZTyACeGXayyFJG8n2QV+KZJ/QO+pSiTWcqn0 JmTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107992; x=1781712792; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=uBnE02oZ6ge03IDSrd0TW8V+eHFhRn3CLIQlSGcmlTs=; b=S8ItlQUkY3PW5VtvVED0zq3keq/YNECtqiVfRh6ugmMo4nlTZH2J5Txw/YFbR5FeZb hcLNbgGb9i5qqiuFZOE/WBQr19LtZjIzoqYBFM2cDTz2D27pOvAI/C4+xIXa6CIEFdIa 2e/Tq1iiaGnLxXGgaRsgS3aKvVrPfWVA6JYZqsVFvax7yO6c0d7R9sNhmYPDGiDn9A8P Xn4Er6lLp4EdhyzZM5SoSL0BHIVTdY3P+C3pjaAXxPdJqzNBni8Ljzab2pDLHN44BgaJ tX95me5TMbMcOXwE3yH0S6axgLQTbPChKeBlzm9/+5yBV0ObsJPXiT18ZiAa5kWFK5+f 636w== X-Gm-Message-State: AOJu0YyIxRr3I367tjyl/y9AT1fsiwKiTIerFgJPuMaRWzveS3sIPhpo hXn2Q/c/Hu+ksh2yrPfWppFYp1TSIp8foBy/k17S9IOTS61tbJV4zuiONE3v3AbyLa8nGnrdAW/ v7Pg1 X-Gm-Gg: Acq92OFFKAM9w5l3RYr1OfdiruYCzom66o9Ji7U7DbAhCfO+z0LUQ76na/skGfyCGPD 3w+0Vl7B2H2NKFNyMOBSWaG5+TlzEc4fwz1dxVyDMdixDzqYLXgsv9+Qbig/dbYiO55uJCyCXMj ZD9y0kL5gVr4XR8eDMl6yCSsytF2NJOMY9HMMdjNZetfnwOwFc63MkPcXUOANoWTuklXJAcZd1g u8qBrZfzVh3kUfg/1Nwz95Dre4PO36NRcaDR3Zym6T+MNHv+TYFBvYRkb51nN1EjeSL9P2dY5hK vRS0qKWy8xZ0m2RCWoDtIDCLYN80fh0TWpwLG7Z2oJd2dx25P+j50acByM9ET2q6G9DrWjcWZ2F RxqDQknd7/adBdhDIRpaaGtepzB7KMb51C5yJnWmgG91R+nMioEjl0fj6xsUpo6GoxYkx2yb9Nn MYFke1T7J5Y8Xo9HTEd+msZcZmlDN19RPu+IZ5kArfAKxbpMBnLxBpjHIP0nm/vuYwLNjhebwp/ AjeqQV/7brOlfmnN3V5WVPLZSl90U0PaPqyj0HtHl4= X-Received: by 2002:a05:600c:4e09:b0:490:e190:3b50 with SMTP id 5b1f17b1804b1-490e1903e37mr18159085e9.9.1781107992012; Wed, 10 Jun 2026 09:13:12 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 50/71] target/arm: Enable FEAT_FP8 for -cpu max Date: Wed, 10 Jun 2026 17:11:41 +0100 Message-ID: <20260610161202.2235298-51-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.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: 1781108128377154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-25-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + linux-user/aarch64/elfload.c | 3 +++ target/arm/tcg/cpu64.c | 6 ++++++ 3 files changed, 10 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 1328cce15c..b8f452f2f9 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) 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 234368ba7a..7a6f1c6601 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1397,6 +1397,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 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108051; cv=none; d=zohomail.com; s=zohoarc; b=LHGjTx1gAtyJteJ8OEmoM5JYCZPgkdVO2cmwNjaHxm1G5UuJJKYRio5P8rzBd1bOFaTdh07c8S0wVe0cOeGn7veaBpiav3Q2Ivs2RidiP1W7BT1BySj2U0sNJ7XdmQX1exwXfiQUWsUV2yi4959BTkJX1UlKDpoNez9bh0aCSb0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108051; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=FRF391YCQ0UAguZPavBxOGhsGfFlsAqW1hPgkjHxr10=; b=cZSfjMD7AbRKq1nigKJW8QY6gkOud60/k2Qmo4NpeFW2L7HxV9OYjPxT4R96ZRCodfdLnEXs34Rz/EyTncxp604qW+AL6rUxLesUA0dSJnSWEacIAJjKO+Cq6jFHCtRqNh27rRAXUjLxUaBAWA1UZ6Tps/8nakLeMdKlhcerN0M= 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 1781108051042605.7043696084887; Wed, 10 Jun 2026 09:14:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYM-0002Oc-Nt; Wed, 10 Jun 2026 12:13:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYK-0002Gq-HI for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:16 -0400 Received: from mail-wm1-x32a.google.com ([2a00:1450:4864:20::32a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLYI-00061b-KM for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:16 -0400 Received: by mail-wm1-x32a.google.com with SMTP id 5b1f17b1804b1-490d1e54b3bso32605325e9.1 for ; Wed, 10 Jun 2026 09:13:14 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.12 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107993; x=1781712793; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=FRF391YCQ0UAguZPavBxOGhsGfFlsAqW1hPgkjHxr10=; b=PKRfy+YuG4VhSYly/9Oett65Pr8+AujtZb8+Okn9/jZptKACCZFO9V6j0dY0EArRLy IwZWU8epCPWURTWapyTGPWICmY9tKkc/eyFPTAf2+BydBq5ZddYtdzSlgsaHwpXsRhjN Hqc/Ok6gVrD+ZQf8HjXitjAbV1c14GbrGXg2ZAAgPHNRLIUg1qwkejpuZlk6qVtVaH8/ ydckBw6a232Oq+7U3iyX4rptM60YBAgkfpfU/uEozJp701gqiuF2IhmgHh/J4gb1HIXJ p5AQVar40hqxjS2/xYZOfws0OU5kS0L8JeKKrIOk6+pJgBi0zTUTUpiFieYS60pcWOAL aqnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107993; x=1781712793; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=FRF391YCQ0UAguZPavBxOGhsGfFlsAqW1hPgkjHxr10=; b=qZoSWE/oFzmIgjnKAu37gSprUzLpt8pX9rgPaq4oe0/aZ1ne7RMx45oz2LzHBvsHtm /QkcDGo8lTyckOLvPN9JOcLdZCnyLKHzOMrcaot0GAIyfAXXOns3HoANqmE/FPh4EnPQ Jwxof+pzvKNiTC6GpOJL4hN5oUvyo6qnqVW5yc5AnUu73xu85YuEOnsD83YK+h/jd3fx u49X2D8y7VavrH0SooqNloLyPED8HzYy+nhwzGesbz8a968CsN4u3UB6B9wj8g8FKqbt LHoHEHTqljp1NAcXMLuKokPb7NjlGzMsuVjym+fV6i/jw3E66v9WLNxV5Q1OwC83hAbI +83g== X-Gm-Message-State: AOJu0YyNDGCM4MrbmNfWYcEQaVGDmQgZufLYDtpfqhVkpXn0vuIDtO+I T1WInqxCedAPuQLau8w5jlpwte3OwWDV12sveHyhCYtSe4bDZ/egsNd0maeAvavdTA6wLzxMP/r as1PY X-Gm-Gg: Acq92OFNW7a+qgAVQC3ngeyZWxTbRR7V5ArT8iDBkIQNn8TbTcYNnN4W+7ch5fDN3Pm X91dsxHIbt/cI9mGlV3OyboDYOOWmQYZpbsOURB/xHeWUYmUvyas97ymkLRraD6BTWYJkg3ySX2 KV8qRqDIiu7AbWoaFEPYSN2DrjfVCultOHG7JkiU4rGsj9sT5t3k+iaXotpQc4VaCjaG9Pt5waX Teo+yLJHI4YWTKShaJ9IGVN6sEprLIkcj9N4gQeERcSXCdvgAffw3m5R8k6wrLj4GlYMl4v1VSZ K7PoL98bt/bcFI00sI45PjJsh+w9WttLYRVT1N8hSNu2KRMLual2uKI5xChT8uJpe56wJhlNUkO y8aelIgWCWBCkb8721EjmTdDfv1vPz1oOdyLCdeeVO0RyEBf32RV9DFvcURx4nUYI3ZqjDjQ6Ku +Rtz8XseDf7xHnkts0DQpiM6RTCufsiMDOnV2lBPopNCsxGg7VxeLeqv7dy1xMCJtBpapiwkJ4+ 75xKcozVBjQda621H+Vlimr+ULoukvQ5gg1ZEtxPdQ= X-Received: by 2002:a05:600c:468c:b0:490:469c:556b with SMTP id 5b1f17b1804b1-490c257c3c8mr429928625e9.12.1781107993119; Wed, 10 Jun 2026 09:13:13 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 51/71] target/arm: Update ID_AA64SMFR0_EL1 fields to ARM M.b Date: Wed, 10 Jun 2026 17:11:42 +0100 Message-ID: <20260610161202.2235298-52-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::32a; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32a.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: 1781108052925154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-26-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- 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 8770fce2fa..f85368a002 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 Sun Jul 26 14:11:02 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=1781108168; cv=none; d=zohomail.com; s=zohoarc; b=CWLyklgW6HR61VrFdBegWNYzp2GeEQkqma85ibz+kUZ3fOFXDBCRYeD0Gm2e04dv/ceJnzFFOdTqpfQmuXvB6PuHafvwifzUIG3zGZJWFFKoS/1TSJi4/9UFry9Czo3KlqSDjkz9R0EZpcEDtN9mJqZQbbOFHAB8NXddtRqsecQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108168; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=NrVJ1CeHR9aQEAVmbZLegBXwlMGEjAblXfa+SdHQK5w=; b=V6pzmPa8IVie2SNpdp4I+GA3OnAK9cPGX230zlbTl+aFobdt9EpdqGmEcQFjSGI7AMraT9De2d1zfJeSztW2ap9P0TssP7m1Wov7uA9ozcEnbdiXWiT8cU2R7NLgfpN5xyiMI7Fk4Wye08hjnsSK0QiZcemWN7tqMUsVRvwaH6A= 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 1781108168749807.3018699183082; Wed, 10 Jun 2026 09:16:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYP-0002UW-2u; Wed, 10 Jun 2026 12:13:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYM-0002Mt-7o for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:18 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450: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 1wXLYK-00063S-0l for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:17 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-46019b190b6so5233945f8f.3 for ; Wed, 10 Jun 2026 09:13:15 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.13 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107994; x=1781712794; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=NrVJ1CeHR9aQEAVmbZLegBXwlMGEjAblXfa+SdHQK5w=; b=swaCCy8jmq/lpLwt6G8+FYkTW1dUdIP2scbfazJxADRfL9tWFReJAITtFH4gHeLY8E T1tDBWcnswwa7va/7Zk60tYIu1XKhN0+91ZOZ3NLhnaGXUgUr6fc0e3P7QSsfj9gMvln D/b8+Si4l+iBTgWpd6P7sJJ7SZdeJP8lFb5hY8Le2JILLuLTiLMAIe3cPrg8QiaOQFrr xldlppBBuvvDnhTlxGO86sLx39SAr71nuIrySwnhZR/ln5TqJu/XHXIQcTgfHmiP5Prv e/2NO3+SryBKpaXNxFG0e72Plwp18RFvx1cjbaJZ51QiW0nVQHJDXdNi+GCxyF+cjfkz X60A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107994; x=1781712794; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=NrVJ1CeHR9aQEAVmbZLegBXwlMGEjAblXfa+SdHQK5w=; b=HV5LxOGOg7uZRLL+g6mD95x87rvziWKvGc+jBlVkJBQsBBKwMznYFTbt8YmEyCmqtu aZuBfqdOCwYdj55monqgWufisn5Sz9oMATT4zotcZ4wteDS9QH35MPxsajNBauNDjZo2 ecTEbr0U/0Nk1BH1QTh94cwtj7a5MlITTt/zkgd+5n2b1YY/HJDjqfr6Y1+Fj7UWmiJm +9Ctt35x5P+ID1lPcOJt3eFuc8/iyBDltMO5DDzeHx9g/YBHpC3hG4IcOEXZTgvjfQRC AkdJWEkWjUn5ebwtDL95heWZ7SdF/WHswKr1ZGnnH7F0QAYMmlEk6+0Oh76arCv/jI9P bRPw== X-Gm-Message-State: AOJu0YyUtEi2Xgjm3tdnjOZVaXclyr2tlWrDsLaO1NfPfGQvLlkUkVZM 9RMqBoEuasLNWKhpc6yfYOxOFEnj2oTkLCF8V6SXFMhr47oT7K/18HT8+nK3f6pv0S+f6Xwa9DU hodcR X-Gm-Gg: Acq92OHsk+kIEQz8sQKIAeewysZygujja2oxl3evH9We+l3tmFq1emdF48UzgD79QmA cbIBbtKhiwjEFWjQ5WT9M1f6cYpgEgcTYnsgoqfW+oUEsp5LNFjykA4YQuDLrlmb3DgY0M/VJ98 uqN59M+bPedrEOazwccTPnCXwF8uZqo0nRdQMptX2ZB0jhM6iHpKQ4UFa1IFO8x0/K7DflKp7TX qq9TeJQMDtvy56fmk3Tifg/x6tnLp8ByGlOamTjeDL41+8S/GJakdQtUhcKjL9AFd8hpVjFi/3r PXAvRgtzwcDChTrkosuSpmP7GMJPMYO/y0O3gG2rlBv+dZrTS4vwJ+JfaOTq0UojpXkqBShhOqR d6TEOkBCG0ZASKch50/1BMN7jsntIjeLNy0WCIEMiVJCBaGQaIdzqbKaXPS+dunQxktyVEbcbSi 79FCcVE3S0rr4xZZ4MRQPPW2Tuqfo2ezVPmIe+GxUi0DmegIlywJpLWJMUqXCXSQzSBjmGI4aKj l07Jm9pTHjgH9yzLy9cjzV5BubBOV2IONu08/5N1ew= X-Received: by 2002:adf:fb85:0:b0:45e:e44b:312b with SMTP id ffacd0b85a97d-460305061a9mr31376678f8f.18.1781107994469; Wed, 10 Jun 2026 09:13:14 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 52/71] target/arm: Implement MOVT (vector to table) Date: Wed, 10 Jun 2026 17:11:43 +0100 Message-ID: <20260610161202.2235298-53-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42f; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781108170961154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-27-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/sme.decode | 2 ++ target/arm/tcg/translate-sme.c | 18 ++++++++++++++++++ 3 files changed, 25 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index f85368a002..db1bdb4786 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1595,6 +1595,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/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 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); --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108158; cv=none; d=zohomail.com; s=zohoarc; b=YmWhABUNcUHAwFnpp5aob2KZMCrRCfMVt0iXJrTGz7SJKiNVyhfdsnxDXL9Bvrfh7FwsQoPgSvA9Fyyf4EMwi4B3jEMfFnquTXsKeDrzJD6rHolrTPTAONcLTsRnfpxGH9qFcN5S2t3WnyNEnL3VgDp4qWFbrzkMRjon4V69KLM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108158; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=GAkPKVM4QUVX7Djbw3yzqlDqDAw3t+ZJ3cZZxIAV4wg=; b=U2Jcc8p50ABBYnuS2+WQ8ZcZwS/ns7ZKi24745LYyVrMc1FaOnqa5Wky749xh7NPnuUl8ebCA0TKs3j2Mog5T9c95L8MavQ5hqmQNy6LdKPsELqjcjEmWFJMd505w+UZck+9kT/yIEOkk23MHsLGdT/ZmpwsY+U+bpZHEkz0DOA= 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 1781108158635290.44231197346403; Wed, 10 Jun 2026 09:15:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYP-0002WN-MN; Wed, 10 Jun 2026 12:13:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYN-0002Qr-Pd for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:19 -0400 Received: from mail-wm1-x32d.google.com ([2a00:1450:4864:20::32d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLYL-00066J-Vz for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:19 -0400 Received: by mail-wm1-x32d.google.com with SMTP id 5b1f17b1804b1-490b211ee6aso54324875e9.3 for ; Wed, 10 Jun 2026 09:13:17 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.14 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107996; x=1781712796; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=GAkPKVM4QUVX7Djbw3yzqlDqDAw3t+ZJ3cZZxIAV4wg=; b=Xd1M9XOqEzlefQ9wuOc7mgnRsLfA13FJyI5bsRIedC6w0uZkss+Ordzv2ZJTeiezkM 7TBDoOL33jhE1A0RT/QoAW0ZxnKRgz+Ol1X0vvOQaKi6XiCIbashT1MSIeYWiLuiDMKX uua29PNHpPwFrJ+36SSASXBSBFgxqEhCZ8wESMwtsRVguAgnFoF0pnVxcBPDQ0Ou1uTZ VjVYwLA+F9K19HoeNMm9ii9+Tc+FWbQIYgwwO0yJk3Zo3ua3gHpfRwjAWQHIo9q++6+Z ECwUNM3RNVXTXxBzI3XbSoU6zRniydv+aGoNN0EApYDLQngfW24Fryj0fRes+H65o3rj 1uwQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107996; x=1781712796; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=GAkPKVM4QUVX7Djbw3yzqlDqDAw3t+ZJ3cZZxIAV4wg=; b=lFg6dxjMWwCeJ0FW0UIp+cMENMSqSKzjnSs8ZTtqyY04fcxt3Vg3jUhOXfCQ51SZcU 3E84pLIb1bgZFx7z39mrFk0zWNnKngmGPkjrRpsjgQ/PQRLLdw+saZ6xVV7xFBQJnr+p Ur84JCsCDn0Rve+a9RwNT5VxSR2ntztXBJTtOMa6x0I+I0Ci364tc7eHNWnqqyDVf0ET gWRW9dHsd1eSwlNXIEcShE+duNSKAAUEKXdYfkUczdnLfCZVVFahKfqDBiOP7hw0M/XF tzFut5/tiDq+tCiGOyZNqDD2RqRgQSYwqVTU8CfOzvfnzH0bFuDlSbRE2xB8+/8ugX/v CNQA== X-Gm-Message-State: AOJu0YwTLXKRGEIwrnujVyBZ+GmmK9ymyu14undoRYeFjU8dgCcbVsCZ JVaKQqczjujM3WBEGLe/WcefqyUFreyVynBrlGukI/pm/8QeLWl6QEyHXHO1eyhkoKjqO25PAtt 6X+At X-Gm-Gg: Acq92OFCaaE7ocsQTyICxlgn61440bHh1POrVAZ639maklJhQpVwkpD6HiQZA2MeF9s YT/b1d05ISfA7u+QxuwSNqRP9X/DD8FwFkXLipRIXICsYwWBLOaj3IB1n3HOuv91Yo9Ewrw4nxw RkVYyXZvqCILSd41HOGGCw58Eco48X7JIvKgAFGDqVNrJP1I1rE8BMYx4rnvYQJCgUhif3ocUsK bbxZSW8RxrlM9S4N+lY8cGEhy0DjTQWB/ziYLAtf3ckoIFeSA6Fuo0mtf0/QVt7L67GpXoNAJjE QTa+FErPu9ygoYipZvRzl4QBwxqf3Q5AnFRMp8RW+f0158cDRhxEHZ3TXkAll99c9qR3F5FfTh3 h0OdFa5yhJr0jyhFcHnSV3l82PG3sfvle8mdyB4QODWwDnVSGokCE/zQxeKoZsCWj7+q6pgrfsu fpPWXJGk2d12p3y7oHwrsDUZWkvvrqrmimRN3Cq48nq/nWcMcNx0C3R5eHMrxMDcWv4VjoW1qBx 4lPMRamN0r28LES9AaWv6h6GJBWsKhaX9zYvT+Vcjo= X-Received: by 2002:a05:600c:674f:b0:490:b9fe:e64a with SMTP id 5b1f17b1804b1-490c2560317mr431453645e9.2.1781107996093; Wed, 10 Jun 2026 09:13:16 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 53/71] target/arm: Implement LUTI4 (four registers, 8-bit) Date: Wed, 10 Jun 2026 17:11:44 +0100 Message-ID: <20260610161202.2235298-54-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::32d; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x32d.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: 1781108159805158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-28-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-defs.h | 1 + target/arm/tcg/sme.decode | 6 ++++++ target/arm/tcg/translate-sme.c | 6 ++++++ target/arm/tcg/vec_helper.c | 14 ++++++++++++++ 5 files changed, 32 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index db1bdb4786..11e8c7a57c 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1668,6 +1668,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/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 diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index c4bede2ae3..98d3d18791 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1846,6 +1846,9 @@ TRANS_FEAT(LUTI4_c_2s, aa64_sme2, do_lut, a, gen_help= er_sme2_luti4_2s, false) TRANS_FEAT(LUTI4_c_4h, aa64_sme2, do_lut, a, gen_helper_sme2_luti4_4h, fal= se) TRANS_FEAT(LUTI4_c_4s, aa64_sme2, do_lut, a, gen_helper_sme2_luti4_4s, fal= se) =20 +TRANS_FEAT(LUTI4_c_4b, aa64_sme_lutv2, do_lut, a, + gen_helper_sme2_luti4_4b, false) + static bool do_lut_s4(DisasContext *s, arg_lut *a, gen_helper_gvec_2_ptr *= fn) { return !(a->zd & 0b01100) && do_lut(s, a, fn, true); @@ -1866,3 +1869,6 @@ TRANS_FEAT(LUTI4_s_2b, aa64_sme2p1, do_lut_s8, a, gen= _helper_sme2_luti4_2b) TRANS_FEAT(LUTI4_s_2h, aa64_sme2p1, do_lut_s8, a, gen_helper_sme2_luti4_2h) =20 TRANS_FEAT(LUTI4_s_4h, aa64_sme2p1, do_lut_s4, a, gen_helper_sme2_luti4_4h) + +TRANS_FEAT(LUTI4_s_4b, aa64_sme2p1_lutv2, do_lut_s4, a, + gen_helper_sme2_luti4_4b) diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index f4ff56e034..3c06e93e02 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -3345,6 +3345,20 @@ DO_SME2_LUT(4,4,s, 4) =20 #undef DO_SME2_LUT =20 +void helper_sme2_luti4_4b(void *zd, void *zn, CPUARMState *env, uint32_t d= esc) +{ + unsigned vl =3D simd_oprsz(desc); + unsigned strided =3D extract32(desc, SIMD_DATA_SHIFT, 1); + unsigned dstride =3D !strided ? 1 : 4; + uint64_t indexes[ARM_MAX_VQ * 4]; + + memcpy(&indexes, zn, vl); + memcpy((void *)&indexes + vl, zn + sizeof(ARMVectorReg), vl); + + do_lut_b(zd, indexes, (void *)env->za_state.zt0, vl, 0, + dstride * sizeof(ARMVectorReg), 4, 32, 4); +} + void HELPER(gvec_luti2_b)(void *vd, void *vn, void *vm, uint32_t desc) { unsigned part =3D simd_data(desc); --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108306; cv=none; d=zohomail.com; s=zohoarc; b=RZ2+fg46ZeLbHQN1xRyob/U6+6gp1vEgBIQXzYmZnmdZPl1p3eo9IphOmKt4heLpd/kWptVNLMir6x5zO8mt54e0vqrJvtC6RA2vyZ5thsnIEPmFfgWha+TK5wg/TY5w8Jfa6GuFdIfCW4JTDseTcfKVsJqAOj7Y861uB6T4oUo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108306; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=rFWWecOymn7ap1d4JecW5vVY+UBPQ7clb8UYhOn+KQ4=; b=nQt68i1+/XUi5rLJ1Q4b/YQ5iiZhhl1u37dyRe7NGsSQeX00/GGpWPUyzN/pRpnaJdPf6T4vHogbv6bsj0BZd9/FF+3fo5X6Yeja2YcIuQdUDSpeAcSyERN+Z82Z2BWS0M2Co5sxXropFPXXyKCovUT/o13t1H4pudNhLypgCZU= 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 1781108306488237.0873323317868; Wed, 10 Jun 2026 09:18:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYV-0002eb-1Q; Wed, 10 Jun 2026 12:13:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYP-0002VK-Cb for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:21 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450: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 1wXLYN-00068g-Py for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:21 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-45efb698ef2so3467161f8f.3 for ; Wed, 10 Jun 2026 09:13:19 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.16 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107998; x=1781712798; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=rFWWecOymn7ap1d4JecW5vVY+UBPQ7clb8UYhOn+KQ4=; b=iswTp6Z6MNXhGiPe/BnnyxqZQu2IyBMzxSMGXoDDkKc0pEp1iVxIQUCM2KzjFceoeG 9DLSvvA+mtIeYXAFHeeNElbqtrbB7Jh3C7XJXiMeR1Q7mWgf9AkzFZ9Mgt2DYxfeSgMa J454ZCZEjpsfdxf7Vp5pvysiLIOAPYzExLMhQ0342Y/JCkOL1mmsFBkc37kzm/sqm5wg lbwvZb7HgLv7xlbaTLa8QyVZxy0J8n9XOKjGftZIzLwpmoOqAXKirNu5tp1NvXo831BY WUFLi1qTO7AjcwnDvBUHCHald5+jewk5g0jdjRA/9eHpzhX0HeJg/ncI4uQSTsdSEs3K AZNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107998; x=1781712798; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=rFWWecOymn7ap1d4JecW5vVY+UBPQ7clb8UYhOn+KQ4=; b=HCSg9oS5PJJ7HgGWWrQ5Ta7zbOaO0jS3J9VzOk7Pg+n7CBwAVogVuep0jjxKS0NH6h 7zHuZTbxBP2YKjAmVzLGth92FWcC7qQ7pqoY+z0OW8HdFNWNitBlBHPyBERaBd83K8kD 5/lhGFJ/IwEk1BRSR3VOZitWpC1rULUpmv3lmFTbVeFUy+aogt4m0X7GKKh0Z0et0tHe wfHlIU2dfypS3fE3FsZA1F/FsZkzE6fF5WEH5IdgulIm0PMUcvihKoWm/OIBqwrdvd+N nZ3EI3ADCMn9b/H9+xbei79ZUbzbx4Ono2DUoxn/i48cpCWorpfPhV3CKwgKLsip6UYD zY6A== X-Gm-Message-State: AOJu0YyjGjryEvEOMPy5H9Qmh0ZiZZXGl22wra4k2ClyFaHmD2v9QG7a nvtEvvfhT9lAnpy9+HMy9Xjms3jihCOFmKGpCLPBjJtDyAnhqdym2wRiNNxyhBP+udZpn5I8DRL KkC8R X-Gm-Gg: Acq92OGuoKsCzUdf4nlu0hio6CEjD3T7muBGsDVMYo/Sxu39bFZX2uh5aY/S3jnfemR XKBjFLMA1E0qgy+oxGMpwTY+eXokwg4RsgEJOG9bfA8LarDcLqL7yZLmu4ePzEbDK7SG6jYZRwF n4PcXTufWIOA+7smezeBfl9VbBFehX54udkxQJOPrtB+8/iqHhjKTTqfoz/LQFj4f/49KBuG+lP Ju1CKBMw8gbWuO6WZNqPWgfQO9wfutbvXiR+QXi9h50AolcOhUYGKUIW3I4xQWwdVNy0INP+0ds lJtixqdI+HO4KneY3MKkzQ6EBUbeH37/VbCqbBZQN3F/JfYxh7upPI6yC6mWRSoQTIIgFOBObFK gR3nnd8RIUi8D8rZiUklWtZjisBRFxqobeQvSBcyU9VYUYOTvt7TXGmDwKzgUZSg6ORve52eKHW OwWCiA1SsP7LXTyT0yPaKQaG05PeiAthK5NZsG6at5b0BCTwHf0un6tkXj/NyDl59EPYmmfR4Rd xM/YnomHF/UvrvawbiNgNbtyr13eSjD7aGuHYmsvSE= X-Received: by 2002:adf:fcc6:0:b0:45e:8866:e58d with SMTP id ffacd0b85a97d-460302ed4c7mr28626880f8f.11.1781107998297; Wed, 10 Jun 2026 09:13:18 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 54/71] target/arm: Enable FEAT_SME_LUTv2 for -cpu max Date: Wed, 10 Jun 2026 17:11:45 +0100 Message-ID: <20260610161202.2235298-55-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42f; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1781108307317154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-29-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + 3 files changed, 3 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index b8f452f2f9..9ff4473154 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -165,6 +165,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) 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 7a6f1c6601..7f79ee645b 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1394,6 +1394,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 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108182; cv=none; d=zohomail.com; s=zohoarc; b=YdywoHwydlNE7igqfBKLdcFtkBkakjtm4FxHAbPq5Kh8sv76+473pf2asHi6ocu7COg3V0zBewaxBz5rLr/x7lcHMmVYzq3E88pSEPV414/EWP6V2gJmi7YhblXTsVmkvdcx0HxQ4w/agrByXu4+PA3Mv8XrniwEabnBZLWiD40= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108182; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=nroKQ34n/W6BI2j4YztBJsED6HYqqpNSXIMAROm2xGw=; b=kAaYOmagDVl4U/F1goO/bu9uuYX3qV3GBYt3AEpKA4P/6w9V8dJ5hSxpb/rZOU1R4M1a5UbKTzLmYVgs+l7pVSLjo1LCrQRVyBC4LgOCK9YC64gxEpttQ2eIeQ4uEG93NwGDoIU7SayGEAkgmocSuHLOzISFv/wjfCHRkokdywQ= 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 1781108182022860.9283354498426; Wed, 10 Jun 2026 09:16:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYX-0002on-6f; Wed, 10 Jun 2026 12:13:29 -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 1wXLYR-0002ZT-1D for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:23 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450: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 1wXLYO-0006AQ-TL for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:22 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-46019b190b6so5234002f8f.3 for ; Wed, 10 Jun 2026 09:13:20 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.18 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781107999; x=1781712799; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=nroKQ34n/W6BI2j4YztBJsED6HYqqpNSXIMAROm2xGw=; b=t0tAc/C/XXaLfBfLrvENNipi3fjZTQ3qfJa6mBP5yhzpjbiOTrOOQby9+NZ5Uq5J5x o0CvA0ZrS7D1dQDDK2UJ0AnS70gX8pPz/d556lhxom/tjn7la9s2IYjO9H1SnzDSC01o U0zJIsPvJdYpJopZm2viWcUuCggWSLrt+iM7jHgYx/wykvdrDOvBOA7IhxL4lnpoX66X F7fXFmuXTU3ACqSf0vS/sCuOSUKLH1X8Hhh0WcvFJKaslruqHQJAXJ2mK3tunFd3MYMM HUXPoBEU7m30kc/yzAxIEM2E1OxbQJNAbPoHDHEQSdWttrE4La/HRkXUpSa8kgWuwESS xPLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781107999; x=1781712799; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=nroKQ34n/W6BI2j4YztBJsED6HYqqpNSXIMAROm2xGw=; b=b0KsGT5eDBnpJDyba6qW0B4KGD5fnDwfVjvawpXyjp4ewVQ8F/aipz6Dc/4NtC9E3v 9eBz69uc2UA+pL0ym70HxM6H84uUtm5ui+tv1BBYVezpKz3z9wrOT2W2WSvvqGi2xKow s9xqaaHAkwSIQssQrV/lWsW4Wczkr+eYK+y2EdAnuW9ALmEQpmp2JUCWchia78IFExx3 bgtAHlQQu3zVZPWSnRr8zukB9b8hacKUMTUm3UcRd51BGgT2Loky4NvrUimIQ1y6sfhe /jET7FJLKjJmvaQfsqqmm3t67p2PpezY5XUHMd1R22rUg3LbOnvUJFYCUriB/EqErbpI Gt3A== X-Gm-Message-State: AOJu0YzDiYY9ZeZxG2mXHvCQR85RTKKLtGQQSiorqVsNveZLAltwyAk8 9Utaj/zTyO43MxI3balMExJCeNfVDL5qA/Ye+a8fVu7ALq2fLv6+1vEr1m3P0poVqqsDi2/2YbP WJyym X-Gm-Gg: Acq92OFNh7EMyULw+1UZ7sdcHaTzn4r+QifjHe65lXQsYCH4i5hEkAnx26i9CigDVUy ho2y70vojkd77Wqo8IXmqYMEWmVMGMaqm0TMhTmECueNBeHLsU8A8EW+dplFk08ZXkXgKQLRheE WfaMV3Fl7AsBz7TfETFJ1wAJGgk0kdEvj9G7iazve4EBWKmcdtd7QKtlI9pnALe6bczNbg58yS3 MoX8Wo7W1yLth3gJBzKl59HW5mxTybkJVEbiqdDFAXjFLK32H/qg/LfrmVQp7O4r6JqVG9Xk2KK 7BrIa4Zz84NWFGJGoQBDT4vaz6gUlmf6dX9jPyR2d5VI0sIQHM1ROuHfzEVMcgWS26II+i8zE3Y 5Lil6GV9g8Y8AotFaVCzNRc9CXPGG8TojjBMy8U0mobX1tZts0VvNLYzrqNcieT9kxgzo8nFOCi YV3onBaX6PfcpytSQe6zRnyX2GV7TVLMaH+wj2A5OU5rdMplnZ97+zTtsNITlH4OJ2BTVTNQl/a 5UzRz7RQQfclBBYzaoFGgA9cgxIamno8qayfzj+gzbEoXG6EvDM/w== X-Received: by 2002:a5d:5301:0:b0:45e:dabf:a00e with SMTP id ffacd0b85a97d-4603061ed2cmr29548164f8f.31.1781107999360; Wed, 10 Jun 2026 09:13:19 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 55/71] target/arm: Implement FMLALB, FMLALT for AdvSIMD Date: Wed, 10 Jun 2026 17:11:46 +0100 Message-ID: <20260610161202.2235298-56-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::433; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108183161154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-30-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++ target/arm/tcg/a64.decode | 8 +++ target/arm/tcg/fp8_helper.c | 106 +++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 3 + target/arm/tcg/translate-a64.c | 16 +++++ 5 files changed, 138 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 11e8c7a57c..b905ec1bdc 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1615,6 +1615,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/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 diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index a39dc6f859..71d30aa33a 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -568,3 +568,109 @@ void HELPER(sme2_fcvtn_bs)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_cvt_finish(env, &ctx); } + +typedef struct FP8MulContext { + float_status stat; + fp8_input_fn *fmt1; + fp8_input_fn *fmt2; + int scale; +} FP8MulContext; + +static FP8MulContext fp8_mul_start(CPUARMState *env, int scale_mask) +{ + uint64_t fpmr =3D env->vfp.fpmr; + + FP8MulContext ret =3D { + .stat =3D env->vfp.fp_status[FPST_A64], + .fmt1 =3D fp8_input_fmt[FIELD_EX64(fpmr, FPMR, F8S1)], + .fmt2 =3D fp8_input_fmt[FIELD_EX64(fpmr, FPMR, F8S2)], + .scale =3D -(FIELD_EX64(fpmr, FPMR, LSCALE) & scale_mask), + }; + + set_flush_to_zero(0, &ret.stat); + set_flush_inputs_to_zero(0, &ret.stat); + set_default_nan_mode(true, &ret.stat); + set_float_rounding_mode(FIELD_EX64(fpmr, FPMR, OSM) + ? float_round_nearest_even_max + : float_round_nearest_even, &ret.stat); + + /* + * FP8 multiplies don't update any of the FPSR exception flags, + * so we do not need an fp8_mul_finish() to propagate status + * changes back from ret.stat into env->vfp.fp_status[]. + */ + return ret; +} + +static FloatParts64 f8dot(uint64_t a, uint64_t b, int n, FP8MulContext *ct= x) +{ + /* + * Because of default_nan_mode, NaNs need no special handling. + * We'll simply get the default NaN out at the end of the sequence. + */ + FloatParts64 p0 =3D ctx->fmt1(a & 0xff, &ctx->stat); + FloatParts64 p1 =3D ctx->fmt2(b & 0xff, &ctx->stat); + FloatParts64 pr =3D parts64_mul(&p0, &p1, &ctx->stat); + + for (int i =3D 1; i < n; ++i) { + p0 =3D ctx->fmt1(extract64(a, i * 8, 8), &ctx->stat); + p1 =3D ctx->fmt2(extract64(b, i * 8, 8), &ctx->stat); + pr =3D parts64_muladd(&p0, &p1, &pr, 0, &ctx->stat); + } + return parts64_scalbn(&pr, ctx->scale, &ctx->stat); +} + +static float16 f8dotadd_h(uint64_t a, uint64_t b, int n, float16 c, + FP8MulContext *ctx) +{ + FloatParts64 p0 =3D f8dot(a, b, n, ctx); + FloatParts64 p1 =3D float16_unpack_canonical(c, &ctx->stat); + + p0 =3D parts64_addsub(&p0, &p1, &ctx->stat, false); + return float16_round_pack_canonical(&p0, &ctx->stat); +} + +void HELPER(gvec_fmla_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + bool high =3D extract32(desc, SIMD_DATA_SHIFT, 1); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float16 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + uint8_t e0 =3D n[H1(2 * i + high)]; + uint8_t e1 =3D m[H1(2 * i + high)]; + + d[H2(i)] =3D f8dotadd_h(e0, e1, 1, d[H2(i)], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmla_idx_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + bool idx_n =3D extract32(desc, SIMD_DATA_SHIFT, 1); + size_t idx_m =3D extract32(desc, SIMD_DATA_SHIFT + 2, 4); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float16 *d =3D vd; + size_t i =3D 0; + + do { + uint8_t e1 =3D m[2 * i + H1(idx_m)]; + do { + uint8_t e0 =3D n[H1(2 * i + idx_n)]; + d[H2(i)] =3D f8dotadd_h(e0, e1, 1, d[H2(i)], &ctx); + } while (++i % 8 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/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/translate-a64.c b/target/arm/tcg/translate-a64.c index 25579d4ba0..30715cbd65 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7481,6 +7481,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]) { --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108295; cv=none; d=zohomail.com; s=zohoarc; b=IJmArtIKmZszwPPYyoLh8cN5tfg+Z/UlFwNfOqLqf2yxjyrUib39FmLaqbgDU9I6RZh+TYls+sy+JO7jjYkl4Rno6ceExxGVg8EdM3qJxxxe1doXPzMxgSiN/EOw3eQ6FGP6rZFWqZc/LDyC8MIWlIoDBETQa39VhvLWKH3JdNc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108295; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=mHuUwIa66SwAKYo8Ttl90Ny8vI4sUhjV8wDyLb1A2os=; b=azaAXOIAOKjcodH8eNp3tImFrEQHN0M/MBQG/+LN7x2oXTDI9dawy0u6gVmb65i1+b1E/sI4T0uYHH2lF0HJcNVoU3Wv4IcH4tIzCCyU03+oXE5UsmdQSRecZacCjmLY20vgv3CVDoj1la+Ol3oDkhtu8ol7U442yqtR493zzn8= 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 1781108295494599.459112845421; Wed, 10 Jun 2026 09:18:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYV-0002iX-Nl; Wed, 10 Jun 2026 12:13:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYS-0002a4-2r for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:24 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1wXLYQ-0006D9-CN for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:23 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-45fd464d51fso3865733f8f.3 for ; Wed, 10 Jun 2026 09:13:21 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108001; x=1781712801; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=mHuUwIa66SwAKYo8Ttl90Ny8vI4sUhjV8wDyLb1A2os=; b=qVpBUlsIf3F2aCcPYvyNpkrepoUZkHaTpjD5tqmdTG24bYgYVV3+X1ryIfLK/e4mnU DmXkzbEtbCAD30StnqRVKFmQo8rjarr5X0PHN039OkNMEiqCp7AaMshBKt0tE1fuc1W9 zepYbHSH3vzMAAamSM1puczrq0/Xod7xxTjnhYv6tBPmvebFbIJlqCLuKGK3oJM6OjGM 4r9asAm/jOuAT62Jp1zXzwhfpoFLh9Gn7H9YVoFMFewzGilqKOf1Qkz9/8BfVbNSChL5 05bHL4a6IG14/N3eaHXogF0dAPB6D7cmPZ8LuwdIRUNAgyqh5Gti7lEnqzWjBulVtGjS bbGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108001; x=1781712801; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=mHuUwIa66SwAKYo8Ttl90Ny8vI4sUhjV8wDyLb1A2os=; b=g8Sfi5LwnzOx2dONztn7nsytrj8nsAAj66psrBNOKvzgFcli70YocUARfwPFVZJ0L/ x8gVblHu2uznMpBEzun1zFEA2cfS1lYKypHoauzeymwFEFJMasSkHS8QDESMyEtpdb+d nrZiS4FaCux3kWvYUM5QqMOR8RlJMPUc6BEpYo0ixNaFRyONXdSXeea4ofQFjFEl3dq7 gqcg9/J+2EM1MHiwWHi/hZdxn7FpTEPYY2JL5DWXwUWw92PaO3OIxJtRAv5clKH3sjw8 bcuKjm1Q0u61+GGrv0tX72dgNdvWmws3t4ShN+3G9i72zWK2E05qDQ3sAWXfWsjLm/Za TVGg== X-Gm-Message-State: AOJu0YxTow32vCmgt5BUiPHzIcKZ7HzgJXI22lWR2CYM+RGtPLzoCUZc 6gkOEAN2sCHQHjxQm2dfTQJX1f3MUt1zIfosOjYcZoQBSY70bpvsDj6BLPkWhKgU1f3iocYN2CX Dpo/j X-Gm-Gg: Acq92OErqtYjAoO4Yy0FWQY6mtaGItqfq1eT1ElJ06BOnGrGbdf/eLzbFE7oeEFnp3d W9rubpG4a/20nyyVnqvLXffSNX3rPJtlYjs2Bc7xl0pixdi8nhaOdB2nx7xTlHnezcarOSj5sJF J4QBdhyG9SQFMpx8lqD2ZscJ3/AG4SQHFthpzXPdgiOZOzrVUEUmOUXEpiLjhtALz1Er+KA31B8 B+KWBp82D2BjBuwaV203mhhZ5mYV2ExASnJEbMnFGL0N/omOUMJd7sFxFR59lxnYcQ6lohZLdv0 Al8lCBZLPF5mHCforrTJvW5jj6gJHiBD9wLWwGcwrW8ColgH5LrclTKthQaFjH3DITq6HakBpQJ CP5WxL771PDUE7iZs6jQv64XYf7oKr4fa98Uee/MxKs46jwWHgCbee44OIJ+CtG8aqKILtwOLCp iCMmZVpUZsANzkDu8w/b2L3j/smqI0ESSxILQesqI71mc+fF8+xsgeg5k4b3vktY7toTGlTDYZy FQMlxI/0VlOzLlMPqITwfrHq4KLkcsew3B9ooCoLxw= X-Received: by 2002:adf:f8ce:0:b0:45e:f25a:9716 with SMTP id ffacd0b85a97d-460304fda8emr32904798f8f.18.1781108000995; Wed, 10 Jun 2026 09:13:20 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 56/71] target/arm: Implement FMLALB, FMLALT (FP8 to FP16) for SVE Date: Wed, 10 Jun 2026 17:11:47 +0100 Message-ID: <20260610161202.2235298-57-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108297070158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-31-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/sve.decode | 7 +++++++ target/arm/tcg/translate-sve.c | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 45 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index b905ec1bdc..9af4ab239c 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1570,6 +1570,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/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 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 0e0bc4cbfe..453bae3a0e 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8355,3 +8355,36 @@ static bool trans_LUTI4_2h(DisasContext *s, arg_LUTI= 4_2h *a) } return true; } + +static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, gen_helper_gvec_3_ptr= *fn) +{ + bool fp8fma =3D dc_isar_feature(aa64_f8fma, s); + bool ssve_fp8fma =3D dc_isar_feature(aa64_ssve_f8fma, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8fma || (fp8fma && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8fma) { + s->is_nonstreaming =3D !ssve_fp8fma; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, vsz, vsz, + a->idxn | (a->idxm << 2), fn); + } + return true; +} + +TRANS(FMLAL_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) +TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_hb) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108588; cv=none; d=zohomail.com; s=zohoarc; b=QLjBaehGXKSzLtTw1hQKkB+D1VLGb/7gc/vXOjiOZQ1hxgqB+9l/1fI0bqSdQUzlQK/3ZdGJSH0SvKMd0SEGNFyrLaCoXl1mwtJ+VZvxL+XU6fEzx2O7mOVD3kVnJhxgZkYpMUnN+tpZMVS29wwPtt5c/7AakYXvSzofpAgC2YE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108588; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=PWmBr2J2uHzctO6k7c0bcJtZDBQylgOkegKSegXlwOg=; b=Fj+ssYy5q7OUUt5zQ2shmuroVLGqW+NW3ajMplieZcAs1Tmhl5oXDmrNKvLlSY82/c7vnyetZsDdXUZjndNpKAB2TZ/zb6HL+3ceXjmSDbswNLvnNjWxCsELaOrH1qCTOBC7RF01c5KHGlWSBjVoo0m3mTIoXY01tijbvgLUdtc= 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 1781108588705889.4171873214442; Wed, 10 Jun 2026 09:23:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYd-0002yq-Ap; Wed, 10 Jun 2026 12:13:35 -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 1wXLYT-0002fR-Cr for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:26 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450: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 1wXLYR-0006FS-I3 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:25 -0400 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-45eeba68948so5012458f8f.1 for ; Wed, 10 Jun 2026 09:13:23 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.21 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108002; x=1781712802; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=PWmBr2J2uHzctO6k7c0bcJtZDBQylgOkegKSegXlwOg=; b=ryHYk/515BMf90PxPl8IS9UWOn+wu6qHJf7FLqBZtDqbWiyFbis5n3LdZBWiFxBTk4 ZhpAvzdVjsvgCARe0j+9htjfTkUEjOeUBE7uIAWAgZMxk1Z1DNW2IbPogALd395kq4Yg gL9oy7PJX/7Fj7yZoVCfOeY9UrB5Kyk23L/Q48326u8HWPHtWz/AIGlPrctWIeE9E7I4 S9ScyBrMJzt16sxDVNNy2phx2VndXhr3sn5eVtSKDYOUSnYjnah7r2Oez/Vzuj64WVG3 iKTxv/OHRvXKQzRoBqcF+VrLXNrHy4Qy9mDtASn63urkNlv4WkppKSY4FIiTZXBMoMMA A3MQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108002; x=1781712802; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=PWmBr2J2uHzctO6k7c0bcJtZDBQylgOkegKSegXlwOg=; b=YZcgV++QSueoHMe/CFB/4jHjItF/HUMyDtRRdR4ekfO8PWuzjgUFFbq5V5inMhwJ9t isV2u2ulrvBL+aSNi3302UZqx/Pev97JpAYzYYk6SZaNYWPcFdqsVfZl9NdcQ8RY1QK9 DBf9W97LuhtLzvHvDzdogk/A3QXuivyllN2ndOlB/CPdo2gtFpS7gz6S659uGaRPJf42 O1NvMm3H4dFT++qumkarV7lkvFCSO7BBsQQ2eu0jhyAchN5tBHuRFTp78eAwX42psSSx 1Sa2+ko1vxCNMHOpvZqIcyfiniZ2urXXLbkK2TXfo+T19GzOI3Pg/fK38KnQewAWrA2p gOYQ== X-Gm-Message-State: AOJu0YyQQ8D39HfOBFVeNvv7xjjpPhRA/y9aYxT+Y5WqLdWYW1d69xQD 0In5ouKkNzBq9SbPzCXxVHJTsUFi7L3gLR+DorgLT7aqcn+6FgqDCbrk5bdur1kDZvvbzkPoEAV NktPO X-Gm-Gg: Acq92OH1JC8tmIZYiIVpa6e2JtZi8v0bhy7Ai7BjNcEP9eN2nk0OEkMS4um0psgH+Kf JBFidyxXj76ZPPL7gpPciSKsCb68ipON1j91FNYWkrKfh6h+wkyy95hiKsjR4DmYjEwQUXr4A9n qRz5g/iWIf3lOWJX89GNDh6hCHBdrENcVxTSOg0Iyl/wS7bLf7XXEeW7NpAQSiKdsP3wfzhhjyB 4ywDBy5XsHsLI2OkDWgIv0rapYEy8dzFsi23NyELmHJjZKXxrZyGyDFgPhOQ/v3sJ3hj6wTSOGt G1jjgFEHJTJTW5o3lJDu9f3xl/LnSZKh3FV8TsEC8pKfmdceyzOUoTbnBImC3CnQRUVR91zs1S9 wiI3Whm4V8HP9/+i0yxwfDLSrkMaJ3Q93T3eiszXZj9MHXWN42nwu6yASL2U6IV27adfZ+fa8bH 3g1FenMkmwNfUZsRrCjQFM5x1Elt0TRTQ7sJG8NEmZKucOFn6oV31JAnTsKjzSMqoCvbBc0CUJV xeNXw//a0yso2C7KvHX5reBi4p+KEPV91OhUMtBT7g= X-Received: by 2002:a5d:598b:0:b0:45e:73b3:8118 with SMTP id ffacd0b85a97d-46030512fa1mr40230612f8f.29.1781108002139; Wed, 10 Jun 2026 09:13:22 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 57/71] target/arm: Implement FMLALL{BB, BT, TB, TT} for AdvSIMD Date: Wed, 10 Jun 2026 17:11:48 +0100 Message-ID: <20260610161202.2235298-58-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::429; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108590951158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-32-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/a64.decode | 7 ++++ target/arm/tcg/fp8_helper.c | 55 ++++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 3 ++ target/arm/tcg/translate-a64.c | 3 ++ 4 files changed, 68 insertions(+) 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 diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 71d30aa33a..ceeb96b9cc 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -630,6 +630,16 @@ static float16 f8dotadd_h(uint64_t a, uint64_t b, int = n, float16 c, return float16_round_pack_canonical(&p0, &ctx->stat); } =20 +static float32 f8dotadd_s(uint64_t a, uint64_t b, int n, float32 c, + FP8MulContext *ctx) +{ + FloatParts64 p0 =3D f8dot(a, b, n, ctx); + FloatParts64 p1 =3D float32_unpack_canonical(c, &ctx->stat); + + p0 =3D parts64_addsub(&p0, &p1, &ctx->stat, false); + return float32_round_pack_canonical(&p0, &ctx->stat); +} + void HELPER(gvec_fmla_hb)(void *vd, void *vn, void *vm, CPUARMState *env, uint32_t desc) { @@ -674,3 +684,48 @@ void HELPER(gvec_fmla_idx_hb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmla_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx =3D extract32(desc, SIMD_DATA_SHIFT, 2); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float32 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + uint8_t e0 =3D n[H1(4 * i + idx)]; + uint8_t e1 =3D m[H1(4 * i + idx)]; + + d[H4(i)] =3D f8dotadd_s(e0, e1, 1, d[H4(i)], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmla_idx_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx_n =3D extract32(desc, SIMD_DATA_SHIFT, 2); + size_t idx_m =3D extract32(desc, SIMD_DATA_SHIFT + 2, 4); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float32 *d =3D vd; + size_t i =3D 0; + + do { + uint8_t e1 =3D m[4 * i + H1(idx_m)]; + do { + uint8_t e0 =3D n[H1(4 * i + idx_n)]; + d[H4(i)] =3D f8dotadd_s(e0, e1, 1, d[H4(i)], &ctx); + } while (++i % 4 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/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/translate-a64.c b/target/arm/tcg/translate-a64.c index 30715cbd65..dcc6b5ae6d 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7497,6 +7497,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]) { --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108525; cv=none; d=zohomail.com; s=zohoarc; b=EozyPTneG0Ko/zZPbvMJqYJB02FOBuwjDymV63N+yQJibsACvw6lSIaLLeDiYGQBCaQRkjai0z73lBYf9SNC4AkD2ynHNCFEsxDzesPT1CoikjSn87C9q8rpbGDTNkvv4R5JixCct7QwmQ++Q4EDih/HimvIBJR/751ObJI5i1o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108525; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=E7sTj5GGvMXsa58aM6RuD2LvPBXO6b0NVjqEMZ4vVUI=; b=KAK2GtnxodwNPZH21IGP+TRfv44lYPst9xDKO5LqolBmwlh7X25/IXnMeG+4Obqa/UC8HHXBPnA9KgOfzxGzV2mMxggRpIBTykf8G2oUQbGX+cfSU+d/cscSYyAnTaDNrtjAZ7bJoB0VxIl5tX40+F6UtxOtUqqowDXmyQ67gvc= 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 178110852560244.398824926144016; Wed, 10 Jun 2026 09:22:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYZ-0002t6-Le; Wed, 10 Jun 2026 12:13: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 1wXLYV-0002hH-EH for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:27 -0400 Received: from mail-wr1-x429.google.com ([2a00:1450: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 1wXLYS-0006Gh-QN for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:26 -0400 Received: by mail-wr1-x429.google.com with SMTP id ffacd0b85a97d-45ef372c58aso3692545f8f.0 for ; Wed, 10 Jun 2026 09:13:24 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.22 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108003; x=1781712803; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=E7sTj5GGvMXsa58aM6RuD2LvPBXO6b0NVjqEMZ4vVUI=; b=ZYecxsqOisyd33wDEEqKonP502F0YLc3G3lg2uEJK3IdK1NG8sYv5syHdW6MEoSOW1 oBZvktGRii7au40QqDyE6uXstbPhbko9BSIt0nAeLt2llrpXzTbXdAvvPYM60XfitgZm t/itz4hl72W5eoX9+DD5vbxNCb5zARt+1Pbh2ImvcO8tTx5d3Oxb2dDbkT0P7uiqD5wF FeC3t4ad7unAm3RlhrtQ85dUEXiKwzY8VBalCMruIj4Vp6EhSFNI2ip1DJJFsHmeTq2m 3+50Awfh7/49KYocwUAqAuGYe1Mb07mnh48YON8uyTUEfAUbKUTLxwKfaK7eEYXMZF5D NVHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108003; x=1781712803; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=E7sTj5GGvMXsa58aM6RuD2LvPBXO6b0NVjqEMZ4vVUI=; b=J/5htww7RB/1JWOn2Mn2qrzNJLQMZ3K3cwWR8i1UWw/iUWQ/XcaqTE4iMe8wbhO+kP hYvEMNrmjiNlXKDwf6BxZBRxUuBsRvge13jmU73xlWRWdRfTVC+JRzsgn34X4z6BNmNt UZo5gVsFVwIpFzOC4NUxUQFBIDsrkawlRAiPWULDWmiO11PCmmOeNCAc2a+tMxEkE60d dzMk4stvcgvFZUhK7x6NUzyKqgyxWiKY206J0hRsVoH35aFtCCfUV9zTy7fB1IlO54FB P3dMkR26UOZNRM+8u6XcgqXrj66l8ekZtxg3TVDYuebkIlQtPlYCLZ67e5mom3W6SFdX cIVg== X-Gm-Message-State: AOJu0YymXM61CJCaicbVRaa4NPBbaFhyp3UpIxiLjSgmplksA11UUh22 pK7JDzoQnEpwpwQuM0su8xyYdqOpWF0pb+AVt3DD+prisOqeRI/gZLFNHBWifmqSDVpGlSw6WDx imyAK X-Gm-Gg: Acq92OHsp6c/KiImX+RB7g52GxeO43A9gk65Qmnj6rQwPUTCaXcALTHNihXxpg0qX4E 9S80e0xxxqZs1OWgt8lDGysE5ZV3XTheg0dWUJmGBHI3Cyqp2vmgw+PHtkTCG7Rca9xo2Ygojbc Oo6JgLGhIVvd2yl7xZVl2PIrD5XG2QpLCdBedDL1GevAFfAyjYeNkOaSoP2YviG0R4d0sm+Xz9O QwnnqtrzvdiQ7b0qYh9VdbHLv7+f+H0tQ7MsUUjIKdUA43zO14XrnDRPMGDhLajRnnEg34iboOt Z+g+zWPjD7DpdzemwtwdarC13yIR+UYg9BRfPSGVpiBFmFeAg9LBpl1gR1Jk/kT2kQsuaXBKxEX 2BbZiTfLBPfOoox3jvwWGxKhM2BjRncCsnU8O6Dw7SPxQNGRd07s5E7RdsTZzyd1UInOaXK5F4F NSeIzaURVc5u0gtJESFj6lB6ZyPhcTI1SCGdUvK56/Lo9i7q9YJoXldXhTxCmlrxUozqghxBy1m IIq7A9COzRPwQlqZKSVfT45eKOjg51Zv6RHhM7e754= X-Received: by 2002:adf:fe01:0:b0:43c:ffee:ee94 with SMTP id ffacd0b85a97d-460304fae00mr32249911f8f.11.1781108003333; Wed, 10 Jun 2026 09:13:23 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 58/71] target/arm: Implement FMLALL{BB,BT,TB,TT} for SVE Date: Wed, 10 Jun 2026 17:11:49 +0100 Message-ID: <20260610161202.2235298-59-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::429; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108526856154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-33-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/tcg/sve.decode | 5 +++++ target/arm/tcg/translate-sve.c | 3 +++ 2 files changed, 8 insertions(+) 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 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 453bae3a0e..9f207a32b9 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8388,3 +8388,6 @@ static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, = gen_helper_gvec_3_ptr *fn) =20 TRANS(FMLAL_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_hb) + +TRANS(FMLALL_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_sb) +TRANS(FMLALL_idx_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_sb) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108331; cv=none; d=zohomail.com; s=zohoarc; b=Bh1O7mcHvCE/SrVXzBK27qsO/JVQ9IDwbhDgTv9mE7Ot33lhcL0QltHJ6nmM08Li/ZmdcQfg7HZT4ljmmfY7PEFFfMdkYo8C1kZjlSRGHRihqqPWabe2+iPh8piSDklQeBdOuv4g91qU1QNNOsGbXfOoZkc4UaggTBnUyZI4Vhk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108331; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=iV9BhUAkHyum6y/+0DZPA+Yoeu0JG4SEWLcnWiBX2uU=; b=GH6b4iYJY1uMtChne3Q3s87x8hpqJ5agk2PPuQF/v4tgXtHcxwmEIm0G9pscOuGt74vA8/wIjJ5xg7mb9L8+t2Ye3JglLd5bdF8l9gbU/XKOfaNkE+XSVAJa2n0wIuIvAaoV6mY3xurRDrGsjh8UtTCCmk5jSB3lV5MEFwEgdhU= 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 178110833193371.19613748341999; Wed, 10 Jun 2026 09:18:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYh-0003VL-5M; Wed, 10 Jun 2026 12:13: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 1wXLYZ-0002tt-Iw for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:31 -0400 Received: from mail-wm1-x336.google.com ([2a00:1450:4864:20::336]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLYV-0006II-Th for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:31 -0400 Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-490b12270b3so42010995e9.1 for ; Wed, 10 Jun 2026 09:13:26 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.23 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108005; x=1781712805; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=iV9BhUAkHyum6y/+0DZPA+Yoeu0JG4SEWLcnWiBX2uU=; b=gMcyMyYd+vDlYtIBPWlrPms4deHBwRaqQsxOwaKjYwklDQpW3GkktUEnH5tMfLLcQa 7r2JVdSUsi8MDbnTLmfO73rZRiCWewbJpK1AP7ydAEwYZQsc1/TDTiqRvrGI7f1760w2 bCqcnKQY2qroP2vrFwda3fsHh3H8vF4ljlkXjLphG7E9050Nh1npU5Y1OP2SflJbrgbj B9WyEa6rJlnZbpXbsXuOv+y5iOOGTgrbj3mdWCoIp44duhln7OId5u+a6pFquQyJiHDI eteqwwko5t8wVhSqD3E9YkgG30ZChob6TIv1PoMGSh5Pn02aRNQ23By168JS5ig94YJj r0Hg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108005; x=1781712805; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=iV9BhUAkHyum6y/+0DZPA+Yoeu0JG4SEWLcnWiBX2uU=; b=kYu0Etrhb+H6ljHRCQEN585mroL3b1yMZRbkg0jeXUozP8MlL9uReD4ikp+E2M8Jk0 PaHC8V/lfT4jo0Q+6SJ0FJKeP2nPka2kid91C30mvE6D5aTVPqP2srzlvhhPF/QpRCgD z023HR2dgaDk5F0H+vkX7toGs87DJwIT06Dk8/fQsXf/hBCcozdkjP35MJKiw1ItKN1q +k9IjkZ1Vd8o4P/E/tSrF4PFXB9aThkMRTG+DSAgmokcjsItuikue8eaIu4CWDe1sisU umKBbBH6oUz+xu3RNScaOgiSJq/WBKIZ+4yXBlZDaqW83s/BE3SolYRlJ/nH4N6VDNd6 uUoA== X-Gm-Message-State: AOJu0YycCXur93/EuwwIe4aAZ/X15cjjjvphz6M1DX2ZrivHlVaZUWLR jWg8XlbQlLRKHuLNAT7RQ/mixq/jHX5cFjTKBLmhxiLn+M0ha7AF87loK54aJpScD+GsuWKzgbD j5cfN X-Gm-Gg: Acq92OHWLfwD5TWdispVY5UW4DucWlCwqfzaoQBuayETIRj6ciGMHl35pDgst278DNR 8aEGnlGBNpwRFeIgY/6xusOYGTUv/MgvBym8dAYdmZfW0odkvkSp6ITynwDXKL5UUOcvhWVvWfw LvFzVsmkrSC0h7PHl0ZG/bUuAQLyy2dpNpZb8g98H8oafh2ATWutexd+qFGn7yW9cP88PJSgCAP AvWynZNog6Eo+JAffuPr/VeSvQciYcvE2VxfOvma63zyOKE+uOyL7DirugkLNQI0QEQ/CSoT5an EltrGp2+bINYvGvVdlXtacwp8OM71n3lGCe13eJBr7cZuX4b1iqt1QoAq45UfomVYBh4y/4wZ5t aupn0k6ztnIRs1gozaKFNj9Fi4mEaqfWgPkBE8ZtGtC7nbcXtselowxOzU/4gseImLaUFeeFMY/ G+COORvXodvRZVpgt2t3Vb//5MQqFhSNn2g3U3t3HA4WzWOIIduALYCwaz30JGgwlRTPbRBsK+Y mz9+PcAyfrRI//z1Hn11pOSU1E7XuhUCuHUCg7gxTA= X-Received: by 2002:a05:600c:3515:b0:490:b5d0:598e with SMTP id 5b1f17b1804b1-490c2604783mr393476155e9.21.1781108004830; Wed, 10 Jun 2026 09:13:24 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 59/71] target/arm: Enable FEAT_FP8FMA, FEAT_SSVE_FP8FMA for -cpu max Date: Wed, 10 Jun 2026 17:11:50 +0100 Message-ID: <20260610161202.2235298-60-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::336; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x336.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: 1781108333695154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-34-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 2 ++ linux-user/aarch64/elfload.c | 2 ++ target/arm/tcg/cpu64.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 9ff4473154..e46f5fdcd1 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) @@ -166,6 +167,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) 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 7f79ee645b..38c0f0eafd 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1383,6 +1383,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 */ @@ -1401,6 +1402,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 --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108511; cv=none; d=zohomail.com; s=zohoarc; b=Fumas/SnzOX+HQePPY0vR2mDptuOX2qG1aWxZHLVksRkZ9rqrKwmgw/8TuxYkYGnZEl4gTjV+kQDbBVlfa27v5RYomhFBY5IR7H9SkoT7hTB3BXkii0ghxZFujXuAhl7mqyGQun7/+/DibYX8IGWIRuD5RtRu8yWMWV1UWctJ44= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108511; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=Ob77/1QDfEQjha3uDccs/GGuNQc0WWlLn0y2Ilzhkiw=; b=KboEgsSd4xHtrk4Aa9aJmQJBP0Evx0bO1Q34t4DFYwIoqsY54WkBo6C5xTeAbQnXNjYxaK22TG4t0yoLyDr0zHOKII06Que+CHItptTi/xWSGDFJqlscNZkTPrLBj7F71FeIItlK8Dafxp3diF4trCFjQ+tqRqSgJmdPk+imMmw= 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 1781108511754419.76061504198196; Wed, 10 Jun 2026 09:21:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYg-0003Pp-97; Wed, 10 Jun 2026 12:13: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 1wXLYZ-0002tk-Ho for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:31 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450: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 1wXLYV-0006K6-U7 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:30 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-45ef6565cfdso3349326f8f.0 for ; Wed, 10 Jun 2026 09:13:27 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.24 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108006; x=1781712806; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=Ob77/1QDfEQjha3uDccs/GGuNQc0WWlLn0y2Ilzhkiw=; b=nc6mzmX/4FilueId0OJl9hCHex4RV0kKVTer77VPynwsjOEBR5jRn/W/rwjj1SdMn8 LDm4yCW5WBqebVCuZZcnyPUeAlqe2kWG4MnFTqhlLuPPyE1V0hmg1F5b+kpkzT4lXL1s Hurz2FIiOmAwRpSju7TN1A3B4ORF/ngkKcFnVXedj5xjChyG5PJ/8YCeNOyVUt6MZNN2 RXvt/NszpyG5F4nCWngNVzY8nDko3kQZ/3d4Ur6zCnCrOOGKxeU5KKE+ngbnk+UTSAMv IaYzfEQ4QYAP7xcOHyTg1DWPaxA/wfXaI0pmH2JnX0NGfLJm7y7sJI+27STacZp4+gI1 yYbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108006; x=1781712806; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=Ob77/1QDfEQjha3uDccs/GGuNQc0WWlLn0y2Ilzhkiw=; b=HGx6cq7H9tBb0YcKteub5qTsPhopVA6sYQY0BMWWvYmwgAuQ31gNDOfeFWojkNmBVK x06uPwiUA0usQFgJXmlo4lFB2EqR7fzA3I6uNWsmE4PbXloDpudiIXuECjrFF853DrkD 13FDmKyAfdk0eLpqpAxTQlbXHncpa77TVq4MhhI9YVX+lFrPVSeiZ7pQKDRpICKR0JhK KqlwwZBf4ncg0WVUJEfJ6KvU9wFe5YXWbshu698fd1twaZXg9JO3qIuf6kp1PVd1d+iH JRq7BvhjsNC+Bw4DxS0iKvbntxyFXmDsBZcZIoi2+mca+DNe2a2o3N7yB1EAQCqr0Kl+ A3OQ== X-Gm-Message-State: AOJu0YwFWUIQtHsNEysCCwIqJabc2xO+QtuESFaPqFAP4rMQK8hmBWxi rT9qmssrI3DFE9LqLDGCIBZ6aeACufgfpiI37s3X54QNrtT2Nv6ICcKGIwb+7OA5DSHks17xKJ8 vxPff X-Gm-Gg: Acq92OGoFEGiKvN3CPo7FWvvjD+uPQ2timtWpk3qA8V8JYRTFPzUqe3LdaFbXyiGpgk GzvLGlNbEyrxqqk3NuIP+CYQIb0vuhoJ5BCSqvcoA0utULBnwcOw5/jiCe6gi924MZzIeAu5R71 lZZrDo172tZtXXT3BnriwntBku2j/w5En/m+RJhPAvy8SozrpCmRUO3Z/dBeBKY7fXoqPc7aIkK KwNSQ8aN0zNVGCOh0s0HXWtDFggf5ZB08Riqo3/6RPMbpSx91FhV15ARETHVvjVOjqQb0abjLNS lT9qTXj5EzC0rmZjIwRKASMcNTzGuyHivp5qluDeTaWLd3r4WI1XfwtBJ252IYXlJA+7/gPs7YE gUFjqLjLxhCQ4MnqiAlDYP79Orvep201C62A5zouCy9+3uvoUCJIN+ceVG+nwjB9JDG21+g0OHZ sN8HFRYpetvlvIFly/x074OXA+kFHuxbQSdDODt/qUbFxqcdvtJi+Nnh/i0YUT9SEsCNBvt2je5 liUGr64s+QRSlpxa7rNoAq9pzMzNiX9uSL4dZzS551N7SdSuj4vTg== X-Received: by 2002:a05:6000:420b:b0:43d:775b:c9bd with SMTP id ffacd0b85a97d-4605668d9f7mr11210114f8f.10.1781108006028; Wed, 10 Jun 2026 09:13:26 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 60/71] target/arm: Implement FDOT (FP8 to FP32) for AdvSIMD Date: Wed, 10 Jun 2026 17:11:51 +0100 Message-ID: <20260610161202.2235298-61-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42d; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108512733154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-35-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/a64.decode | 4 ++++ target/arm/tcg/fp8_helper.c | 39 ++++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 3 +++ target/arm/tcg/translate-a64.c | 30 ++++++++++++++++++++++++ 5 files changed, 81 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 9af4ab239c..cea1c56cd3 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1625,6 +1625,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/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 diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index ceeb96b9cc..f54acb03f3 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -729,3 +729,42 @@ void HELPER(gvec_fmla_idx_sb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fdot_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float32 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + d[i] =3D f8dotadd_s(n[i], m[i], 4, d[i], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fdot_idx_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx =3D simd_data(desc); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float32 *d =3D vd; + size_t i =3D 0; + + do { + uint32_t e1 =3D m[i + H4(idx)]; + do { + d[i] =3D f8dotadd_s(n[i], e1, 4, d[i], &ctx); + } while (++i % 4 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/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/translate-a64.c b/target/arm/tcg/translate-a64.c index dcc6b5ae6d..ce29176cb7 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7500,6 +7500,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]) { --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108435; cv=none; d=zohomail.com; s=zohoarc; b=UR6p1Y3sr5LaTKycnRE6mVIOr7hKe+WcLPHbngFH8rtmBrPX5INXZ7jn0Sd+NuXMj1NgLOt9K4quvH4d1xN9wY9tig6JJU6XPkKO2SWekkrqPVkIp2fGnh0LuiDJGaLXsWFqO7Ppt3aEIDeFu6DB5pGmrkBlmocfv4sucLaFjOo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108435; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=XKLxLve8zPvoh+sexVzr4TS9/scp2nbCv7t2TIIxmQs=; b=BHsAr3Rx0XStGQtXz/XKvA3jd88Ath5Y37UFY7J30UkqQPksb/3aoufvq2nIDxdPNQcNNsZgZDibKPGV4KE5yJTD8r82mWBjLlOfezDaV0V9AVBLcCRNqVGeGs2MkVE7YWFh83WH/KGq7LaGJIfFqky/eB5iO61F1g1wzTpSe4E= 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 1781108435731138.48166558279354; Wed, 10 Jun 2026 09:20:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYf-0003L5-HI; Wed, 10 Jun 2026 12:13: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 1wXLYZ-0002tp-Hs for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:31 -0400 Received: from mail-wr1-x42e.google.com ([2a00:1450: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 1wXLYX-0006Mq-9p for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:31 -0400 Received: by mail-wr1-x42e.google.com with SMTP id ffacd0b85a97d-45eeba68948so5012536f8f.1 for ; Wed, 10 Jun 2026 09:13:28 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.26 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108008; x=1781712808; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=XKLxLve8zPvoh+sexVzr4TS9/scp2nbCv7t2TIIxmQs=; b=v5EgBm0323DzLj0I3H0H69iyanJo3parJx6c3AU26Gya4vKtRtpSLcmKsxUH6jm3lS XEMCeVZvkaKKPyPZ+3waLi1IWHVxLKp3QWR1cd5LRGBysVH3wEXdyLBRdV59HUBF4SXP lm1+CGA9pXfBgOHgBW0i6qPKIL8Rsv/j2M9KRFfUjHTek8PYREpbb0C4z3U+XT8biPT+ TDkEMVq2YaoX/n8NA7zMoPatzW1pJ6fG7bUmhmcHFuVkSaKKo872ZqF9+KN/YhanQb0J nP0fIRz/hsKCnnx+t4BLxDTZu2uH+wZNXrX76BsA3efGoFSyjXrlvdKYmrOa5fHczzQF INPA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108008; x=1781712808; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=XKLxLve8zPvoh+sexVzr4TS9/scp2nbCv7t2TIIxmQs=; b=QNBDJ3X+T3vw76PJT4gBcD0btEXRC20+06RqPDPAvPsdX+7xs3AV5sfmEqMhX88Lpq /r0rj9HfBvgmJjKS+xE/hYixfk8pC3sSrlvtjmfTzRQDC89JV2vJxw1QtIe04nEIzIFx An+ZGWiiNfLy7OkXtpcuOvDjgdIn4G136QWh0ubjN++UzNGF5jnv3dfV4fcFSULoVT6u EbvocI4irASL8a8bSQuxiujufuIQ0qc66xqYl2HBo6A6ouEaOEWbubhpDSG+Gm3EjQBk BvUHFcOnAmyE92PfqTv2aBWZqP6KNGaQS9O4MbnuUnaUrp6SBGPatkUtCFHOTFv+yGiE QOpQ== X-Gm-Message-State: AOJu0YwkAXLaNXu93djwruqPcL7sWY5GN1cwxlNZxV+iFOynJ/LM9R8z KiR8AOv1wtToWdQnZxmDgoGO3EErOkI4WnJpkc/RPRIYOfWbnv2P1yo0xkyZstBVBY+QeQocws3 9PhFw X-Gm-Gg: Acq92OGOYwIfRRrTrCexGzf3U7MqJUeHjQ9KVlmdbcuheBaBHxUS2O49ocrB2DeMwDA zJ7b4+Ic5At0r5ludJIMXSK7UpCCAKuJL68HJOHi8hGovRPsGGq10WmLJMIFZJOZNS645awLQ9F c6QX90pfTnFCyUbdKDqEqVQLjwAIVKOfAdtVusxNx9fMoDFWEriJcJ1DxJ0D2eXANHOEdpgbqHK RUSBzbxVtsra1fUPTetHwMJvImTKcxUIzXsGH5+hmh8Ty+VMjIQ2tIW6Wzriai5eN+uqPEsJjyb kWEtcGL42TBmr2ef/wtR67SwRFTkvSiFmNR10F6BwISC1Pwg+Zcog+Uyj6PAuL3OOdIPwUPiVDU bGuRl0xz9ojaFnYRsRnt8QcdxuTa4LWtMADWyYhX3A+BSAcQPcA9FP7Nb+uQaM1WY4CKukgyq3Z AciMTzuFY0sF2FognjNDSCckeRcOAMQitwbVcs/qwo5cXDgbCkPnKe0STivV6LkcvNEVCIP5Mty P9nCdEcQoskfHlstR5gEOiWBZ2MBNMKgYhogBEb68k= X-Received: by 2002:a05:6000:4708:b0:455:7d77:1d25 with SMTP id ffacd0b85a97d-460305124cfmr43196471f8f.27.1781108007810; Wed, 10 Jun 2026 09:13:27 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 61/71] target/arm: Implement FDOT (FP8 to FP32) for SVE Date: Wed, 10 Jun 2026 17:11:52 +0100 Message-ID: <20260610161202.2235298-62-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42e; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108437861158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-36-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/sve.decode | 4 ++++ target/arm/tcg/translate-sve.c | 35 ++++++++++++++++++++++++++++++++++ 3 files changed, 44 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index cea1c56cd3..911819bbb0 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1575,6 +1575,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/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 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 9f207a32b9..582471b380 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8391,3 +8391,38 @@ TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_= fmla_idx_hb) =20 TRANS(FMLALL_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_sb) TRANS(FMLALL_idx_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_sb) + +static bool do_f8dp4(DisasContext *s, gen_helper_gvec_3_ptr *fn, + int rd, int rn, int rm, int index) +{ + bool fp8dp4 =3D dc_isar_feature(aa64_f8dp4, s); + bool ssve_fp8dp4 =3D dc_isar_feature(aa64_ssve_f8dp4, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8dp4 || (fp8dp4 && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8dp4) { + s->is_nonstreaming =3D !ssve_fp8dp4; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), + tcg_env, vsz, vsz, + index, fn); + } + return true; +} + +TRANS(FDOT_sb, do_f8dp4, gen_helper_gvec_fdot_sb, a->rd, a->rn, a->rm, 0) +TRANS(FDOT_idx_sb, do_f8dp4, gen_helper_gvec_fdot_idx_sb, + a->rd, a->rn, a->rm, a->index) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108524; cv=none; d=zohomail.com; s=zohoarc; b=a1ql8rCHp/eHYv9Jde7lrgLfizaeWOKKG2IMz/qsrenZKgS3NPCEd1nmTtZeoPKHHPQrHQGDayXFqZ239Kqsp7etW7ozbSqFawvyK+VOrVNyf1WlgSZ2v+kpDCrraaHpBn3yrTxwf0UvGgg1989uQZJdiBWsfuRhG+FAFGJoi30= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108524; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=CsdapmLJLhWd2MDdk10cC2103vtPb24RpNzidwLXLgw=; b=foM32NU8HMtDh7L8NNDhs2SaFgL7b2Cv4Qo8GY/1jvKqZEEgAi69wd0Tnoewc3J/63PIDQxgwXyedo2MY2GGSjVsKSqxEpL+fXhvPjsUIE/PzXYYvtHc8LQYXuEDENO5tNrXAq06tr6uDsj/+jO3C5dtpyHPJvEFc7xBm3oDbAM= 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 1781108524444197.98341054629293; Wed, 10 Jun 2026 09:22:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYg-0003Ss-Kz; Wed, 10 Jun 2026 12:13: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 1wXLYb-0002yM-C0 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:35 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450: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 1wXLYZ-0006Os-9n for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:32 -0400 Received: by mail-wr1-x435.google.com with SMTP id ffacd0b85a97d-45fd461e4a5so4870066f8f.0 for ; Wed, 10 Jun 2026 09:13:30 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108009; x=1781712809; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=CsdapmLJLhWd2MDdk10cC2103vtPb24RpNzidwLXLgw=; b=ptzyekVE6dHKZrTpmjcTYAjoewWWwV32jDPSWDnwIprWK1N9uGJSvbDBkU8PR+1hUI akhSEAutkfZxY+E6RV4+/GyYL5VvTKmVQLtIrhtNt0IDYKw+lkUVVK2nu+8INOAIUB8I kWe/6k9ptfx76yRkzSD1f5kjWJp/LpWHD/JnndhM3TTPWob7F/s4dDKR0ZrZkzNh1XPE rEQ97j9e3w36Pj1tsa/qt3GNzWgBExWy7Y6hSnt/kDwste1zbONMq0cyuLZdcjzwcPOc MxiQI8TbXK/JQNs8OS5Bb7Cbp4lTfXgekLu+ZiojyvjlHSWGMgOb8dmGW/KQddDn81dR kzGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108009; x=1781712809; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=CsdapmLJLhWd2MDdk10cC2103vtPb24RpNzidwLXLgw=; b=SrA7XS9IcbU5lnTJpxzxVrwxyzpvbFz1+Oe8Gs1vfX06OFi4etM0SlpfqvznfQ8BRk tsKBDLZnoQ3OUvFAM4MA9jhOK2IYDr5/utaM4pg365MfyE09sbOyINIFVeDx52GwpliX ckmsOuRihvrZRzN8d1QiDfnB/chi82QshVpuWO3rCtylEV9F+8j17/54XghgjKcKoyma VaUUA1YHoLNB3aTFi1uLLT8Wn9BVlitkCyjO022ld50GZz9pnajFeBiDTjYPbrzmkjPa 2qsYuUcXEPNnBqCQUIzzL4yfptq6lRn7Yy1l/RyNLIkE1coO8x2ZDpfpUgUEnZ8abnVV nl/Q== X-Gm-Message-State: AOJu0Yz8QQct0qJ7Sf5O3UOjX6CeY0xfJehfvukaTre7c1yPjKMLeOmV cxXkVrJBppdw5rUCKpZNxK8WGGf+Mk9/khtLiYafoofTMr6v9fQsVXtA5ShhsUI8J4skHf5hViV P9Q5n X-Gm-Gg: Acq92OEGDZtqJPvXqNXkb/5rzQQAYbjOqIaGlimeDoax7BI7KrpuN3Ly+GkliFPZ7aX 2qvDTcZWuT6AxdVsVazW6h58Wl4PuLLypdai4qHhDeRrhWvxGFNHOtQzTYj/2WFrx7F1Hrz9bz0 E7WNhomj/9hGamCpVlnFsFEKVHIMZN79VhVQykWe+8/8JFWbT7Jr7DV4NVNmP735ibsPhjM4ngP /wbfj1TOuFPiC/WFlMjAg7txRss9gVAEkpu6fg7qciWrTepmZlzdbvT508jg6mw+2N5IiHlhRLi gCUvqTnT9VmMm5vwNShtbSrrtVIoOLCRBWOCCbOeqVMNoY/c4yuvCNUtvm9VrTLOx1Xaqdi564S ArHbFaCqyrgqHAFvl7WUg6l6ayz64GAbTLqQ7N+P9hZxgWJ2lJhRLmIp31bMmfrp0QUmYP3wy3Q iLmW0BEC/bob7u8Vj14hAptqmkX9scnSe3xWeYh5R3UtsBhQ2FgkfHe7sToavP1Z22f7r31/ETb 6pxlVlsBEVuQNSD7Nw5DM+r8Fm4RqZ158dZzo/dACA= X-Received: by 2002:adf:f911:0:b0:460:24c1:db8 with SMTP id ffacd0b85a97d-46030777545mr32435528f8f.38.1781108008926; Wed, 10 Jun 2026 09:13:28 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 62/71] target/arm: Enable FEAT_FP8DOT4, FEAT_SSVE_FP8DOT4 for -cpu max Date: Wed, 10 Jun 2026 17:11:53 +0100 Message-ID: <20260610161202.2235298-63-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::435; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108526447158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-37-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 2 ++ linux-user/aarch64/elfload.c | 2 ++ target/arm/tcg/cpu64.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index e46f5fdcd1..f13721c327 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) @@ -167,6 +168,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) 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 38c0f0eafd..831b190b21 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1383,6 +1383,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 */ @@ -1402,6 +1403,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); --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108314; cv=none; d=zohomail.com; s=zohoarc; b=ZRDZAkagFIK0bUCdSSjHhdUUQEYs1ZvJK+1k7pQM+brN3QlrZTPwo44VBnvxVOI7b1W3fOgydOPufKc4zFugsnKFPqfv8qomX9E6RVe3Tf/s0tMBrRAW2F4mkfKVfZri7WFuy644FkGjhlQcd0VCmSe7Hu1F9RnqUbV3qdfbUCI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108314; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=JrADGNYzApWh8dNhYBk06Vrk8u0pFuEhXXwU20jY2EQ=; b=non5TULeueWXD4K3sJkJMm5VsPpm0Bt+MoeNOIoEimrwXk+1lt3blJuYqs5sm/D8kXR/tJv8cLusr+Y9Q8tJsEe0BfCuW4ZGWcDZz3Cqqg1xLpDQy10OlFqsCIe6nCosb+jm2jqvUEN0gICgEBnv5/zcMRZDcLZGR8dd0a3WW8w= 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 178110831450434.79116305534524; Wed, 10 Jun 2026 09:18:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYh-0003Wn-HO; Wed, 10 Jun 2026 12:13: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 1wXLYd-00033i-3D for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:35 -0400 Received: from mail-wr1-x42c.google.com ([2a00:1450: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 1wXLYb-0006QI-4V for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:34 -0400 Received: by mail-wr1-x42c.google.com with SMTP id ffacd0b85a97d-45e9f4a3510so3531452f8f.1 for ; Wed, 10 Jun 2026 09:13:31 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.29 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108010; x=1781712810; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=JrADGNYzApWh8dNhYBk06Vrk8u0pFuEhXXwU20jY2EQ=; b=EEyz9CkIa4urtCsFNCbbTk2bbuwLj6yXIqtMQsN3aZCsHj2V1BdqVotDCUwDMUyRHD 7CreVGWaSYOoTgZuR7BBKooZ6nmD9xFGksIPFPTAzbrByiFhjs+88V8j4xgck72VDAGM V1/FvCwHRIB9FdTfR/hpMAHrq3okyxj7dyRU0/X3bqbtaMKWQBkY/jFHcRKrmQ0cItLy cjBETt2JxPXW2dbW14T16v9JObHZ261I6OGRfJbY1jfa5yOie1qeyUv4thChG3+uQJ4J QQj+1VC3/bfIWsWQafc/FdTFEjQJAFV/zd4k2eZ3XzulKvck4TRLMKTubuo8XDH1/wuZ ck2g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108010; x=1781712810; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=JrADGNYzApWh8dNhYBk06Vrk8u0pFuEhXXwU20jY2EQ=; b=Y82QoyIc0WnCK8MN3A9Sg+zCMKH+Nj8i7Ucmy0dD3gNBvXjSpBXTawtaK6fgtNfeE/ 0KiXyvk84EsnHHrxBY40qFxxLBt/1hi6f2zIuz+/aaqAcToWK8rPmavQMCtDH+dTABDJ C4/5aDchjfNSaj5E+7qefgHjUBjMuegXkvR5Vj3zVCMYtXOy0eGCqxkWbKKODVo4XnFr ARBEXtlut9lqFqI5mjRukGhULbhuN6sO6jEYdDB/qnZKJUfyKnuBXU4tTH1uc+/1QMgh QzQ4e5rWUemB/N/AdBDyzRVnm870YoLf1zWLZgIhldnFShk41D7uEQ4/H1qRgjYJOjJn Mc4Q== X-Gm-Message-State: AOJu0YxJ8nL2sDqjZ/9WHeXR787zHoRNXv1EPcaY00bMgmDpHMLk2b5G GTHl728Sm93Jx/dOVTHqhbJ+aDM+BjI6w3ZkKFA61YfMmb6P870x4/4eNrnkdTdmM9+AfOB+qQL VX551 X-Gm-Gg: Acq92OFG1/fX4NTWTdaBQgCqOlqCW91b7fVwmK8AwNCvIoIy/BCt/VSvjgTQFnt9RQ7 wz9uHsMdqW13DJaAoSL604NhjZqdPN0hXyl/ZuqG4quSmHO+rXZZ73Aaeag5juY0kUoxAbrLZ12 NT5HmfHd0oB5ySMAs/TRHspB/YGXryNLSr5kNjYpZ2H6CREicSmXZMS3FVGSfsqDx3mfEQr6xUk KJ6ZCDnKmNtnyR4C8/7/3Oi6bpI60CKaT2ykXqPjdJ1Dt+F2kC1UGh8epds3IMjxnSRiXq6fp3O 5X/n9yXsRR/ahly6HYgttq3vlae37cosR1O3IUZfh6KpDzwJz4SQNtkSSiEu71NzGqQE/qd9gQc oQZBstVKdVsuLNjsV1LhP1fa0HTwYy8iqt6hSHL7q5LQp+IIgGYWnzTHuHTDac+KA1fL0bmHMpo FWV97I1z71pYaN9jIGeX6OLtD2QTPmRgFxn0LZM9txvQzVTUFjFM4X7vFn1yiB+BiLBfy+AjLQz VLAjt5sFrTXmZXxxCFtvu7BQ5S0euiSEhRGgMFe7cg= X-Received: by 2002:a05:6000:1861:b0:460:3234:77d3 with SMTP id ffacd0b85a97d-4603234789emr38506200f8f.41.1781108010337; Wed, 10 Jun 2026 09:13:30 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 63/71] target/arm: Implement FDOT (FP8 to FP16) for AdvSIMD Date: Wed, 10 Jun 2026 17:11:54 +0100 Message-ID: <20260610161202.2235298-64-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42c; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108314917158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-38-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/a64.decode | 2 ++ target/arm/tcg/fp8_helper.c | 39 ++++++++++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 3 +++ target/arm/tcg/translate-a64.c | 2 ++ 5 files changed, 51 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 911819bbb0..caae3e51f3 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1635,6 +1635,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/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 diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index f54acb03f3..065df24b84 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -768,3 +768,42 @@ void HELPER(gvec_fdot_idx_sb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fdot_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint16_t *n =3D vn; + uint16_t *m =3D vm; + float16 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + d[i] =3D f8dotadd_h(n[i], m[i], 2, d[i], &ctx); + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fdot_idx_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + size_t idx =3D simd_data(desc); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint16_t *n =3D vn; + uint16_t *m =3D vm; + float16 *d =3D vd; + size_t i =3D 0; + + do { + uint16_t e1 =3D m[i + H2(idx)]; + do { + d[i] =3D f8dotadd_h(n[i], e1, 2, d[i], &ctx); + } while (++i % 8 !=3D 0); + } while (i < nelem); + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/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/translate-a64.c b/target/arm/tcg/translate-a64.c index ce29176cb7..e4c539fb18 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7514,6 +7514,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) @@ -7529,6 +7530,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]) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108284; cv=none; d=zohomail.com; s=zohoarc; b=UILoFCBtec7Rk+jYCseGL9/fi0Ldh6Y2rnUu32H/pYijYZWdR23odlzUcu4W5UoDODSdwd64Tz9CpDhI4SaF0jPsBgBWtKIRXqUxnLSLcdFKFffCVg7TaGqK9cbhn6sOaL7D7Fzt5YqghM6CXhzbz1VJyRFcGLNdEwbD7ZeDgAA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108284; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=qbVjbGgrJ9jbO98suXUo/HKEmCx0k6OSrK7z6dg8J/M=; b=jnjv3ExaFvi8YDg1vkgkyOvuMcg/0VxrtoRHRYogIQ/VXKQQ4LZneKxiP1kvnYF6z9KaEKtM1vcGeRpvfbMGbRRK2QhrVJ3XS5A92vizQGUfYAAmDfhrfqBmhDAsalbROCVfHHqQSgxMbNOySJRJTBoSW+LM/ROLtJoc7uwtr/A= 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 1781108284636156.58280312572379; Wed, 10 Jun 2026 09:18:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYh-0003V2-1Z; Wed, 10 Jun 2026 12:13: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 1wXLYc-00033h-Sr for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:35 -0400 Received: from mail-wr1-x433.google.com ([2a00:1450: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 1wXLYb-0006Rv-4m for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:34 -0400 Received: by mail-wr1-x433.google.com with SMTP id ffacd0b85a97d-45eedcdaeaaso4792586f8f.3 for ; Wed, 10 Jun 2026 09:13:32 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.30 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108011; x=1781712811; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=qbVjbGgrJ9jbO98suXUo/HKEmCx0k6OSrK7z6dg8J/M=; b=L1aX4gGukvzCdPU9iA1sta3zyLtlCexoLZARjpS5hUJfAQNWLaBkHQpRmNV8G0Ymyp OLlm73rtPYN3N0dYOoptYNNbaGi1V6Zs735ulxPOaZN3rsiyJN07KA1M3OIMKQosMMOc xzU1XMAlieFZ7ovFtli4hkCpbivxbWCPvTUpIFgFcv/4i0QERLAyk+lD4WQLoJfSlOyW zAlrKubo+audvKZ1S1zTOvz7GGLvGpwb1EJTv7hbsHC+dPOY/kHMV+yEYWmCavCMBbbF 1W8kJJojkq/a8hHnZJ1HmJwe6FKZCw39EK7MO8drI2fsYfW7jrzGLYimc/7E3Na+161O DRjw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108011; x=1781712811; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=qbVjbGgrJ9jbO98suXUo/HKEmCx0k6OSrK7z6dg8J/M=; b=Zgl6BIAmZOV+15DOLy4o3o0eTTMFmyGozprED2Rvb2IWR1Gk4jiQi3kX+P3/LdVjV4 gVn5nU2bTw/AOE2143XiF9zJMGVqsVhq0ibeEhcIiMc9wOj6/D/4Nuu8M59VA8LEVwSp f/RSM/i3QU/qj6uo/yhTQ/A7WdVf8a+7mV3RxdcFtulGOQKTLBoJaRosajN+lTt0DGZP pX2PzX7wkrDML2p0H/vEOUwKQKDXxMnN/UP07X7XObJOkS4TiAwS2qf6zMxfyUrGVv1r aG8fNlAxeR4SEOziRVhV4bp3OffifRNoRqGxFMSFwf+wcBQwQbLL72WTpQBb+7kGR5Iq b05A== X-Gm-Message-State: AOJu0YxETsXpiWEZPTYlR/i4VanHocboQ5gSNaR+IzWdig1g0U0T5DPs Iz5MPZ5ktpYsrw+azCNSuHf0he9eHkomrF3Vx4lPjJWLN+Qp21Uwr/NIjljH7pqgrecyOoXFi4A 0Cuja X-Gm-Gg: Acq92OEG73ZULWZ8EJYiFmx4Nz/GlPmHH/4DyB7FsTNWVQaYqlvqcNXfpFxcpK7BEhz taPZeUOLh78wXEtqhekKGsjplLySvYAjtfsPtyitMKzOY6LRIVomAdWi/3MlrBnSDI69TGGp1Py 5jB2CgPgYlIrLl8a+IB4FBJRa1QKAnknBEtsxFevd76I1r5WGIs4gV95GIaSEAjcRzC01zRbGJe 0nfy02OvBZJfq8DMoiK+1ysOpo806wPpFbn0t9sXzI/TrotHwRxkQ6elWUJJHqgHiRa4/YsvMEh s+wKetmKKw3D/QEHnX68JAa1wqUdt4J8RsBAPOTlH8gDj6a6LKNrMuqIw0hBt3Skq//0snu1o+e 6/Zt1OynkNflQ6h1y7y4RrOp4TF0ZS6t8kVnXR5kpuNsWbkqDcy6f6M2sWR5lvPMAgsAw8UlHQb ThhcS6y280Y+65P/qZOB9t361ioKIda+m71KgwxXpkeLI3K0pwDScrt9cUcCHd9lSjH4diZMKgS kJJUiNi2VOvs8Rp43L+0y5xHlb+LLKhzhDQ39t/Dig= X-Received: by 2002:a05:6000:46d6:b0:45e:ea46:ce13 with SMTP id ffacd0b85a97d-460304f9d74mr27004453f8f.10.1781108011464; Wed, 10 Jun 2026 09:13:31 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 64/71] target/arm: Implement FDOT (FP8 to FP16) for SVE Date: Wed, 10 Jun 2026 17:11:55 +0100 Message-ID: <20260610161202.2235298-65-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::433; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108287161154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-39-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/sve.decode | 2 ++ target/arm/tcg/translate-sve.c | 35 ++++++++++++++++++++++++++++++++++ 3 files changed, 42 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index caae3e51f3..1745989bce 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1580,6 +1580,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/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 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 582471b380..2cc5e129e9 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8426,3 +8426,38 @@ static bool do_f8dp4(DisasContext *s, gen_helper_gve= c_3_ptr *fn, TRANS(FDOT_sb, do_f8dp4, gen_helper_gvec_fdot_sb, a->rd, a->rn, a->rm, 0) TRANS(FDOT_idx_sb, do_f8dp4, gen_helper_gvec_fdot_idx_sb, a->rd, a->rn, a->rm, a->index) + +static bool do_f8dp2(DisasContext *s, gen_helper_gvec_3_ptr *fn, + int rd, int rn, int rm, int index) +{ + bool fp8dp2 =3D dc_isar_feature(aa64_f8dp2, s); + bool ssve_fp8dp2 =3D dc_isar_feature(aa64_ssve_f8dp2, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8dp2 || (fp8dp2 && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8dp2) { + s->is_nonstreaming =3D !ssve_fp8dp2; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), + tcg_env, vsz, vsz, + index, fn); + } + return true; +} + +TRANS(FDOT_hb, do_f8dp2, gen_helper_gvec_fdot_hb, a->rd, a->rn, a->rm, 0) +TRANS(FDOT_idx_hb, do_f8dp2, gen_helper_gvec_fdot_idx_hb, + a->rd, a->rn, a->rm, a->index) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108148; cv=none; d=zohomail.com; s=zohoarc; b=FFZbErlGcDQhu0Gu4BHJCPNQsr9K3EXcyFGPRNEZrZn0FpXCpf0eNHTNLg0N8yjxS3V5U1h66GwsoQtExIenpxm/2UkPNt59bzsTMOnSEOJZWYBXrS/IixSSE+DoUk/JEY5uT9FLxn/bLwTXycu1d10ZdUbWuNMhP3yiTXiOBrI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108148; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=iDPdEWHqioHS0+4B0OAcasCOaGgwox4adJImPH+v6jM=; b=jctvembC5MbVRTd4God7ZusA32AeNcJJu7xQljzPZU2NSpR8T1TszIafznYEaGDZgX/EGCaJp5Xct332Xlx4MfTyTrEvmBskNBVySKCZzJEhApUs/mruo2q1yvvDH3+p9p8PUxFUBqcm4Ft0eV1XCkYAAwf/sQR82FOYlg0O/TE= 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 1781108148774386.95123278312315; Wed, 10 Jun 2026 09:15:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYi-0003fp-9d; Wed, 10 Jun 2026 12:13: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 1wXLYe-0003Ct-A9 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:36 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLYc-0006TG-3s for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:36 -0400 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-490acbb0f89so47930775e9.0 for ; Wed, 10 Jun 2026 09:13:33 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108013; x=1781712813; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=iDPdEWHqioHS0+4B0OAcasCOaGgwox4adJImPH+v6jM=; b=Ii+s+QrssE0u27hr/QNtFASJAfFplvWO9OQv1E282idqGek4s0gpVnu2oJr0Xgx0Hu LQHtjX2Ou3KYTxg5nE4uPsPhUyqK4p3/V61bOr8xNU4miNZigcVuuIPsN82Z8lNVRn02 EDFw64ANxv4roUc1v+4apwiV+XgBYuL5w6k8MVtfWLwgbv1nznQGzwfEdWkn4Xl1ydFI NmIfRr2LAyhKHzr9mC+Ng+ArvhmimDr+o9qbgBK/dhm0ZVhLHuT9mVlyip2mIyMvOMiJ Cij5uY2GYp0OLikaVXATB/igLhZ3GBy0+si1qY/qg2H773ZCLtEKAVbpRrTkJHxI60Og gOpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108013; x=1781712813; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=iDPdEWHqioHS0+4B0OAcasCOaGgwox4adJImPH+v6jM=; b=Gxl2XtNmukRBdP9pg0pqCrGZB9wGkbTv5ipQv5UBWIu0EoucYazdhJ8N6imeHFVuDd KSzC/roJkVwODRR9t9eoK3JtiMsfayG8m7ZN9o5xo37Bx4y9eNlBHNeTCF4BlirA02fb yltqvrcMyUWPDNTehUz3W3i4ZW+5YyGpKZ4S2tUJrK3yVc9VTwixrI8QZDSc1D5a2TUl pqr555H61Jxp3aXdRnI0qN5D/Zyp6xeEQ7R5gb1zGKM22E8ikZKcVzZOPE26NOHrW6Lv EdQW5J6CniaeYjFtI6+buLqaO/DFM9CAvMJOARKFzyq9e0HMg/Ymavd7wWoMiNMc4dpA XlQg== X-Gm-Message-State: AOJu0YwL6JTtoJ18yv0ujMBgmUdBGniIqKjnCEM0L2JBvQnn5Mk/gODb RHWwTDsl5yhnrpEHlYJZhWnvvDEg08+dOdILCF9aVtmBa0kBWKA8IwkoW+cla72igKFp8ovUnoN na7Yi X-Gm-Gg: Acq92OEiJzKkDSwYJq9C/RwroO/pnhiSYeW7pafJs/CrFywG5zz7x4cR19b0tYEXBl2 ygaiSkTHJbZychicebfNQKCqmKqS8ADXDObK/C5ulMNZx9sb6gXC89vQpMa/bCMdmEB+jAq/jah ZPNxrbi0DAjUINLMGXzVWu0W/kCOTcj28hIHHBAv3ScdDFNjBi+Y9PQhTL77vrF+HS199hEbWYm ppYYlxlAPjeWytTdx0zlj+AQ9BzYBh+IYzVOK/V8ux/2Leg6wnir9Wr6ihNujXstJl0x9dIt+3r ZeUP8TnuEQIGo1aEQkI5nNDrAAaQbuzBE/sQaIxiQr7ZSbdhdOtxxiGmvQmba9R2cuiwNRukmfp EapvcRoA4XwKOfrRq0rDhZcBjSEOLTnhvyuq98PrAVNuvv03phFZabMzP7yePWQoM35NTrzVCzt p7ZoMIjg3o0JTN2uZSlrJjBIQXZ0LcUPRyBePIc85FfDDxlQd/SgbZRbyMM5ANjeS8lugdkajtQ qUHW57KcDWYQNqcCb9sfq5G2YP+rrM+vU5ozTFhbZxI4zn9UfxDYw== X-Received: by 2002:a5d:4a4e:0:b0:452:75ca:3fab with SMTP id ffacd0b85a97d-4603063a3c1mr23859072f8f.38.1781108012592; Wed, 10 Jun 2026 09:13:32 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 65/71] target/arm: Enable FEAT_FP8DOT2, FEAT_SSVE_FP8DOT2 for -cpu max Date: Wed, 10 Jun 2026 17:11:56 +0100 Message-ID: <20260610161202.2235298-66-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::330; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x330.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: 1781108150733154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-40-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 2 ++ linux-user/aarch64/elfload.c | 2 ++ target/arm/tcg/cpu64.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index f13721c327..0bcd707fc1 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) @@ -168,6 +169,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) 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 831b190b21..3d73977f1e 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1383,6 +1383,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 */ @@ -1403,6 +1404,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 */ --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108560; cv=none; d=zohomail.com; s=zohoarc; b=hk64Io4Q+rNlEuP5/bLBkNWnoB0sK+ZkBMUcs2tCeyB/aH01Ak60e+xe6t0/9fX2UXfkX4B6LsIPxn6doBM8XGf6XzNU4IG89xJfoIKcMPeWjNHv3EG26/3fC/YgJAocWwR6RvoOMKmVvds8eWahlYK0aDbTpEMMfl9zu3egHy8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108560; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=ErkFwBq79DqN7zlpJQ41gBrrnkpgikacB47fgBRmT3Y=; b=NigfBD5g3zmqQHkbmvWwHX6CtC6oq7+Mmhtr8OEPGolyhmB90gwg1R2n5uBJlNrI83U4RunfC7C5szI/8ugjTwvTdnw73WVEMOZMWts3SgJG4nDzcA3P0VMUT9FsTwqaKbmNUX736rYiJyuTlKqa4cg6cwpkAkCZJ1l2rYWRxEI= 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 1781108560583739.6131740417246; Wed, 10 Jun 2026 09:22:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYj-0003jq-68; Wed, 10 Jun 2026 12:13: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 1wXLYf-0003Jp-5c for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:37 -0400 Received: from mail-wm1-x334.google.com ([2a00:1450:4864:20::334]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLYd-0006UJ-7E for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:36 -0400 Received: by mail-wm1-x334.google.com with SMTP id 5b1f17b1804b1-490cf322ed0so30280295e9.1 for ; Wed, 10 Jun 2026 09:13:34 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108014; x=1781712814; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=ErkFwBq79DqN7zlpJQ41gBrrnkpgikacB47fgBRmT3Y=; b=zyyhubu8z7TXH0cpL/F7BoTjB+mefBw4Axxke8BdwECqeVwdNq3D8sGUjbsF1iHiiH bWshQcjUsB8KldJVckGSFsaSqiM4tBIwIYzPx8saXJBMdvBTe+SArGJ7kreNyBgU721f cHM8v55DqAxgKp2/yPs3Er+c/m/xWnYuVMpPiYwv04zy71vUauVUl5J2zSmP62NzUQpf +7ZAJ/9+pEQJwqBpj0yMQJXMeNcd4px6y58eiaH0chcJtX/rRKN7IlQ9fTo+Mik97AbQ D2ZRxneRoetS69PxhWm3TgDWfGYpRHzVmbxtohUNGYrq0uSPP3rczQjNkx3hxmy+u1co aQlQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108014; x=1781712814; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=ErkFwBq79DqN7zlpJQ41gBrrnkpgikacB47fgBRmT3Y=; b=POYSorIRIMB8OYue7g09WAw+wY0bxN6mriDQ7K5l8OiPlUREVJvakde2FcSBLp6sNW AItEi2eKuaFTY95QafiH3KCE/QoZ0PFSJrO0nbtf76XnFMJh+wsVmsYFzMnzXstaVGc/ IOzdK6eCpPMX1iSF4XIYRKsnDn8SWRf30SAy4oib+cPaGZzoPls3u+1m8yc7UCsv4y70 aQsydSFvzg9ZE8nkFd8EQ95cVqIep9h1haCLPDn5JdH1HXwvw3jTuOesqQCT6QlAmH7d 0+5gTht6NSsMxue/WJ61LdUt6sF7EapTU94z2NVepHZetfvrZxKboNIeufGzSrN0WxTD QBEg== X-Gm-Message-State: AOJu0YzYp76ZCgBBpYh9uIBbka+tIofGXqa+qMmuIObDZmnDYH8axDNj A3D12klzDr50Q7Ya4VWpmTkP5TgUBCUYZhLZRICjY4uKtntA9AVknp5n2VQZHo9WiLxO2tGGo+F s10Ui X-Gm-Gg: Acq92OGRNS1+H8hZrGSLiPgaCA/pcon68SDuA9dH5ceA+vIlPyZeAMsVugW0g6eyd7n IVug/i5l+AQ5sYF1mXrCdZaX4Zni7g+qlpHXHOlwmgRt8Al9TrWJSVNMCyXrhBQMSgJ+lLA/C3f tyejxWroicKuvBF22mn57O7isgYnqRbpgj+4NbKNA6lvUdef17pfCRFZk4AU5/hT+fc69tw24ff Z6u9dcNRv6ahXjKbuUKb3mJ3Ydj8Roc/SlndR1DAQV0U5zRiI1pcV8JqI4ux28R3mAMrLyDDIfQ qpO+KwgTSIQuXUAVKt90cNz45CTsY3B3wFNkyrlTkl5gYPEzXogH6CCCjaA4rVOXd6Q/4YyYDvJ 0KOcNj7MfpCkZGUvD/fEIioiC7MAva5SHPmMuxH4B+toJMAKMRBfZFo/QYmsZvxCNtcSdvPewU7 u3C/UvxT+WFAAMX+XjkQ88bNQ/w1uUf7Fm/8BBhWIKXvHBpHpmSjHPYe21JZkNMRPN+5+kL1NWU fRAwEzB+0d6NBHcToHbPRnkqHu7x6GjWdNgAoeAJ/r4zxyMYwa8mQ== X-Received: by 2002:a05:600c:8b85:b0:490:9d5b:d721 with SMTP id 5b1f17b1804b1-490c25f166fmr418797495e9.16.1781108013826; Wed, 10 Jun 2026 09:13:33 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 66/71] target/arm: Implement FMMLA (FP8 to FP32) for AdvSIMD Date: Wed, 10 Jun 2026 17:11:57 +0100 Message-ID: <20260610161202.2235298-67-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::334; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x334.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: 1781108562852158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-41-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/a64.decode | 2 ++ target/arm/tcg/fp8_helper.c | 25 +++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/translate-a64.c | 1 + 5 files changed, 35 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 1745989bce..be3db5300f 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1645,6 +1645,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/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 diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 065df24b84..b9d4ba3b6a 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -807,3 +807,28 @@ void HELPER(gvec_fdot_idx_hb)(void *vd, void *vn, void= *vm, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmmla_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t oprsz =3D simd_oprsz(desc); + size_t nseg =3D oprsz / 16; + uint64_t *n =3D vn; + uint64_t *m =3D vm; + float32 *d =3D vd; + + for (size_t seg =3D 0; seg < nseg; seg++, d +=3D 4, n +=3D 2, m +=3D 2= ) { + float32 d0 =3D f8dotadd_s(n[0], m[0], 8, d[H4(0)], &ctx); + float32 d1 =3D f8dotadd_s(n[0], m[1], 8, d[H4(1)], &ctx); + float32 d2 =3D f8dotadd_s(n[1], m[0], 8, d[H4(2)], &ctx); + float32 d3 =3D f8dotadd_s(n[1], m[1], 8, d[H4(3)], &ctx); + + d[H4(0)] =3D d0; + d[H4(1)] =3D d1; + d[H4(2)] =3D d2; + d[H4(3)] =3D d3; + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/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/translate-a64.c b/target/arm/tcg/translate-a64.c index e4c539fb18..ffe59b9471 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7515,6 +7515,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) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108511; cv=none; d=zohomail.com; s=zohoarc; b=nqBf0OmxPun+r+jB8irFeaB6VZt3zFhnVWLPqTVEMmmCGhOLtnoB1DL2cz2J773aV0beQvz5g3rLvODKhsrUhcuAUKIwkteL+HDnJyDFeZsxOdl9brB/JwrKpKkjyurPxXXAvseF97zoYYwHCn6n5S1hbfYWEZcLDa2eg+nbj3M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108511; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=hAbiCdrvtj6+CXCYH3qGTMb2Ur68vZqF4sQTbfSpP9c=; b=KpOWhsOWBEugJ86wr+YRIjdJKsyQFx5WKf7w7mkgBFv0D7DjzYrgHsDd6WeagKrp16T22B/TY6blXrwe1mMPdqYbHT3+yLxcdkbHo68sP9cnGbX623ugF9HTRGJTB0lKeaq2H0nsVIvPsJG45gFBDJb1bmo3YbeZlcWap4vQyEo= 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 1781108511968377.5347104628014; Wed, 10 Jun 2026 09:21:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYj-0003j3-3l; Wed, 10 Jun 2026 12:13: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 1wXLYh-0003W9-62 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:39 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450: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 1wXLYf-0006Y1-B2 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:38 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-45ef82204c6so3904687f8f.3 for ; Wed, 10 Jun 2026 09:13:36 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.33 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108016; x=1781712816; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=hAbiCdrvtj6+CXCYH3qGTMb2Ur68vZqF4sQTbfSpP9c=; b=hUkxdpYudAy5U56HFmfsM1BegSdtFVwEdlZIpcuHBOijrZ+MA+zfH01Fv5Jm6JgoBe kpIOviuEDP9BqS1QL5Rk1q63TnuDkOu9k7h5JarARLk+n4jWF4FjehpF88Ru53+BLUJJ 5TBRvlKa5DKsvmApHbzqJEQTP3d1j1TEH1ZLMgKbqdKJXW7QLrbX5Ax18/6B0JVhJ6pw 5HjGGa2n/sVrRctAku4lZj4n5fS/TKzyA1uqFXt1ocmeCr1eK631CrZneYi285XMSiek R/vE0nXANrO/C8IG4uKODcKUmi/fapbDFqEdtVOjxbXlX2rDx7OW9SNKt0WvRKa72/5J 2rmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108016; x=1781712816; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=hAbiCdrvtj6+CXCYH3qGTMb2Ur68vZqF4sQTbfSpP9c=; b=lR8qJPZlvxRUMOk5at3xCb1x7S0fOePWeeLplQoU9FaBrjXWPkuY/mk4K33/D5EUVI MsrgNs++fR4nYsxNyRKWz0vA7ZoZ8B1zVCIbC1cKgerplrzcbC3yo7fk+1dj4Vs896hc B8Wdw1KwkDYgvbXMyvRCe/G4+vw5518EAfCO+WjeJwYdQSIDVE6DXB6DGKPEcI+IsyPy VhPApqoJXvwrjLDrMfFR9L6IZ85hVVwfkjtt5LyudPP3j1js/vY8nidIYp/S80955iep Zw5sinGWVy0i7LATAtbJqkuivP9wmfnhgJrgteDZTjBMY2koohQz7/R51w6aqqBEYTm9 9VxA== X-Gm-Message-State: AOJu0YxOc0akZcwBZ4O/m5vco/o9vmR+8UuU3Tq4+uqYbyRtBjSNjWbs dEih3wyqsTE1BnFLV4OPx+1KcXVtC3PKDcZM2PyMxrXuJJUg6VhSwduqRRsM25/VkqqIZaTyxtF fOwXD X-Gm-Gg: Acq92OE03gCCCsuaunlWaBFwpruwMXe6wAHTnFwncIglQoHt0yIUIN4G4jX0e0E5+ZV euAmZHSyQgWuzdZdSe40aLps1hlhvHtX6KvclsS0RfRbLGZqUChNGGQKwhULmOtQMGbAgbxM78Y sjbR3mqHOFApMoVJzxylgV0CfCCxvvpI2CM6IeQ+RExl/ydh2HK3NWNy19T+OX6Nqg++fwJj5k4 rmqLmixz+BHh/rzGeRphM45/lT59opoz1054T+om3T+oYHdymMXtsz81GYD6AmW/BjaUOuv/r+w XHUXPCE0ifdSOvYx5nRgjt6dAKAt8Zus0Lw7ycoDkSX5yi/bzaU6aAlIbf2EFlnTh7YM8b3T39O KIEPWE2itmKu/JQIJHnHHOHfwR9KEWeW9VhpddFF7gQpyZgIbNV7eCXnpII4/VWkuMXt6frMrgb 4lPjbRz1xDIdAYB2boEi0By+Y7yXAvSdexpkzNFZZgre5SlGFwpwwEH5OApQilW6HkablSqxN1g WxbKIIkiophvlJkX5Jfh3F7w2yKbRPFy4xHCOf57M4Z/wJM770Pfg== X-Received: by 2002:a05:6000:46c7:b0:460:e0f:8d19 with SMTP id ffacd0b85a97d-460302e3193mr26420647f8f.9.1781108015971; Wed, 10 Jun 2026 09:13:35 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 67/71] target/arm: Implement FMMLA (FP8 to FP32) for SVE Date: Wed, 10 Jun 2026 17:11:58 +0100 Message-ID: <20260610161202.2235298-68-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108512393158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-42-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/sve.decode | 2 ++ target/arm/tcg/translate-sve.c | 16 ++++++++++++++++ 3 files changed, 23 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index be3db5300f..67e9c3bd33 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1718,6 +1718,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/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) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 2cc5e129e9..f6705ee95d 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8461,3 +8461,19 @@ static bool do_f8dp2(DisasContext *s, gen_helper_gve= c_3_ptr *fn, TRANS(FDOT_hb, do_f8dp2, gen_helper_gvec_fdot_hb, a->rd, a->rn, a->rm, 0) TRANS(FDOT_idx_hb, do_f8dp2, gen_helper_gvec_fdot_idx_hb, a->rd, a->rn, a->rm, a->index) + +static bool do_fmmla_fp8(DisasContext *s, arg_rrrr_esz *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, vsz, vsz, 0, fn); + } + return true; +} + +TRANS_FEAT_NONSTREAMING(FMMLA_sb, aa64_sve2_f8mm8, do_fmmla_fp8, a, + gen_helper_gvec_fmmla_sb) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108573; cv=none; d=zohomail.com; s=zohoarc; b=dW4m/xTXL1l76gMaJ3Pr2nqWqXxbi+CL5MJhIu24JGwwL0n7jNbYRXBLXs4E1S0qQlG3S3MvO8EAdvZprigJxvDNWcmE2HcoAo32WUbVVNuXOSoXrlwgxMHH7T0zBwS1jBEJPjybZLqpJuHEWLMEhT6D1L9C8BZBhRpxcRFatAA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108573; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=jN+G7kW7HtjYl4CpSe9tEzemlao0jVQgi+tpXzHZFao=; b=jQe0ZtpWHRoADYwGfoykM/F2yd1cKmziSdMntI0cC673i8748njw8VQzwe61D8jJ+3jaqP+YbB4YD+pDUZK44HS1o8mU3d8a4D7vLqdzQry0oZV/j6s84IHcyrftbdSev/2YXUSJFsw5XgDenEDHjFyb2mvSBryHhHFB3u+e3lo= 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 1781108573084374.44208998317345; Wed, 10 Jun 2026 09:22:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYm-0003vi-Fl; Wed, 10 Jun 2026 12:13:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYi-0003h9-Ky for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:40 -0400 Received: from mail-wm1-x331.google.com ([2a00:1450:4864:20::331]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wXLYg-0006Zy-MM for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:40 -0400 Received: by mail-wm1-x331.google.com with SMTP id 5b1f17b1804b1-490b64c8311so77046995e9.3 for ; Wed, 10 Jun 2026 09:13:38 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.36 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108017; x=1781712817; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=jN+G7kW7HtjYl4CpSe9tEzemlao0jVQgi+tpXzHZFao=; b=radEHNFWjxCbrRHJz+ih6mz+nKJtF6rPMQfhvaKOpU2jyIa2uFXZYGgaiApMe+UJd4 hXrDwFzOx16VcqXQh6kVjnD1ZHD2+lRuiX4s0tlqmFn8HkSsjHud6+Opi7JiZ9cDVWzT ToJhN4osbvgW2jh9fTqRg1NTPFkkCb4t5KuPndxWu6B+sTfqGDa+fDnTcOqYxhUnWeQ2 ERctOoqll9ksuL5WevjgbE7K0ZOIcTkANcX6KTEVd63kMDgNzShn8CR6/dQJjU82JhOy 6PZO3VtpcS7V0IIEQztZIwcn4v3Gvyz6YxPGf4mbqZUTsGmNgAqVzl2ah8A1D0XlFk1U FE0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108017; x=1781712817; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=jN+G7kW7HtjYl4CpSe9tEzemlao0jVQgi+tpXzHZFao=; b=Ns6pIehkJEVqcnpUPdLexpSzgwPq0ve6OYQrzaDPjVb6qVcjKZHlyLUtCucF6nPnoY PxT96/s3mTeEQ03RVgND1YL8g/JpkkETmzEo2ny6Wlh/wsdcIMzGGjTREq3b2saDVAVE sDZ8HQnWqT30jGoCNS1H2GYnbcwVIKGCufqH2hpx6ir4U0q8v4RpzDyOpGNcIcl7EwKC aaiIsb8mVKvrDIKhxPp3TqH3enjikbfGue+xQkzhAkyQrjPnoTz9ZnWkWJxWsUcB+mHM vx0Y0UEgzFe6eO21i+ZeB03O+8J5Btvlvm9hDzkvho6o3jHtwzbePQP4cVmx/t7DbIig bkUA== X-Gm-Message-State: AOJu0YxJcHMETttP5jCcnleZCirxTVTIyqB6mr+ASYGzRWyzZyI68FbX JnTn9jfcMyGWl+LEx1GwBsas00XsokFfsL4/E3YvuXUQJIUVB2kkfGuEKUqfUbGHewKNKGXvmF8 9j7x1 X-Gm-Gg: Acq92OFxJYXRamASxgaQu1yLSKD6lhWv2yW7OTmtGSGdXYKtHhJW40qjcaECq5QxxU/ TQsHsK4fnsgoz2q4SHQ3+VqtRvR4klBKxC7N7QpI7aPrymeEigJkyb6hm6kmUWfAhuqD40tjxQw kDf96kDcCYXP7MbSBQBVvsAZQ1pqWorBtnLZZkppMURK6kOo8mMLgr3Pi7ecCxC3MBg2HnkSr/i 4aXJuVZEhPofxiCUPig/8RrA73P3+fwa7diFSG+uJQXG4QzqNA7TddMFRhuIHlpwKkzahNgwVvi eUrlNNgF9mVnQcCIq6f3e1SklyaoJjd7MbR/i5xK480rYQVhieAKfmxNDo6jmjRzaVUzdmkqwIE i2JVlCW1NuPw599Jou+E6AZv34f4yvXwCGGesNIK5c/PdjjkVIuT/bw8/QmlNzH3/OHMAjSv9tI JklBAtFpoWXo8Khur5DEXynAuX1G/32vPQac6Mb0FA6nf6mFhaph8rE4sY4hUmP+3FEqF2o/kjB 1Q1lF6bT0lX2ySQ9Vm8BVbj/Qz2riBxtro0dbKhy2E= X-Received: by 2002:a05:600c:5248:b0:490:cb90:3e00 with SMTP id 5b1f17b1804b1-490cb903f1emr268505775e9.14.1781108017275; Wed, 10 Jun 2026 09:13:37 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 68/71] target/arm: Enable FEAT_F8F32MM for -cpu max Date: Wed, 10 Jun 2026 17:11:59 +0100 Message-ID: <20260610161202.2235298-69-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::331; envelope-from=peter.maydell@linaro.org; helo=mail-wm1-x331.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: 1781108575753154100 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-43-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + 3 files changed, 3 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 0bcd707fc1..56da6baed9 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) 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 3d73977f1e..0f2ce592d1 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1404,6 +1404,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 */ --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108299; cv=none; d=zohomail.com; s=zohoarc; b=DYxWm0rXJnHfqcKkexCiwmMUcpJHrJtQzUEnhS+JgvQgPieQBJ8FUfk1DOro1v5VIdP6wIqFg9T5YPA73KkjNa6PKO4WZcRwv+w9Yv0ix07gbgHx52yK3PWFuUVQe2OS7ReDzKKVvtdNPWrdFbmvssDPWhvc+Lb43L4Z0s9Me9M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108299; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=TP9hyBS1DKi+7ewnFjYuFQH/JqHtzxVX015tWhGQqUo=; b=oDF/fdw+xLv7xjwLeeJFcrV/Xs3CpEx3OlY3q6yXb479WjNC2/QJCzrUmHWvAbaFv50ciTYNtRTWie/X7XIZqpKR831s6VHRt5NLCpeaJDQBDsw8ngQC3zWX6dnDuOzXSKfYGmWPS7blDgjghsYOsa3immDG9Fx6qTc0sQ1lzTY= 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 1781108299648600.1562248944492; Wed, 10 Jun 2026 09:18:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYl-0003tD-0x; Wed, 10 Jun 2026 12:13: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 1wXLYj-0003nD-Qp for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:41 -0400 Received: from mail-wr1-x42a.google.com ([2a00:1450: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 1wXLYh-0006c3-R5 for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:41 -0400 Received: by mail-wr1-x42a.google.com with SMTP id ffacd0b85a97d-45eeba68948so5012669f8f.1 for ; Wed, 10 Jun 2026 09:13:39 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.37 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108018; x=1781712818; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=TP9hyBS1DKi+7ewnFjYuFQH/JqHtzxVX015tWhGQqUo=; b=J5y8jaFQVwCFYKlFW/Ql+uLaebmWKXJJE8Pw88YnodZU15v+RAb9FJSKvSJU6efIYJ yOTd+GEmd7he3jX34bLA2OU1TgXXLHTcj2Xp6Vq7E0JUCNr2Z6g+faOZrHQ5SdAbNoWF iHz7SektXS8Ng4ajwxLngLeZ9xjD6hPezpNwWKdNwsBNeKnfXfki/LlJZnzvmwQJZ/mt M2CpWudwKnWCC0B3XhWno/cgEatb8ZZgLK82oD+QgtyX05J6wRMHp5PH5fPfy3jsmLBx QfxFmoPQGwAIE26DrPo1SRrpx5gGOynm8Cpi9kD8gjtXJo3YeZEGLiiTKWBr6L2DTuSG pyPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108018; x=1781712818; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=TP9hyBS1DKi+7ewnFjYuFQH/JqHtzxVX015tWhGQqUo=; b=n8Sf767+/fsiS0hA3Z4rWlXvedmd5M4ZoEqKduVSUfZEU2iGYiF0xWQTRUI0HCF30b dxnybEzqC9ph7bwwEd64BJ9ZWWin+L95hMsYyrVMyE7JzrCK1qbDuLCGPymFIYSmjzPx FCDpLgdS+jreEX2U3bP+pbXN+HC6ywSHVcJeMnIIAFPG4OjkzaBLoWRtT9S6c2YBFqD1 ffhkzCFYaa2caW+1lTKmooDbTbcOObyE0YN+g3pmRhxW90qAG/spf0DJzRcKg1GoP+GU VRbB4vxoZ/ipfg/67vowrMjNm1lY5Wwjr89RCQhuNBmjw/wE9ntnwr+WTYZf0DYF+sOD Mofw== X-Gm-Message-State: AOJu0YzzZNC3XfMwFWgmJP0PY05hDpWBLRD7GyDRaWWcTdt0isF2uAFY h8Ux2Qo+mOIxaiC0BFIQ0uZtaBh4+Ulg47VWI67A9Cy81jIIan6P54Ne8rviYulzxsgAGL6/847 +BdCX X-Gm-Gg: Acq92OHX1kj6KROi6Hduacphqvv/Ld+OV83CyaGDEK71liIFc85ig6n4913T/CTl5O0 73hJd3DNtWf1Z0En1syX/a1cEqD3RyLDOyWyCDbp+Vj+63vkHgrmXgmFP3OMNyvnOQncRns4Ftt dc0CqWD9lSPHGnXg22jnrYc2n/Cmnd5VKRWwl6D8arTMUOpI++pm5MjGRaER8EtNjrnQkcDgiIs xKFr1S2FjoEZJ+uikmggxZerm6GJVCq28Ud1EjkRlp25jvEnIEa3M12rxLk0HUqlSJgF+boJ3qY l3unaoFtnG2afQ1RhvS0pZrCyawmXpp130JSxGGgPBCyyOEGz2wodctsam0xTnszV95w66wtcHW YpUiQlxQoU3XpB+12J0M87E9f5PPpxZ31/+cFxK1v9OcdomNx1aXUXSvJKMXdfTg0J7mi1xk6i0 3oid4ELHfpvZ57Wy+++tP1VEC0HArRgiNtMAlF296MC1LdNRl1ndja3odFFgaqzlf8RCaSXAbUR iS9Ap6y8HyXyJfyZ54VM4qD6L0VuTLRpCMnMxgWBIE= X-Received: by 2002:a5d:6644:0:b0:45e:f780:6181 with SMTP id ffacd0b85a97d-46030501958mr28143153f8f.23.1781108018293; Wed, 10 Jun 2026 09:13:38 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 69/71] target/arm: Implement FMMLA (FP8 to FP16) for AdvSIMD Date: Wed, 10 Jun 2026 17:12:00 +0100 Message-ID: <20260610161202.2235298-70-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42a; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108300807158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-44-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/a64.decode | 1 + target/arm/tcg/fp8_helper.c | 25 +++++++++++++++++++++++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/translate-a64.c | 1 + 5 files changed, 33 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 67e9c3bd33..753799008c 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1650,6 +1650,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/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 diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index b9d4ba3b6a..bd0877071b 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -832,3 +832,28 @@ void HELPER(gvec_fmmla_sb)(void *vd, void *vn, void *v= m, =20 clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmmla_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + size_t oprsz =3D simd_oprsz(desc); + size_t nseg =3D oprsz / 8; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float16 *d =3D vd; + + for (size_t seg =3D 0; seg < nseg; seg++, d +=3D 4, n +=3D 2, m +=3D 2= ) { + float16 d0 =3D f8dotadd_h(n[H4(0)], m[H4(0)], 4, d[H2(0)], &ctx); + float16 d1 =3D f8dotadd_h(n[H4(0)], m[H4(1)], 4, d[H2(1)], &ctx); + float16 d2 =3D f8dotadd_h(n[H4(1)], m[H4(0)], 4, d[H2(2)], &ctx); + float16 d3 =3D f8dotadd_h(n[H4(1)], m[H4(1)], 4, d[H2(3)], &ctx); + + d[H2(0)] =3D d0; + d[H2(1)] =3D d1; + d[H2(2)] =3D d2; + d[H2(3)] =3D d3; + } + + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/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/translate-a64.c b/target/arm/tcg/translate-a64.c index ffe59b9471..227719ef25 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7516,6 +7516,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) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108533; cv=none; d=zohomail.com; s=zohoarc; b=SnnUYlRphYBx47xCY0X9Ic4JdzTyZuMukRFE2lDC9oevlSBNHnJDWa6cJQQKB/j918/KtBFJJTCSt9hT6yb/2VnxS0Y/yZloYzryreDoGSe71xyzMeYJJbAYlM9FIS9zC/H3qtgWIqAIWpMtKHXUq+g76ZYll6p7f5JFxTKYbww= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108533; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=+YtsUEuR5GKlGLLBe3tBqRfFqbJQ+oyTxTM3hrgCUTw=; b=WOIJTixnt4/sJnqdnGjkxTUYnznrENvPd1YYV1l8eUMzjYLjsmeze3HouJiVNnh7hYsnHVkt2u6Zr3OuvnYAfa3s9fORVE8cE25odyIB5YT5fnloXncL9oOWCJOGgSDYoSaHGmZGH08CQAtXrsed5KPj0RHfQUgumjP0BfglD38= 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 1781108533282974.4499639980241; Wed, 10 Jun 2026 09:22:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYm-0003w2-JV; Wed, 10 Jun 2026 12:13:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYk-0003sb-Pm for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:42 -0400 Received: from mail-wr1-x42d.google.com ([2a00:1450: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 1wXLYj-0006eT-3N for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:42 -0400 Received: by mail-wr1-x42d.google.com with SMTP id ffacd0b85a97d-45fd464d51fso3865913f8f.3 for ; Wed, 10 Jun 2026 09:13:40 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108020; x=1781712820; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=+YtsUEuR5GKlGLLBe3tBqRfFqbJQ+oyTxTM3hrgCUTw=; b=dx3jdDqPsxY8zzHMGSFmdKXxYxG1hQFTfNiwxVOX5Vh1aCk45bkRXxhrPF9Ci7sGCn aodvZz4jVhcRnCG9aC44MO+4mPYd5w0Sd+uTfC+n0iu6YTBu3uTBQxnhJ6Bn3JSs6wI7 VqFRyAB4ywO4nzzYmMD1/56XR+45ib/3UudoGkmJxReAhtOxDVw4VQlrNy/tj6Cv/fz8 gwyZ/wr4kUigF2V7hqB98rijnI1HhmgBgiLGUglLQH29J1a7Bj5IR4mdhY9I0PBiss+J utBDVUOraJ0WCUAdUjXOwMq6VF3mtAovHSLm/4mtYjLJ8EngLY9ftkklL9d89ijAYqo6 TEiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108020; x=1781712820; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=+YtsUEuR5GKlGLLBe3tBqRfFqbJQ+oyTxTM3hrgCUTw=; b=dxgr4LzCy0lfOn1wCDPYl6PsEB7bfXnqz3v5cLxtI8zUtEq5fMJJ+/zLECVHVGwzp0 WJVmh140W0y9bPEXmozTAPlaAk8DCQsjGA6fH3hYxx9LYONHBkGHyjjkbDOf8mvM22Zd 8jyguOFvFWrPVugZPNOXZQUZjvUp6CzQ1kKl3HY+vaWSaiSPnAQ9erG3PtlvxUfalfQ5 Y46IRdXtOFcw4RH7Ti46iSGT2Pb1/4wy9OoUTSkOs5H7xeYU9VK4o+xCGSN6Iif+5QUo fqAXKXNyOLbhhnkVCg3Zu6/brDrkShhaqaS86SG2NiEgo/C8dCtPViUk0ZOnA6+1ykfo PcPw== X-Gm-Message-State: AOJu0YySmqwGwqweQi1CEptUIcJ1guA1EmyNBXe47RrT3khHXpz24hKO RnSoiKk84f+b9gqeavB4QmgVHFuSzLlQxUDVNxEo8OokIg27umqvM7kMy2XWBmOPiHlmgctRiIN JqsWu X-Gm-Gg: Acq92OH09P3mAGxc2gek6pe1h5bs1vMZ1kwD3Lj51TR/baiD1UGMGQ7m/uD6Ab2uz1E 7YUWPjZnvQx01aYwycC8usMxzaDg5Ruh8V07lJOn2yulT2l4q/No8N5rO2bLqETthn08uWZuM3B g0uxEtiyguguvFwnxw4/g4iygkM8KgBMU95tVACgplUvjM49Wuem/AckCLXLg6VojNlrE+OQ29u 516V8NvzmTPpCD5/GJ77mm4Nq1PcnwqzRhO06yAFGW9njLmRql6GyjU/pP07kqOtov71Rkdo5Qs kRFoiYCevRp5NSvIs4Fn+5i/6RRSpUU4N+Bly5IRRqU1u63LaPzvx4MkmksjtcXhrINeaYl+rgn S2eXGLHg36TN5ypAlWMsqCfdl5PaB7002G74MzImGIlHOvNoBqb0MUom6ozrZxCfafmQdq/gbo9 msMgdnDu8Eb1deyywpwfL51yv+1QTXRT+AWeiX6JrKurf9WPi4vgF7rPla0LhwRisZfSnVrCOhB uUnTkWvlzbLdcIX8pvvNG0Sg8GeNta7+HOzllOLPGPxtT3iQ6hGcA== X-Received: by 2002:a05:6000:b82:b0:460:1301:dec8 with SMTP id ffacd0b85a97d-460302dc4a8mr27540315f8f.3.1781108019634; Wed, 10 Jun 2026 09:13:39 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 70/71] target/arm: Implement FMMLA (FP8 to FP16) for SVE Date: Wed, 10 Jun 2026 17:12:01 +0100 Message-ID: <20260610161202.2235298-71-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::42d; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108534462158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-45-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/sve.decode | 1 + target/arm/tcg/translate-sve.c | 2 ++ 3 files changed, 8 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 753799008c..9e70d30964 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1728,6 +1728,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/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 diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index f6705ee95d..a85558bdaa 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8477,3 +8477,5 @@ static bool do_fmmla_fp8(DisasContext *s, arg_rrrr_es= z *a, =20 TRANS_FEAT_NONSTREAMING(FMMLA_sb, aa64_sve2_f8mm8, do_fmmla_fp8, a, gen_helper_gvec_fmmla_sb) +TRANS_FEAT_NONSTREAMING(FMMLA_hb, aa64_sve2_f8mm4, do_fmmla_fp8, a, + gen_helper_gvec_fmmla_hb) --=20 2.43.0 From nobody Sun Jul 26 14:11:02 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=1781108436; cv=none; d=zohomail.com; s=zohoarc; b=oCWzNx/2JAzZVgto0ZVShyFkMyiGFOEQMSdetdWYrK9pc51aCHzSAy8rCmRxsde2mWD3cUdQC/KihrOxmj56gAoYEm8a9EcefqoKb5Jeu96GWJLeBhhaov8NbwBSOXeYX6kISJIrYAsSxZxuC4XrTYlWhDhoShjTJeNql5oTzoE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1781108436; h=Content-Transfer-Encoding:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To:Cc; bh=uRTwcqocnJpCUDaGXYCby0OmO/91zwV4EYa90KBUQO4=; b=hRlEu4go9IZHYt5ojd4YnnkoKyHb5qTDxCMYiJjakxdiqCxjizzKAAvR7oDha8b5f9sRHaOfL5/4OcqQWopWmyV/fJ7yvtrXLCFpBLMNU9LK8liYRMgt00URAcWgAzjKFkbdcqzq5xUo+cXSY63YnbMcqae59plXPWy6OtuqdVU= 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 1781108436799597.3098750311655; Wed, 10 Jun 2026 09:20:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wXLYn-0003zs-Ov; Wed, 10 Jun 2026 12:13:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wXLYm-0003wB-Hb for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:44 -0400 Received: from mail-wr1-x434.google.com ([2a00:1450: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 1wXLYk-0006gY-IH for qemu-devel@nongnu.org; Wed, 10 Jun 2026 12:13:43 -0400 Received: by mail-wr1-x434.google.com with SMTP id ffacd0b85a97d-45eeba68948so5012815f8f.1 for ; Wed, 10 Jun 2026 09:13:41 -0700 (PDT) Received: from lanath.. (wildly.archaic.org.uk. [81.2.115.145]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcbe3sm67911360f8f.8.2026.06.10.09.13.39 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 10 Jun 2026 09:13:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1781108021; x=1781712821; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date:message-id :reply-to; bh=uRTwcqocnJpCUDaGXYCby0OmO/91zwV4EYa90KBUQO4=; b=Ko0ETs2Z5nYwIK93rkTJjL4sgCbOUgcohT7ZfSwv8bcNE2bqRds6sA5mZNq6b66WAy aXf3pbUG+Trze2q8S9qG0dldrEeYNSOxEUpw5Ea39LQvotRzJ0DYw1mftq/ICx9z/OPl tkWtsBg+TadnbOLUro97TGl728mqhtGiKTeZqIb7LUY4CesOEGOMittNt1pIbxWsfjUv 0kAiycO6DxsM4w4esIPvyS6CB/d8Tt6zBP9Nh67SaMJmhTx05KjfnjNFciBSqkphKoly Y2v8HHdzcuW7A8CwPA6y6BE48IUcl5TRSrcvnTH98d9zxY2rmnCaXZZGvRV+kR9gF3zd pYbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1781108021; x=1781712821; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-gg:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=uRTwcqocnJpCUDaGXYCby0OmO/91zwV4EYa90KBUQO4=; b=ZSo5VXgAFQOxIYRsGqVr3BFBDVQLGKqsYW6HN0YoDF0LM28qFmyRIKl4GIT6E9J696 n1T3O2FlTNvt9lzN7EkKgrUPMs0SH0M2p/KVoFfIYuI2ePzRmlpSzyz0XhOOsYaFCq3A bfgGUQurK580XefoxFurqYn1sgDC6+oUl4nR2qvUQmukA/91Bm0B5BNleahaBnGRy/Jp 9CHhXjfaP/Tybi6MtGKlPDBoL8U0XiQS8hIJyT9anHmO3kzEPGhq6z0V2R6l9Nn9LYyE 5VTCn31tKtBgRe9NlBIED2gKCPYwRBDfGr9vgPBITtfn0wGJ9eMIQbKI7rlK89G0vU5a 4WFw== X-Gm-Message-State: AOJu0YxO/ruyfXzswO8qDsMyIIiD4mt9ZQY1PLyH4zGHxZTw2FMl83+K B9q7VqAlKqvWvlN7Df6TRLeDPQfunK9RSgTD4l+QS8ZsCfkKZMJtKAAtWpt4vY3ZyfqVa5v1jBt Iel07 X-Gm-Gg: Acq92OE6G/Vp/y6lsalJGs+crhyJj63W2gH3BTr1ZRCXZetNwb+a3qpqbx2n8tdnUGb Utt2UZwl/dCbaVbXMZYSeh4VXoATHlNwrPX45mI11heMhQHJnlRxT4jx6y2t5sFy/bhTvDH0myy ZH6HrJlUN/xAq/7dIrySHr+oFMeo9Mmfru6oheto6Z8Q2bZCw+qNuqbcgxNFxRp8MTsP0vqXWy5 m4tg4zqalk0pFb7c8bE0uRBYSD5mKudU7iUccUBPiSZ/1vtx9Gdu8jhJkGMp5ms6pdGL9BDxAnp +Of+lf7JhJ1vswg215jlWd9TjoCm8625glf3nT66HOfRxdeVugbX32SjDMvZ28Qis8dcjvti1sa XfzwuJMZ2xz+ulOyEDsohwsONXdVgZNTUQYVaXbWkJf2G3Pb9c7IY4uKz7SD7t+v/szNcRVggv6 /SDjIFT4BxHw55nWzw9lUiCI95OO/UuplWNYWuh9i6bn3x8NZWm+uIR9x/g3GQ8KjfNcrkCujBZ OLJXgwluB870nicNY4qS32xgJt+7QqI2kE/PL74tSA= X-Received: by 2002:adf:f503:0:b0:45e:f2bd:2b16 with SMTP id ffacd0b85a97d-46030501b6bmr25122297f8f.18.1781108021053; Wed, 10 Jun 2026 09:13:41 -0700 (PDT) From: Peter Maydell To: qemu-devel@nongnu.org Subject: [PULL 71/71] target/arm: Enable FEAT_F8F16MM for -cpu max Date: Wed, 10 Jun 2026 17:12:02 +0100 Message-ID: <20260610161202.2235298-72-peter.maydell@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260610161202.2235298-1-peter.maydell@linaro.org> References: <20260610161202.2235298-1-peter.maydell@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=2a00:1450:4864:20::434; envelope-from=peter.maydell@linaro.org; helo=mail-wr1-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: 1781108437754158500 Content-Type: text/plain; charset="utf-8" From: Richard Henderson Reviewed-by: Peter Maydell Signed-off-by: Richard Henderson Message-id: 20260609192110.752384-46-richard.henderson@linaro.org Signed-off-by: Peter Maydell --- docs/system/arm/emulation.rst | 1 + linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 1 + 3 files changed, 3 insertions(+) diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 56da6baed9..a8072ddb67 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) 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 0f2ce592d1..f7a920a202 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1404,6 +1404,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 */ --=20 2.43.0