From nobody Sat May 30 19:23:38 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=1777005119; cv=none; d=zohomail.com; s=zohoarc; b=WqT2LAZrhFt0w5iIA3xe2ynZl1DKvdy/QhdIrF/T74WyzzpBAQyoU5OOPWmsa6djg5gAlWK2jufM0d2jbjlvyLJgiETzOQoHILigPeDFfn/n556VrhuN3T8biSJ4C+ozhPrtyU62qnf1qm/2OzZo+xp1WiRafLQlyO7d4ooPbZg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005119; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=/xapIpLETptineJX0lgqdbGa1HlQeIgwkY2ZGyDukvI=; b=gbNhgzw6+8W0nkpg4Qmx55fQlaULBdWW+5ghi0Po4C7P9xWy50mOszlOYt6Fl6D+KmUcWA0JtApqpeM46jesdlCItxG285hyBqrHw33DsQPI1zf9l6vYt7jHdeXK8ymTHbXk0D7/7YBx/yyH2iIoFkJ6RAsuoKklYc899DmBDx0= 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 1777005119280196.01109213518657; Thu, 23 Apr 2026 21:31:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Bm-0005lC-BT; Fri, 24 Apr 2026 00:30: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 1wG8Be-0005g6-Qh for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:48 -0400 Received: from mail-oa1-x33.google.com ([2001:4860:4864:20::33]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8BU-0002Vx-Vk for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:36 -0400 Received: by mail-oa1-x33.google.com with SMTP id 586e51a60fabf-42fc6923f38so1356068fac.1 for ; Thu, 23 Apr 2026 21:30:31 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.30.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:30:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005030; x=1777609830; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=/xapIpLETptineJX0lgqdbGa1HlQeIgwkY2ZGyDukvI=; b=Z3d84YEPyiVgnEt2zwSztCldzyHMHnTcW6dNt/iOYk3Zi/zFLOpU8alKpJp8gh5QK9 rHvKjz8X77kHS/jiW8GcijX4apHe1bYR3hsgxFgjn8wiDQwFmJvKlsDNQG+e9pyqTDgy RgyDMfUP0RvVcQPodtsJCG6IJl8sbZBOtcSsTGk8Q8TzGhNzBguQ9fNWB3oAwygP4SEe 2lLJAmvS6gfbCWAlnHn5oTnXdMZgZej5L/qWbKGLt9qCdi7oCCi9dAsWCozKQwF3SJOu LmWinaM818eOx2p5sE5mtx077uAUGhoMLDInZ27Gmbl3oOpV7ODw5ZeQM9lkPB9cVG5Q x8ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005030; x=1777609830; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=/xapIpLETptineJX0lgqdbGa1HlQeIgwkY2ZGyDukvI=; b=VqrWeAXuM3h/74iCDk7Sh81q+MSPVFEFaAq7PdeVyvzshpUeQRw7VDNTiMwAAUjNkt F8ZZcntB2lKZ395nlAVthKUXwnf4cFsfcED6N6EgL1rnKaokSKsaYYVJxDoMLn0sI5fu uvT/xsyNoRQiA/tlkHf9azhOcZucDVYkU/Sjd4E7Df2peZarihxDk9ITCaZxGDsDknHA upIJAlShkEPuZgatGv/8q9XG8OsPhzudyee8Fe+FC65mutAdHRPGfxBHOCO4ODb00TqU a4bWKHzsU8f7hxMwhWgCuqsLdShJyM/ub9WW2L8ALyJ+/Rw+6mdoOYD9vkFrSs60gXBg VwSA== X-Gm-Message-State: AOJu0Ywn88MatVlzhoRYYe/34Amec+jqUzZbDiZzHsP7GzayBDayrG3X KRgGN09OgnjrgpJYG8CdXzC2MZMNGZO9Y0DC+mZ3uWpjdFot8+LoEI0dVc1QCfOFeTkuIr4kgCz Via9HcpQ= X-Gm-Gg: AeBDieuUY6IxFjIh+AIxThwPIm2O4xHB6cZStycRZ98ZXIbvOQiyS2NT/hXzd3liiw3 TAFJSt1o4nuQ1SMGvrvA54IDP2i2QLXF2pm+hq0hXRHf3HVj4a7he0acO3bXFat4CQwUhwQZnCS l9RtJZWsEnEL9VDqoi3F5D2yRfch3zku5S91R0S6nfsuidctEU+fcYpws4IeWVs6QDFYo63V1Ed vR3uokvRzC+ZJ83rCgtvbyC/6lFoN7Rq1H3AIBK7zqKk0jOJtFqig3cYGHAE6adsCr0DVuo4d6t Y3tDE0aRqMK5QiGPErTnTsQ1uUtgxoRiqKVPE6wNphCycEKJGRodwU+0xQDMgOYzSzfviBfWm2o Fl0CRDT12Ysn040Y3mdW8WF4Rr56VLrk0Uu5spyVDeoHBfADgYZXyhrph7zb2RpM4xLadiUvFvf KjO5P1W/DLReo6X4ApvaTk4joOnbpyJUkeVlBf1mFU9c8tOEnjrkVO42y3kuTZCRZ6J9+RTUsw X-Received: by 2002:a05:6870:b50e:b0:423:4260:2e0d with SMTP id 586e51a60fabf-42a9986c2fcmr15017337fac.8.1777005030067; Thu, 23 Apr 2026 21:30:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 01/40] target/arm: Implement ID_AA64ISAR3 Date: Fri, 24 Apr 2026 14:29:35 +1000 Message-ID: <20260424043014.46305-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::33; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x33.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005121137158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 9 +++++++++ target/arm/helper.c | 8 ++++++-- target/arm/cpu-sysregs.h.inc | 1 + 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index b683c9551a..b165fe0b1a 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -244,6 +244,15 @@ FIELD(ID_AA64ISAR2, CSSC, 52, 4) FIELD(ID_AA64ISAR2, LUT, 56, 4) FIELD(ID_AA64ISAR2, ATS1A, 60, 4) =20 +FIELD(ID_AA64ISAR3, CPA, 0, 4) +FIELD(ID_AA64ISAR3, FAMINMAX, 4, 4) +FIELD(ID_AA64ISAR3, TLBIW, 8, 4) +FIELD(ID_AA64ISAR3, PACM, 12, 4) +FIELD(ID_AA64ISAR3, LSFE, 16, 4) +FIELD(ID_AA64ISAR3, OCCMO, 20, 4) +FIELD(ID_AA64ISAR3, LSUI, 24, 4) +FIELD(ID_AA64ISAR3, FPRCVT, 28, 4) + FIELD(ID_AA64PFR0, EL0, 0, 4) FIELD(ID_AA64PFR0, EL1, 4, 4) FIELD(ID_AA64PFR0, EL2, 8, 4) diff --git a/target/arm/helper.c b/target/arm/helper.c index 7389f2988c..08285b69a7 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6552,11 +6552,11 @@ void register_cp_regs_for_features(ARMCPU *cpu) .access =3D PL1_R, .type =3D ARM_CP_CONST, .accessfn =3D access_tid3, .resetvalue =3D GET_IDREG(isar, ID_AA64ISAR2)}, - { .name =3D "ID_AA64ISAR3_EL1_RESERVED", .state =3D ARM_CP_STA= TE_AA64, + { .name =3D "ID_AA64ISAR3_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 0, .crm =3D 6, .opc2 =3D = 3, .access =3D PL1_R, .type =3D ARM_CP_CONST, .accessfn =3D access_tid3, - .resetvalue =3D 0 }, + .resetvalue =3D GET_IDREG(isar, ID_AA64ISAR3) }, { .name =3D "ID_AA64ISAR4_EL1_RESERVED", .state =3D ARM_CP_STA= TE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 0, .crm =3D 6, .opc2 =3D = 4, .access =3D PL1_R, .type =3D ARM_CP_CONST, @@ -6785,6 +6785,10 @@ void register_cp_regs_for_features(ARMCPU *cpu) R_ID_AA64ISAR2_BC_MASK | R_ID_AA64ISAR2_RPRFM_MASK | R_ID_AA64ISAR2_CSSC_MASK }, + { .name =3D "ID_AA64ISAR3_EL1", + .exported_bits =3D R_ID_AA64ISAR3_FAMINMAX_MASK | + R_ID_AA64ISAR3_LSFE_MASK | + R_ID_AA64ISAR3_FPRCVT_MASK }, { .name =3D "ID_AA64ISAR*_EL1_RESERVED", .is_glob =3D true }, }; diff --git a/target/arm/cpu-sysregs.h.inc b/target/arm/cpu-sysregs.h.inc index 3d1ed40f04..b99579f773 100644 --- a/target/arm/cpu-sysregs.h.inc +++ b/target/arm/cpu-sysregs.h.inc @@ -10,6 +10,7 @@ DEF(ID_AA64AFR1_EL1, 3, 0, 0, 5, 5) DEF(ID_AA64ISAR0_EL1, 3, 0, 0, 6, 0) DEF(ID_AA64ISAR1_EL1, 3, 0, 0, 6, 1) DEF(ID_AA64ISAR2_EL1, 3, 0, 0, 6, 2) +DEF(ID_AA64ISAR3_EL1, 3, 0, 0, 6, 3) DEF(ID_AA64MMFR0_EL1, 3, 0, 0, 7, 0) DEF(ID_AA64MMFR1_EL1, 3, 0, 0, 7, 1) DEF(ID_AA64MMFR2_EL1, 3, 0, 0, 7, 2) --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005102; cv=none; d=zohomail.com; s=zohoarc; b=BtsTeboFrzpDbHk871c56Tz5aSRX6XF/07vDasS0NBNisg0LBqzqKJIeZJUx2sTGTFBOG4bRXUB/jSe6kIWbToh30IC2OFWPZweoovqR0FZPr419qf63QHEEN5tT7irBukZYwLx1l2Lohn4l1gUQWpiGZ0E3SXqi/p50ydTbM7c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005102; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=6OzjXNOF7e7PmI7VGG8IHz+TjPiZxP/MOw4JYvUhc3E=; b=aYfQjeGD1fHE8N4qdyBYgnjN+XMmDCKEoKOde6jk3Vf7F2uBf1/CXwjWn5VhXh/trA6+zgVn/vkZDwxJrtWE/9VTeczIqJFASHohxpTud2mqpPyaezP+v/9xcCnl0WSy/dfqlaeTtRAeFiRhroCJRFq/7gTrdgqDz0IGt/hxRu8= 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 1777005102775519.5617820095513; Thu, 23 Apr 2026 21:31:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Bn-0005mK-EJ; Fri, 24 Apr 2026 00:30: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 1wG8Bl-0005jD-Id for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:49 -0400 Received: from mail-oi1-x231.google.com ([2607:f8b0:4864:20::231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Be-0002X3-In for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:49 -0400 Received: by mail-oi1-x231.google.com with SMTP id 5614622812f47-479aa2dbea2so2684563b6e.0 for ; Thu, 23 Apr 2026 21:30:35 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.30.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:30:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005034; x=1777609834; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=6OzjXNOF7e7PmI7VGG8IHz+TjPiZxP/MOw4JYvUhc3E=; b=nZVy2xroJiw8JJMeZRm3PE1+PyNkyXG2wtvPMLR1c32t39YPPsXujnMn5GJH2Z74+z g3546b1RWav0KPAA7YTw0zr153kBgF4l37OBOSTrkSCzjqvsomHpAfCmWTOhPKbPIvW7 9vnd+mYpjWNgb2KfM/2mgqmUwXYVgr1pxLGfWavL1lIq3433i0veaCaQgkvXQSAPpzFm mzM0NE/Vtiy6BKoAQ1rKBQRh95kx4vODbdx6V9TKmdvnIE03ABTHaCCFFvu4nSkASzN7 FHHQhcW0kYRc+gRobAt2WRo3BcynVFyygz92OJEy4veCVv9i503SScj9QHLgs0xHXgHO jheA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005034; x=1777609834; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=6OzjXNOF7e7PmI7VGG8IHz+TjPiZxP/MOw4JYvUhc3E=; b=MTD/kVZbvEVPFPs284syqhhnMxHZdv0VWUm1XLnMwZpRLyotCuzpiEII4CzTdYFmm/ tfAP3H03KERe5/yCd415JN7nu2399fMOdHjYHkPMoxknYo2/ia97Eh3A3qCdMhk5VGfr uwh7kbIt3nZVZZ6Yc9N1NmHJqrVHm70MKOfS9QowUdCyYHsCzm3T2/xXvqCEgHjM9B1o WycPHoui4ILV67hQW5o+Ggdj41uvF6mZDYLpqRHBia4Sz0ttxLNLehcg9/g5MSGotF5k nyS8c74HlmGq9xZKZz8CX5j4HkCqXJNECYGkGyIg/h+G3fq4ziP4c3bnQC538jA55y9u 6lDA== X-Gm-Message-State: AOJu0YztiFBKL1MEmj4JHN5cetgQcMxVBxMsF43mH6WHaKziCxwuDHGz FnaHT+gShuwdePgOjEsbwiPAbcw6DS9AhPOlI/urhRirNn9rMqTccg3XlZw+FvLAF0jv062dRGe flXC+lxw= X-Gm-Gg: AeBDietr6yQ46p1xrPHWFl4vZx2vn1E8B9RxgEb13/OZYxMsxFER5gRDqGxP4yaBEcW Yiclro782lxXdTOa3nT50iaSatkrkriZZPmnpIt2dusbbkavigIle2ucm9qxeCur31GNHUx0TF2 EQWds/rMd/l+ErYj9lnanu//ZKc1Gr9PEGJY3OQwnR8Uecz06VIl9CLWzJxcMnARsLdpDe/+098 B96rVLoHRBgQtNvbs2NobH7aFfQtrNOXnartd/IKq9gazw5X1Quw2fjF1NVR1S56b8iiJIMXFhg n03XyCHkJzRiv/RcjCyLfiaGPjmAroPJbB+dJCOEqCHlJsjVC4wug4YmwL0Zi1RQp6o81KhpzvW yEtqtpRSkwGEsDznXGSfmZMab0ua2AiWRUhbIAzsZQ9OV1lbPm3EgoOKo6KcfPlUw4svNmkIn1M A1+262XOTiVkrG+k9gz1VmpENcbuIOjWAwLih9+IfLlNq5bG4ZzXy4WVq76dhbQQ== X-Received: by 2002:a05:6870:b48c:b0:41b:f7f5:e887 with SMTP id 586e51a60fabf-42aded12d93mr17655365fac.24.1777005034071; Thu, 23 Apr 2026 21:30:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 02/40] target/arm: Implement FEAT_FAMINMAX for AdvSIMD Date: Fri, 24 Apr 2026 14:29:36 +1000 Message-ID: <20260424043014.46305-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::231; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x231.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005104470154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-a64-defs.h | 7 +++++++ target/arm/tcg/vec_internal.h | 7 +++++++ target/arm/tcg/translate-a64.c | 14 +++++++++++++ target/arm/tcg/vec_helper64.c | 35 ++++++++++++++++++++++++++++++++ target/arm/tcg/a64.decode | 5 +++++ 6 files changed, 73 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index b165fe0b1a..7c96b26788 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1053,6 +1053,11 @@ static inline bool isar_feature_aa64_ats1a(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64ISAR2, ATS1A); } =20 +static inline bool isar_feature_aa64_faminmax(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64ISAR3, FAMINMAX) !=3D 0; +} + static inline bool isar_feature_aa64_fp_simd(const ARMISARegisters *id) { /* We always set the AdvSIMD and FP fields identically. */ diff --git a/target/arm/tcg/helper-a64-defs.h b/target/arm/tcg/helper-a64-d= efs.h index b6008b5a3a..eb270cf58b 100644 --- a/target/arm/tcg/helper-a64-defs.h +++ b/target/arm/tcg/helper-a64-defs.h @@ -145,6 +145,13 @@ DEF_HELPER_FLAGS_5(gvec_fmulx_idx_h, TCG_CALL_NO_RWG, = void, ptr, ptr, ptr, fpst, DEF_HELPER_FLAGS_5(gvec_fmulx_idx_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) DEF_HELPER_FLAGS_5(gvec_fmulx_idx_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= fpst, i32) =20 +DEF_HELPER_FLAGS_5(gvec_famax_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fps= t, i32) +DEF_HELPER_FLAGS_5(gvec_famin_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fps= t, i32) +DEF_HELPER_FLAGS_5(gvec_famax_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fps= t, i32) +DEF_HELPER_FLAGS_5(gvec_famin_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fps= t, i32) +DEF_HELPER_FLAGS_5(gvec_famax_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fps= t, i32) +DEF_HELPER_FLAGS_5(gvec_famin_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fps= t, i32) + #ifndef CONFIG_USER_ONLY DEF_HELPER_2(exception_return, void, env, i64) #endif diff --git a/target/arm/tcg/vec_internal.h b/target/arm/tcg/vec_internal.h index 4edd2b4fc1..5c3f51eed3 100644 --- a/target/arm/tcg/vec_internal.h +++ b/target/arm/tcg/vec_internal.h @@ -342,6 +342,13 @@ bfloat16 helper_sme2_ah_fmin_b16(bfloat16 a, bfloat16 = b, float_status *fpst); float32 sve_f16_to_f32(float16 f, float_status *fpst); float16 sve_f32_to_f16(float32 f, float_status *fpst); =20 +float16 float16_famax(float16, float16, float_status *); +float16 float16_famin(float16, float16, float_status *); +float32 float32_famax(float32, float32, float_status *); +float32 float32_famin(float32, float32, float_status *); +float64 float64_famax(float64, float64, float_status *); +float64 float64_famin(float64, float64, float_status *); + /* * Decode helper functions for predicate as counter. */ diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 5d261a5e32..9f375b05ca 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6477,6 +6477,20 @@ static gen_helper_gvec_3_ptr * const f_vector_fminnm= p[3] =3D { }; TRANS(FMINNMP_v, do_fp3_vector, a, 0, f_vector_fminnmp) =20 +static gen_helper_gvec_3_ptr * const f_vector_famax[3] =3D { + gen_helper_gvec_famax_h, + gen_helper_gvec_famax_s, + gen_helper_gvec_famax_d, +}; +TRANS_FEAT(FAMAX, aa64_faminmax, do_fp3_vector, a, 0, f_vector_famax) + +static gen_helper_gvec_3_ptr * const f_vector_famin[3] =3D { + gen_helper_gvec_famin_h, + gen_helper_gvec_famin_s, + gen_helper_gvec_famin_d, +}; +TRANS_FEAT(FAMIN, aa64_faminmax, do_fp3_vector, a, 0, f_vector_famin) + static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2) { if (fp_access_check(s)) { diff --git a/target/arm/tcg/vec_helper64.c b/target/arm/tcg/vec_helper64.c index 249a257177..b5ad67b5e0 100644 --- a/target/arm/tcg/vec_helper64.c +++ b/target/arm/tcg/vec_helper64.c @@ -140,3 +140,38 @@ void HELPER(simd_tblx)(void *vd, void *vm, CPUARMState= *env, uint32_t desc) memcpy(vd, &result, 16); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +#define DO_FAMINMAX(NAME, TYPE, FN) \ +TYPE TYPE##_##NAME(TYPE a, TYPE b, float_status *s) \ +{ \ + bool save_fz =3D get_flush_to_zero(s); \ + bool save_fiz =3D get_flush_inputs_to_zero(s); \ + int new_flags, save_flags =3D get_float_exception_flags(s); \ + \ + set_flush_to_zero(0, s); \ + set_flush_inputs_to_zero(0, s); \ + TYPE r =3D TYPE##_##FN(TYPE##_abs(a), TYPE##_abs(b), s); \ + \ + set_flush_to_zero(save_fz, s); \ + set_flush_inputs_to_zero(save_fiz, s); \ + new_flags =3D get_float_exception_flags(s); \ + new_flags =3D (save_flags & float_flag_input_denormal_used) \ + | (new_flags & ~float_flag_input_denormal_used); \ + set_float_exception_flags(new_flags, s); \ + \ + return r; \ +} + +DO_FAMINMAX(famax, float16, max) +DO_FAMINMAX(famin, float16, min) +DO_FAMINMAX(famax, float32, max) +DO_FAMINMAX(famin, float32, min) +DO_FAMINMAX(famax, float64, max) +DO_FAMINMAX(famin, float64, min) + +DO_3OP(gvec_famax_h, float16_famax, float16) +DO_3OP(gvec_famin_h, float16_famin, float16) +DO_3OP(gvec_famax_s, float32_famax, float32) +DO_3OP(gvec_famin_s, float32_famin, float32) +DO_3OP(gvec_famax_d, float64_famax, float64) +DO_3OP(gvec_famin_d, float64_famin, float64) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 01b1b3e38b..666a293540 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1193,6 +1193,11 @@ RSUBHN 0.10 1110 ..1 ..... 01100 0 ..... ..= ... @qrrr_e PMULL_p8 0.00 1110 001 ..... 11100 0 ..... ..... @qrrr_b PMULL_p64 0.00 1110 111 ..... 11100 0 ..... ..... @qrrr_b =20 +FAMAX 0.00 1110 110 ..... 00011 1 ..... ..... @qrrr_h +FAMAX 0.00 1110 1.1 ..... 11011 1 ..... ..... @qrrr_sd +FAMIN 0.10 1110 110 ..... 00011 1 ..... ..... @qrrr_h +FAMIN 0.10 1110 1.1 ..... 11011 1 ..... ..... @qrrr_sd + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005058; cv=none; d=zohomail.com; s=zohoarc; b=bvqubVRNe2ZSoqwI70oddslJGM2A+LXzO8jZ5YCLRUrYA7troZNZuL970+shHud0Szjwo+lOCjOQjQO1ARwSn8Q5fV7inWe6dYKRfjSip0Hl4GH+jMltrP23tVtYCA3C9HSWGja0yX8n4p1j57QZOHsbsCvHVUFqLYCeCVbyz94= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005058; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=qdQBWzWrlCQOyL6REc2mM0GoH8jWUoG58/2k/M4dy88=; b=DlT5WzwQKjFq6HgluaZS5sSWXYjzGnxi21tQstOnDYZx+1lv9dEeVTTSVXNHwvBKp0JPi+V8iq7iZ5tQE7in2PIePCtbik5dFGBP0s6Iep+rxyaFhRLwfvSgPplggLcpwUvoWF+ayT4br8KhXqZNd9bf5SNGtVva4LDhPTWLsDc= 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 1777005058642710.090185943322; Thu, 23 Apr 2026 21:30:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Bl-0005ik-Eb; Fri, 24 Apr 2026 00:30:49 -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 1wG8Bj-0005gG-Tl for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:48 -0400 Received: from mail-oa1-x2d.google.com ([2001:4860:4864:20::2d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Be-0002XV-Ix for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:47 -0400 Received: by mail-oa1-x2d.google.com with SMTP id 586e51a60fabf-404254ffe8aso5224906fac.0 for ; Thu, 23 Apr 2026 21:30:38 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.30.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:30:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005038; x=1777609838; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=qdQBWzWrlCQOyL6REc2mM0GoH8jWUoG58/2k/M4dy88=; b=CRMk5ZXob1Q76iOJU3ZI8aVrdcCor0ebzKV2kSmhM+D9AST8VnGfO6F9gzLXAzC0rx Fzv80ZNU9BQisWIIuYRE4QtK737J+1re65+z0cf3oxtW20fJ1NaqugP4uV7pDor75n65 mAdxWheziHU75d0R7QKwDKUxF/It75JPAk/WjnEfBQngAGV59UygTv0yiyOyTcG19Yh9 JQZYHlY0dsQ5C0RXyByZl/sRtWcoRGGpg0yJOBuWt3h+sXrtVYi7xRQznvP1d0oJ0UCe ldrg13etKp0Z+FRvcselMGOg2cPB6VmyDq1N7eneYdAVqNObvrOmFgTJyYCclcUZP4hs JHag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005038; x=1777609838; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=qdQBWzWrlCQOyL6REc2mM0GoH8jWUoG58/2k/M4dy88=; b=X5zhTMvbokuR3NnyVgdr3pRLAtpnD6AjfhZlRpihN/i5om/GgG3gfDmYwqi01l3PVC 1kqWhgnrW2n1pe70adr2U+0F8WVV0ThowfF942eEB4aiynF1aE6wRT44pHCPjl8wJktT qoE5nIgcwuSXHcfNMy/wxFgA/lqji8VS90Bzdm2wWvwYdnb3hzPMTJmkVmaDIafe5Cb9 P1Aiq90CdvNovcSDH6uV9AkrsQCdiR42dMXyBte8hCXmRnmUiPSTHQGNxrWpdbZaaRfy pRmBd4xsT6o225dyBFB3sODMFMp8RaeY1l7CUhowjDQN3AKJO4lpVe8zMCIBcajlmu3f s5ZA== X-Gm-Message-State: AOJu0YylwoRfBxxYVq9w0wVikRZdUXmcpvwmv/LRE51t52c8MhUxH6mz RJpKhlICA6S7mb7Uxd2xgYddI/nE6Bee9fTJnoaN9yD8tATO0NumcvRTP2l1KHmH76YBPT2BjgN tRaU7FIc= X-Gm-Gg: AeBDiesilMtBKze985WkG31peGGZFO/OQMay6BnFr3jQCvHzMQhUAPCQYKSR/kGN8OT lk3tyEoxZ9eQPI0SD4zS6sDq2/lsDG/hnIJjCZSivwdwlX3a4ietogmg75k0GnzRBoIPdCMQK/X 6ax5ooh2MFniIL/DZsr5LL74tVLSFs+r/JOD7d5rCNLGkdJEMBHX0d238lmJEwc91aqcQl1rxNR vdj1FKhMhAyOS/q8/BQZdpMFUT9sGnzUMpGZ7qCSoY89IMZQSIDaD764S7vG1MrF731KBxovEgl OS/drYDssNMMSqEfYADWcbmyxJQsQF+RQfowlLkGkHoEtuO4xOKKq0Yq7pCb8Cjz5bx5yi1ychw ycLV3G0zmI8NlEriI12UNMqQRdW12Npyxsd7D2Z3g5rQJsdIv0F6mhw/j4EcuprS7IgwppWBgam U7M6ZktCG8SzhESwNe1mdtAjRj7/pkGM68dewItTj0/Ki/uV/toIAHhBo9of/slA== X-Received: by 2002:a05:6870:9f04:b0:423:3af4:de45 with SMTP id 586e51a60fabf-42aa3000168mr17110089fac.26.1777005037683; Thu, 23 Apr 2026 21:30:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 03/40] target/arm: Implement FEAT_FAMINMAX for SME Date: Fri, 24 Apr 2026 14:29:37 +1000 Message-ID: <20260424043014.46305-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2d; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x2d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005061190158500 Content-Type: text/plain; charset="utf-8" Since there is no bfloat16 variant of FAMINMAX, check for missing function pointer in do_z2z_nn_fpst. Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sme.c | 23 +++++++++++++++++++++-- target/arm/tcg/sme.decode | 5 +++++ 3 files changed, 31 insertions(+), 2 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 7c96b26788..a2ce38faa3 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1574,6 +1574,11 @@ static inline bool isar_feature_aa64_sme2_f64f64(con= st ARMISARegisters *id) return isar_feature_aa64_sme2(id) && isar_feature_aa64_sme_f64f64(id); } =20 +static inline bool isar_feature_aa64_sme2_faminmax(const ARMISARegisters *= id) +{ + return isar_feature_aa64_sme2(id) && isar_feature_aa64_faminmax(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/translate-sme.c b/target/arm/tcg/translate-sme.c index 7d25ac5a51..ca6b130cfe 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -19,6 +19,7 @@ =20 #include "qemu/osdep.h" #include "cpu.h" +#include "helper-a64.h" #include "helper-sme.h" #include "helper-sve.h" #include "translate.h" @@ -741,9 +742,12 @@ static bool do_z2z_nn_fpst(DisasContext *s, arg_z2z_en= *a, gen_helper_gvec_3_ptr * const fns[4]) { int esz =3D a->esz, n, dn, dm, vsz; - gen_helper_gvec_3_ptr *fn; + gen_helper_gvec_3_ptr *fn =3D fns[esz]; TCGv_ptr fpst; =20 + if (fn =3D=3D NULL) { + return false; + } if (esz =3D=3D MO_8 && !dc_isar_feature(aa64_sme_b16b16, s)) { return false; } @@ -752,7 +756,6 @@ static bool do_z2z_nn_fpst(DisasContext *s, arg_z2z_en = *a, } =20 fpst =3D fpstatus_ptr(esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64); - fn =3D fns[esz]; n =3D a->n; dn =3D a->zdn; dm =3D a->zm; @@ -811,6 +814,22 @@ static gen_helper_gvec_3_ptr * const f_vector_fminnm[4= ] =3D { TRANS_FEAT(FMINNM_n1, aa64_sme2, do_z2z_n1_fpst, a, f_vector_fminnm) TRANS_FEAT(FMINNM_nn, aa64_sme2, do_z2z_nn_fpst, a, f_vector_fminnm) =20 +static gen_helper_gvec_3_ptr * const f_vector_famax[4] =3D { + NULL, + gen_helper_gvec_famax_h, + gen_helper_gvec_famax_s, + gen_helper_gvec_famax_d, +}; +TRANS_FEAT(FAMAX_nn, aa64_sme2_faminmax, do_z2z_nn_fpst, a, f_vector_famax) + +static gen_helper_gvec_3_ptr * const f_vector_famin[4] =3D { + NULL, + gen_helper_gvec_famin_h, + gen_helper_gvec_famin_s, + gen_helper_gvec_famin_d, +}; +TRANS_FEAT(FAMIN_nn, aa64_sme2_faminmax, do_z2z_nn_fpst, a, f_vector_famin) + /* Add/Sub vector Z[m] to each Z[n*N] with result in ZA[d*N]. */ static bool do_azz_n1(DisasContext *s, arg_azz_n *a, int esz, GVecGen3FnVar *fn) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 6bb9aa2a90..9dec7318a4 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -286,6 +286,11 @@ URSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... = 1 @z2z_4x4 SQDMULH_nn 1100000 1 .. 1 ..... 1011.1 00000 .... 0 @z2z_2x2 SQDMULH_nn 1100000 1 .. 1 ..... 1011.1 00000 .... 0 @z2z_4x4 =20 +FAMAX_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 0 @z2z_2x2 +FAMAX_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 0 @z2z_4x4 +FAMIN_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 1 @z2z_2x2 +FAMIN_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 1 @z2z_4x4 + ### SME2 Multi-vector Multiple and Single Array Vectors =20 &azz_n n off rv zn zm --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005275; cv=none; d=zohomail.com; s=zohoarc; b=XbWjTSIwqgPyeHQDF+bMFZzQ0J8yH9wVFSP0K7dpP0Z22fdiDyRm+MPtHSUMJ1xCVz767n3pKCo+K/u4fd8Y3gIxF7o4Zp1E6Ecxhdbbtsc6U6gcnoseTRbpCxuWz8eQq0twAHDQgAl4JTHUkY32nFPp0MLZz3T+13SMON90GsA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005275; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=o688HWl5XrNHYPI7Z2Xn/6ecck2Zhe/qTWuxAA2gZDk=; b=KIdu0Ccwy4tFOz2QiLWwuPH0cLG/ATRbxhXTe1dCryIPHimM4/XwBJ0ipgfNrmiiUN+4sy1A9/VDMeXdSfrTI8YU5NV6MQYoQHiZqxYHv10O4YC94HA2LwFhF9yF+QTF656c/LMqLdGbKj4OUzhWaoFrV+NAaTFJUj2hAzV6QLs= 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 1777005275864315.8771464940336; Thu, 23 Apr 2026 21:34:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Bm-0005mF-Up; Fri, 24 Apr 2026 00:30: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 1wG8Bl-0005j9-I2 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:49 -0400 Received: from mail-oa1-x2b.google.com ([2001:4860:4864:20::2b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Bi-0002YG-KQ for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:49 -0400 Received: by mail-oa1-x2b.google.com with SMTP id 586e51a60fabf-42321c8b8f5so6146911fac.1 for ; Thu, 23 Apr 2026 21:30:44 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.30.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:30:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005042; x=1777609842; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=o688HWl5XrNHYPI7Z2Xn/6ecck2Zhe/qTWuxAA2gZDk=; b=XWd1AnBmJqCVi8SEC8u4S+wcD9JGEuUpXBAwzab2XjGsnIhXhZTydaULzBVwGjhPaI p6PBF/CDjFVLTm3VFOMm28jXsHERCVV+tMv+ECTpd5/owKWzoMhzxPOGXdPhFDNCRHKl eKHIdxvVnQVJkBKbBLD5s0YQctrvCAUmZfEIAoM+i3pzAOr4Rlnsid3gO8AvtTOrWEG8 ShseKZjtFwd9M56jP5t98YOw9OXPvaSGTvlnVQUY55DlA/kok4krtTSJdfhsYR34rX0m 26HLS2eI5Siw71crjfDNcMTE/lz49pIqA6CJplv2vZ13Yb5Do/xyr7oHqrlza5H8shW4 PfFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005042; x=1777609842; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=o688HWl5XrNHYPI7Z2Xn/6ecck2Zhe/qTWuxAA2gZDk=; b=hA4kISJ4BfGJQ47BVsNRjEcYvko57aQ7aBzplaXsGuo8/c40YRfKKvOC26i5HzfxGG qTRyDpDnOO4AyWVeKfx7dVECiM3ZCtbBramBCnybhRu0thyTii0AjXTOIAE2tSTSxw/t NEwqwjckwYFKJyeJqmupPxwXv8bL8bRqotxTAnvfZpmV9A0OgcrJVg78WXPEeQvNgvsm TbxCx/MZ6nrV6BrKZHYtFepoflUqYl6uY03lZ5PQ1k17Ul4p3CFir6+7OlbeYHPbXETR 3+Y4fCYXUK2uZqnjvBbxn+Q2sJotoml2mnZCCnA2tc/vlY/QXKY9MnK9f2mdQrWnW9XE QNoA== X-Gm-Message-State: AOJu0YzCZ5AJo1eR9xi/TohHhOHNk2iY/dzBTHAtax201rdMja12o1bT U9SwEQlzdV9zk7XYhQO70Gl7xU3OrdzjkR7DUykKfXBj7oKdBefi3XhNHWTTcQMZT2mG1LFolto MBz+yC/8= X-Gm-Gg: AeBDieuB7lM+nXJzTTH7VzQAWa+B5YsC2J+8tgCxTJ3RV2FHBOVXSMoLVrRrNzcopEU H3sDWVTX0w8IaSNm0Zvt7tu/1E8cir0lrClXRnsMvvoiQ/JkzCOCo7tH7T5JuOq9pkBfNKgEvk5 fme7Kp5xdZaZ2VXuy2QbkSpDnFXs3NcODGUFr0gD1zjkXjRHiOyfCHBImoWzY/ow114nQ3XPR6J CoPS4UF38LbYXpcEoKfn5EaHMMWtt0gdmubHc50bLF6nwviMYPnBNbvF8J2DCpWNXE4PVyDaLNI PmjpNaXFREWD9Cr0WBmf5GXMqWpJHUDr4q96ln/LTKeJXNryLAJdxDIygxcHVbbjuSdFrI1j9Q6 xqaH2ZVarZE7sYtUAGqCjDKT0o+FikOCS/HQYci2DzBA+OfJo0whJXGr3DKyNMzInKKdYqSW3Q+ KfJMGVhWJWehb3Cy0PEEmJard/rnP0oliMc8yVgWCMWihzbAxluGNuGuaf6DUDlw== X-Received: by 2002:a05:6870:6111:b0:423:b4e9:b8fa with SMTP id 586e51a60fabf-42a99ae67f4mr15681021fac.23.1777005041715; Thu, 23 Apr 2026 21:30:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 04/40] target/arm: Implement FEAT_FAMINMAX for SVE Date: Fri, 24 Apr 2026 14:29:38 +1000 Message-ID: <20260424043014.46305-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2b; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x2b.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: 1777005276978154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 11 +++++++++++ target/arm/tcg/helper-sve-defs.h | 14 ++++++++++++++ target/arm/tcg/sve_helper.c | 8 ++++++++ target/arm/tcg/translate-sve.c | 2 ++ target/arm/tcg/sve.decode | 2 ++ 5 files changed, 37 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index a2ce38faa3..03631018d7 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1549,6 +1549,11 @@ static inline bool isar_feature_aa64_sme_or_sve2(con= st ARMISARegisters *id) return isar_feature_aa64_sme(id) || isar_feature_aa64_sve2(id); } =20 +static inline bool isar_feature_aa64_sme2_or_sve2(const ARMISARegisters *i= d) +{ + return isar_feature_aa64_sme2(id) || isar_feature_aa64_sve2(id); +} + static inline bool isar_feature_aa64_sme_or_sve2p1(const ARMISARegisters *= id) { return isar_feature_aa64_sme(id) || isar_feature_aa64_sve2p1(id); @@ -1589,6 +1594,12 @@ 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_sme2_or_sve2_faminmax(const ARMISARegisters *id) +{ + return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_faminma= x(id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-sve-defs.h b/target/arm/tcg/helper-sve-d= efs.h index c3541a8ca8..1eebb64a29 100644 --- a/target/arm/tcg/helper-sve-defs.h +++ b/target/arm/tcg/helper-sve-defs.h @@ -3166,3 +3166,17 @@ DEF_HELPER_FLAGS_5(sve2p1_st1ss_le_c, TCG_CALL_NO_WG= , void, env, ptr, tl, i32, i DEF_HELPER_FLAGS_5(sve2p1_st1ss_be_c, TCG_CALL_NO_WG, void, env, ptr, tl, = i32, i64) DEF_HELPER_FLAGS_5(sve2p1_st1dd_le_c, TCG_CALL_NO_WG, void, env, ptr, tl, = i32, i64) DEF_HELPER_FLAGS_5(sve2p1_st1dd_be_c, TCG_CALL_NO_WG, void, env, ptr, tl, = i32, i64) + +DEF_HELPER_FLAGS_6(sve2_famax_h, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) +DEF_HELPER_FLAGS_6(sve2_famax_s, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) +DEF_HELPER_FLAGS_6(sve2_famax_d, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) + +DEF_HELPER_FLAGS_6(sve2_famin_h, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) +DEF_HELPER_FLAGS_6(sve2_famin_s, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) +DEF_HELPER_FLAGS_6(sve2_famin_d, TCG_CALL_NO_RWG, + void, ptr, ptr, ptr, ptr, fpst, i32) diff --git a/target/arm/tcg/sve_helper.c b/target/arm/tcg/sve_helper.c index 062d8881bd..9968600f75 100644 --- a/target/arm/tcg/sve_helper.c +++ b/target/arm/tcg/sve_helper.c @@ -4742,6 +4742,14 @@ DO_ZPZZ_FP(sve_fmulx_h, uint16_t, H1_2, helper_advsi= md_mulxh) DO_ZPZZ_FP(sve_fmulx_s, uint32_t, H1_4, helper_vfp_mulxs) DO_ZPZZ_FP(sve_fmulx_d, uint64_t, H1_8, helper_vfp_mulxd) =20 +DO_ZPZZ_FP(sve2_famax_h, uint16_t, H1_2, float16_famax) +DO_ZPZZ_FP(sve2_famax_s, uint32_t, H1_4, float32_famax) +DO_ZPZZ_FP(sve2_famax_d, uint64_t, H1_8, float64_famax) + +DO_ZPZZ_FP(sve2_famin_h, uint16_t, H1_2, float16_famin) +DO_ZPZZ_FP(sve2_famin_s, uint32_t, H1_4, float32_famin) +DO_ZPZZ_FP(sve2_famin_d, uint64_t, H1_8, float64_famin) + #undef DO_ZPZZ_FP =20 /* Three-operand expander, with one scalar operand, controlled by diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 5bace3fda1..756c4373b5 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4252,6 +4252,8 @@ DO_ZPZZ_AH_FP(FABD, aa64_sme_or_sve, sve_fabd, sve_ah= _fabd) DO_ZPZZ_FP(FSCALE, aa64_sme_or_sve, sve_fscalbn) DO_ZPZZ_FP(FDIV, aa64_sme_or_sve, sve_fdiv) DO_ZPZZ_FP(FMULX, aa64_sme_or_sve, sve_fmulx) +DO_ZPZZ_FP(FAMAX, aa64_sme2_or_sve2_faminmax, sve2_famax) +DO_ZPZZ_FP(FAMIN, aa64_sme2_or_sve2_faminmax, sve2_famin) =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/sve.decode b/target/arm/tcg/sve.decode index ab63cfaa0f..078a085a79 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1130,6 +1130,8 @@ FSCALE 01100101 .. 00 1001 100 ... ..... ...= .. @rdn_pg_rm FMULX 01100101 .. 00 1010 100 ... ..... ..... @rdn_pg_rm FDIV 01100101 .. 00 1100 100 ... ..... ..... @rdm_pg_rn # FD= IVR FDIV 01100101 .. 00 1101 100 ... ..... ..... @rdn_pg_rm +FAMAX 01100101 .. 00 1110 100 ... ..... ..... @rdn_pg_rm +FAMIN 01100101 .. 00 1111 100 ... ..... ..... @rdn_pg_rm =20 # SVE floating-point arithmetic with immediate (predicated) FADD_zpzi 01100101 .. 011 000 100 ... 0000 . ..... @rdn_i1 --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005143; cv=none; d=zohomail.com; s=zohoarc; b=R6A45whxtyQoyjtw+QXEMBhaJPqnZbvkigFNGwfjkDhK/zEW4NuBagBaPQ1hdTA7hUVbztJz0Gka7YQA+fjyzkuhjkRdGjoM8kbBZ6gThk08YMpZLzmk1mHH6OPhpTedutYLtfqHhoipGKeDnSWjjtDLSDMFWqIjIemzlPqCFgs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005143; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pfoV/MjdItCjEdTVv/LcepvEQT5a1+iPXWWZ97UB4oE=; b=VPjrRyS+cRItFISlkpz/bry9BRFCGZ2Wbhg5YBnloG/KLep/OmfYKhbBBCjAkIzndvozX89tzQn2NI3QGLFPx9x2htN4hvR1NzNXSS8Z7uDB9h8md9CNsN9M4li3wFprbG5zVAN3G9aiIW9SiVv1k/zKzAT2ShdHOs+jkfnSurU= 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 1777005143718895.2242172243352; Thu, 23 Apr 2026 21:32:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Bo-0005mm-3a; Fri, 24 Apr 2026 00:30: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 1wG8Bm-0005lK-BB for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:50 -0400 Received: from mail-oa1-x35.google.com ([2001:4860:4864:20::35]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Bi-0002YV-Ml for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:50 -0400 Received: by mail-oa1-x35.google.com with SMTP id 586e51a60fabf-40974bf7781so6628432fac.0 for ; Thu, 23 Apr 2026 21:30:46 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.30.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:30:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005045; x=1777609845; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pfoV/MjdItCjEdTVv/LcepvEQT5a1+iPXWWZ97UB4oE=; b=V5Tm3x+xrn4xpxQN7VXC30Hd6W2JhT33d6I6SFsaQEYFnUtx+OV+Nw9QZAh1Iq1CJc 8HwAus/PIUVTBtPipuruA10I7gyBWExXU6MyV3RuNg82LGFD3lXT0t7bbyxOuwqfqlPs IoUM8sE8GndUxWzh0U7EjpMrmEGWwTHihjdzSPhivBRRCDaLrmfzfVHgyh4BiAE3gmcR jz97dDdoZ9qIzVaAZQg+ghlb+u5PsFyEqfdK6P0Tl1p9JHsLYjl7s5NrsK/7ZIxY+zpa TCpQTxzXnh9aTvogsDjtX7LDvOXWsKZXq1kOktZlNHOtx8dnJswajPMBAPxs+T05DmW/ f6KA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005045; x=1777609845; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=pfoV/MjdItCjEdTVv/LcepvEQT5a1+iPXWWZ97UB4oE=; b=PNgOKxGfmoL12cwLF2OyY0LvTC0BdViFsSLFAsC6c7wh3AOIJVrMcZ7Mfl8Df2/aGL Al7xNqum7qPtMgj8cKomodPXjzsnk0hyyUf//+LsJpUyLM7uEmk8mU7OFteiFiisqaQ4 2pUhEn1RqWH8h560/dzQaoXuomB0KGgLTW8b+k3PgOZ+Fz5Jkdz6Ib6FHL6GtNrHYcCo 9xKDpmGkLppisDLb2cuRW3u7/CeeevkjxH1M813y6MiR5f2NFny9S5tD3CPZdXZYaE/g wrC1+c3TpLXWkg4yUylm1ODF5EH78/YM3FpGXazOuTfuqsQ1pxUSqWxvlzeELqcWav21 bnkg== X-Gm-Message-State: AOJu0Yyy1Wx2S5IUwWv9oXer4l0xQNGyotWo9ev+6SFibF+dX4PN3ZS/ U+SF2u5G+XEt9Yb60tyLqaHjIo3N2e/ehOlsArBouUS4vw8REXVm2pPWtiiHO9n2qnpYLkBXm3o P5PUtXmk= X-Gm-Gg: AeBDiesLNZnxuSSM/ni0XuoWC8HJn8SIelCT/LtkupQXJeaT3j1efOayNzf9/W+I2oB TwqjTpEchVHlODcd8RlT4kUDiRf9cabDq3qUECKaG+AIuZBUhdmZFvcs0ht4KwHzFY5fyyPY4Ox gIxkl7YzAsl11YE/9M4CfUcg88FrvcSXvnOhUADSJS+FqHH1OK5wcBzPrh7TehT7ucr4xP/AiBp 1OQok0psh8sdN1JmMnJmTQ28RBVhkyTowUWCZ+bB6RjE7Oh6I+xIBtttkczLKZkriGhDJkaGil3 YNg3MC2lSbBdaJE5i0sx1UQivOeVogEj3jPO1rWGC9b2sfULgYnRHSiBvBZvEvOF92Kic+Hia1r I5HuaRzFH14FrDIjChukZOOTUnr0rzR823CCobq23/ucVSkCUKQV/1IQUDnTkx8uBnpAsX/kZS5 f2YdRJYwveH3k1aYLsKa+Goh5iLj/zHEkqjNKXg3G2Rh0SklD0p4ZscfqUn/cvgA== X-Received: by 2002:a05:6870:64a2:b0:423:9751:c1c5 with SMTP id 586e51a60fabf-42a99adf792mr15782693fac.22.1777005045346; Thu, 23 Apr 2026 21:30:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 05/40] target/arm: Enable FEAT_FAMINMAX for -cpu max Date: Fri, 24 Apr 2026 14:29:39 +1000 Message-ID: <20260424043014.46305-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::35; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x35.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005145234158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 4 ++++ docs/system/arm/emulation.rst | 1 + 2 files changed, 5 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 84857fb706..343536523a 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1256,6 +1256,10 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64ISAR2, ATS1A, 1); /* FEAT_ATS1A */ SET_IDREG(isar, ID_AA64ISAR2, t); =20 + t =3D GET_IDREG(isar, ID_AA64ISAR3); + t =3D FIELD_DP64(t, ID_AA64ISAR3, FAMINMAX, 1); /* FEAT_FAMINMAX */ + SET_IDREG(isar, ID_AA64ISAR3, t); + t =3D GET_IDREG(isar, ID_AA64PFR0); t =3D FIELD_DP64(t, ID_AA64PFR0, FP, 1); /* FEAT_FP16 */ t =3D FIELD_DP64(t, ID_AA64PFR0, ADVSIMD, 1); /* FEAT_FP16 */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 7787691853..579df4c47b 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -66,6 +66,7 @@ the following architecture extensions: - FEAT_EVT (Enhanced Virtualization Traps) - FEAT_F32MM (Single-precision Matrix Multiplication) - FEAT_F64MM (Double-precision Matrix Multiplication) +- FEAT_FAMINMAX (Floating-point maximum and minimum absolute value instruc= tions) - FEAT_FCMA (Floating-point complex number instructions) - FEAT_FGT (Fine-Grained Traps) - FEAT_FHM (Floating-point half-precision multiplication instructions) --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005292; cv=none; d=zohomail.com; s=zohoarc; b=WsGRaq+kNJtYEOoUOg3DwUepjE+vXOETvXTPkYwb4YBXKdiQ7+Jv1VDvvMAXk8tlb9xdN2cRfLYVZXlC1J9QJTKhtK0BFj/yaBPg7TxoUaLud/HkqscqJx9SNK7SC7aYY11K6Ak35ixpZRhbMh2kE5qXSo/6UKFsykz1RCIXkEo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005292; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=KcGt5HtaQY1O1QBUWApZ7ywTFf0PmVn1ovydl4Xl+Uc=; b=IKkDbc6RbMTfFi345ZQ9RbXXExqisJXdJYSh/NJmeIfaBzhCBpdoE1ZJNn7lDkf9Xe0na6emz3J0JNGxe067fhqjT4bJ3SDtT+D47E/kb6AFN/63MAzZ80qfImT5qdWpl3zed6ZdMCBiizDK2PPBZLg9o0Q78TbhNGRDLs/8E9E= 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 1777005292335626.4857693088325; Thu, 23 Apr 2026 21:34:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Bt-00066B-JH; Fri, 24 Apr 2026 00:30: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 1wG8Bo-0005oV-D5 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:52 -0400 Received: from mail-oa1-x2e.google.com ([2001:4860:4864:20::2e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Bm-0002bJ-O7 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:52 -0400 Received: by mail-oa1-x2e.google.com with SMTP id 586e51a60fabf-40f1a1f77a6so5525303fac.2 for ; Thu, 23 Apr 2026 21:30:50 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.30.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:30:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005049; x=1777609849; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=KcGt5HtaQY1O1QBUWApZ7ywTFf0PmVn1ovydl4Xl+Uc=; b=iV5P5hTmy2PXEHlLvlJLa53KaZMGQaMgHXX1ht4IG3jgvred3CG8sTGfkBm4UUGVNn 2G1pVHvSQK5dmUGMtNOQQavHipf4VftXqIb392E6yTyUzu6Sw5Ce6yfV3Jug/y5gUoWP GthS/kXT5Xxfwk8+39J8oqGoj9f53GXVb16PQqr/dwPOsI4nlBuIh5XXDh76qbyb7Uq7 +bdAr+vZj+qnpJDHu+thY8CgxUHpplVeERqrx+OkTN83uqThclD/igtnW1RfO3CQtBpL rfPz41B21x+t34wgejORICEaRsyyCYKUbd3CKVNC0xQR+LSWoIiq2y0bJe220eJhY351 tiBA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005049; x=1777609849; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=KcGt5HtaQY1O1QBUWApZ7ywTFf0PmVn1ovydl4Xl+Uc=; b=X0gMlqVwoPg9nP+8jUDIoJNJE3H8uscwoSXOmMIGTr8UpW1HuEL6XoAPXCNaK2n4ur 9dy7VGH7T5iHwaKMV0P9OZxns7QvjSjnunrzmAxo9oZ1bSy0OqRdvpdhikfcsM3OaiGW pywuCq8pJfSiccn9C+e+YlLaEOtyRVej5k7Fki3VOOCX2F8Q8wqM+08hdTbyMY7e+apz Jt6iILvSWaNtIdeDw/zeCGl1hCw5DOmom0fhiKTGdMikGlIsl1YXTVg0DLVOhjG4hopn CUMeOpQ6hEmRv5hamcTNZ9tnraAr4VcF9vej4IFaWqdBH/Zz4Z296bec9/eGsEzUBnp6 DdvQ== X-Gm-Message-State: AOJu0YwSN7UIY/t6b5VfAFfRhR4elD7bgqGCzORS7VSjfJJk6xgH10EI VM5DZvol+cfEfcTW9NeJjVOjEGzan/vsFhMUW+2M5cMpt01wqzIBrSeRU8HxhUFUmNqhA5DZ75k kmxyVKVA= X-Gm-Gg: AeBDietmdl2t9V0S8HJqJrR1bU7DFDGjVZ67XU13O2DX1N7CBVOgtTONKMhaWg1TVhZ w62b5FZn9IKgOY3oPxIIaR3FFY4cGDbrSXL0EH6unUq//Eg9ZcE8i8MDBXvtq0LUQqtcV6Tv9Dk l0iORPC7Ecd5QotH3OVqdz/ObThz0ocw1sTn4xUWFioLOunO+eRIIVcc1Cd5AA/jFVF398kUamN 6r8Fo9Iqw3TvJZ5oRqhkMB0HmUPkBTWFL8cix4Vy1VRCbiozGp/bPgA/oYk8oItcdIPqNZ6Wclb GMk8tvEhNhTB3bFPoyS5+obR71ooLUetMjuCVmPB7LkuAnL9eujr/1mC4PwV7gXCmB3XnGCn2XV Nr5whcegu7FHB3V7qo4JFKvHybp0YT1Z5McftzaV8TXGp1MPS6ZdcR94xd2wY3qzRLckqWTa4IB PHOFd/GDQyXUTtMWzbM73x5zMdhhGSFeV4aNslm4F4dQiDhQoooFGKIvRaXS0oIg== X-Received: by 2002:a05:6870:e391:b0:423:c79:6a2a with SMTP id 586e51a60fabf-42aded665e4mr18732439fac.26.1777005049119; Thu, 23 Apr 2026 21:30:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 06/40] target/arm: Update SCR bits for Arm ARM M.a.a Date: Fri, 24 Apr 2026 14:29:40 +1000 Message-ID: <20260424043014.46305-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2e; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x2e.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: 1777005293828158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 657ff4ab20..6ec3845edf 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1794,6 +1794,17 @@ static inline void xpsr_write(CPUARMState *env, uint= 32_t val, uint32_t mask) #define SCR_AIEN (1ULL << 46) #define SCR_GPF (1ULL << 48) #define SCR_MECEN (1ULL << 49) +#define SCR_ENFPM (1ULL << 50) +#define SCR_TMEA (1ULL << 51) +#define SCR_TWERR (1ULL << 52) +#define SCR_PFAREN (1ULL << 53) +#define SCR_SRMASKEN (1ULL << 54) +#define SCR_ENIDCP128 (1ULL << 55) +#define SCR_DSE (1ULL << 57) +#define SCR_ENDSE (1ULL << 58) +#define SCR_FGTEN2 (1ULL << 59) +#define SCR_HDBSSEN (1ULL << 60) +#define SCR_HACEBSEN (1ULL << 61) #define SCR_NSE (1ULL << 62) =20 /* GCSCR_ELx fields */ --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005132; cv=none; d=zohomail.com; s=zohoarc; b=hJ8TrsvrlnPLmgcPULfA8Hld1qv1dUi0xVzI2+NcrEQGELAGUpuOwau/ejvNf4yRF7F7O59E7ap2a1yrbyOXwmLmF/63cjlGlQa6lI8mkPrKynN4nGk8QkDBXFj97bhaXVK+peSzOaUCIAtl52PJoUPhF+ygIXfUUwlNB0jU6gU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005132; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VfNScWpB7q780oJkpTFR+sWvykva2u51oGRZh7kaCOI=; b=ES7UUEk2FqfHc2UY9Us/WaTk84aw0rZxlQ91sGPRVj5vsK+51r9sK6FEBgrFMYzSoThJsYBuu/W49IbshTo0gQmSXw7ZJjuFJjiersLM0It9gY3k3t9zbuUFI6G3WScRoR3HOFZh0nBZ83J+XVzIXxaeR9LJwjIqB5vceYbakIg= 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 1777005132004100.25990660439459; Thu, 23 Apr 2026 21:32:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Bu-0006BT-IE; Fri, 24 Apr 2026 00:30: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 1wG8Br-000619-Ti for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:55 -0400 Received: from mail-ot1-x335.google.com ([2607:f8b0: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 1wG8Bq-0002eM-B9 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:55 -0400 Received: by mail-ot1-x335.google.com with SMTP id 46e09a7af769-7dccda31d3eso1538823a34.3 for ; Thu, 23 Apr 2026 21:30:53 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.30.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:30:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005053; x=1777609853; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VfNScWpB7q780oJkpTFR+sWvykva2u51oGRZh7kaCOI=; b=xp6UhYhlET2looQkNefUAs4LkaItHUEbKzM2/qbfFbAYjg62fexR9i/kfftICRWlsT q33zact+hwsnE+8Cj7rwEO/C9v3Qn3rrArJn9Qe/AaeoIq1DfKt/qElx0rf2N37B07HZ 51tXpt5rM3acxZG5UoQEze9+zj2oSrGk3kKzlm3+jl1QrFUhjGvBoJJ/otjgUIvhNpqi 3+W03dPF5IlC999zzTB7KoTUI6FLN+Ckky8cYSjkTrcOCMjeDfN9mcQ/e/gSNh4x1Ew0 EBMS5THrp0xJ5R5NTi2uZNfgq7mIW+SOlUxohihMbXjm57L9/JFWpt4TBYrjyvYbYQ1+ JEEA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005053; x=1777609853; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=VfNScWpB7q780oJkpTFR+sWvykva2u51oGRZh7kaCOI=; b=Gc86kwr7FhWjAfVSkcZJQ6F8BbkrOEffzSG7O0fymoCCWlJJy3lAKEQfg5fCy0i9D7 bUn7vNsaX3gBs4C/V4x99De0YZd2LZhjQ7UZ/F6NK+ag4QyFYQb5MMwAueODqkwfpdbE Y0qUdwXApTNCiMYcGJZ8S3q8dsXeC4mU+rBi3r9xw37xZLgxI3UNWwz5X+A7op/947u0 ipZz7pW/t1B1IuI3E2rPgJhCt/lCIEyhzvIC28xx0OAGGH2yuMnCNg7apj0Lw8Ft4Du4 ChK2yajr5G7us0sUldW+vlR4kHdTVw+JEaVRMH9jOWL1i+RwQyqfWScvCO/lKeM+nJIu 4dCw== X-Gm-Message-State: AOJu0YyhlWd0GquSohw6XcCJSq6rA9RBpAREmEipW4qEiJc2/3SBDyGP qNeFlBIg+S8IuSUclboYt05j7JVEGtuRjBTxmY8CJ8j9kwa5gaxMCb9DD9fh+y5CSxnojIKm3Re u4K4kDMM= X-Gm-Gg: AeBDietuNhD6Id5gIyhRFlYjz3rcewdOCYziGwVCnQq0tuWL3LUTZARuitfmuT2NijD OwVIPFPaUHkCT8XaEe3yD0AE/0TrjAZah8ye1OT8K37ojVPfhAYopn3VEMfTyC7pdms2RMSjWfH 9YVB2c3VJ270pgAV43OnO4+hXI7TOyWtQnXvPvn7q8znICZtbfjHZkvSwPGAy1hoLhwOU1dKxGt 30iKckeXOmxndkhktIbGciWixk6hiOzMwz8UvZclOKIRmyIJ4nFxdXWaqGGRc1e8aj+6VdFVpAU rfXQLEM2274L2tIfczLLjVGClaCn/L7BRDLxwDdiI6pWdQc1bTszvsislzNY7uMmgFC4DHQ0q/+ 5WrQPL0UUN69hY3NPsdbVsulLOBQvWrLe4/50P1PUjdg0SlYV3NOjteuxHJ+BL+EyuhxO0bflUq Rn8YFAfXmpN80D/m4hphwBjd6++tRUrpQSB9tHsOxsFxlA7bDd29+TZpz0/xeE+w== X-Received: by 2002:a05:6820:992:b0:694:a30f:a6d8 with SMTP id 006d021491bc7-694a30faa61mr6335968eaf.55.1777005052754; Thu, 23 Apr 2026 21:30:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 07/40] target/arm: Update HCRX bits for Arm ARM M.a.a Date: Fri, 24 Apr 2026 14:29:41 +1000 Message-ID: <20260424043014.46305-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::335; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-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: 1777005132791154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/internals.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/target/arm/internals.h b/target/arm/internals.h index 85980f0e69..b0f6bfa62c 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -252,7 +252,9 @@ FIELD(VSTCR, SA, 30, 1) #define HCRX_TCR2EN (1ULL << 14) #define HCRX_SCTLR2EN (1ULL << 15) #define HCRX_GCSEN (1ULL << 22) - +#define HCRX_ENFPM (1ULL << 23) +#define HCRX_PACMEN (1ULL << 24) +#define HCRX_SRMASKEN (1ULL << 26) #define HPFAR_NS (1ULL << 63) =20 #define HSTR_TTEE (1 << 16) --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005132; cv=none; d=zohomail.com; s=zohoarc; b=iQxCrLlFXVGS391HmtgXgMOizWh/nYIJXT9z0I1b5e0J9lFVnKfULLXEwKXnN9Tw25vGCRP7tXlTsjOCD7UKJWWnFChCVnD4eG/tMnHvD959bdlmNmec6poTjSnt8sbIomaIyQuWkKvaq0HCZUilB+mmY6FVx42sV7gdvySXR8s= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005132; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bQOANj7Y0pZJUmBoHVkVj+8tE/9rp7PAWdZqpVIG7Nk=; b=j9yLGX7LtGKR5Cpf9DodiXQ2+y2wDwp1VWSGyMO4hRKmzfnvnlOjhiCF/ps9adHYa5NLheKKuMaWwiuSic4POl4ZbuGUTtmeY7yyDJjpEkkJJnzFQpW8dd8vp9ZQ48VaOZThoUYQXgLFN812GhJ51aIh4kcuhMJFmPPMyqmSi6o= 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 1777005132413723.267801920486; Thu, 23 Apr 2026 21:32:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8By-0006W6-OJ; Fri, 24 Apr 2026 00:31: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 1wG8Bv-0006Kf-Uo for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:00 -0400 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Bu-0002iT-6Z for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:30:59 -0400 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-42fdab683a9so1373327fac.1 for ; Thu, 23 Apr 2026 21:30:57 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.30.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:30:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005057; x=1777609857; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bQOANj7Y0pZJUmBoHVkVj+8tE/9rp7PAWdZqpVIG7Nk=; b=fP2cmbR9aFBmzfRUJFZB4Z2i484f1ZZFagAx8Zw4eWbsUwyP3/OpG+5ZkksWryjinY 0kNsRn4qcdCGmzR1I1nHq+axnLz+AIeQ++bIGEibN6ZiOhyaZD7VeUckDYsLKEZRoXQ9 eOugwsuSMizsau1G5PZWptD88KmrKreyctnvt3XvMwvPrR8OeSgO+cvj0t7VHGMW9U24 zUweFp5pHukFSD6lMqsf1r0l7KXLYko+O6a6jkKnQpfLMH2bo/t6NfdE7dL7tLd/6oek crlyjSU9XUAwiZC7MJJKFDEyF8t/Vc4nNustZIrqHSznA5cbTfm5w+m9i1RKDHvowNIP Jztw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005057; x=1777609857; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=bQOANj7Y0pZJUmBoHVkVj+8tE/9rp7PAWdZqpVIG7Nk=; b=DZ2Hc/nia38SozRoLePiEi0ooeQWDGR3qsDfRezueBCHJ/lLpPSlcAu2IBl4wL7X94 /zIUD6u+T9l1r2OxGjCJYsvga32x0O+9i9q84Yo2G2lxFvSzt6ddNLOISfvDt8AtBHjC xu7HkcGNI/LiKxZ2EUe0tjJdOnQpwA06e0m7yRyZ3Df9ZPc5xVCKgM0AUJYy3TKMpWAB fZ0OZ+dY1Sybd10vb2ZFPDEgtnGakum0ur7yxWg3rvoZzBsB/7Dv+oXMPYVBfebQXcEZ QXmAUXvGylk9sa1VXNajvcmjmDM9CGSj+3UxFnoMcxnMLzuKkgWBpPFJHRign4y8i2lo KspA== X-Gm-Message-State: AOJu0YyaM2B/fPR3Ffg2w1XpfpcUmkKBbhawUEuCVZA3RkAjg9bBRazG vSvmiNeHGPI7lQiKS1MhpTCvhqICktIp+nHkAZ+kBAVgXfvhDR+prua1X66Rx5f/Ov7NMOP7AH+ vY9CkzjA= X-Gm-Gg: AeBDietW9+Z9ycKpula6BHDpUh8HHmE8NBk4lKIC0k6UXgO+pyx6MBg4atIlEshjt6q 6E/XaAmx8eKeT69UdYTIS4lV6TROw3WvftKMniZjls21F4QVMwKUOyt0y6NHetgO29WrcEMxyzl G5a5z8Rui1/sq91fFTLoy3wgjuTTCam27SuyZjHuQ1FW/J8HvfgmtqytJ+5NzBcXu3SQ3RimVB/ GEGcF0Ly+P+UgIhwtRErUvuRO/jfzhN7H4UrdIVdC6RssPM91wu6iDD/O2GtK+eECbzC7k1wL/9 tGL/3u7eeFmI81A5dyrilfoU0Eh94tLDv4nDrZXVcIjvnUNHOfeMu5jfVwHl8SCVewanliJEmca s9MavxezjAt6e0TN4JSlsRF+BWWlp7I8FsSWoqpFqu88e8Kfj2X5Ea1D5+M63i8eeoABniij+eZ EvXhDP46hnh8UoPCpbColOCoqkKd9nUjTGZhJMMaHK3+vSn94EYqxNReWXJLgNUw== X-Received: by 2002:a05:6870:e091:b0:41c:a7b:a8d2 with SMTP id 586e51a60fabf-42abf217259mr18723147fac.5.1777005056849; Thu, 23 Apr 2026 21:30:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 08/40] target/arm: Introduce FPMR Date: Fri, 24 Apr 2026 14:29:42 +1000 Message-ID: <20260424043014.46305-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::31; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x31.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005134802154100 Content-Type: text/plain; charset="utf-8" Introduce the special register FPMR and its fields. Migrate it when present. Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 5 +++++ target/arm/cpu-features.h | 5 +++++ target/arm/cpu.h | 1 + target/arm/internals.h | 9 +++++++++ target/arm/helper.c | 12 +++++++++++- target/arm/machine.c | 20 ++++++++++++++++++++ 6 files changed, 51 insertions(+), 1 deletion(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index f5ec7484c1..391c0e322b 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -149,6 +149,11 @@ enum { * should not trap to EL2 when HCR_EL2.NV is set. */ ARM_CP_NV_NO_TRAP =3D 1 << 22, + /* + * Flag: Access check for this sysreg is constrained by the + * ARM pseudocode function CheckFPMREnabled(). + */ + ARM_CP_FPMR =3D 1 << 23, }; =20 /* diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 03631018d7..ddef6fbeb0 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1173,6 +1173,11 @@ static inline bool isar_feature_aa64_gcs(const ARMIS= ARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64PFR1, GCS) !=3D 0; } =20 +static inline bool isar_feature_aa64_fpmr(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64PFR2, FPMR) !=3D 0; +} + static inline bool isar_feature_aa64_tgran4_lpa2(const ARMISARegisters *id) { return FIELD_SEX64_IDREG(id, ID_AA64MMFR0, TGRAN4) >=3D 1; diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 6ec3845edf..38deea01bc 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -692,6 +692,7 @@ typedef struct CPUArchState { */ uint64_t fpsr; uint64_t fpcr; + uint64_t fpmr; =20 uint32_t xregs[16]; =20 diff --git a/target/arm/internals.h b/target/arm/internals.h index b0f6bfa62c..944adc14e7 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -286,6 +286,15 @@ FIELD(CNTHCTL, EVNTIS, 17, 1) FIELD(CNTHCTL, CNTVMASK, 18, 1) FIELD(CNTHCTL, CNTPMASK, 19, 1) =20 +FIELD(FPMR, F8S1, 0, 3) +FIELD(FPMR, F8S2, 3, 3) +FIELD(FPMR, F8D, 6, 3) +FIELD(FPMR, OSM, 14, 1) +FIELD(FPMR, OSC, 15, 1) +FIELD(FPMR, LSCALE, 16, 7) +FIELD(FPMR, NSCALE, 24, 8) +FIELD(FPMR, LSCALE2, 32, 6) + /* We use a few fake FSR values for internal purposes in M profile. * M profile cores don't have A/R format FSRs, but currently our * get_phys_addr() code assumes A/R profile and reports failures via diff --git a/target/arm/helper.c b/target/arm/helper.c index 08285b69a7..1a0673a343 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6286,6 +6286,14 @@ static const ARMCPRegInfo aie_reginfo[] =3D { .type =3D ARM_CP_CONST, .resetvalue =3D 0 }, }; =20 +static const ARMCPRegInfo fpmr_reginfo[] =3D { + { .name =3D "FPMR", .state =3D ARM_CP_STATE_AA64, + .opc0 =3D 3, .opc1 =3D 3, .crn =3D 4, .crm =3D 4, .opc2 =3D 2, + .access =3D PL0_RW, .type =3D ARM_CP_FPU | ARM_CP_FPMR, + .fieldoffset =3D offsetof(CPUARMState, vfp.fpmr), + } +}; + void register_cp_regs_for_features(ARMCPU *cpu) { /* Register all the coprocessor registers based on feature bits */ @@ -7535,10 +7543,12 @@ void register_cp_regs_for_features(ARMCPU *cpu) define_arm_cp_regs(cpu, mec_mte_reginfo); } } - if (cpu_isar_feature(aa64_aie, cpu)) { define_arm_cp_regs(cpu, aie_reginfo); } + if (cpu_isar_feature(aa64_fpmr, cpu)) { + define_arm_cp_regs(cpu, fpmr_reginfo); + } =20 if (cpu_isar_feature(any_predinv, cpu)) { define_arm_cp_regs(cpu, predinv_reginfo); diff --git a/target/arm/machine.c b/target/arm/machine.c index b0e499515c..11e973e504 100644 --- a/target/arm/machine.c +++ b/target/arm/machine.c @@ -960,6 +960,25 @@ static const VMStateDescription vmstate_syndrome64 =3D= { }, }; =20 +static bool fpmr_needed(void *opaque) +{ + ARMCPU *cpu =3D opaque; + + return arm_feature(&cpu->env, ARM_FEATURE_AARCH64) + && cpu_isar_feature(aa64_fpmr, cpu); +} + +static const VMStateDescription vmstate_fpmr =3D { + .name =3D "cpu/fpmr", + .version_id =3D 1, + .minimum_version_id =3D 1, + .needed =3D fpmr_needed, + .fields =3D (const VMStateField[]) { + VMSTATE_UINT64(env.vfp.fpmr, ARMCPU), + VMSTATE_END_OF_LIST() + }, +}; + static int cpu_pre_save(void *opaque) { ARMCPU *cpu =3D opaque; @@ -1310,6 +1329,7 @@ const VMStateDescription vmstate_arm_cpu =3D { &vmstate_syndrome64, &vmstate_pstate64, &vmstate_event, + &vmstate_fpmr, NULL } }; --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005102; cv=none; d=zohomail.com; s=zohoarc; b=VnX1kqVFgDx2LXtqRgM/s46bBW2fZQgdxcV7LBslxqyco2JmV0L0HFgJFtAzLLO5WcrlgmeYtOibygmAgSPWyk5bmxtNXw16g6kxWxyjrUal/9qVzUaqgVXaYFjip8rrGHWBxgVK9c2Vp46WmXIVOYK47sl429SV6ScUrYS5n70= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005102; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=bB3Celgz6ONoUj0JAK8UxtldJtL9rndv5ruwK3rAIow=; b=iFPRK4dPvWjr8G/0pyPf8Ol+t4uFG8h/nLF16K2+8eXPGIPAiqjqm2VMXilh2BBNrNm4FETPbEEuIX0mlUlP+ph5m49grB7n2zZyv58WHrZQrJER3mzWlk+E2Tw2ooW8QZRRdyc48vuqRisdUe+CooGf98iE3dxvnDpVoVH/pvA= 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 1777005102783446.14623513929007; Thu, 23 Apr 2026 21:31:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8C2-0006nt-Jh; Fri, 24 Apr 2026 00:31:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8C0-0006gO-Cu for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:04 -0400 Received: from mail-oa1-x34.google.com ([2001:4860:4864:20::34]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8By-0002kc-ML for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:03 -0400 Received: by mail-oa1-x34.google.com with SMTP id 586e51a60fabf-41576c5c01cso5010358fac.3 for ; Thu, 23 Apr 2026 21:31:02 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.30.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005061; x=1777609861; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=bB3Celgz6ONoUj0JAK8UxtldJtL9rndv5ruwK3rAIow=; b=b4WIrDA/IoUDDtOmxcnr6kZsjX0+YPIWcWjlxpD9pTX/fvlsP0uXYywF3uM4g6lR2s bVpVWy1PWie7CiWsmntYOyFQoRSd7tHekYVmARjLkLuTbhdcI/yIMdmXZVWkIsL/BHe7 1ROUY6E4KakKd2E0UpCtKfdJGODa24+D3JHBapXCJl0kA96DtqR+pCI5mhkiIRiTRDtb 3tR1PoFp7YReT9jFpO7YhaimRU5MURmKBHxyJNdqhFCQJ1pNCcPAk7cyvYMMlKbSGi6k ButmtpIL4jgaGX5b5qf+BhJIRDBsxIGawLqnneDmFVNaeYaKOlc8RAKYp+s/sbRuUgH8 EFiQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005061; x=1777609861; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=bB3Celgz6ONoUj0JAK8UxtldJtL9rndv5ruwK3rAIow=; b=NRckQ7MyodatJuXuGGbR+q6aaVRD/PTylNxwR9q8vVcxvZLjCCPFXT5VOR8jRtc1IY BOdERZL0YrkRs99GQLykmRjxuaNefxhI/tjwkrTmK6S0Tv3WrlXstAVvFws0nUjNoZAG Yn5I1CtNpf4loZr0Mv7z9U8kCDlLs9XrctublcVH4FURU7I4p1g/YK3h3rAvlLFSnkwe cxLLIxldWTqD7xeW0OHEE1df3AYvDwVvQx3Aiwp023ZUfji3w8TtEFOlbXvbBTOsELiL fp8UixIZRW8PDP8i7jn3Cr42zMZGqH8Wfgt9DoESHao1kYICmB4r0HwWm5aofq+aPVG8 O7Ng== X-Gm-Message-State: AOJu0Yz7a6jiezPV/MH1nR2Iw3Ps4TRNKv/eTm7pYYS8uJ2Np8PFXNhk 8WIPFOWrBCauSGyRBG4njb0BobtsQGX2a58tcE6yH828fPm9ov+hKOeH/zfdqvKBW2jaqXJLuWZ bpY+5XZA= X-Gm-Gg: AeBDieuHoJKi78EwyCNcBGbrBDk4sxXn9WIm0VWgUjmqmgM+CVkUTIrakE59XyTjgGS wPBme/ZUuvFYGBACuoR8xFPaf5svB35/mzdsvsgcvdvh5VmOsactZCXC7eufJwqofDN2+DDjHsF h49qWR/WJoRzl3K6WzFAqOOqjzt0jBYxVjwIOOmhjtERPHfIv83PxAQEIy2igKcHAlitrHX2s0O Ksb24EhLJb0wpx8rm4l8A67OYMu3vtXpZSy2kIVvCStdBYfjnPcho9M3yMamGXHm/8d0zxI0K+y XVzKD8nUsZCsOfztSTFgw7xqk+L4LJD2FwglYdT+oQw8xOIMHv95ivOA+VrJ2MFu20MmG6Pk7Mh pgOq0DbVc3s/rlSItNL22JMi7hn8ENy14xuVOudlVkeFdXx7dbEAynSCuYG5LKH6zVHQ33XUqoh maHRJg+0enpmtSFhVN9vEhI0rugg4AizfOQ0UT7P01fSJHJNy2OmhhwCu+/SUU4XylY+5a/kkY X-Received: by 2002:a05:6870:d6a4:b0:417:4888:328b with SMTP id 586e51a60fabf-42aded08882mr18711325fac.20.1777005061437; Thu, 23 Apr 2026 21:31:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 09/40] target/arm: Update SCTLR bits for FEAT_FPMR Date: Fri, 24 Apr 2026 14:29:43 +1000 Message-ID: <20260424043014.46305-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::34; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x34.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: 1777005106345154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu.h | 1 + 1 file changed, 1 insertion(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 38deea01bc..deab811ba4 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1459,6 +1459,7 @@ void pmu_init(ARMCPU *cpu); #define SCTLR_DSSBS_32 (1U << 31) /* v8.5, AArch32 only */ #define SCTLR_CMOW (1ULL << 32) /* FEAT_CMOW */ #define SCTLR_MSCEN (1ULL << 33) /* FEAT_MOPS */ +#define SCTLR_EnFPM (1ULL << 34) /* FEAT_FPMR */ #define SCTLR_BT0 (1ULL << 35) /* v8.5-BTI */ #define SCTLR_BT1 (1ULL << 36) /* v8.5-BTI */ #define SCTLR_ITFSB (1ULL << 37) /* v8.5-MemTag */ --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005300; cv=none; d=zohomail.com; s=zohoarc; b=J4KvLDhCrHYoUBpBowT9Be8DLBQwnNGl7nGXqDLK7BLSfv1xrJ3ayzHULF2Ta5zL5eUejQjLE9KizoFNIKWpGv+dK07cBKFi7ZWQobjMdiO9Zzlt8dVT7OkvQbYejXp/DtesTpOjRp0Sxrnrsbtnu5BCRxfOlKDL6j0VRxnoyis= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005300; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=CKmMywFawCK57VzKvKaE3Fm1cw6vdHmu9uE7XMxBtQ8=; b=H/TSLvwLaTFeYPEVT5QsegzteogujMZOHnRlMCcXaSIq1x3zwRUUmRib+clJvkwTNjcJ1sXhp02H1aBfP1LDgvD+dTIYRcnPuNqGRf/wNobCT1pp6SGsZLzbs6idnQOKj/FHrDEuZgUgWo3sRTfU/z45IUKlxkPhVBasVHwGY2U= 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 1777005300029776.1690152323786; Thu, 23 Apr 2026 21:35:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Ci-0007o6-Ey; Fri, 24 Apr 2026 00:31: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 1wG8C5-0006tY-Nt for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:18 -0400 Received: from mail-oa1-x36.google.com ([2001:4860:4864:20::36]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8C3-0002mi-Cu for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:08 -0400 Received: by mail-oa1-x36.google.com with SMTP id 586e51a60fabf-40f0e14b9f9so4356574fac.1 for ; Thu, 23 Apr 2026 21:31:06 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005066; x=1777609866; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=CKmMywFawCK57VzKvKaE3Fm1cw6vdHmu9uE7XMxBtQ8=; b=vlcMxp3+8XGgD7Gz5AB7Qxt1uN4Mx3/AKsV6HFP6nB6VEQOGJzdyMGIfAzkibkRtgf f+KzC0SNY1x+ma74ljd9c1kCsmaIinVF9gBZFVVPhdGnATs0/5/G/lJRThzGvD1g5bEe lhP0Mqoidv4C3dFvy+w+WMSToH472yx69PvN2F+AzwqyXPisU108ZZ4Je+nOmcJ8fPe7 eoeYEXBax5FvVINl5aXCcCxU0GVzKIxkRagp/zachLyzrD5fOagsN8hy8ifjwX9eoc2N Q2famvSQfAv/hP6CtTt6ttV9XYP4fm6sZZSDiILTpVibC5m3WXncJKFjAlnOL0T+sg35 1zVA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005066; x=1777609866; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=CKmMywFawCK57VzKvKaE3Fm1cw6vdHmu9uE7XMxBtQ8=; b=UMDavS6D9Ceb8bT3z6IzDqvCSmLCLGOcwSQpdj6hRQngpGXPqtWEPP74dPD5wzH1zv 0McZYQWmh3lTj+S87d4wNTftArfbKhDkbiFixd1f9/I8EShxgWXji3FvvS0OV9KDPLwp t4jz7A+guWWRYbphCFBjDEqalw0uW7bj4RYThtZDDUis1ZR+q1oheO1UrngYGrEMIMGw wP6cm7X1yW+cl1JnoH+hgzB2fwW4lJHQ0NiBEHlBpAZWikXhUYoo3vO+uiEL8VjF6xoL 9BZAkTHrtbJhMfiO2YYSRmBKKxbb3IBqRr1UL6bAFQ69QNib8dOjAhqHIhhSp3jwI+aP dAAQ== X-Gm-Message-State: AOJu0YzXKNkT1TteImE+wgx/59nrOCVdRdImL9KURqP3PxIehMt7P3Ub k3JWlT9nn/0ydzD0fS3i9kmx/jlUhyfwqdCY+CIEvX23j0OnkZ4D9FO2W44xTptefUYoeRvISFJ vcxxhuiA= X-Gm-Gg: AeBDieuwtjTkMy8g/D863/7U+Mno2P7Ndf89JInfbJfEniC/er6M0hYL1hgYqOuYlwy Y5uwcfbEo5I33CZo3F8bkPthMHTnDnH8xXFDtLjslASUBWWC5IoQQOP/b9OIbKtBaPKme2G+8DD 5TOvlfX0NzHvBCrYtFINknozSy6OS60vACM78a2P/mMfWqmR2DJsOCbOPuB6zJyqR8mykNHZdLk GGugQz9f/O/3gEEzZXK1b2ay5zBYl6cj3hUFow/pwTN3sfx5x+6RGWLXLllozJGsTGaQNK4UdYU eDE5mdO9bVg9ulOK80tcYX1nHqrfgYQG2NvbnhM8jmWyZzX+k4CVe0+GqvC7hFBIXVNkayNWNsK TzGnCmLn1lV5lamlZXIP+l0XNztAKpQyskKBT8fZP5M7sszGdYBG7K9KPN+w9i02heyPKIm1SgI ZXsaAukRAUezb8wb7yhT9xXq2Nu092qsHZ9gsXVOaqwgu/rLRgCATErlDBhvmzow== X-Received: by 2002:a05:6870:3268:b0:430:b01:1f79 with SMTP id 586e51a60fabf-4300b01447dmr157236fac.2.1777005066153; Thu, 23 Apr 2026 21:31:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 10/40] target/arm: Enable EnFPM bits for FEAT_FPMR Date: Fri, 24 Apr 2026 14:29:44 +1000 Message-ID: <20260424043014.46305-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::36; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x36.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: 1777005301218154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/helper.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/target/arm/helper.c b/target/arm/helper.c index 1a0673a343..06b5fbbe55 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -787,6 +787,9 @@ static void scr_write(CPUARMState *env, const ARMCPRegI= nfo *ri, uint64_t value) if (cpu_isar_feature(aa64_mec, cpu)) { valid_mask |=3D SCR_MECEN; } + if (cpu_isar_feature(aa64_fpmr, cpu)) { + valid_mask |=3D SCR_ENFPM; + } } else { valid_mask &=3D ~(SCR_RW | SCR_ST); if (cpu_isar_feature(aa32_ras, cpu)) { @@ -4030,6 +4033,9 @@ static void hcrx_write(CPUARMState *env, const ARMCPR= egInfo *ri, if (cpu_isar_feature(aa64_gcs, cpu)) { valid_mask |=3D HCRX_GCSEN; } + if (cpu_isar_feature(aa64_fpmr, cpu)) { + valid_mask |=3D HCRX_ENFPM; + } =20 /* Clear RES0 bits. */ env->cp15.hcrx_el2 =3D value & valid_mask; @@ -4103,6 +4109,9 @@ uint64_t arm_hcrx_el2_eff(CPUARMState *env) if (cpu_isar_feature(aa64_gcs, cpu)) { hcrx |=3D HCRX_GCSEN; } + if (cpu_isar_feature(aa64_fpmr, cpu)) { + hcrx |=3D HCRX_ENFPM; + } return hcrx; } if (arm_feature(env, ARM_FEATURE_EL3) && !(env->cp15.scr_el3 & SCR_HXE= N)) { --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005137; cv=none; d=zohomail.com; s=zohoarc; b=moNzM0M3NTFsAlmS0eZUPMgDvEyAp7NPZ0Mq3eB0cERYqtVDKckc2bJTZIXA6D1Y4p4nyZvInzhb8IiB457j5BUKM2cD2LoVi89KlkY6zaOx5vwVsQxvIgzI0D8zLJraKWULzxLkTos9AVmrm212HxjFA+zymEKfN4tVhi/Crjk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005137; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Kor/kiazYWS2SmrFhEuLicDn7WflikUuqZMwHNLbJMA=; b=if/DJR/XCIc4vpkYsEAuHx5SgSaLAnceQBZYsRt4yavQ/m1aTDTYk/tE8lEGyaXHHUCFVB05qG9ebFW1wNWLjcYwkhwttG8Idb3ATmsigPxVTr0fD0BDmmyQwQ3w1ETzaCCaZORua88g6qAxbi3yCYen+80cjy087dkquQi98D4= 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 1777005137348200.80052312312466; Thu, 23 Apr 2026 21:32:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Ca-0007Gi-SS; Fri, 24 Apr 2026 00:31: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 1wG8CB-0006yY-IW for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:21 -0400 Received: from mail-oa1-x35.google.com ([2001:4860:4864:20::35]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8C9-0002nZ-7h for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:14 -0400 Received: by mail-oa1-x35.google.com with SMTP id 586e51a60fabf-415b23dd6e5so2761766fac.3 for ; Thu, 23 Apr 2026 21:31:11 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.07 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005071; x=1777609871; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Kor/kiazYWS2SmrFhEuLicDn7WflikUuqZMwHNLbJMA=; b=DwJr6clay0WTmoKxJvtWscQAuRr1UTqufWkFZrNeHeVO1KhR/DwBI8iC7dBpCV5diP hKCnQxhXlC/aw+UDz12RY7hiwuPh4i6qmjnslMVXLzlwIsbftWN9aC45rjBn/VB/4ztP JwYRgKj3JbHNWJyAwNd73WbNobNxMPiZ0CZZvj80aRV3h2tSi6pl5HP53+Hp38aEdDy8 Utm5PSB7ftLNQafDgagOolI0uXqwcZkpcSc1652lgYXNcoyhm+GgcFln8TuMbkORsK+3 taDHrzcaYE5+WiLCEmaXLNKmRqur/drrLP4CkdrX8PeaXtVTklh/jt2K92vDC5Lnw/CM mMCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005071; x=1777609871; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Kor/kiazYWS2SmrFhEuLicDn7WflikUuqZMwHNLbJMA=; b=jNnvaJ6cOooU8PWoty8R7foFNKn2E+FxD6st8M49rtb7Qgzu3GY7JpE8UEjmmUmcaP w1tDcTciAeOZDEPiLtVES7gVU3SFIvdGA3dM8z4FUfg1c3BDi5OCbo/ZUjgwBXpPqPiD Du7kVBi9jKhVfSxdIWO0GDUPd26P+RLKZ7j0sZ3HT9sfA/oUuZd5uiGuYU3KHrT9rabl N5MQtCPDAuSDvtOlKIeHbaioE4tHc7Jx0w8vK686J3sO8J8YowiohsX+/KCXfGPAQeuQ Ib5zuCrNRGsjBxDCDS6jLFJffVaPNOOdhYcMd75dlWn7MZ4pe44r0kkmMpsleUT+Jwe3 Xf7Q== X-Gm-Message-State: AOJu0YxZabZUDW5XvonFtjRiPj+lIbmOgNWDXZtfNmYT4RSmju+CPcya uuOdz+Cbwpc2uOcle7GAB0EelvxkTq08wuksAgccQ0Sy7yg+s1a0zhw09JKDhm+dNY4TN7apZyG WMlOlUY0= X-Gm-Gg: AeBDieuMaksctTmVIfG8q6LqjZo4NAVpme5WTW2i4MEkduvPYKAwbZ0uNX95fmhkcX7 sOQRtyT8d5OA3wngdxkjwpfnv2Cq/e0zK7Sa43Uii/6PUQzMmfYvVc6kW1VQ9paw9LJcWPKaBgo lo10QHobz1fbA/K8/9wgmPSsO5Cm0GImj4AffJQRwXjTHbCb83cx7fshpQdXyQguIhIukpjIh82 J577jMTspv1VrR4iZf950tirN38l6BRiWV2Y2eXaSyM3vJ2XCRb8rw//NGDrpt2bHOddJ9TgvNm Xjc0JjRb6GCqLStUkggIPpvfrIisJvL0AbvPl+qSWDhnGdQWz3Ji6hGJcz7U0U8aCR4DrE4BncL iupWKRMt5oVzXik5iSuRpJwj+k6i4iINavBr4JHT5HQUIL+jxDN0kWP1nIOpFDwru8wHa5SUxFz dxvovqJvjEu4FXjmTe2GqrdWm+B4FOkkLy8ais8qtHwwlccJA9bMMcPW7/cQbngQ== X-Received: by 2002:a05:6870:2010:b0:42c:1b45:e8ba with SMTP id 586e51a60fabf-42c1b468af7mr10447591fac.33.1777005070878; Thu, 23 Apr 2026 21:31:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 11/40] target/arm: Clear FPMR on ResetSVEState Date: Fri, 24 Apr 2026 14:29:45 +1000 Message-ID: <20260424043014.46305-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::35; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x35.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: 1777005138814154100 Content-Type: text/plain; charset="utf-8" FPMR is cleared when entering or exiting Streaming Mode. Signed-off-by: Richard Henderson --- target/arm/helper.c | 1 + 1 file changed, 1 insertion(+) diff --git a/target/arm/helper.c b/target/arm/helper.c index 06b5fbbe55..6ebd121050 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4913,6 +4913,7 @@ static void arm_reset_sve_state(CPUARMState *env) /* Recall that FFR is stored as pregs[16]. */ memset(env->vfp.pregs, 0, sizeof(env->vfp.pregs)); vfp_set_fpsr(env, 0x0800009f); + env->vfp.fpmr =3D 0; } =20 void aarch64_set_svcr(CPUARMState *env, uint64_t new, uint64_t mask) --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005237; cv=none; d=zohomail.com; s=zohoarc; b=QAA3xN03JlJra0O9awtbDwth45DMv2mHc/9LdNL5Y2BYE2pUb8ZtZPc6+Y4y92EleduwQb4t26IFjjrQg58Eme3qBYCu3VTo8ZLG4H50KoOphiKbpnZo8qPJoOZLITD/VgFAnYSivVWGdwsMNXlxxf3apIoPSm3kYFKKqGMNf4I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005237; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=V7aV4/ccpJY3oIK25szkraYIxGpm+6Rk3RJv/5vVfmY=; b=cQIPPEfJqKUtI+oJ2p76b5LiX/hVqD+tFEXMMzE6cSnlJ8oe4ys0+j/55xlgoAKq/em9C4uK0uEYWN3O4MQniXjp8QT9VuzHS/2jyguXdNDfEcoZbq+K7kaCjCZIYV2nNxKhwxg4+5uTVR/aSQSCa+xNL9pmwNlil8u1vGJbi+g= 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 1777005237141355.51433322856246; Thu, 23 Apr 2026 21:33:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Cc-0007T4-MI; Fri, 24 Apr 2026 00:31:42 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8CG-00070U-MP for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:22 -0400 Received: from mail-oa1-x2a.google.com ([2001:4860:4864:20::2a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8CC-0002oL-Mx for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:18 -0400 Received: by mail-oa1-x2a.google.com with SMTP id 586e51a60fabf-42fbf95cca8so2177218fac.0 for ; Thu, 23 Apr 2026 21:31:16 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005075; x=1777609875; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=V7aV4/ccpJY3oIK25szkraYIxGpm+6Rk3RJv/5vVfmY=; b=BjO+oqXERvlhjfW+mcAvOl7lUVqm52O2LuM6pyGUT9PPdzKbKC1+FjdBjeiaxXs7M8 T1rMEva5XvY2X/VX9hZMt5mezH/HKbI/1pvC/Z6T91l/my9s9PHkbNc7t7Tcr9DJmqlU /fxw/es7IVg/ub0HvmNTJrsgF14AzJsnyMuGd7lceSPnU15D5l/5EVjdIUzInJX2EZsr Ht3wP9rrLVbVbcN2B3AuNUMj01aBV4e3eXh8dV7bJhIW34gytPo8O/AHDfd/Wyh9NSB7 Fi6iLWD5+eRmLhG/RP/C5WnQU6SgEGBTBzyvhm55bridIntcLAhmaEoKbLYY1EsoXRAy 7OPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005075; x=1777609875; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=V7aV4/ccpJY3oIK25szkraYIxGpm+6Rk3RJv/5vVfmY=; b=KvqovjOXsWq6jyJQCrzrf9C9BRnVenqbjsPHwBOgt7DTPFIoUKG978sUqHxi7RmB7a 1tEpNKGd+vuyU9ZR61sD64slKS+IAUvUJFo4lCncUa7QFWVUVe2g/XoWHCN1IqdgCJM/ kLCsPSRydutzf/klMP3gXTOsUAlIBgELNsGhYtMpsq9kN7fdu4rV0VdPRMBhqhxj6voz q3cn6pyjFuF7fRdyX8dHaoK80bMSzRhrVK+Zmp7Ep8gTvsUJpmkdWomH2BBwkCneVrwx rIgeg1ad9Nf7k4S+K6ig84u40BQGO9SAo2615iIMcbGBgDfs+SEtqSAE4Qy20jlhkuKT 4XGQ== X-Gm-Message-State: AOJu0Yzqeb/I8qUd8aQ5oZWYc0pJ1Qvky+TRyGJfXrdKKDKYuvIfklrB AwyuV3zLu224AHsXw9qRZMVbxp039SYdIalncDCDeE+c+uO2Tu7vFRqjIAWV66O3TOVemD47dlh lN0EUv24= X-Gm-Gg: AeBDieuV5trQFtMMUvD6sqiFARyJEdW5h7c3le4V0W5ahm6C2IHqTRGt3M4qYQqZGVG oNB53FkxIjG8QStyfBN+GMf0bAKZ/9l6O0FspA3E7+/P/H1nY+xtt6YLLoBPQzpWUB7YJERgjx8 tjMiQxKpHSkvzU2u80ZOtdos7sRoKxzvMxccTX7M0c9n2GTbfPVUJ3XlzCrrEdHpJOoskPtn0pQ n8xkvrv7a84uMGaTI3HloqnjFoQdI4dNnrzN9FA0qYl4DGFmHswBWVAEbQYuBbbQ44wAmvopjNn U7Nd02HtJmHx+G7V+SLpIpgFpvnmVcMHC2A14elaOvryS1zBbDRC4iElD898yB4un03nViHCCq5 iOuifrWAagOtGNFK/vxnkhHFU1HZbW6ukg3nDBDRxFtl+2/srBbuNlQtbq01SRIHoz+xYI8VvHw sBNRMRe73K8CsWmeObj4PM9E+aSGrL4FPX4JIkNqD7Jug8UpiFBR5+YtGbI40Zxg== X-Received: by 2002:a05:6870:9d88:b0:409:76e0:bd84 with SMTP id 586e51a60fabf-42aded0b29emr19061002fac.24.1777005074979; Thu, 23 Apr 2026 21:31:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 12/40] target/arm: Add FPMR_EL to TBFLAGS Date: Fri, 24 Apr 2026 14:29:46 +1000 Message-ID: <20260424043014.46305-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2a; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x2a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005238382154100 Content-Type: text/plain; charset="utf-8" Prepare to perform access checks for direct and indirect uses of FPMR. Signed-off-by: Richard Henderson --- target/arm/cpu.h | 1 + target/arm/tcg/translate.h | 2 ++ target/arm/tcg/hflags.c | 41 ++++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 1 + 4 files changed, 45 insertions(+) diff --git a/target/arm/cpu.h b/target/arm/cpu.h index deab811ba4..e78bc1737d 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2536,6 +2536,7 @@ FIELD(TBFLAG_A64, ZT0EXC_EL, 39, 2) 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) =20 /* * Helpers for using the above. Note that only the A64 accessors use diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index 3e3094a463..4001f2fc36 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -199,6 +199,8 @@ typedef struct DisasContext { uint8_t gm_blocksize; /* True if the current insn_start has been updated. */ bool insn_start_updated; + /* FMPR exception EL or 0 if enabled. */ + uint8_t fpmr_el; /* Offset from VNCR_EL2 when FEAT_NV2 redirects this reg to memory */ uint32_t nv2_redirect_offset; } DisasContext; diff --git a/target/arm/tcg/hflags.c b/target/arm/tcg/hflags.c index 7e6f8d3647..6759b36f28 100644 --- a/target/arm/tcg/hflags.c +++ b/target/arm/tcg/hflags.c @@ -237,6 +237,43 @@ static int zt0_exception_el(CPUARMState *env, int el) return 0; } =20 +/* + * Return the exception level to which exceptions should be taken for FPMR. + * C.f. the ARM pseudocode function CheckFPMREnabled. + */ +static int fpmr_exception_el(CPUARMState *env, int el) +{ + switch (el) { + case 0: + if (el_is_in_host(env, el)) { + if (!(env->cp15.sctlr_el[2] & SCTLR_EnFPM)) { + return 2; + } + break; + } + if (!(env->cp15.sctlr_el[1] & SCTLR_EnFPM)) { + return 1; + } + /* fall through */ + case 1: + if (!(arm_hcrx_el2_eff(env) & HCRX_ENFPM)) { + return 2; + } + break; + case 2: + break; + case 3: + return 0; + default: + g_assert_not_reached(); + } + if (arm_feature(env, ARM_FEATURE_EL3) + && !(env->cp15.scr_el3 & SCR_ENFPM)) { + return 3; + } + return 0; +} + static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *env, int el, int fp_e= l, ARMMMUIdx mmu_idx) { @@ -500,6 +537,10 @@ static CPUARMTBFlags rebuild_hflags_a64(CPUARMState *e= nv, int el, int fp_el, } } =20 + if (cpu_isar_feature(aa64_fpmr, env_archcpu(env))) { + DP_TBFLAG_A64(flags, FPMR_EL, fpmr_exception_el(env, el)); + } + return rebuild_hflags_common(env, fp_el, mmu_idx, flags); } =20 diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 9f375b05ca..ef6038e98b 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10725,6 +10725,7 @@ static void aarch64_tr_init_disas_context(DisasCont= extBase *dcbase, dc->gcs_en =3D EX_TBFLAG_A64(tb_flags, GCS_EN); dc->gcs_rvcen =3D EX_TBFLAG_A64(tb_flags, GCS_RVCEN); dc->gcsstr_el =3D EX_TBFLAG_A64(tb_flags, GCSSTR_EL); + dc->fpmr_el =3D EX_TBFLAG_A64(tb_flags, FPMR_EL); dc->vec_len =3D 0; dc->vec_stride =3D 0; dc->cp_regs =3D arm_cpu->cp_regs; --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005341; cv=none; d=zohomail.com; s=zohoarc; b=IBcuEJih9gpYSGfFSCd8j1P0kbhPE9El8pkaolLS3LV/FNZrFg9J54d5CSSC7IzqqLB+MAnHtDxwvdVOmG26UnlJaHMReZ3+8e+YHkD48G5rGvaRYi7/F19Kzar46srdeuv0sEDkJbwtUKO6CpV/FWUb5Cfk7I5qoQt/kZ0bjFk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005341; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Q/eF6UxrydbmzCRXNoWVc07UBJDv6wjeDkTY/rB2YuA=; b=gDgc5FMQ6xCn+7sPXgj8tGMfGeS5BXdJMLZoMq5iAL6xnNmlGZ9z+KoDAfHK57XeffepHIMhdqOLxVyI4g3lGYP/ofyCNEMwyI7cZsK8vDeAWWb0NCAHbzL3WEFJMNe1nkcVxIGdouA8MeRHIE6sFu1Si+pP+rsh21NJUiW047U= 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 1777005341399429.7074682083156; Thu, 23 Apr 2026 21:35:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Cm-0008A0-IH; Fri, 24 Apr 2026 00:31: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 1wG8CJ-00072c-06 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:30 -0400 Received: from mail-oi1-x235.google.com ([2607:f8b0:4864:20::235]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8CH-0002pB-3d for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:22 -0400 Received: by mail-oi1-x235.google.com with SMTP id 5614622812f47-4670676ba03so2222130b6e.1 for ; Thu, 23 Apr 2026 21:31:20 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005079; x=1777609879; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Q/eF6UxrydbmzCRXNoWVc07UBJDv6wjeDkTY/rB2YuA=; b=aZPv0wcWRKB0WCLuIIrGtjUFdMQUUyVL+Anzpa1y5ycsmj+THOSTvz+q+XertMzDnq K0xp7EbiyHKTqqr6LJQJrMpLIVhoKtDalP2OMIvBNsovLJPhCSXCh+9rpG2Yld4tIZFW iNzSdwV74PoCAV3vpmtW/epMLb8x481ua/AFF5HJctq3g/pwE+ICyPpCRqj75J7v5zRR TbS1IggoTx83R7/Ap140CJbVayPYpQGnEIGveRLas4tT5nP+TDRqKxasG1FrzlHcL0RA mHqQaiUFiZECzn8B0IVwtF/KQ3ou+JDbRuxSsdHKmv3mgXpkMtz92vlmyViLM5gEcrbq OTUA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005079; x=1777609879; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Q/eF6UxrydbmzCRXNoWVc07UBJDv6wjeDkTY/rB2YuA=; b=ClHOdF5LyDt/xPUfLLfki22DoM6OPMK0pRYo7K0jeTeDEl+yEK25TGY+FCiH9py34N JPxUkfoduTo4oovl6TFGbRvj/QYMMTncyd2W2hpIU5HPA/GXnTncR8AI3g2wIqdmAtbD j1NlvWkM5b82ii+XAdeUhLpH5erEwwz3mL9Anga9e3SO0tvxZLa5GNaY2Fio/eza3AHe yuGppbOapd3mEmVLTovaeuQPdlhk6lD52pQ7th6De1IiF7eG7A7ojKHQFMNutwlVtBdN SooJHZnT8TlsIqZUuzJOz2d8t8/D2nAXsBH+l6SMkK3WZQTBqx769GXPMxKgNAB+pGd6 OaBg== X-Gm-Message-State: AOJu0YwAlmO4lVDzK5g3rKoWe9lpMPxVXBjpuJ38FZz97FW0RxrFvRbf Gu3YNFBG3gUO0q976uzbrWE5w8GWWTWr+lTZYHFgkuidzK4Fz4+EZsFHHcczBkSr0+lrQYVJt2S Eolee3XY= X-Gm-Gg: AeBDiesjZxZuwdHNd3XhmtVohHIepmQ2Jn+vge8+VnGX5sFJocnLF36EOJlIaF8HjbF 7HyhK/BteFXdHMRjyVG+J7JUbMoOX6i6yN+uHKt/oXO1mtidR3fFmLxr5mVIv7lxqM1GhUXLfxc N0YLuCrdGhvHil832K1k+ZPWz36yp1iKNsyyeu3T12eXUXm5ak8Mb+Ayt7ei3Qc9m0FD2CrYQj2 Sn+wFcNpnBfQiZidNImsQgcR3qgblo+VLt9pKf3kKFzY1/tY/xIVuaqdi+ps0VgHOJ3dJSTC2GD OA0QDw/4Xr4jbgUEnOBazyDuYD4FRf0HEm8qMu8+uZuxh2FqfunPFssxo4E+yU7U/6ekfCXBLee tHsWQFy8T1cd8ht9eyHaqqqanrZJd+M42VTQE4Wn7TlvB7eJAZJeBWgfoU59UpdxVyyvfM+HW0k 5XHj/0TwIooLmFgGSRgmQldP4uyChQyBjnEq+uesZn5T0kqw0JMKz6nETmSFeVlQ== X-Received: by 2002:a05:6820:2916:b0:694:9910:f77e with SMTP id 006d021491bc7-6949910f852mr8608586eaf.4.1777005078698; Thu, 23 Apr 2026 21:31:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 13/40] target/arm: Trap direct acceses to FPMR Date: Fri, 24 Apr 2026 14:29:47 +1000 Message-ID: <20260424043014.46305-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::235; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x235.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005343740154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/translate-a64.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index ef6038e98b..d132e051ca 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2898,6 +2898,10 @@ static void handle_sys(DisasContext *s, bool isread, } =20 if (!skip_fp_access_checks) { + if ((ri->type & ARM_CP_FPMR) && s->fpmr_el !=3D 0) { + gen_exception_insn_el(s, 0, EXCP_UDEF, syndrome, s->fpmr_el); + return; + } if ((ri->type & ARM_CP_FPU) && !fp_access_check_only(s)) { return; } else if ((ri->type & ARM_CP_SVE) && !sve_access_check(s)) { --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005367; cv=none; d=zohomail.com; s=zohoarc; b=J0YJXnEInGTkbFbAEsWSLooAOBcsn5+JbaJQjNwiPY/xYfzvu9t8SQPiaqHlY294lBT0OsvLF6rFpM5sJFfV+GPxx8nmsZv1A9j7UzoASFo3CGtUyXQ0sNmAzDKEakipJ8cWboxcG7HrGK1xIlDTXcCUGzciyj/C9S7/DD7bOmQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005367; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WK09IV4jv+83fptexQw6qhQ3h5DqduadUD1Gz4A8BTk=; b=Dax0/plhgg6IIio6aWaFF+M23DWFxceRBS8WL+jhELzX8965iQhTK0DD8IYHzfkeedrqX419yoI3iAqnIxi8oWYwKwoAiH/GlsCK+0yUjK/Og1Plto6DlASEM6qrl0K0risRGiFb2YVZMIko1wPi/4h+Np1DyvTlDL6G+kap0M8= 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 1777005367060611.0796913621592; Thu, 23 Apr 2026 21:36:07 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Cd-0007WC-7R; Fri, 24 Apr 2026 00:31: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 1wG8CL-00072i-2y for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:30 -0400 Received: from mail-ot1-x334.google.com ([2607:f8b0: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 1wG8CI-0002pa-Us for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:24 -0400 Received: by mail-ot1-x334.google.com with SMTP id 46e09a7af769-7d1872504cbso6281511a34.0 for ; Thu, 23 Apr 2026 21:31:22 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005082; x=1777609882; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WK09IV4jv+83fptexQw6qhQ3h5DqduadUD1Gz4A8BTk=; b=Ms4UiT5SWXYhqDm+jhlI0r3QTW7D2GDhwjVur4nO1XLxBdOsZS4IHeHuEbgR1wJw0u zdOV5AAVVuANXqLZoIB4QH1AcJ1qvncO+D6un6QZR9lZ8QOhdTutsMnTQmYEKpvLccEd z2S92Cp1z/mBkeAbulrNURHN5hdF5nTKdjccaQeZ/GVQFOfT+3tngf/QtJkVReeNv/ff qYXdxkS50eKIgmppFk+AAy7Y+Wm+QVGJsLdgEPM7j2sYc8PnLMRiuFCaYMPnOZw9dzoq l+GJgXeknQdLWfLwKr8yoGaqxb956KsjBiv3Th/kGpMvO4PShROBCDhosnK191bg2OCv 2RYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005082; x=1777609882; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WK09IV4jv+83fptexQw6qhQ3h5DqduadUD1Gz4A8BTk=; b=XQhfGP6eJey0CnDuu7OgH+OYhwH1Essdo4kBokynYqcO+sK/Evo6xKyrqdHQfpZU64 f1BN6CtB6JH8SDz2z7TkFvYsqp/gewwLm3IdxJHaDU8hzgAl1uqbgUXhhT+N2pw2SLgl 8Mp5CMl1TS8HuAd+9k6pyU+ItazhjonGko9Dms/B/5x57r6rP2YmES5rsPos12WJIWHW NFktcHZTEAEUi9j/xLN+RnYC6trtLPzAkw8stkN5zUvVHzR5Rakebfi/KpcxSaP4PtZ4 NwzQugeu+cm1ARIyY2LBCgEShylQOkJhGLhoQ9X+XQgdAzaJozazjsQ1rf6m1+b6su/T gr7Q== X-Gm-Message-State: AOJu0YwVifS9d/n6+4W/Mh2HZTxg+XkGXmCNZiKKx0O7yMJV4x1aLTiB a9fWJTPDbAhQXmjbFqctoPDBhgwXE3YzZnZSebgdCdQlAe35+NZqT9gWa2XmLrIBCj4GEmw3PkN DglvrIz0= X-Gm-Gg: AeBDiev1yNsbYfCBXF3v31zp/tLftBky4badWHyUxe8pXYuJPAFTaSz9Mgw5/aMafcs RfQpe7pLm6TsWoUtbMONAX4V1SShmfhotnXyKC6iWxwO1GftvoZ9KkAu9D2FW0w9GbXXL+ffbZM 9SyRGDGvIGWvpLdz8pvB0LGzn7FPkuJk54A9Ya/b0QnKev3dVn1tXQkD36rZPlSTE0cuPaYmUm3 6BPkyQqbMY7Q9ons+y0koU4bE11o4ARaC59AOpQYaORwgb9hvOc5Wr576RMNLfUWrfbs2KIkCWg wzzDHV98bgsgxNXpJVdY8wGM5DBfErSh8+QrnbZ70StgmuOjbopGgxZ3WSt/XHxkG2VrxHOHVtN Yw2HQ7LxgNDnUcPgQ38VXBGddIAbK4S1be84OpzBl7XdZgDUBo6YvNM6fPbcfdpIqd9fxY0/aRA 0UVXnIyAdxtJ73BtsI+p7s3nE4GK1IZtH+pws/YlniPhrLowrQX5cEJiXLoJt2TQ== X-Received: by 2002:a05:6820:2208:b0:694:8b8a:b43d with SMTP id 006d021491bc7-6948b8abaedmr9535877eaf.29.1777005081663; Thu, 23 Apr 2026 21:31:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 14/40] target/arm: Enable FEAT_FPMR for -cpu max Date: Fri, 24 Apr 2026 14:29:48 +1000 Message-ID: <20260424043014.46305-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::334; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-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: 1777005368189158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 4 ++++ docs/system/arm/emulation.rst | 1 + 2 files changed, 5 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 343536523a..40ed799fb8 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1287,6 +1287,10 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64PFR1, GCS, 1); /* FEAT_GCS */ 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 */ + SET_IDREG(isar, ID_AA64PFR2, t); + t =3D GET_IDREG(isar, ID_AA64MMFR0); t =3D FIELD_DP64(t, ID_AA64MMFR0, PARANGE, 6); /* FEAT_LPA: 52 bits */ t =3D FIELD_DP64(t, ID_AA64MMFR0, TGRAN16, 1); /* 16k pages supporte= d */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 579df4c47b..fda73d3d07 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -75,6 +75,7 @@ the following architecture extensions: - 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) +- FEAT_FPMR (Floating-point mode register) - FEAT_FRINTTS (Floating-point to integer instructions) - FEAT_FlagM (Flag manipulation instructions v2) - FEAT_FlagM2 (Enhancements to flag manipulation instructions) --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005258; cv=none; d=zohomail.com; s=zohoarc; b=XPZzwX0WBD05fG1mwwtpKspUgRbQRDZF6XnuNbsRZufGz+YXk2dV8Va2tLdzdJGq+Tfj1qRcq28QJK3zRMxsdjxmmVozCY2jdtP281M/blCmp56lve+b97rB6m+hIEwEnMRPUQaY2rD5iYI6ylUmVK4d4ml0EZi8Y9Rk79A0M2o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005258; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ZMD0VgSvOctoffSNQ7zz1Fm9S+qkzJ2gc0NItSVQ7FU=; b=dZVcAtFPzId/PxZi7f+2Cu7FJGPok5GyH469i26WS4t5BA7Zeyv//+33vqOGiMbdk7Haq1ZEJZqg2DunSXfJw6GfeiBerW/4NBbQPmTQVYm9eNV0RTaE9B5iVJ8493cSZ4PHvWT68sRyEC7kLFdeVAeW+TXpxb5Un0qsXmPU+yM= 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 1777005258183532.7229239249665; Thu, 23 Apr 2026 21:34:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Cr-0000Az-Ep; Fri, 24 Apr 2026 00:31: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 1wG8CQ-00076M-FF for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:36 -0400 Received: from mail-ot1-x32f.google.com ([2607:f8b0: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 1wG8CO-0002qI-0H for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:29 -0400 Received: by mail-ot1-x32f.google.com with SMTP id 46e09a7af769-7dbca22dbfeso3257300a34.1 for ; Thu, 23 Apr 2026 21:31:27 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005087; x=1777609887; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ZMD0VgSvOctoffSNQ7zz1Fm9S+qkzJ2gc0NItSVQ7FU=; b=NLHHiaZgZVkm5d+r877KncwaI0kxf9LGxRpdmpIGnC9ym3XLeo6oWyJlESvny9m5Hh 9I+QB82Tq0QldNz/9JceRzz2UFUaauXH291MaXB/CR9Lic3AfdoejCmCjcqgWW35hKnL lCIy3R9CCthnpL1WisBmSA9ZS/9wXF5vmNTCJsrivg3gj9Atm51F9qH8WQ60dmrp13bc /+4qs40915XcjYbc6zTCN1TbdpEz5/myzAJUMNniTNm79G7aerrnkAili7u6lEyDkQ+h 2bVnF0unMMU9la1akFzzFdrgurD4gQjj13AdQDkzNCNbS7FNBAQ7eBenuBLHfQ+m1Ga+ XjqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005087; x=1777609887; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ZMD0VgSvOctoffSNQ7zz1Fm9S+qkzJ2gc0NItSVQ7FU=; b=AD5JUPKqVrM7TwEq4CskxlZpcoohJz82fFzG82ngYID183Pt/3ZMlDC2CARZjzPC2G 7ZphoyIP7ly4+8hCWIjJiS2kxBzYXWKKBJDw2fJSW6guL3MdwRfQKkAtv+iKpJYOhxq+ GPlj58U1lTIsJ47CZNcWfrx6BkilUSz7hzCeQ74HKCH8YH7jBFGWELGccfzG1rFuObls Z9ugSXrKmMCjEwy8FzZTQD3y0kjzUln5He+ierNbgeV02+zg5o4Ci0phl4itUbp9I6hr TytHfQaEvA2ndJ2E7wJ+3f16Omw7jhRMyg6aN9eVUTUAoG7nTnrzlz0RSNzpeFX98382 W5Zg== X-Gm-Message-State: AOJu0YxIADJXWrYPLY3ObFWANZN0LvypIgMM/fqi584nLRJAm3rbgk1x bFMDXuCydpuCwnDhorZe6bLv9lv9ix94Vgz5MRzSBwMtaUPju0oZ8cCEy3e1DcfXNPzQ/TbIA2K CvVd3/Xg= X-Gm-Gg: AeBDieuutm8mcd3Xlckid/nBCygV/7bLIld5P+yjPdSbBsQtLItu/4Ge9YNWXwQl8b5 /Jori+lWH2YszjGv8Aik+xPrFZEI+riHhrm8UWc8CmgXUXrQR7RArRdI6vyc6Tpf6+lQhh+9Qex I/dXJwmMKuc9nKUH4x0223y4nCqaFjS1dgzKyL1n1rJC6qYyMiS+332fVMtOkL5UQHxVRPRc7P2 /4mdud3cvsAB1aDD/PZD3ydLp/2/9Gj59T7NraR+uVD1mdZoqdSS08PVCYa++CwflDyCSw9l3Yh /h27s+Mp5J/V5Ju7fWQUqzYN7U6mniUksJIMAJrrWM0ajrArecrOBesXiSRrD3jxlsVJgmrpdRd dbC5qQm22XzNsF7HU3a3zxSf+a1F/0FUvQ6Jin6rJjp/kH6pLmu+hnfaec0HCIaJ77pK03CU8P1 ONc+Ja6NeIgd9T8771dN9AKPAAcANdtdjGbWpxxJo2zJAtACyaW2aZih0DOhtQXQ== X-Received: by 2002:a05:6820:2002:b0:694:9175:9d47 with SMTP id 006d021491bc7-6949175acafmr10033325eaf.18.1777005086461; Thu, 23 Apr 2026 21:31:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 15/40] target/arm: Implement ID_AA64FPFR0 Date: Fri, 24 Apr 2026 14:29:49 +1000 Message-ID: <20260424043014.46305-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::32f; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005259622158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 9 +++++++++ target/arm/helper.c | 13 +++++++++++-- target/arm/cpu-sysregs.h.inc | 1 + 3 files changed, 21 insertions(+), 2 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index ddef6fbeb0..df070afdbf 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -401,6 +401,15 @@ FIELD(ID_AA64SMFR0, I16I64, 52, 4) FIELD(ID_AA64SMFR0, SMEVER, 56, 4) FIELD(ID_AA64SMFR0, FA64, 63, 1) =20 +FIELD(ID_AA64FPFR0, F8E5M2, 0, 1) +FIELD(ID_AA64FPFR0, F8E4M3, 1, 1) +FIELD(ID_AA64FPFR0, F8MM4, 26, 1) +FIELD(ID_AA64FPFR0, F8MM8, 27, 1) +FIELD(ID_AA64FPFR0, F8DP2, 28, 1) +FIELD(ID_AA64FPFR0, F8DP4, 29, 1) +FIELD(ID_AA64FPFR0, F8FMA, 30, 1) +FIELD(ID_AA64FPFR0, F8CVT, 31, 1) + FIELD(ID_DFR0, COPDBG, 0, 4) FIELD(ID_DFR0, COPSDBG, 4, 4) FIELD(ID_DFR0, MMAPDBG, 8, 4) diff --git a/target/arm/helper.c b/target/arm/helper.c index 6ebd121050..f0f00c6eff 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6510,11 +6510,11 @@ void register_cp_regs_for_features(ARMCPU *cpu) .access =3D PL1_R, .type =3D ARM_CP_CONST, .accessfn =3D access_tid3, .resetvalue =3D 0 }, - { .name =3D "ID_AA64PFR7_EL1_RESERVED", .state =3D ARM_CP_STAT= E_AA64, + { .name =3D "ID_AA64FPFR0_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 0, .crm =3D 4, .opc2 =3D = 7, .access =3D PL1_R, .type =3D ARM_CP_CONST, .accessfn =3D access_tid3, - .resetvalue =3D 0 }, + .resetvalue =3D GET_IDREG(isar, ID_AA64FPFR0) }, { .name =3D "ID_AA64DFR0_EL1", .state =3D ARM_CP_STATE_AA64, .opc0 =3D 3, .opc1 =3D 0, .crn =3D 0, .crm =3D 5, .opc2 =3D = 0, .access =3D PL1_R, .type =3D ARM_CP_CONST, @@ -6745,6 +6745,15 @@ void register_cp_regs_for_features(ARMCPU *cpu) R_ID_AA64SMFR0_I16I64_MASK | R_ID_AA64SMFR0_SMEVER_MASK | R_ID_AA64SMFR0_FA64_MASK }, + { .name =3D "ID_AA64FPFR0_EL1", + .exported_bits =3D R_ID_AA64FPFR0_F8E5M2_MASK | + R_ID_AA64FPFR0_F8E4M3_MASK | + R_ID_AA64FPFR0_F8MM4_MASK | + R_ID_AA64FPFR0_F8MM8_MASK | + R_ID_AA64FPFR0_F8DP2_MASK | + R_ID_AA64FPFR0_F8DP4_MASK | + R_ID_AA64FPFR0_F8FMA_MASK | + R_ID_AA64FPFR0_F8CVT_MASK }, { .name =3D "ID_AA64MMFR0_EL1", .exported_bits =3D R_ID_AA64MMFR0_ECV_MASK, .fixed_bits =3D (0xfu << R_ID_AA64MMFR0_TGRAN64_SHIFT) | diff --git a/target/arm/cpu-sysregs.h.inc b/target/arm/cpu-sysregs.h.inc index b99579f773..6e8b335b8f 100644 --- a/target/arm/cpu-sysregs.h.inc +++ b/target/arm/cpu-sysregs.h.inc @@ -3,6 +3,7 @@ DEF(ID_AA64PFR0_EL1, 3, 0, 0, 4, 0) DEF(ID_AA64PFR1_EL1, 3, 0, 0, 4, 1) DEF(ID_AA64PFR2_EL1, 3, 0, 0, 4, 2) DEF(ID_AA64SMFR0_EL1, 3, 0, 0, 4, 5) +DEF(ID_AA64FPFR0_EL1, 3, 0, 0, 4, 7) DEF(ID_AA64DFR0_EL1, 3, 0, 0, 5, 0) DEF(ID_AA64DFR1_EL1, 3, 0, 0, 5, 1) DEF(ID_AA64AFR0_EL1, 3, 0, 0, 5, 4) --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005172; cv=none; d=zohomail.com; s=zohoarc; b=PT4VIZpazXZZZV/zVpekCIyskcxB7i48pnQ3kO8Huaka/nhnwxKJzjSJS2oPZaiGiyb459ZFWe32w90zzJ8/fXEu1UhXBAX1RYoaDS0EcW0qcazD8onmqRVLFn+kVI5vhnBBbUIIGajB7LZesJDpa7Dr7miWyHM4DVQXU9JXK7c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005172; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=QGh/j5N9mcyZy1AmwrVJTGg59tA16h2SHgyGHktIv1c=; b=Dwv5kqAtduQ2qzdNkk1+69gbs8n4fA16r3iOKADO/U41DGsJbzzFDNtPv498cXupi6BsyhCqI9vCqoW04XojEeywFI3RgcrcuZKpqRfONTmi8YGdv4MUYBGK4gmxOGGhtHnpxwTmEgTtrxSV6IMV04wePj9GbfKY6Wd172dB+Hc= 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 1777005172119781.3577488526892; Thu, 23 Apr 2026 21:32:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Ck-0007yP-Ah; Fri, 24 Apr 2026 00:31: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 1wG8CT-0007A2-To for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:37 -0400 Received: from mail-oa1-x34.google.com ([2001:4860:4864:20::34]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8CR-0002rt-LN for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:33 -0400 Received: by mail-oa1-x34.google.com with SMTP id 586e51a60fabf-40f1ffba6a0so5402683fac.0 for ; Thu, 23 Apr 2026 21:31:30 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005090; x=1777609890; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=QGh/j5N9mcyZy1AmwrVJTGg59tA16h2SHgyGHktIv1c=; b=ZuV9KSoB1uzPkoVKYuhBeioOAQcd+x0UOM5gJ0JOeKB9hohz9JSGwhobhiGp8MsQ0S o67Fn3iA0LcLOaS74N9NUf0XOZBG4p0w7qfOtm5e7w8asbBLmUPG1Ei2Bnme6UoH0IX9 GZPqkocmn6ibIma/F6TcnZ4RtTld5pMRJep1MeQ5FElNFGa94wpZ/J5ARrYKwPi+sHNh TMSNTsy/5NVT1NeWQdn5R7xAOOHYgP8YqBa9ZSdp54NX2S/LuAWIZD3bt6Bwv6s87WvA gdul5xIuqIpBk1emN28lI5xj5ZzbEdiDinJMwKgexI3whKMk1C0aARPpByV9/Zx9qV4F M4gg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005090; x=1777609890; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=QGh/j5N9mcyZy1AmwrVJTGg59tA16h2SHgyGHktIv1c=; b=iAP1ggCPsRJ2sgnZO57iMUSHB0wWtYJiFKaxlRIfdJCi499xGo0Pm8nRvR2OkV5THa yA92yr+m5OJlQ9/97AQEbjmp/kkcHG3fjp0wKi/F3t/cH2M9oxEqLErV9LrLZZ7gr4a3 W5HArjawglGMbp8m6QZHUZB+GzAa3Q6wz3nFzN74iQjpY7hnEwRgZOaXc1jjvpmLYKSE 9+/SsrefiVQBmaWHt+R7VSQ0cBKyjZNsoDg1ngt1yBbtq5mb5Wmsws6WsFHahes83gNO 1Cp3b1DkyPecd6VmBdhDAxHhQOZudaGXnarr0SYIZ0uCIlR3JUFawrkf8ALj+t7aSXlE PrFg== X-Gm-Message-State: AOJu0YzaNET1cCU+hlLb3GHZfDnxwJyKv6vmAxebKcb7kV3WmktkjMbm CJfAaknfFGWF9Ue/n6S7XgMtJoHl881SAxD7yuQikFHsoJEhUb/gF60osviVfvu3CVoA0mYwPt4 yDnfe2CE= X-Gm-Gg: AeBDiev39jTgmKrKuTrL6kfXbWN5xR5UiGdnyJNUBpCvrp6y8dgf9uxLi8aYZvFuE9V mzUP6I9TneWSTvjAR0BXWFX6JV1PhPZHIiRiOyCedvnQWyFbBVMzjWYRkCZ8si1jKgbpt4+XHtU 8NEHHjc9LFN13t9eQn7YF48NUFjSSPxCf3aatwq5g493Knb7EEpmMq4YvvmqWVtgKdPPt2ApYTd NfHi80hWkfJqGKhIlKA3iN4AUA0sGKd4PtsEdmyMeAPws8zjzjd+nbryXu+PZgiOXJU2CcRuQkV xSZcsPTNgmGtr8yupGL4WGVogKsexZt/DJMNtbmgW/VWHPY7kcr5j+mFJjhJ0Y/B2UYE0XHADfx Fg4rz3qUzvIAbtcOI3630Ap0dsz+JdJ9mPwOMKnz0KOJ+chZ/35J66W0gfJv2w0GftrjBGDLB+r EuvtXbX4bX/KlBJrkbp4cs2XXFI/nRugkiBB5N7S5O4jqZ0CkEZ9mEeeRiYZJh0+hseq2Oy8nn X-Received: by 2002:a05:6870:9a8c:b0:42c:36c:8bce with SMTP id 586e51a60fabf-42c036c98b4mr15919452fac.12.1777005090046; Thu, 23 Apr 2026 21:31:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 16/40] target/arm: Add isar_feature_aa64_f8cvt Date: Fri, 24 Apr 2026 14:29:50 +1000 Message-ID: <20260424043014.46305-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::34; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x34.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005173228158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index df070afdbf..87d16b57dd 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1550,6 +1550,11 @@ static inline bool isar_feature_aa64_sme2p1(const AR= MISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMEVER) >=3D 2; } =20 +static inline bool isar_feature_aa64_f8cvt(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8CVT); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005111; cv=none; d=zohomail.com; s=zohoarc; b=AD0ra3he5dGI2WcerPx0NFTG7DISgrY8iczfDR8F8gY46LvvRIBobW2SGUhbnol7268ANItmAU0I2GO3uJCoecrWZY6rqzGS19LKDP504Vb720MnQRckDLaNxH/lDdES1rNbwh8avswkqtFSzNSks6bRsh5TCGyUXldTN3mbmfs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005111; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=mdqYSYvyNpmf3YSAjo2AYikrIIkpiycHh+h6wUIhrr0=; b=PqdAkhwf6KELL6dQibkkrMPRgzWJMq5kvPDMJRYQr/uAIq3wYAdF3LO2oX5lictupbOhlit49/Av0ZOk9roBTbAeePEMkL0f9Knc5GdN2pFt/2tc+c2l+USYDIigIGZDXE2H+pgj63hxhiR15qy1UqRCQT46bn7Uq3kiRLwBDoE= 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 177700511191632.53175258964643; Thu, 23 Apr 2026 21:31:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Ch-0007in-JA; Fri, 24 Apr 2026 00:31: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 1wG8CZ-0007DK-Ko for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:40 -0400 Received: from mail-oa1-x34.google.com ([2001:4860:4864:20::34]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8CY-0002sx-1f for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:39 -0400 Received: by mail-oa1-x34.google.com with SMTP id 586e51a60fabf-4094b31a037so4589318fac.1 for ; Thu, 23 Apr 2026 21:31:36 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005094; x=1777609894; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=mdqYSYvyNpmf3YSAjo2AYikrIIkpiycHh+h6wUIhrr0=; b=eL4jT3KEGajODIKSJcQjVIVKg7Wa5HOBL4tHyAu9+wO3djK2V69hedkP9Ij2fiES+w p1c58FdCawU2RO3daNvEo751kaMVNzvDM0K354j2+eoR1+yMZTH7WFk3w+quPDZ/rMpM mJNqE1xtlKYBGPDKX1oureyNZEYXblfzZCfLyzf9Vi9MXn9U7ZnoVA7UrilK6K6ziZPo PH8TtDBUVzYbxwx0GuVLWbLgLC5E0th9qbw0pUlCzb5bwkX8OPgwYfLyqJHmHYTz3wuN z5DunfrO2A6mNso2lW1s0WWNfcopvqV9xipJIhuXFQyRJE/EPC/CXWS0XEZ6p/3S0Q8h C3Jw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005094; x=1777609894; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=mdqYSYvyNpmf3YSAjo2AYikrIIkpiycHh+h6wUIhrr0=; b=Jd2J72Uve2bJcBTe4RWfbjyqcdR4BgP75NtAMyoj5gp08lVFZTkjcoHVsKbOlUvuJE tHsYXe1lN+PUiox/oQ7XllMzgdxgIvwzek+3iayJj+HDb7Y18ogQQUSXl7nchcbn3Pz9 Iq/CCu5qd/9posuzdiWhl30HLosQ7cqJm4EwWWQlNrgEhzByG65v0oipHl4YcbTrBeQk 48dyWYkCA4MgP50VcLT5Fm/X8XRIeGgqe6yW78xDx2N6o6S19Oe5a+ZuTWM2YgUzTbQh VRsoXz3MIbtQJ2feO1Oi4E5W0XSPpSFThTh6wOwebvDfnlG+XF+9/2NklvnW5v4iI6lP xGLQ== X-Gm-Message-State: AOJu0YylT+ZQmAdUlC8P/5lehyHNPi0ppb3QuxKAXYk/7+UQl3yhyBKi Hu8WV734SSUrXL/Zof8dRXxymz5skU0K+Zbezoz9PBK367f3xigE9Zlqs7XYrMb+JRXuFXaWvI4 Fc4joD8M= X-Gm-Gg: AeBDievQa/dBZEo9vtGPyzStPKmfJRs7mn73OsCLlgmH9d06ntmKA9tvbhnPF53P/U/ 7hmZ3D57iUJrfE2uLzchFRGH7uzay9bbv6AQ79lhrSThtnXifMybEN6BLEpXXaSOKRKIIQGwFMo 2sY5Ep/DZYzHwijXSiaU5asBsuWjdMWqQ0k3n92QVrWfSsbkPxd7cAKfGct2wnCXmyGVky47Cml NkQPY7VtwS1hx7FxtaWJjoK4UGJr4V9dmaLYF0gkF4FP+ZiMA/50brxP9sgdF8F9Y64+JYXnUN/ rmy+eI2Mem/U2uQGAh5ufG4HRWqk8cz9xas1a5aGo21W5BLqHSfitUU5KRba7LqXZ62RcsQmvbY ZKEQ0f5jCigJ/Y98/77C+j02O7pqJ6E7IW7TSQb5NU4f4OLsecoV/VVPyPE77PAcihuyNFpEhDi uHccjsKea2BfJlO8GsUS2/KMrnph4lhbRvoVwwgUPucxX4oykEChuPxDRwqNyEAA== X-Received: by 2002:a05:6870:c98c:b0:41c:573:aa5f with SMTP id 586e51a60fabf-42aded68861mr18565256fac.31.1777005094408; Thu, 23 Apr 2026 21:31:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 17/40] target/arm: Implement FSCALE for AdvSIMD Date: Fri, 24 Apr 2026 14:29:51 +1000 Message-ID: <20260424043014.46305-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::34; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x34.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005114552154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-a64-defs.h | 4 ++++ target/arm/tcg/vec_internal.h | 4 ++++ target/arm/tcg/translate-a64.c | 7 +++++++ target/arm/tcg/vec_helper64.c | 16 ++++++++++++++++ target/arm/tcg/a64.decode | 3 +++ 5 files changed, 34 insertions(+) diff --git a/target/arm/tcg/helper-a64-defs.h b/target/arm/tcg/helper-a64-d= efs.h index eb270cf58b..08ba8a98a1 100644 --- a/target/arm/tcg/helper-a64-defs.h +++ b/target/arm/tcg/helper-a64-defs.h @@ -152,6 +152,10 @@ DEF_HELPER_FLAGS_5(gvec_famin_s, TCG_CALL_NO_RWG, void= , ptr, ptr, ptr, fpst, i32 DEF_HELPER_FLAGS_5(gvec_famax_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fps= t, i32) DEF_HELPER_FLAGS_5(gvec_famin_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fps= t, i32) =20 +DEF_HELPER_FLAGS_5(gvec_fscale_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(gvec_fscale_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) +DEF_HELPER_FLAGS_5(gvec_fscale_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, fp= st, i32) + #ifndef CONFIG_USER_ONLY DEF_HELPER_2(exception_return, void, env, i64) #endif diff --git a/target/arm/tcg/vec_internal.h b/target/arm/tcg/vec_internal.h index 5c3f51eed3..b647399b18 100644 --- a/target/arm/tcg/vec_internal.h +++ b/target/arm/tcg/vec_internal.h @@ -349,6 +349,10 @@ float32 float32_famin(float32, float32, float_status *= ); float64 float64_famax(float64, float64, float_status *); float64 float64_famin(float64, float64, float_status *); =20 +#define float16_fscale float16_scalbn +#define float32_fscale float32_scalbn +float64 float64_fscale(float64, int64_t, float_status *); + /* * Decode helper functions for predicate as counter. */ diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index d132e051ca..515c0fb2e0 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6495,6 +6495,13 @@ static gen_helper_gvec_3_ptr * const f_vector_famin[= 3] =3D { }; TRANS_FEAT(FAMIN, aa64_faminmax, do_fp3_vector, a, 0, f_vector_famin) =20 +static gen_helper_gvec_3_ptr * const f_vector_fscale[3] =3D { + gen_helper_gvec_fscale_h, + gen_helper_gvec_fscale_s, + gen_helper_gvec_fscale_d, +}; +TRANS_FEAT(FSCALE, aa64_f8cvt, do_fp3_vector, a, 0, f_vector_fscale) + static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2) { if (fp_access_check(s)) { diff --git a/target/arm/tcg/vec_helper64.c b/target/arm/tcg/vec_helper64.c index b5ad67b5e0..5479d98daf 100644 --- a/target/arm/tcg/vec_helper64.c +++ b/target/arm/tcg/vec_helper64.c @@ -175,3 +175,19 @@ DO_3OP(gvec_famax_s, float32_famax, float32) DO_3OP(gvec_famin_s, float32_famin, float32) DO_3OP(gvec_famax_d, float64_famax, float64) DO_3OP(gvec_famin_d, float64_famin, float64) + +float64 float64_fscale(float64 n, int64_t m, float_status *s) +{ + /* + * Given the 'int' parameter of float64_scalbn, we have to saturate + * the 'int64_t' parameter of the operation to some value. Since + * float64 has an 11-bit exponent, saturating to 12 bits is sufficient + * to ensure that DBL_TRUE_MIN can be made to overflow. + */ + int sat_m =3D MIN(MAX(m, -0xfff), 0xfff); + return float64_scalbn(n, sat_m, s); +} + +DO_3OP(gvec_fscale_h, float16_fscale, int16_t) +DO_3OP(gvec_fscale_s, float32_fscale, int32_t) +DO_3OP(gvec_fscale_d, float64_fscale, int64_t) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 666a293540..02c7264cb9 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1198,6 +1198,9 @@ FAMAX 0.00 1110 1.1 ..... 11011 1 ..... ...= .. @qrrr_sd FAMIN 0.10 1110 110 ..... 00011 1 ..... ..... @qrrr_h FAMIN 0.10 1110 1.1 ..... 11011 1 ..... ..... @qrrr_sd =20 +FSCALE 0.10 1110 110 ..... 00111 1 ..... ..... @qrrr_h +FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ..... @qrrr_sd + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005159; cv=none; d=zohomail.com; s=zohoarc; b=VhYPxxjg8Q3r64Tn08zM1SbJz86pmkXVVsvqKze5SAk3sPluJGlMzexTpOlzpNAE46EgYOt77nGdj8iw7Fj9lCEU49Q3nsqtubZQ2KS01qqKRpG2cBDKPtV8j/UbeXT/6a+GjscXflwdvuQ18jrAKbyppluDZAND4moGQjcNEEk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005159; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=7V3cChxtG3x49nUgjSHcR9O7ZWwgxyibx9DFKFeEU6A=; b=ROd8fQkBZqGM+1cs8goFKKbf85n+zX1rPDUmtQuwx3s+KyEDGi+m8ArScSaoLtD4fFTLXeTgXvIPY26vZhJU8N3lQlxNfL6nWg2U9qsiqBU+aIJcJB8nl2twxpW+FW7PrWy++XvlQyBMyCOujeH5+UXuwMu8eyZAV7PHy23wdrc= 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 1777005159853717.667172617554; Thu, 23 Apr 2026 21:32:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Ck-00082L-TH; Fri, 24 Apr 2026 00:31: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 1wG8Cb-0007NA-N7 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:41 -0400 Received: from mail-oi1-x231.google.com ([2607:f8b0:4864:20::231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8CZ-0002u5-Sz for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:41 -0400 Received: by mail-oi1-x231.google.com with SMTP id 5614622812f47-479e4835e26so2682382b6e.3 for ; Thu, 23 Apr 2026 21:31:39 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005099; x=1777609899; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=7V3cChxtG3x49nUgjSHcR9O7ZWwgxyibx9DFKFeEU6A=; b=lKFVl2PaGh0e7wcKXOoSRCmeaKGinebRCWxyx89DjKabcF9MRcwA00pUrzLY9j8jbu geATjYl/Ecy3Nl8H5cw4f2h94LdkpGRyG1CzZQWCcGHaUgu4+79C9iohDqhIGtww21D4 6F8cGh1BxAuJ6mRokZl/0pUue5r+37ZCxwE+kkpOz+ACZcs6bghEL/KBqFW5DReR8lB3 6imXpISNRpEZAMGWaLup0cxmYSiItgoI/wJr0XRyxncBSJs4U/kY5D/97tgHtWOpWF5W ltWvXJsOrrTItCDxMw5KBG2OCISbhpWptLn7KhFKrJMdEN3ZasD3t/HTProReNtH7TOi ci2w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005099; x=1777609899; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=7V3cChxtG3x49nUgjSHcR9O7ZWwgxyibx9DFKFeEU6A=; b=cYWyugFOJxx/mRzzfPFTMD0wM0FkwL7Na/UHwWGscYswMCqPAQk4taFsKnFrnXC2go dKh3JnJSt59tqYzphX4pnZDrGJIa7K80A/CO3l98kAACUWNqdCW+pf5NXaE5+mpN/1OW cIFqtH1LPBmU6BJJSvPOu1occi2KespoNExhEgSDc1jdMt3fVn6y3xj9NhUUXkg/AflR sJEV0XyrK8b9r/gSgmbcDy+i8VsSu4KyGgitaOgb5AsnNyk1Ll8BQvtFgICccFV3Lef5 QJOUDCH4KmQ4a/kpZw9n09NCacPWMLf31jjMmH94o/t4Efq9qiNtGdtL5BjkDORf4xbM rEww== X-Gm-Message-State: AOJu0YxLebEZ60n4gnLEXxXKlhKSKWyNP5ACAHf/ObLta7xxLB/ca9QG gLP7xXQEoBjfWYjl7/kX6uogV7Qca7V9fqTBogHqz/M6t9cqZGhxTw1ENZ4hUZxCSYY7DSoybWW 8TDbOzfA= X-Gm-Gg: AeBDieuWkXixSGiyI8NlFch+XjIpCUYOS0N8XcL3w+OcfJLFn8bX7hIsdG3Cb9DyWVM sdus7HLBFTpC4u2JLA9jV64HOVjZ36bFYA37Qountj22xFAGDIMTmzF2Vd0GLDYO+66M9ctdU87 Enz30Mg3Cxb5TmzTPd5zIDKXkHLoYVkJX0kDLwBL8uU36QTEwAfH5kV6ZlsW+W0vZm5O00Qu+Fh jZQ2La1o0j9LRgXq/LDCIpvK++RXJTRhF+H8zxiVXrZGBihleffb/fcyyhyR60sAtAilcCu8J2S bljD4izlfCVoO2Hu5cIWSrVH89ECNyfNtIvEr6u6PhnUgAS5CBInTiC2uh9blF4GUtJVnwVcRWy 42YMKXLL0M8b4zAhXCjxULov/Zto3YSyBoUoTRw+oPKBUjDgHIl9245yM7pp3hcEmTzYa6lJ+Ow v8Txa08FxpmqMIMo/BIHFo6CRnrsHCI07Mo1LDDct4ggUPzhk0jfkyIy0kI7VKDw== X-Received: by 2002:a05:6808:3a06:b0:46a:869c:b576 with SMTP id 5614622812f47-4799c8f895dmr16031933b6e.2.1777005098677; Thu, 23 Apr 2026 21:31:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 18/40] target/arm: Implement FSCALE for SME Date: Fri, 24 Apr 2026 14:29:52 +1000 Message-ID: <20260424043014.46305-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::231; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x231.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: 1777005161315158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sme.c | 15 +++++++++++++-- target/arm/tcg/sme.decode | 6 ++++++ 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 87d16b57dd..8a6e5d555b 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1603,6 +1603,11 @@ static inline bool isar_feature_aa64_sme2_faminmax(c= onst ARMISARegisters *id) return isar_feature_aa64_sme2(id) && isar_feature_aa64_faminmax(id); } =20 +static inline bool isar_feature_aa64_sme2_f8cvt(const ARMISARegisters *id) +{ + return isar_feature_aa64_sme2(id) && isar_feature_aa64_f8cvt(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/translate-sme.c b/target/arm/tcg/translate-sme.c index ca6b130cfe..c6a8eec32c 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -706,9 +706,12 @@ static bool do_z2z_n1_fpst(DisasContext *s, arg_z2z_en= *a, { int esz =3D a->esz, n, dn, vsz, mofs; bool overlap =3D false; - gen_helper_gvec_3_ptr *fn; + gen_helper_gvec_3_ptr *fn =3D fns[esz]; TCGv_ptr fpst; =20 + if (fn =3D=3D NULL) { + return false; + } /* These insns use MO_8 to encode BFloat16. */ if (esz =3D=3D MO_8 && !dc_isar_feature(aa64_sme_b16b16, s)) { return false; @@ -718,7 +721,6 @@ static bool do_z2z_n1_fpst(DisasContext *s, arg_z2z_en = *a, } =20 fpst =3D fpstatus_ptr(esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64); - fn =3D fns[esz]; n =3D a->n; dn =3D a->zdn; mofs =3D vec_full_reg_offset(s, a->zm); @@ -830,6 +832,15 @@ static gen_helper_gvec_3_ptr * const f_vector_famin[4]= =3D { }; TRANS_FEAT(FAMIN_nn, aa64_sme2_faminmax, do_z2z_nn_fpst, a, f_vector_famin) =20 +static gen_helper_gvec_3_ptr * const f_vector_fscale[4] =3D { + NULL, + gen_helper_gvec_fscale_h, + gen_helper_gvec_fscale_s, + gen_helper_gvec_fscale_d, +}; +TRANS_FEAT(FSCALE_n1, aa64_sme2_f8cvt, do_z2z_n1_fpst, a, f_vector_fscale) +TRANS_FEAT(FSCALE_nn, aa64_sme2_f8cvt, do_z2z_nn_fpst, a, f_vector_fscale) + /* Add/Sub vector Z[m] to each Z[n*N] with result in ZA[d*N]. */ static bool do_azz_n1(DisasContext *s, arg_azz_n *a, int esz, GVecGen3FnVar *fn) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 9dec7318a4..ee874be1a6 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -250,6 +250,9 @@ ADD_n1 1100000 1 .. 10 .... 1010.0 11000 .... 0= @z2z_4x1 SQDMULH_n1 1100000 1 .. 10 .... 1010.1 00000 .... 0 @z2z_2x1 SQDMULH_n1 1100000 1 .. 10 .... 1010.1 00000 .... 0 @z2z_4x1 =20 +FSCALE_n1 1100000 1 .. 10 .... 1010.0 01100 .... 0 @z2z_2x1 +FSCALE_n1 1100000 1 .. 10 .... 1010.0 01100 .... 0 @z2z_4x1 + ### SME2 Multi-vector Multiple Vectors SVE Destructive =20 %zm_ax2 17:4 !function=3Dtimes_2 @@ -291,6 +294,9 @@ FAMAX_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 0= @z2z_4x4 FAMIN_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 1 @z2z_2x2 FAMIN_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 1 @z2z_4x4 =20 +FSCALE_nn 1100000 1 .. 1 ..... 1011.0 01100 .... 0 @z2z_2x2 +FSCALE_nn 1100000 1 .. 1 ..... 1011.0 01100 .... 0 @z2z_4x4 + ### SME2 Multi-vector Multiple and Single Array Vectors =20 &azz_n n off rv zn zm --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005146; cv=none; d=zohomail.com; s=zohoarc; b=jN5UxuBJu3ySscBtsVbPG8gaNDIVXQclia9JQ0CHaeRq4ckuFOtSRA/QdZ/nukhp5gGN6HJ6pAvtbiV9AmlFUay7Agn1GVHwOgE7zpNkWF5ZI8nyxlGSeuEkUR+9IS/0iFcCCT3ZyUNf/9Wj2eOFqnatmqBiUxTtx7BCg+eUcH4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005146; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Su7VYGRrcdszkKPYCMhXf5vTOdniXRif5U1SUu2ox64=; b=S1nLGSLGBeGj458q8UZoSk9nYkhhbnSvXZgoTUeBweOexmpJrGJM1Za+i/q8qjw6naaZ5cesHTd5tEgSUaf6j/y/f0dz41+ZUI7AZKvQCsZrvVbIGDceISiwa2pUXsrGpTexutZg3xcBe87ylWtfa1ofjhvhpxatyfu+Gcsw1WU= 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 1777005146551380.157161207704; Thu, 23 Apr 2026 21:32:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DC-0001Ay-3S; Fri, 24 Apr 2026 00:32: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 1wG8Cg-0007ng-9E for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:48 -0400 Received: from mail-oa1-x29.google.com ([2001:4860:4864:20::29]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Ce-0002w1-DO for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:46 -0400 Received: by mail-oa1-x29.google.com with SMTP id 586e51a60fabf-4042905015cso4427075fac.0 for ; Thu, 23 Apr 2026 21:31:43 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005103; x=1777609903; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=Su7VYGRrcdszkKPYCMhXf5vTOdniXRif5U1SUu2ox64=; b=DQ7liQu7rJrgvNUGs1SqyX62g0yK/vVsKv2IXmFqXz1HfyWj4cRWxkQTF6BAeGkMJB Ek6uqgtSIPakZYUSmSTOFJkLIDOg0RuU3ApJRszifmm1DVqDyo86/ArZ83w70l/XoV4d TpWdg/ekY5+uENulxjQ/P6hoC9ynjzXy1T1KDdc42zookIdBMNT/2x6TV++xerFC02+T 487VfR8FpTsUXNgXBsqMc6gxWjLhVH4MLn8plziTqmzd9/Rz1zxE2s+DZlkRUH+s3Y8a 8Jakc5bvlc0LCdwp96oXdu3IDB5IB1V3NS7Nvn4R3+xads7l4z0gtrHaC2esLgOjOc65 M6/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005103; x=1777609903; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=Su7VYGRrcdszkKPYCMhXf5vTOdniXRif5U1SUu2ox64=; b=RIvo7GSjjgelyAZEWXj8Gnas+F6F0WKtO+nB99SbyLp5v7+OpFuKqkGnc0Wc8DTHbe XGrOUiFMP598JS/G2afXk5b1cKRpbUKLgEzy8+gKcRRlk1AvfkJ1sOrWVoxEVbNISTBZ 0vbAvchqgrEFXntd5S+GqtmmdX/dpZLbqEbriQFRH2dB6CerUmkpBLy6ikE4aMaGcfxW OekFUGUwvRuZCYDOhzzCLu81wYknmrjpHDOqdJrruRV1n/aqzLmIVj6aafPoNRM/vzPY PpQMy3ZPLMBxqcs3fHWK5KOr4kfv0MSURwM/IE6zZnvly1wLXKVsUH/bB1w1ULJKCrMe GGIA== X-Gm-Message-State: AOJu0YxUU6bBD1C72eHYnes4X050TqMtdBkwwKfmOTzc1UkWRBiRYK5o l8pCWD51oJke3At8nx2rYE9r0OkiePPaLMUr/ccEjn7IgOt16JeTyR2XJaSvSlNpdpPwFIFbTTM S19nwX5c= X-Gm-Gg: AeBDietiQ8dEImcq5v43fLPzhAhTMpJQdWSQt44s1mRBNGsiVMpKxy7wld7fWju8SK5 2zD/qiYx+cN9wfxHVaKPHuTCwDMMVBRED9nX3Ae7VIQLk4PxPlZEteS56O73Thp9Ze2lQ0xmuRw BQUSVUyh+cQHcG+NX/fOeANsuYKufF+3TGcixxECaGKTZhH0lQL3xoCnHoLoe2zbDCN5qYNqQX2 vPlQN6xJl8xqHxTKxtseWZbRNoHCN8XTxVF9GfoSrkeK/SBKtKekGrCgFZbRLEg35ltmJCln7qR YBGj4OIRJYG+lOD6O7Sqm6Mqp9ut6d3keNtzoMkIbAGmH8T/Y1bbm83A/oTXvFKasbZc5p+8tMr 3G7e0+SgPJKeWnExv6sPoETzyQUZ8yVOuhv8YTk/zBXyku2cQfPRjC4Ehvkk/aKrGTAB4ciZvSO jCcvD0CPYchVCYNG7JvLakHAu5OTgBwuX2PiMAy1IV83Z6FcDlXUTlet1v57XKYuaNEu04nGt4 X-Received: by 2002:a05:6870:5491:b0:42c:1b45:e8c3 with SMTP id 586e51a60fabf-42c1b468ab9mr12160708fac.33.1777005103077; Thu, 23 Apr 2026 21:31:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 19/40] fpu: Add scalbn argument to fp8 conversion routines Date: Fri, 24 Apr 2026 14:29:53 +1000 Message-ID: <20260424043014.46305-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::29; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x29.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: 1777005147250158500 Content-Type: text/plain; charset="utf-8" All Arm fp8 conversions have a power-of-2 scaling factor. Signed-off-by: Richard Henderson --- include/fpu/softfloat.h | 16 ++++++++++------ fpu/softfloat.c | 35 +++++++++++++++++++++-------------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/include/fpu/softfloat.h b/include/fpu/softfloat.h index 8389a07b04..6f86848b7e 100644 --- a/include/fpu/softfloat.h +++ b/include/fpu/softfloat.h @@ -195,13 +195,17 @@ float128 uint128_to_float128(Int128, float_status *st= atus); =20 float8_e4m3 float4_e2m1_to_float8_e4m3(float4_e2m1, float_status *status); =20 -bfloat16 float8_e4m3_to_bfloat16(float8_e4m3, float_status *status); -float8_e4m3 bfloat16_to_float8_e4m3(bfloat16, bool sat, float_status *stat= us); -float8_e4m3 float32_to_float8_e4m3(float32, bool sat, float_status *status= ); +bfloat16 float8_e4m3_to_bfloat16(float8_e4m3, int scale, float_status *sta= tus); +float8_e4m3 bfloat16_to_float8_e4m3(bfloat16, int scale, + bool sat, float_status *status); +float8_e4m3 float32_to_float8_e4m3(float32, int scale, + bool sat, float_status *status); =20 -bfloat16 float8_e5m2_to_bfloat16(float8_e5m2, float_status *status); -float8_e5m2 bfloat16_to_float8_e5m2(bfloat16, bool sat, float_status *stat= us); -float8_e5m2 float32_to_float8_e5m2(float32, bool sat, float_status *status= ); +bfloat16 float8_e5m2_to_bfloat16(float8_e5m2, int scale, float_status *sta= tus); +float8_e5m2 bfloat16_to_float8_e5m2(bfloat16, int scale, + bool sat, float_status *status); +float8_e5m2 float32_to_float8_e5m2(float32, int scale, + bool sat, float_status *status); =20 /*------------------------------------------------------------------------= ---- | Software half-precision conversion routines. diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 91c34307c8..bcec7d38c8 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -2853,7 +2853,8 @@ static void parts_float_to_ahp(FloatParts64 *a, float= _status *s) } } =20 -static void parts_float_to_e5m2(FloatParts64 *a, float_status *s, bool sat= urate) +static void parts_float_to_e5m2(FloatParts64 *a, float_status *s, + int scale, bool saturate) { switch (a->cls) { case float_class_snan: @@ -2873,8 +2874,10 @@ static void parts_float_to_e5m2(FloatParts64 *a, flo= at_status *s, bool saturate) =20 case float_class_denormal: float_raise(float_flag_input_denormal_used, s); - break; + /* fall through */ case float_class_normal: + a->exp +=3D MIN(MAX(scale, -0x7f), 0x7f); + break; case float_class_zero: break; default: @@ -2955,21 +2958,21 @@ float8_e4m3 float4_e2m1_to_float8_e4m3(float4_e2m1 = a, float_status *s) return float8_e4m3_round_pack_canonical(&p, s, false); } =20 -bfloat16 float8_e4m3_to_bfloat16(float8_e4m3 a, float_status *s) +bfloat16 float8_e4m3_to_bfloat16(float8_e4m3 a, int scale, float_status *s) { FloatParts64 p; =20 float8_e4m3_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts_scalbn(&p, scale, s); return bfloat16_round_pack_canonical(&p, s); } =20 -bfloat16 float8_e5m2_to_bfloat16(float8_e5m2 a, float_status *s) +bfloat16 float8_e5m2_to_bfloat16(float8_e5m2 a, int scale, float_status *s) { FloatParts64 p; =20 float8_e5m2_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts_scalbn(&p, scale, s); return bfloat16_round_pack_canonical(&p, s); } =20 @@ -2993,21 +2996,23 @@ float64 float16_to_float64(float16 a, bool ieee, fl= oat_status *s) return float64_round_pack_canonical(&p, s); } =20 -float8_e4m3 float32_to_float8_e4m3(float32 a, bool saturate, float_status = *s) +float8_e4m3 float32_to_float8_e4m3(float32 a, int scale, + bool saturate, float_status *s) { FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts_scalbn(&p, scale, s); return float8_e4m3_round_pack_canonical(&p, s, saturate); } =20 -float8_e5m2 float32_to_float8_e5m2(float32 a, bool saturate, float_status = *s) +float8_e5m2 float32_to_float8_e5m2(float32 a, int scale, + bool saturate, float_status *s) { FloatParts64 p; =20 float32_unpack_canonical(&p, a, s); - parts_float_to_e5m2(&p, s, saturate); + parts_float_to_e5m2(&p, s, scale, saturate); return float8_e5m2_round_pack_canonical(&p, s, saturate); } =20 @@ -3078,21 +3083,23 @@ float32 float64_to_float32(float64 a, float_status = *s) return float32_round_pack_canonical(&p, s); } =20 -float8_e4m3 bfloat16_to_float8_e4m3(bfloat16 a, bool saturate, float_statu= s *s) +float8_e4m3 bfloat16_to_float8_e4m3(bfloat16 a, int scale, + bool saturate, float_status *s) { FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - parts_float_to_float(&p, s); + parts_scalbn(&p, scale, s); return float8_e4m3_round_pack_canonical(&p, s, saturate); } =20 -float8_e5m2 bfloat16_to_float8_e5m2(bfloat16 a, bool saturate, float_statu= s *s) +float8_e5m2 bfloat16_to_float8_e5m2(bfloat16 a, int scale, + bool saturate, float_status *s) { FloatParts64 p; =20 bfloat16_unpack_canonical(&p, a, s); - parts_float_to_e5m2(&p, s, saturate); + parts_float_to_e5m2(&p, s, scale, saturate); return float8_e5m2_round_pack_canonical(&p, s, saturate); } =20 --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005198; cv=none; d=zohomail.com; s=zohoarc; b=kLJ+6ejAnjDo5jcxPM9iwFTJR4/eo4t4uypbKxE9ptF3fFXZCnTUa4MssQvpUgcu4e8UpHPF6K3kvhU1errPz53Vt85bGhGLPKnSdJMWnISHJqgrW6BdfI7qLcoF8LWZWa7CDNvm7czRqD9qMLIKZgD5LcuffNMd48bCLv3rm5c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005198; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=3n7fQN+iJBwqx2ETIvTw92Xcf+8pXw422MS+4i6nNsM=; b=Y9WDrg+SRMLRTaMt1u179mJC2Yri/EVJryTCUbww45NFrR62/He8SJCgHF9IyD43/MekWJ0qF9VpEg20CTEdQfbhFVtP/VZN2H/Cv/m6lZIwQC00OVIQ6yYj2BgvNL4E7vjy4k6KOFTNuujTg9Y2sNK8MFsmgeyPTtTogPxCw/Y= 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 1777005198137208.57936681893227; Thu, 23 Apr 2026 21:33:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DE-0001P9-Jq; Fri, 24 Apr 2026 00:32: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 1wG8Ck-0007zC-70 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:50 -0400 Received: from mail-ot1-x330.google.com ([2607:f8b0: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 1wG8Ci-0002zH-8P for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:49 -0400 Received: by mail-ot1-x330.google.com with SMTP id 46e09a7af769-7dcc9b506d9so4232594a34.1 for ; Thu, 23 Apr 2026 21:31:47 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005107; x=1777609907; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=3n7fQN+iJBwqx2ETIvTw92Xcf+8pXw422MS+4i6nNsM=; b=EkJa14i6pPUh2dl/Ka0LqHrkVMuN8yncHhPwRBqpm0sRccvpbS68HNgASK/GRKKt/a Z/UuZ+2oaH+4bJRad1a3sUFc6srbX3gmwg6DqCJBu2jUsJ5AT2vGovjZ99i6Y2cI8fAQ FK1v2qeW4uhqiSsOwj8GGMqowUC0jRNXAb9bl/QSS13DPx2dXubKp3UktgVSz13CIglt j2HOF2RmPjWYh6jotUqP8zfU4F5QScu2SWxVaFQRP04Tbcf0Pv7vIsiMwuNNoq+ew+WL S3k4KQBGI/sX+tR5+858FHaicvJetnWCkiNFql5SI4hw73wSGGuZBn+XUI7Z8rB5xExA MS9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005107; x=1777609907; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=3n7fQN+iJBwqx2ETIvTw92Xcf+8pXw422MS+4i6nNsM=; b=h6n4jAigEd1MquDGRDfjJB96xksneXodIa9+ZA6n8h6Nf4lvpqog4PscnVHlSPs33W zdshFnnXvzVQ7mzCI7HNdSyJrUS8kW4dsAZ3RI7F4oYPzEkXoUa1zJ1dOlR+rdh+oUfs x34FomL3JN2GsnhIctR2qtZdOsrTb3NkyaEu46MGAgFGXvg9Own9An2AqzdZs3PyhGR5 0zcD2xbOWf0aJhXlXhiiKFNCNl2eAG3qbbOjBqaDQOfUesF092jlIREkDoLKcY8aVUDE RGvMgEkj7WzpB5tghAMmocwnDHPmWQFqEw0Ik3PwpAomX5dtazz86zghB6mrXbxI+FJY 29HA== X-Gm-Message-State: AOJu0YxJeRIEsvxsfRrFOGxiVB2kenmrjon58HaLkSsTretRGzJGs+gP /nQXWAtKI3e3Fut+kSaHkw/csRWbdFJARz0IVGK3bUoNFwcWDAPlW/W4ATXsWfwamvbVYCLMJ0z tQRVu17M= X-Gm-Gg: AeBDiesOyKpWOnXjtyTxQTgxFqVNAmocLtR9tQxgxHAKq64GfITpxfF1n0B3DVBfeEM 21aC8aJ6fWGhreMtwTPn5g4M23D1JF6xxJKH1U+QnfMkZYU0QOvyY8JzmkG4QyXl0VO2UHWjqGQ r62my7ufSDQaFA7fDGT49Hkl1DEtjYNQlTfAWYP5ZHt5z2Q+dXuviIby+xN8vxWXul8K53Q8oMA ZD/wKcdTfNwpMA7YeXnuoW/ldtZGYUMNxALskPqisshNjZkBS8PWtawyV/6fkLP5cuwPnNAiDQV OI5D13Kz5tpBnhfAXuL4DgQw+9cu1kKXukBrTkiFAMITqtAHHIoLOhaq/PZpBt+pUzCUcSGvuu/ oQHfJ37hxGDJFNaShn9QZA+JhcfRvHv0fq9ECs016zebFe9GnNiwSXqeZIKhbUKBJ8EBmm6v7wG HDWI4YJAilr5C5mkNP54EoUlhu/gTRTQQ54/Uv3XB3wxzV5ov7WpbkdxZfuaIFR2H3VbQM3wbJ X-Received: by 2002:a05:6830:82cd:b0:7dc:d0e3:5bc1 with SMTP id 46e09a7af769-7dcd0e371efmr10508695a34.13.1777005106722; Thu, 23 Apr 2026 21:31:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 20/40] fpu: Add conversions between float16 and float8 formats Date: Fri, 24 Apr 2026 14:29:54 +1000 Message-ID: <20260424043014.46305-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::330; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-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: 1777005199907154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- include/fpu/softfloat.h | 8 +++++++- fpu/softfloat.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 1 deletion(-) diff --git a/include/fpu/softfloat.h b/include/fpu/softfloat.h index 6f86848b7e..70e25fa811 100644 --- a/include/fpu/softfloat.h +++ b/include/fpu/softfloat.h @@ -196,16 +196,22 @@ float128 uint128_to_float128(Int128, float_status *st= atus); float8_e4m3 float4_e2m1_to_float8_e4m3(float4_e2m1, float_status *status); =20 bfloat16 float8_e4m3_to_bfloat16(float8_e4m3, int scale, float_status *sta= tus); +float16 float8_e4m3_to_float16(float8_e4m3, int scale, float_status *statu= s); float8_e4m3 bfloat16_to_float8_e4m3(bfloat16, int scale, bool sat, float_status *status); +float8_e4m3 float16_to_float8_e4m3(float16, int scale, + bool sat, float_status *status); float8_e4m3 float32_to_float8_e4m3(float32, int scale, bool sat, float_status *status); =20 bfloat16 float8_e5m2_to_bfloat16(float8_e5m2, int scale, float_status *sta= tus); +float16 float8_e5m2_to_float16(float8_e5m2, int scale, float_status *statu= s); float8_e5m2 bfloat16_to_float8_e5m2(bfloat16, int scale, bool sat, float_status *status); +float8_e5m2 float16_to_float8_e5m2(float16, int scale, + bool sat, float_status *status); float8_e5m2 float32_to_float8_e5m2(float32, int scale, - bool sat, float_status *status); + bool sat, float_status *status); =20 /*------------------------------------------------------------------------= ---- | Software half-precision conversion routines. diff --git a/fpu/softfloat.c b/fpu/softfloat.c index bcec7d38c8..013b6e1ee2 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -2958,6 +2958,15 @@ float8_e4m3 float4_e2m1_to_float8_e4m3(float4_e2m1 a= , float_status *s) return float8_e4m3_round_pack_canonical(&p, s, false); } =20 +float16 float8_e4m3_to_float16(float8_e4m3 a, int scale, float_status *s) +{ + FloatParts64 p; + + float8_e4m3_unpack_canonical(&p, a, s); + parts_scalbn(&p, scale, s); + return float16_round_pack_canonical(&p, s); +} + bfloat16 float8_e4m3_to_bfloat16(float8_e4m3 a, int scale, float_status *s) { FloatParts64 p; @@ -2967,6 +2976,15 @@ bfloat16 float8_e4m3_to_bfloat16(float8_e4m3 a, int = scale, float_status *s) return bfloat16_round_pack_canonical(&p, s); } =20 +float16 float8_e5m2_to_float16(float8_e5m2 a, int scale, float_status *s) +{ + FloatParts64 p; + + float8_e5m2_unpack_canonical(&p, a, s); + parts_scalbn(&p, scale, s); + return float16_round_pack_canonical(&p, s); +} + bfloat16 float8_e5m2_to_bfloat16(float8_e5m2 a, int scale, float_status *s) { FloatParts64 p; @@ -2976,6 +2994,26 @@ bfloat16 float8_e5m2_to_bfloat16(float8_e5m2 a, int = scale, float_status *s) return bfloat16_round_pack_canonical(&p, s); } =20 +float8_e4m3 float16_to_float8_e4m3(float16 a, int scale, + bool saturate, float_status *s) +{ + FloatParts64 p; + + float16_unpack_canonical(&p, a, s); + parts_scalbn(&p, scale, s); + return float8_e4m3_round_pack_canonical(&p, s, saturate); +} + +float8_e5m2 float16_to_float8_e5m2(float16 a, int scale, + bool saturate, float_status *s) +{ + FloatParts64 p; + + float16_unpack_canonical(&p, a, s); + parts_float_to_e5m2(&p, s, scale, saturate); + return float8_e5m2_round_pack_canonical(&p, s, saturate); +} + float32 float16_to_float32(float16 a, bool ieee, float_status *s) { const FloatFmt *fmt16 =3D ieee ? &float16_params : &float16_params_ahp; --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005149; cv=none; d=zohomail.com; s=zohoarc; b=RjoaXz5db7lspcEH8tDjJPgUU5F8vRC0px5/PTxouVdH7FBHPVJCDGVRoyTRYFo0xKV9updm5lqDwP+mPtwkrMhVc05twa1vDVsNtJ5x74yXG1RihBnHKNzWDZj/kjfvhSf9l5r2IsfQ3AGMOaxOoQrHlR08e5Y1FboxzJX816Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005149; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=24k+WndXoiq0k6mJkQd6Ra7B0sSV6OLr1icDt0ng834=; b=G4nuVJXS7DtVC5pTpBk52OY6lPL1aFdV9mMZnXGFO3X5Y1Rb7Zk00e52s9k9h2cRU+PLEz7CuFiQBfyeKHOyMpBNGvG0uwQRBm8o1/Gld6b8QSbREbl7rHS56yO8aQvVSfjI6fxK99Uy8or/sw20P8r7bCRTw73NpbV8yPjnyk4= 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 1777005149174345.2989351936958; Thu, 23 Apr 2026 21:32:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Cs-0000HN-9T; Fri, 24 Apr 2026 00:31: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 1wG8Co-0008QI-Ey for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:54 -0400 Received: from mail-oa1-x2a.google.com ([2001:4860:4864:20::2a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Cm-00036n-Bz for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:54 -0400 Received: by mail-oa1-x2a.google.com with SMTP id 586e51a60fabf-42fe552aedeso528659fac.0 for ; Thu, 23 Apr 2026 21:31:51 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005111; x=1777609911; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=24k+WndXoiq0k6mJkQd6Ra7B0sSV6OLr1icDt0ng834=; b=kU7sPBwodQMFdtmJRcBilF9YkaV306Q+DDBoRU/t8WfgdYHOzfoohqjavXO4bMb+Ud dj1zAnuU28DsW5yYx9/UH/1JBL28sUzFu7v+rHJNEBzyqFFCRFkogEc2yh9cfbKedexY fd5I/ODAopzmbHFEAeA870axtJRidUB8ZKbfdRmHP7bZoXLfedbu84q+iO4c0fSKrHd5 XBEQNaTNsZR6nN7oH6KBKU1ooHAvdMBiHYBnnSxtRLIS+lAaV5AmOo5Nz9ERUT5LUv3n 6gYmJwiV7zBi/AqKxmhkrxDr3/IlxCrLbbXP7EZifNl92PmCBWQny0qHC4ud3D7tUlTJ WNXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005111; x=1777609911; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=24k+WndXoiq0k6mJkQd6Ra7B0sSV6OLr1icDt0ng834=; b=KdJVjeA533gGzXgK3IjFNPVBTUYy3v31Op7r30nwGUvaQoIJnoKGUH1eL7C/wfoOnM Zqi0vs+z+BMWI9wimj9XBWaYyokeNFhyjkrpGiEhhJ09SBv5P3wLuDAB1IiSL8kb5QWC 4pyYjnnK8UUv7qhWZ23pdTaXc4Gz+qat5DtRWnSv80vFRgY19XUzUp6PuwxSaeG40s+v Gv2qrHq1O9B7B8hbrxqliP5Ejc1P7NIvdQacSotCQq+YSpYh9To6/Q/jhymNAf19icsM L08aTLP8WjmP2WY8O2u71HNfuyJEv3mRz4TRH6rm/hDyJfSx+ezcsU4WBjWH12QgqkV+ +zTA== X-Gm-Message-State: AOJu0YwtXZyh9yd8Kj4uTH6g/F6KSY4YQMBuKE/kjZLvIFWYOvpdXEoP pKbQriWz66I5BPBakBp6zkkk/Hqe3Eox+ocOMz7fF/StjZAeaElGxcvYVPKM+68eVtfG5QH85WL 0AtsyANU= X-Gm-Gg: AeBDiesIn9/I2h+eYi8nyk0NOKe8+COAIS9gVQn8SwKl5UgwgkwifwwXpJi4PUJ1KOE 5AV1nSDGjSltZDFgzIsC1YLzsMudGVVwYtpm71xRzxgw4dgbyEIaXmvG9XbafXcLX/33YsjKXgd ZDy3w93vTSrARmEawQLl0caNirhGMo8MOxzG31Q5pW5BY1UBstvvIHYC61aui1bZcWFha96v5uh KVUfXMoyG74c2HhvUk0l4pcn5wmwm9Je0zIMdPv/KfsaUpSK4adkAgC7r2VTzmuRNylXluxTjD+ dU6fSuFVA/1WLjBC6k+SR06lrqDNuM+8r3lGTjTK4whJDeMBU8z6Wq6om0K8+vHFr1qsuc9eT9a pMaqVw6O+4odlJdQarav1gEpEGxGf0FA7lTE3okuxGCUyN6YkQqNfIBzdv4uEzt47eW+NYN0kr7 OYBQtLEnlG79lcJJosLB39hOe678eEvYTqCGtNvrau9HsAwHZ66z0lPBuYX7TucmtHV70K0ts3 X-Received: by 2002:a05:6870:304a:b0:42d:c200:4204 with SMTP id 586e51a60fabf-42dc2007ab8mr8791166fac.18.1777005110929; Thu, 23 Apr 2026 21:31:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 21/40] target/arm: Split vector-type.h from cpu.h Date: Fri, 24 Apr 2026 14:29:55 +1000 Message-ID: <20260424043014.46305-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2a; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x2a.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: 1777005151231158500 We want to be able to reference ARMVectorType etc from common code, so move it out of cpu.h. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/arm/cpu.h | 38 +--------------------------------- target/arm/vector-type.h | 44 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 37 deletions(-) create mode 100644 target/arm/vector-type.h diff --git a/target/arm/cpu.h b/target/arm/cpu.h index e78bc1737d..c0c13d37b9 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -35,6 +35,7 @@ #include "target/arm/gtimer.h" #include "target/arm/cpu-sysregs.h" #include "target/arm/mmuidx.h" +#include "target/arm/vector-type.h" =20 #define EXCP_UDEF 1 /* undefined instruction */ #define EXCP_SWI 2 /* software interrupt */ @@ -140,43 +141,6 @@ typedef struct ARMGenericTimer { uint64_t ctl; /* Timer Control register */ } ARMGenericTimer; =20 -/* Define a maximum sized vector register. - * For 32-bit, this is a 128-bit NEON/AdvSIMD register. - * For 64-bit, this is a 2048-bit SVE register. - * - * Note that the mapping between S, D, and Q views of the register bank - * differs between AArch64 and AArch32. - * In AArch32: - * Qn =3D regs[n].d[1]:regs[n].d[0] - * Dn =3D regs[n / 2].d[n & 1] - * Sn =3D regs[n / 4].d[n % 4 / 2], - * bits 31..0 for even n, and bits 63..32 for odd n - * (and regs[16] to regs[31] are inaccessible) - * In AArch64: - * Zn =3D regs[n].d[*] - * Qn =3D regs[n].d[1]:regs[n].d[0] - * Dn =3D regs[n].d[0] - * Sn =3D regs[n].d[0] bits 31..0 - * Hn =3D regs[n].d[0] bits 15..0 - * - * This corresponds to the architecturally defined mapping between - * the two execution states, and means we do not need to explicitly - * map these registers when changing states. - * - * Align the data for use with TCG host vector operations. - */ - -#define ARM_MAX_VQ 16 - -typedef struct ARMVectorReg { - uint64_t d[2 * ARM_MAX_VQ] QEMU_ALIGNED(16); -} ARMVectorReg; - -/* In AArch32 mode, predicate registers do not exist at all. */ -typedef struct ARMPredicateReg { - uint64_t p[DIV_ROUND_UP(2 * ARM_MAX_VQ, 8)] QEMU_ALIGNED(16); -} ARMPredicateReg; - /* In AArch32 mode, PAC keys do not exist at all. */ typedef struct ARMPACKey { uint64_t lo, hi; diff --git a/target/arm/vector-type.h b/target/arm/vector-type.h new file mode 100644 index 0000000000..d94c0d986e --- /dev/null +++ b/target/arm/vector-type.h @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef TARGET_ARM_VECTOR_TYPE_H +#define TARGET_ARM_VECTOR_TYPE_H + +/* + * Define a maximum sized vector register. + * For 32-bit, this is a 128-bit NEON/AdvSIMD register. + * For 64-bit, this is a 2048-bit SVE register. + * + * Note that the mapping between S, D, and Q views of the register bank + * differs between AArch64 and AArch32. + * In AArch32: + * Qn =3D regs[n].d[1]:regs[n].d[0] + * Dn =3D regs[n / 2].d[n & 1] + * Sn =3D regs[n / 4].d[n % 4 / 2], + * bits 31..0 for even n, and bits 63..32 for odd n + * (and regs[16] to regs[31] are inaccessible) + * In AArch64: + * Zn =3D regs[n].d[*] + * Qn =3D regs[n].d[1]:regs[n].d[0] + * Dn =3D regs[n].d[0] + * Sn =3D regs[n].d[0] bits 31..0 + * Hn =3D regs[n].d[0] bits 15..0 + * + * This corresponds to the architecturally defined mapping between + * the two execution states, and means we do not need to explicitly + * map these registers when changing states. + * + * Align the data for use with TCG host vector operations. + */ + +#define ARM_MAX_VQ 16 + +typedef struct ARMVectorReg { + uint64_t d[2 * ARM_MAX_VQ] QEMU_ALIGNED(16); +} ARMVectorReg; + +/* In AArch32 mode, predicate registers do not exist at all. */ +typedef struct ARMPredicateReg { + uint64_t p[DIV_ROUND_UP(2 * ARM_MAX_VQ, 8)] QEMU_ALIGNED(16); +} ARMPredicateReg; + +#endif --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005162; cv=none; d=zohomail.com; s=zohoarc; b=A7DeQmu4PnAh1b1tiSsUD1lFsjSBRa75gGOlf+sm4YjXZYTwk6krdVW5Q1CZGGRPjfMqpTyOpzvpHFqPK9TyEhIf+LVaIC7bvTOekxGaP2Nm9/KfkNtY3rpogIY/h0YD/LyD1eMYvWy6XDtUzwt3xGqLZ8W6nqq2lQG+s/gI7z8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005162; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=VvhMkH32psM3D8lph3Pv20uEhqe8qrK6g7LCI4lgg/I=; b=nmyaX/Jzh0ZBe6shA3eY2BLwa8K7f1Vnoem8Q5nLmrJ+Q3CCSVw7xNeQheiwG9f2zo6S2e7C+AtKiJbn1iJLp85ZwPDzfyDsSblmhimGeXsv6VuDOrXjEX5tK6viwhat931UCrVzBhvCW+z7uQHX1GF0ZpK1GEQ87eVjlwoAgOY= 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 1777005162235616.1912360160336; Thu, 23 Apr 2026 21:32:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DG-0001e4-85; Fri, 24 Apr 2026 00:32:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8Cu-0000XL-J4 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:01 -0400 Received: from mail-oa1-x2f.google.com ([2001:4860:4864:20::2f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Cr-0003A6-Pr for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:31:59 -0400 Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-40ea36b56b7so5593442fac.3 for ; Thu, 23 Apr 2026 21:31:57 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:31:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005116; x=1777609916; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=VvhMkH32psM3D8lph3Pv20uEhqe8qrK6g7LCI4lgg/I=; b=kErJXbt2hlwvbYYGo2PyowW7yavTggaYl+IpQ4MiDfPgREim6T1lQ1Tb+bNocNIY3r 5CekK/psCBjs0EFZcHEh8RQqvPAgpH76BrRRJJkQIvF1T4jMFmdaVwLUYNm4Bnuad/g1 IzPJptCkq9i8vyqwzN3S8FKVJonYrJBLIWP13aBwZYoCZZETU/lWGdx/z5vMtVHRqoh/ pBIqpdB8KsD11ad81tETfxEYnQzeHfcizzoyDBb2SJWprVQctQmpW6nrwrAbB1687CvX RTYcv191PG3Pv7QOdCMe1QfTUBYBGqR0eO/TrFQD9AGE0sVHgDR3Dk5bYda90HHaRcpW 8+0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005116; x=1777609916; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=VvhMkH32psM3D8lph3Pv20uEhqe8qrK6g7LCI4lgg/I=; b=pxzDwjSIHitjymPGkTzypgk+ZgE8PRthslvfYCP1gn5JLqHwTWGBkxY2mvbPcBwC/V vMwhW320+arZSeUmeNH4OI9LkU4T8sVoLfXAIOkPjC/brB468RPBzUzchMKH5Hpphkah 6frB/ldtpvpylUw9JvDD2Z1Ygvxrbh79I57M/q4v8RRg6LastrE/+gYN0N+VskBo95Tv kQ832OtZTwDRJXZRIEwOEttMik1CroNk1PaOV+ir2RAUSPcPxTJqPwP9/0sOT1AyhBiM Ycmo6QOVdhSnaLeit47xV00cz+iD2bmfyYOa3uGj5CdiVWWWhkGNyiv0iNYcmDHbjaKh HCjw== X-Gm-Message-State: AOJu0Ywy/ZQtOxKA3gpagnt/wYbqMuIvH1aDcoSEVviJ4Q4ulIae7PJP Thg6b9rPSIQG2oN9YaZHZUyI0k5udJ66tbq3MPcLYP+XtcWZso072k3QM4k6zYo3AnJc7XMtHxa Nd9OzazM= X-Gm-Gg: AeBDiet5OxqoiStc084Y0PPKRfG+Tldyh+nLt3G4Gom63PbFS8nX86HXNPrP1LyKRKE R3eUyCJX8bB+fXLfiP1Ox62h9KnvtBmsZ1lGWqjyAgasPIzEGGijwT60cGYo9HW5nTbCWJb8UwR +4v6FkXIcS+Gq8+WvqeYxv4xakqTwfJesL7W3d6HtH8xovRHzaqhjdxk5ZJxm2UiHlJX5DGvGtR vfXJBe13/wI8RcCa8Ks3RM+wAKhDH0JI5AoCfK2q2YnzwIhD3RQaUpHf6K3HsxQeIYB8QOl5MVl PbrdpPERPIFrCJCXPr9qIkchlv+nRjS4I1tui1l3gPUEEoVHO6ZSfgsfD4Q9y5g6Q03jk/5lq8S oZpMjxjQIzcllogh7L5uZv9+df7BkFF8u0Ylpk+mcAu4RdYIbb9gYicB004/LbMDYaNQv9ZntRj Eid89EVDLw+0Efv8R0wo96e7GrHMVjmtfSTUX2kJs6msacnFL5bFsHavpSosz6Ng== X-Received: by 2002:a05:6871:e405:b0:42f:beec:92d3 with SMTP id 586e51a60fabf-42fbeeca16bmr7202572fac.14.1777005116502; Thu, 23 Apr 2026 21:31:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v2 22/40] target/arm: Move vectors_overlap to vec_internal.h Date: Fri, 24 Apr 2026 14:29:56 +1000 Message-ID: <20260424043014.46305-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2f; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x2f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005163245158500 We will shortly need this outside of sme_helper.c. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/arm/tcg/vec_internal.h | 8 ++++++++ target/arm/tcg/sme_helper.c | 6 ------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/target/arm/tcg/vec_internal.h b/target/arm/tcg/vec_internal.h index b647399b18..dbc098d49a 100644 --- a/target/arm/tcg/vec_internal.h +++ b/target/arm/tcg/vec_internal.h @@ -21,6 +21,7 @@ #define TARGET_ARM_VEC_INTERNAL_H =20 #include "fpu/softfloat.h" +#include "vector-type.h" =20 typedef struct CPUArchState CPUARMState; =20 @@ -461,6 +462,13 @@ static inline void depositn(uint64_t *p, unsigned pos, } } =20 +/* Determine if [x, x+nx) overlaps [y, y+ny). */ +static inline bool vectors_overlap(ARMVectorReg *x, unsigned nx, + ARMVectorReg *y, unsigned ny) +{ + return !(x + nx <=3D y || y + ny <=3D x); +} + #define DO_3OP(NAME, FUNC, TYPE) \ void HELPER(NAME)(void *vd, void *vn, void *vm, = \ float_status * stat, uint32_t desc) = \ diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index ab5999c592..0055e97a2b 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -33,12 +33,6 @@ #define HELPER_H "tcg/helper-sme-defs.h" #include "exec/helper-info.c.inc" =20 -static bool vectors_overlap(ARMVectorReg *x, unsigned nx, - ARMVectorReg *y, unsigned ny) -{ - return !(x + nx <=3D y || y + ny <=3D x); -} - void helper_set_svcr(CPUARMState *env, uint32_t val, uint32_t mask) { aarch64_set_svcr(env, val, mask); --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005398; cv=none; d=zohomail.com; s=zohoarc; b=KJetc3CJCeFzhG4hPU3fTZtzwQtw8kGSbICdqm2uH+CgLBUu9rmSHC3NooKDRq+6OTSdKCd75FOicgfDKUBPo5+LiLvvcA4wDOTVx2R5oHkCOGV5D0d1i6vg9hYPJbYGyrKiAPuDyiOSbl/tQd/QwgaLOu08Pu/Ez7oLkfBhf70= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005398; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=ytAnQ9zYFb+vCxMNXIdhYTIT8lyhESotAAtyvoHpoYA=; b=dW4v/9tjXvL28+VubOBjwFtuRyaZ7wzJxMawty5n2p8+ln+SPU2OCrZdQYTXuUSNwGOBJ6ysCxFLaFgkhozj7o7iOKgdTsJtfbPImFomdWosgkhgRKnR6qJUL/v9NuRFf8x1fWbG4QtfD/N0f93J7KF8gxnbpQMpR4rQE55krts= 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 1777005398617921.6763503898874; Thu, 23 Apr 2026 21:36:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DI-0001vq-5r; Fri, 24 Apr 2026 00:32:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8Cy-0000fC-Da for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:05 -0400 Received: from mail-oa1-x32.google.com ([2001:4860:4864:20::32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Cw-0003F3-As for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:04 -0400 Received: by mail-oa1-x32.google.com with SMTP id 586e51a60fabf-4243bf9be36so3461456fac.3 for ; Thu, 23 Apr 2026 21:32:01 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.31.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005121; x=1777609921; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=ytAnQ9zYFb+vCxMNXIdhYTIT8lyhESotAAtyvoHpoYA=; b=xr/0ad2suMjm8ftCjD1NMkzWe58Cv0PtzNSbPQnFhIv6XDWJQNSmt8WbM/yPRzhACP 35OFLZdzT9H7qkP/DMWP459Nid+TBBXI8dkltXQ8DDeK8uYKzocKp1/aPVDoO2lpKlkY MfM/24TowGKdiKeE+VrelNJwD+s4ayh3bZ4xr2ZbiFxbrXPO7PFRA6ojluVxnLuCaggx Odo7TWv/IBnA7SnRB9qH/aU71KeY7DZb7IDfJcL+Re1b1arWrOEkTCofaNOcnIvzQx2C VGjOj+d9B4tL8MxXAHEBjNoMpPs3NsMPunOLovUya0QFUCi0Wn9mjWon3NE/k6beoObY sWrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005121; x=1777609921; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=ytAnQ9zYFb+vCxMNXIdhYTIT8lyhESotAAtyvoHpoYA=; b=kx+jce6aIpWU3pEZ0dsMAXmAmPYyRBYSVD+0Tqz5BZwjxaUKpMuaqwSe3JXlqWiwQl gjETqe5Al/uAaTJgL3HjrO12NNBa1+cVTNKR+knbPkLcNrxy+RiRws40F900kjOhPBl0 M38qnHNIeEcpzOlgDnvDxHrG4X4IFYcEHi0MEEpEiK2GPi3S6qkcvHxrwiuZdvFY6iqp fioK6kdoMlL3IlSSBYD23ecnDuEF/jihdhIJzgCYRAwobCK01XPjPR4mxNARp8m1lG42 o9ET6RVMzC07EG+lmzvHc7z4W3HohvqQiYW0PrM/aDfWv6jtwsJQ52LHjbKL66FQwIoQ IGtA== X-Gm-Message-State: AOJu0YymVPJgfKY0QwRrkqEQKqeGCNCy3I9fqVoKEPsnkjoN9lFB1t02 JdFZXjOJk6o17dgGcuJaO4xTEy3tU/XncDU7+U/Q9nWRLhoRKCnGXMJNxBAhSU08oFY41DaGITr /aAJYwwE= X-Gm-Gg: AeBDiesfXISykpucCGeYe5421cRAyq+ZKticn2odBeX+B6lWMaBw2xRi+5x1QsdS1JP 1HIHlgvOYMsOl/b09OqyN+KZ1F13U7VSIsLW4UNEIwyvh88hZ9gIkR1df2Evqq2te5wvYy5lmGv RM03QQz7d0VqU40n9VBwIuuws/AzkQfbwGioZm+bBgGFw2y511tXok7ZvtpFkXlIKC9HTLp3wPA TM2yUS1BGrktrookqpMAJkG+80njkf4fi4om8OGNVKC8MuBD5o6GhtJYyPfPAe4lhyOJzSWo4/d ghXU+J75WSVTVb8SyXa8Ek5oZ6lL4UB7vpjMpn3LsB4kl9rlD/EODRGVmtH0MLY0AQKalGFh3Jo qNE3x51ihvVWMaXluSet0YvZsZN+64U3/ynWwxCBIOpHwt/+/iZuBQUkkSIAEF1+dEgdN4bgv59 rGq8/v/Tavi4kmKgHwCQiqWaXgiRw7zfoiiy1Uk08sixec3rLFxv9Z7BUZSlUTtA== X-Received: by 2002:a05:6871:e40f:b0:428:6d0d:e61b with SMTP id 586e51a60fabf-42abf2543admr19304172fac.8.1777005121036; Thu, 23 Apr 2026 21:32:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 23/40] target/arm: Implement BF1CVTL, BF1CVTL2, BF2CVTL, BF2CVTL2 for AdvSIMD Date: Fri, 24 Apr 2026 14:29:57 +1000 Message-ID: <20260424043014.46305-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::32; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x32.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: 1777005400843154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/helper-fp8.h | 14 ++++ target/arm/tcg/helper-fp8-defs.h | 6 ++ target/arm/tcg/translate-a64.h | 1 + target/arm/tcg/fp8_helper.c | 123 +++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 34 +++++++++ target/arm/tcg/a64.decode | 3 + target/arm/tcg/meson.build | 1 + 7 files changed, 182 insertions(+) create mode 100644 target/arm/helper-fp8.h create mode 100644 target/arm/tcg/helper-fp8-defs.h create mode 100644 target/arm/tcg/fp8_helper.c diff --git a/target/arm/helper-fp8.h b/target/arm/helper-fp8.h new file mode 100644 index 0000000000..c45211ba22 --- /dev/null +++ b/target/arm/helper-fp8.h @@ -0,0 +1,14 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef HELPER_FP8_H +#define HELPER_FP8_H + +#include "exec/helper-proto-common.h" +#include "exec/helper-gen-common.h" + +#define HELPER_H "tcg/helper-fp8-defs.h" +#include "exec/helper-proto.h.inc" +#include "exec/helper-gen.h.inc" +#undef HELPER_H + +#endif /* HELPER_FP8_H */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h new file mode 100644 index 0000000000..0caaf63749 --- /dev/null +++ b/target/arm/tcg/helper-fp8-defs.h @@ -0,0 +1,6 @@ +/* + * AArch64 FP8 helper definitions + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/translate-a64.h b/target/arm/tcg/translate-a64.h index 9c45f89305..35f8d4f82e 100644 --- a/target/arm/tcg/translate-a64.h +++ b/target/arm/tcg/translate-a64.h @@ -25,6 +25,7 @@ TCGv_i64 read_cpu_reg_sp(DisasContext *s, int reg, int sf= ); void write_fp_dreg(DisasContext *s, int reg, TCGv_i64 v); bool logic_imm_decode_wmask(uint64_t *result, unsigned int immn, unsigned int imms, unsigned int immr); +bool fpmr_access_check(DisasContext *s); bool sve_access_check(DisasContext *s); bool sme_enabled_check(DisasContext *s); bool sme_enabled_check_with_svcr(DisasContext *s, unsigned); diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c new file mode 100644 index 0000000000..a2efdd5cd7 --- /dev/null +++ b/target/arm/tcg/fp8_helper.c @@ -0,0 +1,123 @@ +/* + * 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 "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, + Unsupp2 =3D 2, + Unsupp3 =3D 3, + Unsupp4 =3D 4, + Unsupp5 =3D 5, + Unsupp6 =3D 6, + Unsupp7 =3D 7, +} 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_finish(CPUARMState *env, FP8Context *c) +{ + int new_flags =3D get_float_exception_flags(&c->stat); + + new_flags &=3D ~float_flag_input_denormal_used; + float_raise(new_flags, &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 is treated as snan, then the conversion operation + * converts to default nan and raises invalid. + */ +static void bfloat16_invalid_input(bfloat16 *d, size_t nelem, float_status= *s) +{ + bfloat16 dnan =3D bfloat16_default_nan(s); + + for (size_t i =3D 0; i < nelem; ++i) { + d[i] =3D dnan; + } + float_raise(float_flag_invalid | float_flag_invalid_snan, s); +} + +void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + 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; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (int i =3D 0; i < 8; ++i) { + d[H2(i)] =3D float8_e5m2_to_bfloat16(n[H1(i)], ctx.scale, &ctx= .stat); + } + break; + case OFP8_E4M3: + for (int i =3D 0; i < 8; ++i) { + d[H2(i)] =3D float8_e4m3_to_bfloat16(n[H1(i)], ctx.scale, &ctx= .stat); + } + break; + default: + bfloat16_invalid_input(d, 8, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); + clear_tail(vd, 16, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 515c0fb2e0..d23d1a0bf5 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -21,6 +21,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 "qemu/log.h" @@ -1456,6 +1457,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. @@ -10611,6 +10630,21 @@ static bool trans_FCVTL_v(DisasContext *s, arg_qrr= _e *a) return true; } =20 +static bool do_f8cvt(DisasContext *s, arg_qrr_e *a, + gen_helper_gvec_2_ptr *fn, bool issrc2) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_2_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + tcg_env, 16, vec_full_reg_size(s), + issrc2 | (a->q << 1) | (FPST_A64 << 2), fn); + } + return true; +} + +TRANS_FEAT(BF1CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, fa= lse) +TRANS_FEAT(BF2CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, tr= ue) + static bool trans_OK(DisasContext *s, arg_OK *a) { return true; diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 02c7264cb9..b7aac148f2 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1910,6 +1910,9 @@ URSQRTE_v 0.10 1110 101 00001 11001 0 ..... ...= .. @qrr_s =20 FCVTL_v 0.00 1110 0.1 00001 01111 0 ..... ..... @qrr_sd =20 +BF1CVTL 0.10 1110 101 00001 01111 0 ..... ..... @qrr_h +BF2CVTL 0.10 1110 111 00001 01111 0 ..... ..... @qrr_h + &fcvt_q rd rn esz q shift @fcvtq_h . q:1 . ...... 001 .... ...... rn:5 rd:5 \ &fcvt_q esz=3D1 shift=3D%fcvt_f_sh_h diff --git a/target/arm/tcg/meson.build b/target/arm/tcg/meson.build index 5f59156055..0d715cfb87 100644 --- a/target/arm/tcg/meson.build +++ b/target/arm/tcg/meson.build @@ -47,6 +47,7 @@ arm_ss.add(when: 'TARGET_AARCH64', if_true: files( 'sme_helper.c', 'sve_helper.c', 'vec_helper64.c', + 'fp8_helper.c', )) =20 arm_common_system_ss.add(when: 'CONFIG_ARM_V7M', if_true: files('cpu-v7m.c= ')) --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005325; cv=none; d=zohomail.com; s=zohoarc; b=QrjVTF/LCx9dOG+5MmZKelgKKKa4QoG5dCcyEZPg0tnoeMFqtpTI72Bt+lppNeC0XDqsJSESCn1Wm7Fxr43s/HpIQNZzDkSmDiVYxaS68Xpzf+yd8o4+0NLG1zXEC45DyWAaSobfKmI0OLKm8Xy6wlwJfFkD/+Lt6yBoZsCHc2c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005325; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=BiQ5icxQbNLrKse61brBqsCLHCU36Le6q/LoWKJ1fb4=; b=BL7J4Aay8n2PIPrZSi1uX1ljFoEE7BPNBsgbGWuHK4h62x2E/HwqtMk7RCfIPn2lMcDMdT+oRLsO2dsXcxkgkBiBlIC9XuOzuo2VWUgz5XZUsKY5PF+aHxVvUbeW9vLVfjGETFkmF+v/EL/qEDh3E//A58g+9zD3ghFbZMcbXr0= 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 1777005325462511.45954538073806; Thu, 23 Apr 2026 21:35:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DD-0001G6-7i; Fri, 24 Apr 2026 00:32: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 1wG8D1-0000jD-Jj for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:09 -0400 Received: from mail-oa1-x29.google.com ([2001:4860:4864:20::29]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Cz-0003HW-PL for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:07 -0400 Received: by mail-oa1-x29.google.com with SMTP id 586e51a60fabf-40974bf7781so6629175fac.0 for ; Thu, 23 Apr 2026 21:32:05 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005125; x=1777609925; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=BiQ5icxQbNLrKse61brBqsCLHCU36Le6q/LoWKJ1fb4=; b=oY87iRQ8WPRYwj6oXpPoEMxb3RucdR1LHuawyNlGtoVndx7+ktWfHH/Swg2UBsclzl 4LLk343FKdVuIFlf3Y0IneSqllRTLdfILCKdTnCvWTubI6LIBf/3+xWgPfleTMUz8sEE Zsk+LjsyogJmsrKcv5tJVC347unMn7WSGOSeXwCo9sFOoLbDMw2hcto1NhWNXE7mexxO kFKtM+kUXtJp3r28t/sOdfXMpejW0zNhlYDdkMLDhm22BOCvs9yQxdkhMNitVFjra7Rp 7yUiFHDUvDjpI4m+KA1syY+ONR3F4GMkBc7whyXemwCMCAoq0HSPh8UcAqpNI9YUJ4xd 8Guw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005125; x=1777609925; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=BiQ5icxQbNLrKse61brBqsCLHCU36Le6q/LoWKJ1fb4=; b=G5uaDS4fAUhnK3w0k1IFSpld5GHJ82gBPK5mA+brMT+ELTHByuUpux6PNPE8YR7+ZO aRPpRy1lnE0mRqfwfkxCz4tdJxTZPKlBSC/pLVGNAKWv+k4ys7Q8kdrCvHh6qMV6JsNJ PTXE6PHrTbhiSYYqfg2LUFVz6qwTZUTZ33yoPYAtL/528C0W8fEaSCAW98FxoCwYW5nf 6kBYVN8GwfzbRL5C9ZUY7sZPlflpuhgRs9hjMwWrbWfPXtuXGSwcJCa66zCKjII4y7ql kgA6ybt+IJ12uIHidAdyoMj1rElK60+oO0n/RK5CFRvIihaQcmJ5Zk8GlDpaFZc0IwwD rM5w== X-Gm-Message-State: AOJu0Yyw3BqQiI+l5MPJ8q9MR0GObvMF7HD9LB9tAUbreOm2d5u1vR0Z m6xpA7+Ubu2O+YYmGHi6h6FwcP2j54M2JpKKu7IPtaegE1R3jD7V6QjiDS8VOmb2moI1ZOeOAJU RRetfpf8= X-Gm-Gg: AeBDieuascl1kSt3sRhX5DH5129xnRz6VUGVLB97vf9SQuu5+6/M0ptxTJQ2ZDR/ivp 65s3/oKFCHHIAVyCjXoZ7hosDQrIlO5AehWqEk5Buk2rNPtMvQpULyHPg2RyYmcHO3lB06yCuTT tXeLwdrEp8Lm9Ky6JH24qyZZ0DVoruffuwRLiEzs4msD3U9BtPGpLyJA+gvjmkoQmg/TDOzfwAW YpFodvQfijJrtgeJlOaI0DgHTKsd9YZIDC2372ah7Q7IKQBELgnNQE769WCC8h7qDrRO6ygz4cE vk5hbqc5hCmdB15BKd5QCa1+aQq24r1KTRSx+DU8v1ooXbOAtITNoJMDFlbPPQ5DXPMEOCizRsk rSA5TEF+zyGa9MwFJ3AQ1JwNKUR8LQuCxprdKxDCICDAQ+4qelQAwmB6IS5+z/G1LIcLY6+27yc 9LqygJNMF3/focegCanAsfcTEK9lxeBewUF9QT1MZvdDB0VEHTKck6rav2AGtHOw== X-Received: by 2002:a05:6870:b50e:b0:409:6148:e23e with SMTP id 586e51a60fabf-42a9986c2f1mr15470732fac.10.1777005124487; Thu, 23 Apr 2026 21:32:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 24/40] target/arm: Implement BF1CVT, BF1CVTLT, BF2CVT, BF2CVTLT for SVE Date: Fri, 24 Apr 2026 14:29:58 +1000 Message-ID: <20260424043014.46305-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::29; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x29.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: 1777005327698154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 6 ++++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 28 ++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 23 +++++++++++++++++++++++ target/arm/tcg/sve.decode | 6 ++++++ 5 files changed, 64 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 8a6e5d555b..7f1a394ef0 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1624,6 +1624,12 @@ isar_feature_aa64_sme2_or_sve2_faminmax(const ARMISA= Registers *id) return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_faminma= x(id); } =20 +static inline bool +isar_feature_aa64_sme2_or_sve2_f8cvt(const ARMISARegisters *id) +{ + return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_f8cvt(i= d); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 0caaf63749..18ff483bb0 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -4,3 +4,4 @@ */ =20 DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index a2efdd5cd7..b03345c670 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -121,3 +121,31 @@ void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) fp8_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); + uint8_t *n =3D vn; + uint16_t *d =3D vd; + size_t nelem =3D simd_oprsz(desc) / 2; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(2 * i + ctx.high)]; + d[H2(i)] =3D float8_e5m2_to_bfloat16(e, ctx.scale, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(2 * i + ctx.high)]; + d[H2(i)] =3D float8_e4m3_to_bfloat16(e, ctx.scale, &ctx.stat); + } + break; + default: + bfloat16_invalid_input(d, nelem, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 756c4373b5..1540cbd6de 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 "fpu/softfloat.h" @@ -4066,6 +4067,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(BF1CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, false, false) +TRANS_FEAT(BF2CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, true, false) +TRANS_FEAT(BF1CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, false, true) +TRANS_FEAT(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, true, true) + /* *** SVE Floating Point Compare with Zero Group */ diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 078a085a79..e7984fa8e0 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -108,6 +108,7 @@ # Two operand @pd_pn ........ esz:2 .. .... ....... rn:4 . rd:4 &rr_esz @rd_rn ........ esz:2 ...... ...... rn:5 rd:5 &rr_esz +@rd_rn_e0 ........ .. ...... ...... rn:5 rd:5 &rr_esz es= z=3D0 @rd_rnx2 ........ ... ..... ...... ..... rd:5 &rr_esz rn= =3D%rn_ax2 =20 # Two operand with governing predicate, flags setting @@ -1090,6 +1091,11 @@ FMINQV 01100100 .. 010 111 101 ... ..... ..= ... @rd_pg_rn FRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn FRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn =20 +BF1CVT 01100101 00 001 000 001110 ..... ..... @rd_rn_e0 +BF2CVT 01100101 00 001 000 001111 ..... ..... @rd_rn_e0 +BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 +BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 + ### SVE FP Compare with Zero Group =20 FCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005344; cv=none; d=zohomail.com; s=zohoarc; b=kpF24iL2fV4YWmBMq1G0jt+NyeqGEMUihufpl+PqUIgSD6iDYkgQp7Zj31TRiEC/Tad7dSKCT9cpsa0XRBBCVHD/qPCm1Pbw+J+u7rEIzZuvOasvXcyLwB8TkdKWeIydOQOTQRuL/sI5aep0ts+ok7yPAZOu9PWtiG64O2KvxcI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005344; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=127uBHcVT1oBIbFF2ckf3+yTVZK3U9JgwdEZdx7lwQY=; b=HIEHYLGnSF6EZc8irN+jpZw1vZkQR2ClL2BBOaPfjlDWizGZXUDrrJ412j4hE/Lw5LORG0KZjIRDWllq9m/ejfxvLlJ0I6amy2zrkjQK2hRJ/7EdnZJ5r72k+yyRG1vHe/nl5fFouhP9clRBp5OoIh3ar9z/LvKWa160FHwk4h8= 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 1777005344434859.662355094483; Thu, 23 Apr 2026 21:35:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DD-0001IR-Fw; Fri, 24 Apr 2026 00:32: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 1wG8D7-0000tm-NX for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:15 -0400 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8D6-0003Ln-2u for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:13 -0400 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-409de4132b5so4764872fac.1 for ; Thu, 23 Apr 2026 21:32:11 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005130; x=1777609930; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=127uBHcVT1oBIbFF2ckf3+yTVZK3U9JgwdEZdx7lwQY=; b=l5iOg6spdZlkKflXZ8GmxNV4CachQw2csm9AZGcrK7sv7DyLMjXh76l6zyGO4uIO91 da3HKrTo4kuXuntOFdMI5IjruWM5x/Ip+UL1B3uTwr+ikNTtGePf1tKZ6NsBX8/UgM3j CeAdU3QWnh63bsTFcobMigZxU41gOykcnaZ3uQKOp1V76SqsN3VQhuHSQAJVJWYW8w2i kXdw9OELuCKy2IEQIgGu9EPYli98GN5IIXRuT1gdKg1MvR++uIBITR4KqkCw/FGrM50q SsjBMR0TphDZxMvntwoH0PctDNoUWEDvsmyDm2L/wZy0Xp0XSiyl2zSTiVI/Dgb41Ic1 2GxQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005130; x=1777609930; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=127uBHcVT1oBIbFF2ckf3+yTVZK3U9JgwdEZdx7lwQY=; b=iVrPYDNd0VWjymNKAgiXQwFl4tnYFOK5EuSz8T/HHvxT+Fv/U4MtOdKHk/7LbGS8LQ G07UQpYpKUG2YceE8EpW/bUISVkJTDRGSB23U78rG728PnMyAnZneTzdt8JWm0qgKmw5 d4BMpbaGBsY7jX0Kz1grhaAr11EHyboDVM9xqfBnVY1XtykbA1KRteeH6PHnwwEdXnLo +fNbDcekByq30KN4svGGLTkGfspi864ndnqfAz1cikN4g1n47xdOLp5DaIw5tHS25Xuu flQDu8UqNVKFvuL4SUjvu83xIu6l8rsnGd0kDhICBylrVSjga9AZzEJSEkGRfj8RX8EW fWOA== X-Gm-Message-State: AOJu0YwhiQdi698RiObKle9wvEaFqB/HejDnmfOFyb5UUlwiGQYDdCpU j6VZp+LlXDsXOja3f0F5KG/YDnr3nL+b7fpLKRC2ueFq959ywg7u60LtPAprfXEw8Crcba1iSyu pPaZs8Uk= X-Gm-Gg: AeBDiev8EZs2bkrucaD5554ROoS//pgGLZdcuu68RzpSC67SOrsciL1szfALYDKQkTo R758SgiWLAjyZEqiGIAOmO+Eyl0U7OgOgDti/+v3jbMZub6FMZizDtYbMIR5NG52fg6g1jq9Mup 4q90QyTmRt9o3FyHpdDAwuYddPRVkryBSYdJaLn+9Kd66OSS/wVOFxuhw85GAF3CMs5AXvpl9Hr /mnxrfVyz91HoL87CsDtOCHjcg3Bz9R+VeTj2q79ne0gGhTVKzSfeG/NsBNuEIzz5c0mfsF9uSu +86x6dmnBcr8SYuydO7UZUd0+ZmEjoADX+8psDxYg8776DX1igkIihlciagwdlJJv1zZhYhCSsp U07oF0NqVHuOk5s/qNN+R5RdK74ANGh0UrHuYqwGGb7WhH3LFLtWy/j/5sL9LDL4P/aeObpv9tx bcfhGOdn+bKn9FsG7w+0Abk9hW6VPlC5HaiLr2JGWSdlYCO83Xi6UtYVxPKShyEg== X-Received: by 2002:a05:6870:174c:b0:430:a:4f3d with SMTP id 586e51a60fabf-430000a5256mr1129827fac.4.1777005129811; Thu, 23 Apr 2026 21:32:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 25/40] target/arm: Rename SME BFCVT patterns to BFCVT_hs Date: Fri, 24 Apr 2026 14:29:59 +1000 Message-ID: <20260424043014.46305-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::31; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x31.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: 1777005345795154100 Content-Type: text/plain; charset="utf-8" The existing pattern is BFCVT (BFloat16 to 8-bit floating-point). In preparation for introducing more insns of the same name, append the operand sizes. Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sme-defs.h | 2 +- target/arm/tcg/sme_helper.c | 2 +- target/arm/tcg/translate-sme.c | 4 ++-- target/arm/tcg/sme.decode | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index c551797c6f..01aad4c231 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -250,7 +250,7 @@ DEF_HELPER_FLAGS_5(sme2_umlsll_idx_d, TCG_CALL_NO_RWG, = void, ptr, ptr, ptr, ptr, DEF_HELPER_FLAGS_5(sme2_usmlall_idx_s, TCG_CALL_NO_RWG, void, ptr, ptr, pt= r, ptr, i32) DEF_HELPER_FLAGS_5(sme2_sumlall_idx_s, TCG_CALL_NO_RWG, void, ptr, ptr, pt= r, ptr, i32) =20 -DEF_HELPER_FLAGS_4(sme2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) +DEF_HELPER_FLAGS_4(sme2_bfcvt_hs, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i= 32) DEF_HELPER_FLAGS_4(sme2_bfcvtn, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_4(sme2_fcvt_n, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_4(sme2_fcvtn, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 0055e97a2b..a0f03c4671 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -1742,7 +1742,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 c6a8eec32c..1267d3e65f 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1447,8 +1447,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, - FPST_A64, gen_helper_sme2_bfcvt) +TRANS_FEAT(BFCVT_hs, aa64_sme2, do_zz_fpst, a, 0, + FPST_A64, gen_helper_sme2_bfcvt_hs) TRANS_FEAT(BFCVTN, aa64_sme2, do_zz_fpst, a, 0, FPST_A64, gen_helper_sme2_bfcvtn) TRANS_FEAT(FCVT_n, aa64_sme2, do_zz_fpst, a, 0, diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index ee874be1a6..7a8e1abb59 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -789,7 +789,7 @@ SUB_aaz_d 11000001 111 000010 .. 111 ...00 11 ...= @az_4x4_o3 @zz_4x2_n1 ........ ... ..... ...... .... . ..... \ &zz_n n=3D1 zd=3D%zd_ax4 zn=3D%zn_ax2 =20 -BFCVT 11000001 011 00000 111000 ....0 ..... @zz_1x2 +BFCVT_hs 11000001 011 00000 111000 ....0 ..... @zz_1x2 BFCVTN 11000001 011 00000 111000 ....1 ..... @zz_1x2 =20 FCVT_n 11000001 001 00000 111000 ....0 ..... @zz_1x2 --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005239; cv=none; d=zohomail.com; s=zohoarc; b=kNv01H0lDyKUlHXZ4i71im6N6NtCOcBbmA7n+7BkGd1zKhYFPuh+ZzVyb7XgoHHM/EcmhkTCtpJOy8vqdmi0s59eAjwX5l1NJZNdvgdSZ9CixP76zuqGz49BrGtlt+KFfvzsoLKO6bGbtu7mqk4KRgIx5s5iKEzdyeQPOGN8nzU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005239; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=YtGKPI9ZpKsuZkMA/HWHFsmsOIe2bn1o6/gZpN9uRvQ=; b=h3dWfryxQuh7KysAbRrBFoS+s5402SUxwSulZrjtj0oI2EQO6M8v+B8ccd+rZ5AEY9R99c7V2epcT9zjnAsuFcUoz3kkZjDeSI6uRDjYflGg+IK1bf3/UOGS6a+pFcxKsvmnHL4uOWDdUgNBYkvlFXvIsp1/AGHnCs58xPuPoXg= 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 1777005239651937.4395451870887; Thu, 23 Apr 2026 21:33:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DF-0001ck-WD; Fri, 24 Apr 2026 00:32:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8DC-0001Fo-BM for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:18 -0400 Received: from mail-ot1-x333.google.com ([2607:f8b0: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 1wG8DA-0003ON-7Z for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:17 -0400 Received: by mail-ot1-x333.google.com with SMTP id 46e09a7af769-7dbcb467f2bso6819289a34.3 for ; Thu, 23 Apr 2026 21:32:15 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005133; x=1777609933; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YtGKPI9ZpKsuZkMA/HWHFsmsOIe2bn1o6/gZpN9uRvQ=; b=m9zR1A5uSdUp7p6XgmaF4fGjRP6SZHS137+KOZ8/02tnjpBu0OQyrq9hYhgp++Yvcn t+Yf054IsLqCknLODwtEU28jrc6/aqvZVJ/zLEJMkXE3KENX46bZCsKvTDErGivIYjGu W7CAsl4uuxETwmcpqPU6EKo9cM7EmTDxRk627LB1JmUW7upzbL2RpYOiaosGV/ejee6a N5/fJ0Y4QRpop/cFjgyiRIQR6U3RpiCIxQKL2Ynm8nuDjqBb7qU22iOoHqrY9FTBcJM4 BRQXv+j8TrdP7j1z8P4phzMn4smKHDS7j6npVlIWHvgNIeUMfRDNJHLcRVkxqfKoMghD 4lLQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005133; x=1777609933; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=YtGKPI9ZpKsuZkMA/HWHFsmsOIe2bn1o6/gZpN9uRvQ=; b=iz9n3Tj9pe9UlBjBucYXVxjGIuLGLTMGQ94VntsA0VsajhlmmvRGsOEOzlufYS8S5G +UCt6Ruf3841DwYlRiIkW1WVpr7En4VCQxXUpdxyXhJDSYpQ37ALYwR02Il4fJoGJE9j qIpJgAI9/PENvfldzPtjLo6voSxB/LkaEXhdeLVcu0rWGv3JsLNNwIPDf1zMWf5NPPPl ex5T6oJFGmWWY6JWmo0uHK7vdAFnmLKEm//9PQUXvhB7irsSk6caSPuOEt7JqeFsBelZ Yz92irXcyytuRc6kpNLu0/aFuQ6Gj9ptjewjfs8SDQtiwf5EB7g5LpTfvV8C0Yw/NqPl sY3g== X-Gm-Message-State: AOJu0YxIdQc/6hgQRugubItmQpm7CwMJuc5zI5DMdP7BA1SFSkGZoIFE gkQV76bZdKdlvIJfW3nobwCn4Xo6hcSsIwkXXkd3NDHTDEBTeUGGPrZUjUwSywE5BouGzFwbErk EhPCZhqo= X-Gm-Gg: AeBDiet0KSkbmTeVan9dasFGJFZBnMkogjgRGk+F60eUr5o9CzWM0WAQjSmQQJ6LOiP WEoBh1FHsODVqBWIU+XT4XO2Ghh5GDvMzjAYxvxxAIOjqVdy+sYEcHlChAc1NSdC79hxf1u9rZA NMZL1LOr/dwvHlbGm9qtn9R5gGz1fByvy77b/nUHXFn/Dx/JsWp3h7XK0i3q95MaYQasBbehtOM m0+JBS+N0x+RSBj8SKIe9e2yVJIAKzRSOymRRbOcrpYoSKHvFP15Ae8F059gwqJiru9Mw2CPABS tgjOU5G8S7O2dBcWSQSj5+eUmr3+sILTkYsOH3dA77IklIVbkyBIl+IC5BbGgUHhHJpZY1L0BXW o+z00Ic7aSRorRsXA5n9vghrfYlFVCbIn2zhRzGdJQjTNxaTZqIljNT5iIM7SQIPDBm66RdL2Mp mT/r/WMBlIhkh7qyQp0vluCtf0DryLILZDdAvJV9UfWBAI41DIsz4cQcp9p/ejwg== X-Received: by 2002:a05:6820:4df8:b0:694:a362:e3b0 with SMTP id 006d021491bc7-694a362e6acmr6081941eaf.49.1777005133406; Thu, 23 Apr 2026 21:32:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 26/40] target/arm: Implement BF1CVT, BF1CVTL, BF2CVT, BF2CVTL for SME Date: Fri, 24 Apr 2026 14:30:00 +1000 Message-ID: <20260424043014.46305-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::333; envelope-from=richard.henderson@linaro.org; helo=mail-ot1-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=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005241507158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 + target/arm/tcg/fp8_helper.c | 79 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 19 ++++++++ target/arm/tcg/sme.decode | 5 ++ 4 files changed, 105 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 18ff483bb0..966f83d796 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -5,3 +5,5 @@ =20 DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) +DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index b03345c670..daf9c35720 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -149,3 +149,82 @@ void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMStat= e *env, uint32_t desc) =20 fp8_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); + 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); + } + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(i)]; + d0[H2(i)] =3D float8_e5m2_to_bfloat16(e, ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(i) + nelem]; + d1[H2(i)] =3D float8_e5m2_to_bfloat16(e, ctx.scale, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(i)]; + d0[H2(i)] =3D float8_e4m3_to_bfloat16(e, ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(i) + nelem]; + d1[H2(i)] =3D float8_e4m3_to_bfloat16(e, ctx.scale, &ctx.stat); + } + break; + default: + bfloat16_invalid_input(d0, nelem, &ctx.stat); + memcpy(d1, d0, oprsz); + break; + } + + fp8_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); + 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; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e0 =3D n[H1(2 * i + 0)]; + float8_e5m2 e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D float8_e5m2_to_bfloat16(e0, ctx.scale, &ctx.stat= ); + d1[H2(i)] =3D float8_e5m2_to_bfloat16(e1, ctx.scale, &ctx.stat= ); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e0 =3D n[H1(2 * i + 0)]; + float8_e4m3 e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D float8_e4m3_to_bfloat16(e0, ctx.scale, &ctx.stat= ); + d1[H2(i)] =3D float8_e4m3_to_bfloat16(e1, ctx.scale, &ctx.stat= ); + } + break; + default: + bfloat16_invalid_input(d0, nelem, &ctx.stat); + memcpy(d1, d0, oprsz); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 1267d3e65f..3e1da83535 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" =20 @@ -1531,6 +1532,24 @@ TRANS_FEAT(UUNPK_4bh, aa64_sme2, do_zz, a, 0, gen_he= lper_sme2_uunpk4_bh) TRANS_FEAT(UUNPK_4hs, aa64_sme2, do_zz, a, 0, gen_helper_sme2_uunpk4_hs) TRANS_FEAT(UUNPK_4sd, aa64_sme2, do_zz, a, 0, gen_helper_sme2_uunpk4_sd) =20 +static bool do_f8cvt(DisasContext *s, arg_zz_n *a, + gen_helper_gvec_2_ptr *fn, bool issrc2) +{ + if (fpmr_access_check(s) && sme_sm_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + tcg_gen_gvec_2_ptr(vec_full_reg_offset(s, a->zd), + vec_full_reg_offset(s, a->zn), + tcg_env, svl, svl, + issrc2 | (FPST_ZA << 2), fn); + } + return true; +} + +TRANS_FEAT(BF1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 0) +TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 1) +TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) +TRANS_FEAT(BF2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 1) + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 7a8e1abb59..df9586c1a5 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -853,6 +853,11 @@ UUNPK_4bh 11000001 011 10101 111000 ....0 ...01 = @zz_4x2_n1 UUNPK_4hs 11000001 101 10101 111000 ....0 ...01 @zz_4x2_n1 UUNPK_4sd 11000001 111 10101 111000 ....0 ...01 @zz_4x2_n1 =20 +BF1CVT 11000001 011 00110 111000 ..... ....0 @zz_2x1 +BF2CVT 11000001 111 00110 111000 ..... ....0 @zz_2x1 +BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 +BF2CVTL 11000001 111 00110 111000 ..... ....1 @zz_2x1 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005370; cv=none; d=zohomail.com; s=zohoarc; b=CWiCeNMDWT0a3j1bAOmSzbV5fPLQx430kLMCPcLXdy03fUbl5r15kk9FalDidRDiuGhW3csRODaFSST20KIRT7EtsKCOZeK9HRTbI4B3OZsXMgt+VpDzavoTaDZr0TgBfcGDVYgSuTMhHWYuFY2TafdGQEDOvt4dvdSGpEj+jl8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005370; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=MCib0BGYEL+yIv2p4qc75g1dc9HJbacYoxAIh15CdAM=; b=bzopinLY8zjzY2z3QNp4LLzm+0BadCgX4ZJOwbZWJIsWusv4z8zO8HxLcwmpTGX8+SyDCH1Jt/TpREAZzzkH5MqQW+TNY3lOIx2dTomMmfcXXNOH5uJdPPCTz6Voul2Pid4OGu7SzId05hw082uB/2JJILK34TVIGdx7SZZrbnc= 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 1777005370915656.3851155898212; Thu, 23 Apr 2026 21:36:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DM-0002Jg-3L; Fri, 24 Apr 2026 00:32:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8DD-0001NR-MC for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:19 -0400 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8DB-0003Sy-J1 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:19 -0400 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-40427db1300so5595063fac.0 for ; Thu, 23 Apr 2026 21:32:17 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005136; x=1777609936; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=MCib0BGYEL+yIv2p4qc75g1dc9HJbacYoxAIh15CdAM=; b=MPHFMMejCNzIDvlBmvFYp/CIiflHUvQ2KxwYeBZfkCD8i72kc8AJzRbKrk5z2nH9EI JD5S+1Kk5V6N0IpgOyj8vsj2E7qPhxgec5Dd4rP2ypjPjv9o6qIbeKB63y7wm2aITlm3 jEV0Tu3nSGaolmbi51XRXZVG3OQ9tCSXkYkPlqznmIqbJOpCivPL20X0V5sdsCFFgJQw G10D4Z3LjajqNuVljsxXPTA17i8Lf4Kq8sH40HawwHxK4sbzByZfJ39PEPRVo4AMq7aG PWE0dyUpv7QIF4Xth3Jm1Eh5vnoQZM0div+jDck57jF61jnjcuYqQ7KFzf5/eeydQd2p WsZQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005136; x=1777609936; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=MCib0BGYEL+yIv2p4qc75g1dc9HJbacYoxAIh15CdAM=; b=TA9FLvDwKGjfo+y19UW9iQu8tTVdY29l5XM6Kq9U1jZ11MTzTGcGOhKX6cehjpdLGk 04JzuQy7LJgpIZXQDl0KjQ8Rg1IY8CYKAaKZMzOu6GTD3xQfp5ctEh3l3TIMzIoLirCc dMno3wMtO+Fa/OKpNl1yKbVJInbhecY3ailqis/EWRgSLUbAmbeqFuDvI9Hk6I7HftTe 1TT1icMM+3aInycjgZ+Ov4CBdKYs3iNjgMM6I2nd4IEEfCwDPPbg2ByJiKixGeLWEQWp 8ThXCMSWCHodd8sdZZSRdp9cLWh+IIp/9tNVGVUoX52o7KqUc9EZKErlt5LWppsnIOvk Ifnw== X-Gm-Message-State: AOJu0YxHB577Y9iNDRU6L0LoXmnTvRZzxXBbd+G1XzxSh6uo+78In6iG fT4PRRzDxKqIntnZYLGeByWqzv60MnjYEeCZv/fvE7l7Hm9rX1/ziYKMwYrk+FDaiIJ3hRDuILD CSapEN9w= X-Gm-Gg: AeBDievurddZOWkg56+FrrUVChGa1nyBqYYbigWOgq1+8AwX5cVxdPTcVbR4uxLnAVk AqKvWJZUhRX7skYHCmqaIq9gjSf1r89WTt02BjDzhuPqiC2jh8ePHt04lWsBnqKKvbO2eq16HoN avje2OuWaUJH9Xkn+TdcFKHCkL4rm6V0p2wS86zPvsh88UVqDrTXutgRMTlax/aQDkm34IdYvTl b8gI/4FhBBshZqnJ/IVIh94KEYQRE1OfwF+Cr5j+2dx2CmHmD7+5bf8T9FGPP7Avd/l3pWCoczZ LUWmg0hCXrKiv/Q0A+5eBSRSXmA5QVUzfNlC3kaLqvazomELt3mTQkix1SVVaShe3bJ6yc5nU1y mWWNqC7ye/AS9vpPb19diO2UA1/ZLeTbGfISzdoOXtZmCKTTLuNBgcEt7RiZygOzc1lvtwRq38e +hVtlVg/mFCcQLLsosArBSHBt7oWzLorzpbxw0djjxYCQM0RZRJ1fLDw0fHLGfKg== X-Received: by 2002:a05:6870:8a07:b0:417:ab68:fbaf with SMTP id 586e51a60fabf-42adecd155dmr17504613fac.20.1777005136220; Thu, 23 Apr 2026 21:32:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 27/40] target/arm: Implement F1CVTL, F1CVTL2, F2CVTL, F2CVTL2 for AdvSIMD Date: Fri, 24 Apr 2026 14:30:01 +1000 Message-ID: <20260424043014.46305-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::31; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x31.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005372188154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 42 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 3 +++ target/arm/tcg/a64.decode | 3 +++ 4 files changed, 50 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 966f83d796..718463422b 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -7,3 +7,5 @@ DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, p= tr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) + +DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index daf9c35720..ed4923b1d5 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -91,6 +91,16 @@ static void bfloat16_invalid_input(bfloat16 *d, size_t n= elem, float_status *s) float_raise(float_flag_invalid | float_flag_invalid_snan, s); } =20 +static void float16_invalid_input(float16 *d, size_t nelem, float_status *= s) +{ + float16 dnan =3D float16_default_nan(s); + + for (size_t i =3D 0; i < nelem; ++i) { + d[i] =3D dnan; + } + float_raise(float_flag_invalid | float_flag_invalid_snan, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -122,6 +132,38 @@ 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); + 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; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (int i =3D 0; i < 8; ++i) { + d[H2(i)] =3D float8_e5m2_to_float16(n[H1(i)], ctx.scale, &ctx.= stat); + } + break; + case OFP8_E4M3: + for (int i =3D 0; i < 8; ++i) { + d[H2(i)] =3D float8_e4m3_to_float16(n[H1(i)], ctx.scale, &ctx.= stat); + } + break; + default: + float16_invalid_input(d, 8, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); + clear_tail(vd, 16, simd_maxsz(desc)); +} + void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMState *env, uint32_t des= c) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index d23d1a0bf5..b3fbc5f193 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10642,6 +10642,9 @@ static bool do_f8cvt(DisasContext *s, arg_qrr_e *a, return true; } =20 +TRANS_FEAT(F1CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_fcvtl_hb, f= alse) +TRANS_FEAT(F2CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_fcvtl_hb, t= rue) + TRANS_FEAT(BF1CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, fa= lse) TRANS_FEAT(BF2CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, tr= ue) =20 diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index b7aac148f2..26d31d0a33 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1910,6 +1910,9 @@ URSQRTE_v 0.10 1110 101 00001 11001 0 ..... ...= .. @qrr_s =20 FCVTL_v 0.00 1110 0.1 00001 01111 0 ..... ..... @qrr_sd =20 +F1CVTL 0.10 1110 001 00001 01111 0 ..... ..... @qrr_h +F2CVTL 0.10 1110 011 00001 01111 0 ..... ..... @qrr_h + BF1CVTL 0.10 1110 101 00001 01111 0 ..... ..... @qrr_h BF2CVTL 0.10 1110 111 00001 01111 0 ..... ..... @qrr_h =20 --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005335; cv=none; d=zohomail.com; s=zohoarc; b=lElQfeiCHgS9KKFWUUzJDqK3gGkqYqm3u0bDH5vN2jTS71qkrjxSpbXt9fEVlzeFKH5zNQK0FrPPhEr3TR2vKb0mXM1wJwQ/oWcgC9rUlIFurlHtEq2cnemz/0m+ejjX8hlT4EvQnMNCmd0K4uF+JICsNCAtoxOJ8/iyGLQj7aA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005335; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=j4lvls8REn2eXN6U4nRWxnCtYhx8hX39DXmOAnRWBww=; b=Lbp5nE67vVqMINnBER53KeF9jpaZAuK9Zbmc53B2yCy+ktZsGg2g2xnMI7swIZ5TsA8uQ/jry6oAgF8S/MIMtCiJz6MtumWazHJ5r1AGGcNPsusZ0NFLEpbOW2mBUFQbh6nceLP/riZ3Kr7oEVrqsn04I4bD/OgKVQ4NC53ffzY= 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 1777005335805879.333765726524; Thu, 23 Apr 2026 21:35:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DI-00021b-Qs; Fri, 24 Apr 2026 00:32:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8DH-0001o9-00 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:23 -0400 Received: from mail-oa1-x36.google.com ([2001:4860:4864:20::36]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8DE-0003XX-Hv for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:22 -0400 Received: by mail-oa1-x36.google.com with SMTP id 586e51a60fabf-40ede943bf0so4724252fac.2 for ; Thu, 23 Apr 2026 21:32:19 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005139; x=1777609939; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=j4lvls8REn2eXN6U4nRWxnCtYhx8hX39DXmOAnRWBww=; b=XDEjhZOuLQ2sc7EPFeDKmkYQYQVin73DwxVfuK2r7KpyN09kGYH795nVr4sQ6DWBfP 4h6eAt0zbXINKARdxUY4aU0PzQyqF4MMIq2TqpCe0bPY/8ouZdLwVk4iJeJUp/actFBL /DqEezmQOmosYALbWT7zF0xrUvuZ8jmJw2TlMf1aiyO9PTL90c40jxazctIUf1p1RGSe 4kXmQVsBCc/+XXNJI58akIFwXIUGdg+VM4pDwMVv9iqq+bACNm1ojkz72cWz3k3xMX32 vTTuyuXpe7VpJzQIkZYqZDgYu5IEDWDM42GzUxPdiuOZaQLK2Asrn3egW/hWDqETKcjZ NhFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005139; x=1777609939; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=j4lvls8REn2eXN6U4nRWxnCtYhx8hX39DXmOAnRWBww=; b=eyEjOhS2vchZ74cYmFa1CojmG7OUlVisVdG5XDqd1ae5VrGca+veJodOkyzjE0omI1 r8A9avaTWX49AtyMZ2wH/6jGiQvuo4AQueCORmSOJ16foejCiiM2DSLRwJO8q2rv5GG4 9nbZT4cFM2jCLRUXHhBAUozHJ4G8LV46GQXagw20hnw6lKKUjzCVVBS36JZNd8v9w1KC +9aiT6Jtw133siDEJ4VUbpLN13JSDV1VJ1hGeyhowATasIQT65wMZhN+GAm5rsE6TsM6 aEECS/qaiAJF6MDurEk08TQu873tGZ9NoS/Fadw5TSxptKLfBVCeofzvVXiD3A0EBfIP Pxlw== X-Gm-Message-State: AOJu0YwZfM7kzevw/v6Bw/rlCI8NXRVneR1tCoxWHS6zZQpdaF1foYU3 wPxRBs4VVdCLeGvSXD8aXcf9GBKZ5b2uG7OtRogLZtuF67eO7B4THySbOhmE3Q87W530R6tQh+K yxC6BdLk= X-Gm-Gg: AeBDieuMUtDR/fR1MKLhD86vOCewb5OpA1liFyPiqgVpsol5O92Jqze4O0K9wmZsc1e 7xKRnc4lvBimSnVt7PjEzaXbKYqyAn/p1GPyByDY4KlSyBpHNs9iS/0oLlKkfdSxmiaV1fZwz5j GXyNx9BVSpg8M0ADZ8Lwn6jopZuAHDdSFZvzC8p+Fi+bp57mZ4GrfHMgb0aoSFeHXu/wCaTAt6d kD2EP8XUBpq/Xv1JqGEaKSSWPDQeshm/lL+tSRpkDHvFFG9He+caWmUmLn56oCNbfvFNVEouGv6 b9tithH+vbqDHsrWwyIaYiCKQc0CQHOaMg1RyrFRkOl/m+6nvK/l89xODML0ciK+kpFdJNaaRAt LCkqtoBpa+hJlF0KaS+KBwraxr3ZWhaPNxBGq3xjzBYE9cXvQhC/sQ7WDkS7C43RfmHS5GvALRJ i70+BazKODG7bzvV4PwxLMSY+yxnBx7aaTn7HMv/VXRRp3GpoRjnoiyqc9VX51gg== X-Received: by 2002:a05:6870:4687:b0:42f:ee6c:35fb with SMTP id 586e51a60fabf-42fee6c5c29mr3036229fac.20.1777005139056; Thu, 23 Apr 2026 21:32:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 28/40] target/arm: Implement F1CVT, F1CVTLT, F2CVT, F2CVTLT for SVE Date: Fri, 24 Apr 2026 14:30:02 +1000 Message-ID: <20260424043014.46305-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::36; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x36.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005337636154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 28 ++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 9 +++++++++ target/arm/tcg/sve.decode | 5 +++++ 4 files changed, 43 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 718463422b..3021dafd44 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -9,3 +9,4 @@ DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, pt= r, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) +DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index ed4923b1d5..32c7a82647 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -192,6 +192,34 @@ void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMStat= e *env, uint32_t desc) fp8_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); + uint8_t *n =3D vn; + uint16_t *d =3D vd; + size_t nelem =3D simd_oprsz(desc) / 2; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(2 * i + ctx.high)]; + d[H2(i)] =3D float8_e5m2_to_float16(e, ctx.scale, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(2 * i + ctx.high)]; + d[H2(i)] =3D float8_e4m3_to_float16(e, ctx.scale, &ctx.stat); + } + break; + default: + float16_invalid_input(d, nelem, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} + void HELPER(sme2_bfcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 1540cbd6de..e31ab609f9 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4080,6 +4080,15 @@ static bool do_f8cvt(DisasContext *s, arg_rr_esz *a, return true; } =20 +TRANS_FEAT(F1CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, false, false) +TRANS_FEAT(F2CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, true, false) +TRANS_FEAT(F1CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, false, true) +TRANS_FEAT(F2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, true, true) + TRANS_FEAT(BF1CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvt, false, false) TRANS_FEAT(BF2CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index e7984fa8e0..ca110f4bc1 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1091,6 +1091,11 @@ FMINQV 01100100 .. 010 111 101 ... ..... ..= ... @rd_pg_rn FRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn FRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn =20 +F1CVT 01100101 00 001 000 001100 ..... ..... @rd_rn_e0 +F2CVT 01100101 00 001 000 001101 ..... ..... @rd_rn_e0 +F1CVTLT 01100101 00 001 001 001100 ..... ..... @rd_rn_e0 +F2CVTLT 01100101 00 001 001 001101 ..... ..... @rd_rn_e0 + BF1CVT 01100101 00 001 000 001110 ..... ..... @rd_rn_e0 BF2CVT 01100101 00 001 000 001111 ..... ..... @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005209; cv=none; d=zohomail.com; s=zohoarc; b=RzYjp0lMLJVvUAKqm4LDBnAXwq40uy/UtKaMIOd4xUNHEPznL00dI2kh928MwXWXc8xc4x3Y14h5jxa53KY9GEs5Eac7FJOv/SkABP6ynqtqVkSI5KVxg6X5cCnWjI2lScgWfErVYXdnS74k/4wWy5tKkbqXPRpYy0GMJ1tO2mY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005209; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=UMcr01u60LrCES988dBDvl79mkeVcUNH9ZYKZAUuh5E=; b=aEdggZ+rOqSosJnjTklSTzzWVG5oNq2i2Y1eZL72H7NrjFXcYsJkFcslZpt0aurCTyhIF0HteCl4iPr4PP/paPC/x2K/FdTokvA22hOMEUAUrKd47FzPrKA10bI2DEJ+32C0O/wVsJr6FQLX+4xJ/fOXlaGXYgiIaJv102rjh90= 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 1777005209030512.4087503459061; Thu, 23 Apr 2026 21:33:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DO-0002R8-HM; Fri, 24 Apr 2026 00:32: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 1wG8DJ-00026p-BG for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:25 -0400 Received: from mail-oa1-x35.google.com ([2001:4860:4864:20::35]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8DH-0003Xu-Am for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:25 -0400 Received: by mail-oa1-x35.google.com with SMTP id 586e51a60fabf-42fe552aedeso528782fac.0 for ; Thu, 23 Apr 2026 21:32:22 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005142; x=1777609942; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=UMcr01u60LrCES988dBDvl79mkeVcUNH9ZYKZAUuh5E=; b=KL+pV7E3KGebFNDe41gR+k2rdkg59o1eI6nSk6bBfFIxJNYPdc5EZIBUsOLpKOK7gQ 64r7Qqvn8A90iG2RRQznndqhRFwMNS1BA9X4iR9X5AGIq9q/jNdDx9OPjzi3kJhTwMUF 2skpOxKCySCu3XGY84My9Oa6X8WENPksjSZdECuKekStrYk8VuVjokCj8r607UFvLgQt N4whKu4N0unrH6ISkkN1Gzl4cot7M0LWPPLQmfxp8y1uSGfS/13ZS4yiApOTuVReQVmk TsTpR6F4qaJx9LCO9AaXvMnVo+dN9WXOC1zzhFoQV5xrYpzea3sKXJOgOIQTLZqn9SAr 1C8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005142; x=1777609942; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=UMcr01u60LrCES988dBDvl79mkeVcUNH9ZYKZAUuh5E=; b=iBToAcQ3/z/ju4K8FfxeeT74vmJPh6iwLroIyOeTBXY2sYzzwnqiPhlRQkgzHwA0pV AbQkEaio2DtXb5X/QfKibWVTG5IHuy0iD6SuF0YuD9uutYai3IeICr8a39qknvft0+qo PXLy8MVYFTJihbnB+K6yzpqZ61k9WCk+hGqQmmSwTEI6kI42DxmBF2SollFlL5CjbfyZ 6HBBWCc6kn3nUpN1ou4We8K2l1aUpFgZbC0g1gdCGdBMJrbSvpILPUJF4WFEtkzDi3PE 5aSFLYCmL+0rVh5B/xG28Gr8xs74Qa6vHQ085QY8d6taj3rKfSYrjneGIHN1jV/c4Ruf vpvg== X-Gm-Message-State: AOJu0YyrTwcsf0JJtkGCX4SM0Zaiq/ccg5dpa2r4jNueuQpLZ2VUy05C SMBz8XAdAxFNEgrTWb5BDjKLy8t+4Y+JYyJ7BuEolbFAQyXwNuW4mEBM0NXS+m+2t659DxqfGsL /J7Kk5qc= X-Gm-Gg: AeBDieshzD2wRKbO2oIBCNCQVqB720/HkGtM0ZADH+JdGGYavx4xPWB++aP5gOTwotX NoedR95i7jjlSqOblc0m3N7yR5V/04xOaRRXW20V5eBaYVkO4Y+uGyfoNoOXwoRqDnhD/xnTZDt aNc8kdGBBKMYeNgmc/Hktl7/KxobyQUKDlaWPSG0h156qKGKDeyxzygb0sJhfCPA5opOm+sqoVP 9wvvWAej05x+sjzHUnWdioBE53DipMg0c4mNJ3xckTdk8Z1V9WIzW3axWOsalR7yoTfQnowPMC/ TeS4zpjeD3OxDuBNZ/nSBz6fFzlMr6b+rn1/9EEN567NsB37EF8+3Lw3W0uTau5uEapediJucNQ Rv8V3tMlRhp0/96qCONAkEpN8sxRjmQZaVbrk7e+jOePc3767dCFu++oQ0N18ELKaarcP8HyX77 omPcQrGyuTMv9YPNMxBk386+eaOw+CNoyfpBmSOBrSNb7/fhX6VvEtmAKvEbHQmb5MW/0H0QwA X-Received: by 2002:a05:6870:968d:b0:42c:1cbb:5f5b with SMTP id 586e51a60fabf-42c1cbc662amr10115100fac.31.1777005141917; Thu, 23 Apr 2026 21:32:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 29/40] target/arm: Implement F1CVT, F1CVTL, F2CVT, F2CVTL for SME Date: Fri, 24 Apr 2026 14:30:03 +1000 Message-ID: <20260424043014.46305-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::35; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x35.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: 1777005209472158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 + target/arm/tcg/fp8_helper.c | 79 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 5 ++ target/arm/tcg/sme.decode | 5 ++ 4 files changed, 91 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 3021dafd44..b5dc2b7064 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -10,3 +10,5 @@ DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void,= ptr, ptr, env, i32) =20 DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 32c7a82647..2b1955508d 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -264,6 +264,50 @@ void HELPER(sme2_bfcvt_hb)(void *vd, void *vn, CPUARMS= tate *env, uint32_t desc) fp8_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); + 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); + } + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(i)]; + d0[H2(i)] =3D float8_e5m2_to_float16(e, ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(i) + nelem]; + d1[H2(i)] =3D float8_e5m2_to_float16(e, ctx.scale, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(i)]; + d0[H2(i)] =3D float8_e4m3_to_float16(e, ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(i) + nelem]; + d1[H2(i)] =3D float8_e4m3_to_float16(e, ctx.scale, &ctx.stat); + } + break; + default: + float16_invalid_input(d0, nelem, &ctx.stat); + memcpy(d1, d0, oprsz); + break; + } + + fp8_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); @@ -298,3 +342,38 @@ void HELPER(sme2_bfcvtl_hb)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_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); + 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; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e0 =3D n[H1(2 * i + 0)]; + float8_e5m2 e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D float8_e5m2_to_float16(e0, ctx.scale, &ctx.stat); + d1[H2(i)] =3D float8_e5m2_to_float16(e1, ctx.scale, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e0 =3D n[H1(2 * i + 0)]; + float8_e4m3 e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D float8_e4m3_to_float16(e0, ctx.scale, &ctx.stat); + d1[H2(i)] =3D float8_e4m3_to_float16(e1, ctx.scale, &ctx.stat); + } + break; + default: + float16_invalid_input(d0, nelem, &ctx.stat); + memcpy(d1, d0, oprsz); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 3e1da83535..29d116a57a 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1545,6 +1545,11 @@ static bool do_f8cvt(DisasContext *s, arg_zz_n *a, return true; } =20 +TRANS_FEAT(F1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_hb, 0) +TRANS_FEAT(F2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_hb, 1) +TRANS_FEAT(F1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtl_hb,= 0) +TRANS_FEAT(F2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtl_hb,= 1) + TRANS_FEAT(BF1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 0) TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 1) TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index df9586c1a5..d6192eb59d 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -853,6 +853,11 @@ UUNPK_4bh 11000001 011 10101 111000 ....0 ...01 = @zz_4x2_n1 UUNPK_4hs 11000001 101 10101 111000 ....0 ...01 @zz_4x2_n1 UUNPK_4sd 11000001 111 10101 111000 ....0 ...01 @zz_4x2_n1 =20 +F1CVT 11000001 001 00110 111000 ..... ....0 @zz_2x1 +F2CVT 11000001 101 00110 111000 ..... ....0 @zz_2x1 +F1CVTL 11000001 001 00110 111000 ..... ....1 @zz_2x1 +F2CVTL 11000001 101 00110 111000 ..... ....1 @zz_2x1 + BF1CVT 11000001 011 00110 111000 ..... ....0 @zz_2x1 BF2CVT 11000001 111 00110 111000 ..... ....0 @zz_2x1 BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005305; cv=none; d=zohomail.com; s=zohoarc; b=Q54RS9IhdHuFPUbPjlwkZhZAG71dMbM4n/GbdcPCh8d9pclRVqhFnPfkeJfqaCa1K5aZVW0DLyUAP3nPdZOjhqJCOY14Hq3eEmqMzB/8FaDGjahc1h6g6FaquPddlWcX/sAkBgTeF2MoFZe0thASg7j8ZxD+jWAYNkhJe42cYpI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005305; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=pEaE+Gz4pYUADHfndZN2FYmsXkuJHrO7JwM42EplOck=; b=Pu0M7nxJNEV1cltk/0N1BEp/eDfEkC3TNKQTjn4ukOCdwhqlj72smVcIPsGtm09UghMWqsFiXRsg5UI+z3a/NOAmATGsbKjJ97aiv0P8npWLbD8ehkXcXeN1zZSP/R3q5MeZA44wiHn6q4fjc5UMI1wrF+nJ1tK2zoC0/cqwayk= 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 17770053055821005.5311717366653; Thu, 23 Apr 2026 21:35:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DR-0002ZW-FX; Fri, 24 Apr 2026 00:32:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8DM-0002P7-S6 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:28 -0400 Received: from mail-oa1-x36.google.com ([2001:4860:4864:20::36]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8DL-0003Ya-7e for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:28 -0400 Received: by mail-oa1-x36.google.com with SMTP id 586e51a60fabf-42fdab683b7so942238fac.3 for ; Thu, 23 Apr 2026 21:32:26 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005145; x=1777609945; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=pEaE+Gz4pYUADHfndZN2FYmsXkuJHrO7JwM42EplOck=; b=P7zpHjGP/UBRGPsjVFLhEE9y8jXpddbvQ7ul/FIFLx2tSPdBSjnI7gjnXaQ4s78EOE zQRLYJW7XCFgEffJeeTjDoNd8cKXbhq5xgdYf5HGeEc8rYtmY2Q2UGP7vDHhTE81GuSt ITBD1WTuW9ZDlQPq62HPee5RVKJ2WPQcvcLSV8j64/NHJolC+K8SGKcq+JdUXxExc2QD 4RP8rpje69uiAa3G4Fj9PvXOeOB1eNz5YWyyh6YOlL7qSu5iwCLqL2XVQWD/HY6gTjOU AXvDLu4ADDrHglN5u8xFJxkWnDVX2/57Dsm15NAWv9dCZsO7gAtEk2HlUAdAv2H6Tne7 4UWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005145; x=1777609945; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=pEaE+Gz4pYUADHfndZN2FYmsXkuJHrO7JwM42EplOck=; b=WD3AQJxvKjXD/4+q8quU8a/f+WNKoWf6YLmTSmdT5UUyVG//u/SnQ/4Z76RqNsJCOe 0mdhXhsDDplkCzOlSBMkXZkZdQfy9BfzQzdlegqGWHWM/SbmNtZ+k6NYSgzMvotwyK54 gHaWMvEFc9VcQMn7yf2UwVnwE3pZeLm7X7cj0lwtGJy0v7cF4IRGk3IUSF8tzotDlRGZ Epan6Y/eYSqet8zSIiEUJYemNNf1JTXmblP4/viJE1xkY5R3AkvT8KkjIbYTa39QH/7c oa4cTudj06bI5Bz5TcV9WalEquRPYk9NKwM0iKpSHnxwyjynzHdF5WUjiRR+Vf0atWBm nAmw== X-Gm-Message-State: AOJu0YxJRgsia1TAiH1varOR+OE6evk3C1Ge/vIIw7zxGL39pRq0/wW6 8Ill43G3WEAlw6T1pmbcLg4fXfgkkJzmYJuNUZfKwc9+tRt7xDUlGBCH+FFNhrL2hYAOaM/gB1N SnWC3umc= X-Gm-Gg: AeBDieuXmYzi6mQtVdqbufSkH+ntj0AwcI/MiA3XzqFYLVf2CkP3RIok7CtjOcwr/5M Dxk7J1aiNiAdNfvzUcNQeIrseE1H3v7aW5HxYJqxl2Y1EggtuIR9QaCNb9OfyJfY4KuUBnuKDsK ycCa9k5oXYyy0fBzL8rPvRNiIGU9Fv1QaXz7sAr0G7aP3qlfqxHylgQUhd8WJQ+dOlQMpjsv79y uI4wh1cI5MAgktgH20VYtDC3O8sRSGYQbJfbK4B2mzqPdPlcJlJBwibC1C7vOWYrcYIgiOCtlxB sYlDvke/9VGUhoG1Wzx6T2FOFf1WqfrWVRHriconc9oy3VHBvIysav8hh8XvVVRTiQBN0+gDxgc SnAEayB7G/L98xkjMemjctvlMkfNe++fNbL6SYrM7id2U7hK7tVy8jYwbzXCgqAPBX2jvO3foUG pofjrNtM9d83dz6bGGtU0Pl9wJx3BHYtoDV+UF/On0uXNlbPrV4i2vUs8a2t7/KSH4Wd2V21TZ X-Received: by 2002:a05:6870:702a:b0:417:70d2:f991 with SMTP id 586e51a60fabf-42abf236519mr18907955fac.8.1777005144581; Thu, 23 Apr 2026 21:32:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 30/40] target/arm: Implement BFCVTN for SVE Date: Fri, 24 Apr 2026 14:30:04 +1000 Message-ID: <20260424043014.46305-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::36; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x36.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005307759158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 55 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 3 ++ target/arm/tcg/sve.decode | 2 ++ 4 files changed, 62 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index b5dc2b7064..bbc8d69e28 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -12,3 +12,5 @@ DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) + +DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 2b1955508d..ad5a2dc64d 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -77,6 +77,15 @@ 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) +{ + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType f8fmt =3D FIELD_EX64(fpmr, FPMR, F8D); + int scale =3D FIELD_SEX64(fpmr, FPMR, NSCALE); + + return fp8_start(env, desc, f8fmt, scale); +} + /* * Invalid input format is treated as snan, then the conversion operation * converts to default nan and raises invalid. @@ -101,6 +110,13 @@ static void float16_invalid_input(float16 *d, size_t n= elem, float_status *s) float_raise(float_flag_invalid | float_flag_invalid_snan, s); } =20 +/* Invalid output format writes -1 and raises invalid. */ +static void float8_invalid_output(uint8_t *d, size_t nelem, float_status *= s) +{ + memset(d, -1, nelem); + float_raise(float_flag_invalid, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -377,3 +393,42 @@ void HELPER(sme2_fcvtl_hb)(void *vd, void *vn, CPUARMS= tate *env, uint32_t desc) =20 fp8_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); + 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); + + switch (ctx.f8fmt) { + case OFP8_E5M2: + 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 + bfloat16_to_float8_e5m2(e0, ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D + bfloat16_to_float8_e5m2(e1, ctx.scale, osc, &ctx.stat); + } + break; + case OFP8_E4M3: + 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 + bfloat16_to_float8_e4m3(e0, ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D + bfloat16_to_float8_e4m3(e1, ctx.scale, osc, &ctx.stat); + } + break; + default: + float8_invalid_output(d, oprsz, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index e31ab609f9..54f1b253c6 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4098,6 +4098,9 @@ TRANS_FEAT(BF1CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cv= t, a, TRANS_FEAT(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvt, true, true) =20 +TRANS_FEAT(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_bfcvtn_bh, false, false) + /* *** SVE Floating Point Compare with Zero Group */ diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index ca110f4bc1..b6ef8ed8de 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1101,6 +1101,8 @@ BF2CVT 01100101 00 001 000 001111 ..... ....= . @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 =20 +BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 + ### SVE FP Compare with Zero Group =20 FCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005293; cv=none; d=zohomail.com; s=zohoarc; b=RexQ0ewEEc+sPpqg7GYssz0dlklIVQCuIwqorIG6bFkmNuO/uMNgmSkmOME5DOELji9gNCD2QP+qandAFtQ+KMEn7SnxFQ3vnlJhpVqh7vnIKgKZGEDeRYJ7qZmwemliUo4LdSQmuXnqTWkaRB2m2LQ2sFiPz1bJBDlovrBYeKU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005293; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=GJ1VXgG74f8s4Xmso5BQZxSExdCoj+QRYM7tqnseBPw=; b=Aysv8L5n8k/lAxqgk5yyGJkLXRQxhiUAfEGmyCiFCUol04k43JbVqHJo88g95jPRksNsuCAi4m/1vlzE4fA+iiwy9wgKOqCxg4eZlL1qlXk1MWFpd+vuKlsFp8dgZb5gEjcdO7Q4mSGwvhcy6LQsxB0FbYCiah+ywiWd5gk4joc= 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 1777005293894965.8210799306742; Thu, 23 Apr 2026 21:34:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DQ-0002VT-Fx; Fri, 24 Apr 2026 00:32:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8DO-0002Rj-O2 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:30 -0400 Received: from mail-oa1-x2c.google.com ([2001:4860:4864:20::2c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8DM-0003Yw-W6 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:30 -0400 Received: by mail-oa1-x2c.google.com with SMTP id 586e51a60fabf-404254ffe8aso5225709fac.0 for ; Thu, 23 Apr 2026 21:32:28 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005148; x=1777609948; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=GJ1VXgG74f8s4Xmso5BQZxSExdCoj+QRYM7tqnseBPw=; b=Hjl0gD4kvCkDSXsMMYymGeapzmruk81d3Qigg+yjqLw8+eqcjLXKbzAN4PcJlQgOBR UfQm+B3/Ql9kr6Hpob78eI8ofQiFb46BpYXneZedhQVOKqldhyZM7GVtxZK1545D+Uhj j2s10rrf4qSHsPi9Qj2jPyZmtPZb2pHs56W1lpF6dloOeFM9fUcRrLix5/4seLAdOeMD T42+9SRtii277GRE2SkPODgsPDy7rSJcS2yhvqZHWjlpmKplQ6kN2e9GBanG2EbqhApd f/s47O+1h9eTyyeee3DpC7hf9LXJevtwc2yzARSsU2NtixuPJnMifqoOPgq+9iz224wX hjXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005148; x=1777609948; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=GJ1VXgG74f8s4Xmso5BQZxSExdCoj+QRYM7tqnseBPw=; b=mXqMeUAQDVFXMUj4iz3CL8L8iMGa2E5pknOYiQTUOtAOLQTlpYBYNE81fA5p1FA0zP ohJdYqmzPI7tsn6DIphNw2wOTX1gjgf7gkEkmQ1diJzTjn2L07ztI4XkmTEctlJkhdCi IbI6D/KXOotf6elS/NQJQdq1tjmbGu98M1QRLScpzZeWUQ4+GzSMBB1Ix1gZiKsZNv/L r+rb2giED+wfQEzGYBaJe617BgUugNFeYbO+nuijaoMOjxoFQfyZgLYOgPT8OvBGMRot F0UdkGSCrF7HmfvSQTDPzAqDbzFtA8szA6KTtCWoQlDwO3tiJpcSIrIbPAZ6bDzHXbVo gMSw== X-Gm-Message-State: AOJu0YyQJzxzts5bfyygjlkw/1sbQ4EZTwdex3KYHS6bHev7AO+0ayKT l3EY9wSALuyAYqIo+51IH6UGk/bswDSx9tNQwEYWaWYwQJbvKIKJgm/8AsjmP6UoIQEFveIIMR3 UuD0oWK8= X-Gm-Gg: AeBDievMaGHy75NOc4VscLRAlkJayL23ANeJvgQpIQnVhwTA/ZferePo4RFRQnlvSUn yAnGePgOO/L6/GPKw7V0dz7+qzhEPG+kvCQ9fF7N/7YGXOe45/KZyLwbuTqIbQ34SM+HmgYgi1N T3cGqoHmX4SNuNx7XyBTr2sBFFxxS+nxN1/7BFCBSeHMYHvGR//hZERdBtP4P5w3iCc9xZblI3l cOZEqx/LhYKfbIM1Ej5CU9UwT4Q0uzNm+feNmvOZAZYK1oKAshN+QQSE44dwbd9vMvi/1LnVAK3 4t+HoqjFeEVX04/0/FoM/d0o1Hm8KiO9I54EftgBEnfElhXpAd3e6aQmow190WQSOisIZKj0PEF 1zvFhlhwAKplSkEXEdPTzCvJS12ECRGlZpHiAt+GZh3xK8lsiMv/pBJXbKjipaJQqFLIImJaZGq AotA0BsnfhZ8rlwP5MV3iU+i1gvyG9it/Tds4/byqaJrQIK++UPVOI+HHyjHFb8A== X-Received: by 2002:a05:6870:aa08:b0:41c:af81:2e7f with SMTP id 586e51a60fabf-42a99a90d08mr16298142fac.20.1777005147841; Thu, 23 Apr 2026 21:32:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 31/40] target/arm: Implement FCVTN (16- to 8-bit fp) for AdvSIMD Date: Fri, 24 Apr 2026 14:30:05 +1000 Message-ID: <20260424043014.46305-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2c; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x2c.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: 1777005295019154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 48 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 15 ++++++++++ target/arm/tcg/a64.decode | 2 ++ 4 files changed, 67 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index bbc8d69e28..6530d1a6da 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -14,3 +14,5 @@ DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, p= tr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) + +DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index ad5a2dc64d..6241297269 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -432,3 +432,51 @@ void HELPER(sve2_bfcvtn_bh)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_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); + 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); + } + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float16 e =3D n[H2(i)]; + d[H1(i)] =3D float16_to_float8_e5m2(e, ctx.scale, osc, &ctx.st= at); + } + for (size_t i =3D 0; i < nelem; ++i) { + float16 e =3D m[H2(i)]; + d[H1(i) + nelem] =3D + float16_to_float8_e5m2(e, ctx.scale, osc, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float16 e =3D n[H2(i)]; + d[H1(i)] =3D float16_to_float8_e4m3(e, ctx.scale, osc, &ctx.st= at); + } + for (size_t i =3D 0; i < nelem; ++i) { + float16 e =3D m[H2(i)]; + d[H1(i) + nelem] =3D + float16_to_float8_e4m3(e, ctx.scale, osc, &ctx.stat); + } + break; + default: + float8_invalid_output(d, oprsz, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index b3fbc5f193..93c883de88 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6521,6 +6521,21 @@ static gen_helper_gvec_3_ptr * const f_vector_fscale= [3] =3D { }; TRANS_FEAT(FSCALE, aa64_f8cvt, do_fp3_vector, a, 0, f_vector_fscale) =20 +static bool trans_FCVTN_bh(DisasContext *s, arg_qrrr_e *a) +{ + if (!dc_isar_feature(aa64_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, a->q ? 16 : 8, vec_full_reg_size(s), + FPST_A64 << 2, gen_helper_gvec_fcvt_bh); + } + return true; +} + static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2) { if (fp_access_check(s)) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 26d31d0a33..71456d44e1 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1201,6 +1201,8 @@ FAMIN 0.10 1110 1.1 ..... 11011 1 ..... ...= .. @qrrr_sd FSCALE 0.10 1110 110 ..... 00111 1 ..... ..... @qrrr_h FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ..... @qrrr_sd =20 +FCVTN_bh 0.00 1110 010 ..... 11110 1 ..... ..... @qrrr_h + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005341; cv=none; d=zohomail.com; s=zohoarc; b=Q/tH/vvChArkaA42msMScqzi937b8t/3IMvMLg76ynZpwEkzn3r5zQrhHIelb3kLIMNrIYwP+M31ygrv5I5K+Qh5iFIHdGzHnKCqBsizVXsz9/d1wGIJXulohYP52nNlcC+99CipwVgjsJCu4HXJjnvXTw2bZnW+HkzdBRKpiSw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005341; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=wW+LW+Nt1rhrQi5WxMDAPWgTbe7PVFsy6KMvcn0ZFDU=; b=Tvco2f2Jxxq+bkAQqN4q/NoYVJQUThnG4lc2Fvmgkv5mRTjIU+cHRD86hrG0avKXF8t+rq/zZT8/n+0/u0OsZ0iglJyhqp/GCus+q8b6yh74gXsYCY+GL6LAW/HcGyp+Oaz9IB0ZP0bzwGCR175MokdQJYM87NXjp97mC+B0bMI= 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 177700534106318.463980356427214; Thu, 23 Apr 2026 21:35:41 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DT-0002gM-BD; Fri, 24 Apr 2026 00:32: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 1wG8DR-0002Zr-JQ for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:33 -0400 Received: from mail-oo1-xc2e.google.com ([2607:f8b0:4864:20::c2e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8DP-0003ab-Sq for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:33 -0400 Received: by mail-oo1-xc2e.google.com with SMTP id 006d021491bc7-679b072ed3aso3637036eaf.1 for ; Thu, 23 Apr 2026 21:32:31 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005151; x=1777609951; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=wW+LW+Nt1rhrQi5WxMDAPWgTbe7PVFsy6KMvcn0ZFDU=; b=iC13CAbZhv+xodDtkAH+3iEGg9NG9mM6Gwki2RVGqe/I1EsW5Z3EYroTKxwh8N5znM MiqLoFicbZ1CyNBPHPXwVc9bAkmN3iP2UrQV5zeKViabHsLyLpNfitjbVaJ0Bg5TUoPk /s/G1dTZt+YHs11Dr6HE80CpO9LAMy7H2ggZCbNQMJmAVzOBgUsc0RHPbTEDJwhrXypM 9XhCcTAENA8V8CCxMFdFozZ0f90Jkb9s4e+S2aHXhEEZsM4N8C7bCXf+fiuRQ85G8M/6 4kT78q056b//T4ev00cS2S7W1x87kgVaYpRMrDIE2Fl9O1xk7quBr/QKb/A8PYzF+OwB BHtg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005151; x=1777609951; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=wW+LW+Nt1rhrQi5WxMDAPWgTbe7PVFsy6KMvcn0ZFDU=; b=nk00EKbynz3x9ljZZa+sUaMhfXM9b5T/mmCFxpMTAljjgdPlbFAbFgmcCfDFYp/gvi Bjeio+riVuaRhwQeykpbGPSdPI1E52lND+DduEnwsx5hVEEB7n6zlYV0JWbOn227PWRu FJ1xHcwLeR6dTFQvvJStO5nzZXA1WVaEy8aHxdRR13R6UcRc/0Y75BZqQL8f/Lq0DB30 ZtmUJqwwHaoGPCMQeu4KZ1UNlhZvVBlRxgOJth38HgpItl67VyohQgpJJha9zNOkF6yr O0n6GogwA+znol4JHCaRvmVfZB1M5nmVH9Vt/PN6FXBd3KdfcVW/w09zyz+wGyNaN+U1 USzA== X-Gm-Message-State: AOJu0YzdG6Tc+dYdTKh6Y2ZGZOk2YoGUfc9FnqzmpLCw8a1BYiQrAESg +DArda2ZX6CILBbjdl6qC8tuOPKVNiZYbyW/OXTx/afquyt03swHAsav2azis7UimeN9A6zCPgl LWzd4l2g= X-Gm-Gg: AeBDiet/hvBFhcGfM7PgoWhBZIiwUhe0a7XViqzeTVkbVtFqpcv63tVMn2qM6B68lOf lLkQ2gcV2VJpJEKpr2f575+zljw/zl5SFiuD7RGp/MVdO3H6Jlc7tleODm0f1ICw21q3tRt283f +N3L33x7YeVo3QlhHCVAXw0lMellt2POhN1WmmWYE+AMmh3OLy/2v1KU/SqNS67Se+rVy97Ycyq bnOPGjfjxIn8hilHtRsqJqYPO1IOykxzJ62I/dbKVoQixMmKZAO4MHHGI13dknudsY01vJaQZGM hQbqh0SzAHyyD0SP6KNC6EcSeLkQ/Siz4djOdAoDgV8pDvW3/1X4qwA11OI39QMaoeYDEGHxRkX AVkpg5IOnrRr5bCrfQwkjgV83+gEeASozCjQGhU/WmWBEtcrf30Q68z7sYRha+UEwJ2EtzPCJWA LLqd43XuDOKxNlPCvmHOML8/RxiEYjSo/gdy8swWqmmXsljwKKpbPHW9ERtl1jpQ== X-Received: by 2002:a05:6820:198e:b0:695:a86:91a1 with SMTP id 006d021491bc7-6950a86f145mr5420990eaf.24.1777005150515; Thu, 23 Apr 2026 21:32:30 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 32/40] target/arm: Implement FCVTN, FCVTN2 (32- to 8-bit fp) for AdvSIMD Date: Fri, 24 Apr 2026 14:30:06 +1000 Message-ID: <20260424043014.46305-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::c2e; envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc2e.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: 1777005341918158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 42 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 16 ++++++++++++ target/arm/tcg/a64.decode | 1 + 4 files changed, 61 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 6530d1a6da..023a49e12f 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -16,3 +16,5 @@ DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) + +DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 6241297269..fecd9cca0b 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -480,3 +480,45 @@ void HELPER(gvec_fcvt_bh)(void *vd, void *vn, void *vm, fp8_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); + 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); + } + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < 4; ++i) { + float32 e =3D n[H2(i)]; + d[H1(i + 0)] =3D float32_to_float8_e5m2(e, ctx.scale, osc, &ct= x.stat); + } + for (size_t i =3D 0; i < 4; ++i) { + float16 e =3D m[H2(i)]; + d[H1(i + 4)] =3D float16_to_float8_e5m2(e, ctx.scale, osc, &ct= x.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < 4; ++i) { + float16 e =3D n[H2(i)]; + d[H1(i + 0)] =3D float16_to_float8_e4m3(e, ctx.scale, osc, &ct= x.stat); + } + for (size_t i =3D 0; i < 4; ++i) { + float16 e =3D m[H2(i)]; + d[H1(i + 4)] =3D float16_to_float8_e4m3(e, ctx.scale, osc, &ct= x.stat); + } + break; + default: + float8_invalid_output(d, 8, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); + clear_tail(vd, ctx.high ? 16 : 8, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 93c883de88..6013226266 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6536,6 +6536,22 @@ static bool trans_FCVTN_bh(DisasContext *s, arg_qrrr= _e *a) return true; } =20 +static bool trans_FCVTN_bs(DisasContext *s, arg_qrrr_e *a) +{ + if (!dc_isar_feature(aa64_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, 16, vec_full_reg_size(s), + (a->q << 1) | FPST_A64 << 2, + gen_helper_advsimd_fcvt_bs); + } + return true; +} + static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2) { if (fp_access_check(s)) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 71456d44e1..a9cf259b9b 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1202,6 +1202,7 @@ FSCALE 0.10 1110 110 ..... 00111 1 ..... ...= .. @qrrr_h FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ..... @qrrr_sd =20 FCVTN_bh 0.00 1110 010 ..... 11110 1 ..... ..... @qrrr_h +FCVTN_bs 0.00 1110 000 ..... 11110 1 ..... ..... @qrrr_h =20 ### Advanced SIMD scalar x indexed element =20 --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005298; cv=none; d=zohomail.com; s=zohoarc; b=DUTdhJcW3c6TnrHJDjnYLeOQHcAIaq76WYKcorvJ5bBhPE4kFsDKRsrd9pLPXdqJVtKPIaP4v/U6Qrdkxz9k6c31V0NH91XJgzI6MNZQ4FDoK3MR4kfZ2vW0mz7c2tP9JCT4kDUE1csmoKkhl8bt7Aw2hZZUGjx/loqxeg07Eog= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005298; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=54bb6apibanZeN0W5wppAFfxiFHNZOnRdTLBU0tG80Q=; b=d1JjPm+Cng2Hrw93gTRnf3OiClSfm9oxJjkowPqP4stwfXXyM2jlFOLXLbs5iUSdU8vwA/WSkluRZUuIPqLaRIuKWt1mFwFEfb2fmfNonR82ljMbUPXpKphFXW/k94JJbuj4yMIMx+Hykf60JysBa2seGV/Jo5euthEJNubb0+s= 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 1777005298078314.18736919110313; Thu, 23 Apr 2026 21:34:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8DY-0002uz-E8; Fri, 24 Apr 2026 00:32: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 1wG8DU-0002kt-Ch for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:36 -0400 Received: from mail-oa1-x2d.google.com ([2001:4860:4864:20::2d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8DS-0003bZ-Dn for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:36 -0400 Received: by mail-oa1-x2d.google.com with SMTP id 586e51a60fabf-40ede943bf0so4724341fac.2 for ; Thu, 23 Apr 2026 21:32:34 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005153; x=1777609953; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=54bb6apibanZeN0W5wppAFfxiFHNZOnRdTLBU0tG80Q=; b=UprfmIgIEfIaMUxg7kEkphIFW+PLIgYuRwaaxVYZWu71tOqwRHhjn2wp/bjXMGSKBE KgAtWaqWy3mrPwAFVS33fgSCGUAFLqhTfS/8WX55umm0vGfDzjE/ahYA6B3NlGcfvBLD yRDJuvjEOIN9UJr7/wLc6lnSfA5HTEpkVm4wkJB+GVT2142LtdRowueGqFX2JjbQcTNN YHS98HE2HNXOSQon/G3305j66yJ5G6eO7k/OJ1k9hc8x++ngKv7AOqXsQYxbxg7FZtPz xBW3hG4fimi9V9gKPN39hOvX4kjTTUQWrPa23BDVW35yRKuZwY3kz/36V0i3q2RweFO1 ggvw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005153; x=1777609953; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=54bb6apibanZeN0W5wppAFfxiFHNZOnRdTLBU0tG80Q=; b=WwbnBlgZW2O2b3mhlNTWrNUouUZr8Cm3tvKFTQcHN0qc+XLKfHTzi2FVIOVrHmpwTK VfCeE0L1oQc0yMAUlYHe8ilo2tvIM3Kuhv9lgh8WVHGrXEMpvi3Z9cZP5JHaMC9t0kQX 5usbhQu1M7/1/HDvq4SLBl4dvnq+uiag0HHrnVdUxr+q9tjrj6l8Mxx6OqnrZgbC5On0 moapkMahe+MOJ3nScaM5g6Izz5sD9ILN5474xh0QLelKJ7zgTvdFdZxcjVwa5OzIofOO uu+F+N8edIsnZuw3T2Q23nOg3xtajcAXIvIVfy2k4qye58P7n/bJWgQRHt7BeBBWtdBb dCKA== X-Gm-Message-State: AOJu0YxwBhRJbiN0rKMLhyTSuUKh+CMX56TWSDYQWFGNKk+pK0BLGgeT xWXiTRynA1ROlK32mxjR9BL9nwPsdhbl0LB+99pylSsUQVvqAS3Q6zz7Tz3NlvlSa5u/WFChLdd ThO9q+sg= X-Gm-Gg: AeBDievkun5Qz9kP3zFSwpaLeOYmYEZb1lVGPH7J3vxaUwVxvTNw01QJb0bgy1maSNc R4ROM1Ep9uWIDz1o0COhXhm6rMvxBnt2R1XKfLfooeZf0MQueKqMDpbhKhG6hiwI1HbbD92tiUX PvXWtTm839182e+UPpkpN2tfRw2gTJ/W+NFnXjrcG/TmPYlFhkNJ4i7+oqoqiJdaWSFTD28n6X7 VYzv5NcYoDiqTnF3SMQnuUFCyUQcUslal3edcyqfEvfXrkDfKqOs3uBVZUlj48ixuGKYBWOpGuG +nPVf4N9sI/g9nO0DZQpT9fzegGtAVxKB9kQ740JIx3rRTXBamOMK8jGvc4McevgazTCo9o+PhF jeZjzuX8RdENW1F0eR2cPyAmxjChEo/dnvZtuFXZzkVY1pvpKKOI6s+DMn0pdsPQbW/VWEANizP 90yaDGeRqA9YTNboManC3XkKgl4tSYloEoo124ClBO2/SrYeSzguySFWsUknV+RQ== X-Received: by 2002:a05:6870:169c:b0:42c:111b:73fe with SMTP id 586e51a60fabf-42c111bb241mr12463992fac.18.1777005153217; Thu, 23 Apr 2026 21:32:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 33/40] target/arm: Implement FCVTN (16- to 8-bit fp) for SVE Date: Fri, 24 Apr 2026 14:30:07 +1000 Message-ID: <20260424043014.46305-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2d; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x2d.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: 1777005299714158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 40 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 2 ++ target/arm/tcg/sve.decode | 1 + 4 files changed, 44 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 023a49e12f..e67fb191c2 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -16,5 +16,6 @@ DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index fecd9cca0b..9bc1349950 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -481,6 +481,46 @@ 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); + 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; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + 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 + float16_to_float8_e5m2(e0, ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D + float16_to_float8_e5m2(e1, ctx.scale, osc, &ctx.stat); + } + break; + case OFP8_E4M3: + 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 + float16_to_float8_e4m3(e0, ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D + float16_to_float8_e4m3(e1, ctx.scale, osc, &ctx.stat); + } + break; + default: + float8_invalid_output(d, oprsz, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} + + void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void *vm, CPUARMState *env, uint32_t desc) { diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 54f1b253c6..319a28e94a 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4098,6 +4098,8 @@ TRANS_FEAT(BF1CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cv= t, a, TRANS_FEAT(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvt, true, true) =20 +TRANS_FEAT(FCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtn_bh, false, false) TRANS_FEAT(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, false) =20 diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index b6ef8ed8de..806953bc35 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1101,6 +1101,7 @@ BF2CVT 01100101 00 001 000 001111 ..... ....= . @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 =20 +FCVTN 01100101 00 001 010 001100 ....0 ..... @rd_rnx2 e= sz=3D1 BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 =20 ### SVE FP Compare with Zero Group --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005264; cv=none; d=zohomail.com; s=zohoarc; b=XRJdwp+QEfoeg8KZsClKe9Y73LdlC8BXDWmGrM1bf458bDdmhh7lL5dmy1nSaqftxPcQv2C9k40F5vvV/HzClkTDW5SrGyEH6LTBmShKHABGWyOetCac918375Fg2sSJ3cmwPKElZXmcW+QrLdkwekHpbLLMFtAP0EwySLFOdGk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005264; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=WADg8Bv+oZ53s3C00yS+/mTr8WhaGyfIt8vkJcIP8Zg=; b=Uu2/Fvd+drWTI5DtQcVh54rfcuI7Xbm9p+2cI8C9kEyX+c0Prjg1P3fwBjuFm8UG9jd4LlKTX83N9AIsWmoh0EVkSYyL7dJv4gdclN7sKBohQwV+lptjMsafjZXKIDO+LtF+YP7oVk40T7A1xGfA5QXevzoFcWCZYhliGK3RFAo= 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 1777005264980374.1878083082561; Thu, 23 Apr 2026 21:34:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8De-00038J-Vb; Fri, 24 Apr 2026 00:32:47 -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 1wG8DY-0002wR-Fh for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:40 -0400 Received: from mail-oo1-xc2e.google.com ([2607:f8b0:4864:20::c2e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8DW-0003cA-JA for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:40 -0400 Received: by mail-oo1-xc2e.google.com with SMTP id 006d021491bc7-67e0d3f288aso4596861eaf.0 for ; Thu, 23 Apr 2026 21:32:38 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005157; x=1777609957; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=WADg8Bv+oZ53s3C00yS+/mTr8WhaGyfIt8vkJcIP8Zg=; b=HcMIb/bE3x3f4MXgaO+WrNpxTBRBcHZdXwvnalzokLswK6IzsEMH4PCbgGdjQS+OKl bmeTqRwNb7guNSKWIjS3pN5ng7AROti309U9DfP3Qp5r3pQefb/YdU82SQn2B/7gKC1j L9JDQhzVrkblE1Xkg6BBmFHPzIGZDGYYCbvshxV1lSg5iOiC4U+10A6zhF5ycISGPB/k tFXSkphkTAihMRkQb6jJPiYfvQpyKzyPGP/C6pfxJvbKrSZ7GNfn37XblMIB5Y1vxRTr JMclhSB4HldyT3RUBID59jVFMdaetiF/0XAdRxPravnSsDQZq1wNJpqrifwN+8dWmnX9 7HjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005157; x=1777609957; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=WADg8Bv+oZ53s3C00yS+/mTr8WhaGyfIt8vkJcIP8Zg=; b=RGoFPP3dPVdIXfWITJeHBOs4yxvM7wntQB1R4hsmg9u7W2Z+7uKGxtmRhIqTrridK7 GggP1/EIRL5GtR+y8dBF9NO+mbIK0iSwBk40bd9adv/iNDKTICprh90Irz7Co8Ho0+69 Ke7ZvUjSkYqzdd5nPSc2ihXHt031sBrnMzkAqFGv75PQcQI48TDy+6OSGmpmFZCeViTi pSTkgK+UKv2rY9eEd7pt6aaIdsK3lOuVeRN1p43c2WNxyd/SL3FGW3nAlW7ORd5+b9Co o+oWdYY5SY6NEV7NexTT9rha9C+tNtJAVFRwM/WsT35mddgnUnD6FjeM9eZvRwxH86tL wCJw== X-Gm-Message-State: AOJu0Yz61xsbSDc9p1leh8FI9b/kwKS5gAPe7scq9B7bcamu3PuIx6TU b3rCR8HPb8kq/0g61u0cC+I97L1Ok/71juZnhdCjPvaEHekToufE7kBveDZ62iwouawWau3v1h/ RgQF8sDg= X-Gm-Gg: AeBDieveaFPh+gNPwreq74T77oLyMceZIAAUUKhiZi7bSkD588fvA/n4fECVMPi3I0N J4joOs/V1Q1aODWGiyll8vKn1CY4UJt91vqFIbUoMZ9FEgCY9Pcoyfq9aEw20jCqgrrLFhZ4sai MzdgPFImwmRBguw56lwrT6e2V8zbS1L375/CnqjpDjMrhLvAOsdUezWopkWLc94zNLMEyqS8Ry7 FTlulcUB1vsot+lwDPKSNnIKn0yMf1oyBE9jZpmPi9zlEj1fzX+GsaT5Y0AP9oQjiQbNp6RJKYU hX7VHIgQQ3BGB2ANNOjuUNwG8CNhYd28JuwfWgSH7vYEHwA4KheyvupZU6ny6KSvAzeDlBYRCfH fabGGoUJXXmo2oouPUJvjFItyy17oEXwZ1r30PoDdPIITm/Syn+Yh5Tqd2RZThO1g1XmnT9A5YZ /tlsgVK9fcc+hTqjHKwFQyFuqGCBWNfMHNI3rt/eu82xUWaaSJSv5TZ1DMdioVHg== X-Received: by 2002:a05:6820:c0cb:10b0:67e:36e9:79ac with SMTP id 006d021491bc7-69462e6234dmr12220810eaf.27.1777005157324; Thu, 23 Apr 2026 21:32:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 34/40] target/arm: Implement FCVTNB, FCVTNT for SVE Date: Fri, 24 Apr 2026 14:30:08 +1000 Message-ID: <20260424043014.46305-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::c2e; envelope-from=richard.henderson@linaro.org; helo=mail-oo1-xc2e.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: 1777005265654158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 + target/arm/tcg/fp8_helper.c | 85 +++++++++++++++++++++++++++++++- target/arm/tcg/translate-sve.c | 4 ++ target/arm/tcg/sve.decode | 2 + 4 files changed, 92 insertions(+), 1 deletion(-) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index e67fb191c2..5863a6dbb8 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -19,3 +19,5 @@ DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) +DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 9bc1349950..ebd448b466 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -520,7 +520,6 @@ void HELPER(sve2_fcvtn_bh)(void *vd, void *vn, CPUARMSt= ate *env, uint32_t desc) fp8_finish(env, &ctx); } =20 - void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void *vm, CPUARMState *env, uint32_t desc) { @@ -562,3 +561,87 @@ void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void = *vm, fp8_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); + 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; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + d[H2(2 * i + 0)] =3D + float32_to_float8_e5m2(e0, ctx.scale, osc, &ctx.stat); + d[H2(2 * i + 1)] =3D + float32_to_float8_e5m2(e1, ctx.scale, osc, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + d[H2(2 * i + 0)] =3D + float32_to_float8_e4m3(e0, ctx.scale, osc, &ctx.stat); + d[H2(2 * i + 1)] =3D + float32_to_float8_e4m3(e1, ctx.scale, osc, &ctx.stat); + } + break; + default: + for (size_t i =3D 0; i < oprsz; i +=3D 8) { + *(uint64_t *)(vd + i) =3D 0x00ff00ff00ff00ffull; + } + float_raise(float_flag_invalid, &ctx.stat); + break; + } + + fp8_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); + 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; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + uint8_t d0 =3D float32_to_float8_e5m2(e0, ctx.scale, osc, &ctx= .stat); + uint8_t d1 =3D float32_to_float8_e5m2(e1, ctx.scale, osc, &ctx= .stat); + d[H1(4 * i + 1)] =3D d0; + d[H1(4 * i + 3)] =3D d1; + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + uint8_t d0 =3D float32_to_float8_e4m3(e0, ctx.scale, osc, &ctx= .stat); + uint8_t d1 =3D float32_to_float8_e4m3(e1, ctx.scale, osc, &ctx= .stat); + d[H1(4 * i + 1)] =3D d0; + d[H1(4 * i + 3)] =3D d1; + } + break; + default: + for (size_t i =3D 0; i < oprsz; i +=3D 8) { + *(uint64_t *)(vd + i) |=3D 0xff00ff00ff00ff00ull; + } + float_raise(float_flag_invalid, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 319a28e94a..eff3e71ade 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4102,6 +4102,10 @@ TRANS_FEAT(FCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_fcvtn_bh, false, false) TRANS_FEAT(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, false) +TRANS_FEAT(FCVTNB, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtnb_bs, false, false) +TRANS_FEAT(FCVTNT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtnt_bs, false, false) =20 /* *** SVE Floating Point Compare with Zero Group diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 806953bc35..7fce189b36 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=3D1 +FCVTNT 01100101 00 001 010 001111 ....0 ..... @rd_rnx2 e= sz=3D1 =20 ### SVE FP Compare with Zero Group =20 --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005246; cv=none; d=zohomail.com; s=zohoarc; b=X92gVS5nlePLx/t6jn/ThE9NPSd/wi1vcKxYUva7RqSfRmFO1xD2k69EL2bXYSltkVoQyf7SfzdN3In5T52znmFxutkXJjct/lXvgjodiroiYxv8axLUMDmAHXkBAw0UrlM5W1YdMDF1n3LWbgfHdt/n1kFxctcwMgMi4K3I+aU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005246; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=89Ve9V43x0EDfFcuX4z32PJFwEIHKLJcoTkwxamYsNA=; b=kklw3qFlzPsn+IlXHctoiqwADWUQ5eEMmV2ChV3X+FMyHjfM+YoflwUvpbs4Q+tTLFkUChmt33xW0NEdiHvAzmJNHMJdT4wSR+Kgoa2NuCzSU2y+OPtx50m0kUg18z7gUmP1yTXHchsefHGg6z+OjkZlIgLePY+VREdJHW9Ywrk= 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 1777005246520157.209588482473; Thu, 23 Apr 2026 21:34:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Dk-0003Nc-Lj; Fri, 24 Apr 2026 00:32: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 1wG8Dc-00036B-DI for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:44 -0400 Received: from mail-oa1-x30.google.com ([2001:4860:4864:20::30]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Da-0003fj-6O for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:43 -0400 Received: by mail-oa1-x30.google.com with SMTP id 586e51a60fabf-4243bf9be36so3461595fac.3 for ; Thu, 23 Apr 2026 21:32:41 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005161; x=1777609961; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=89Ve9V43x0EDfFcuX4z32PJFwEIHKLJcoTkwxamYsNA=; b=UWID8dPbrf3zrbvlpvjikcYlmdVWY+ohHm/XT2Tb7Zgva0lRQuERQbP/4YBRXm4QyD TVc9VyOX3Xh2g5aofNkW5Efxo7TWEF6O9I01PTJdJirx8QMEoyzKNvTH7nBIz6HmooOK YnKDdoeAwcEr9Bt2baHE7XNV6+x4pz0gx4ymo1NINxNn9lG8kUPZbigvQATwX9blv/QJ X1EMWIsY0zshHKM2DXwAvqpka0ejSvUH6utqnLknLuSpgTspPoMC8XvnW4CvTKXsHnNA m5aFRunrWWoaKOitpYGOdb+e7CQQ3+19I1d/FVRADiIps4pFkoFveCO0Rbh1mCIwSSeS HKrQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005161; x=1777609961; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=89Ve9V43x0EDfFcuX4z32PJFwEIHKLJcoTkwxamYsNA=; b=JT8R7CzYtm0YFwiNwXjLzDHZRBMW3f/gM49tVUIdMrU38V65Z5dQjv5CdTf+oWgrZL d3iSbQrC/yYOrMDUkBaRZBLTzNc3xZwjf28zs+TXXIrKEiF5KH+rJecoD6d3E84jPGJq DimOPW8lWUJqkd6uSuvw31KyASkjIMfJe3Q9a6EyzQEeJg6646qPRMj4FK3244GR0T3m qMRRYihnll+nbluRdxEpo4KlzwTtTrJ+LELdlLsTaxm2QVH/rRiroxSelekfZbGKnyj0 1lWZSEgF/jogcnkcwtgFHLvZLbkuVZnqzb+k5Rpb0lF2aGkcYM254Ft1S0MMCP+3sGFx KUmg== X-Gm-Message-State: AOJu0YwGBtP2xTxkL2f1Es7mZm4xRBrf6C6QNvGk3rtOpzcWAjuQUG4a IT/LdYiHX0++bmUuggi6mrYADmL/gHQItOlDLJsASV/4gXrPglxwjocx/e/CxYYGvXu03OUZZrh bRR7mtGw= X-Gm-Gg: AeBDieuo2lPTydGTIKDDnsYtUYBGBTkH/LRNjxZt5kzCJOMF5pE+h/sQYQMmOSrXmuR qSpcojPtWFGTAfaHOaRb1P1CXufDmRObV4Dy4zspv8fYSc2sRc3e1s8BCnTtxbvTlp/b24Ry5Vy YB9fiailPvI5RMsIrbq0/a8dDs36KZTknwbR+RbEMdTc28rLHlcv7i95IpAjPaoLc3ewtodrbHW gYJRztRKsS68FPutPdDDlBf32nW8k5IgNFEql3IedtKctevj2C4GxBMtHaKrhLk8qfcU6gr2K59 /nr7Bi0bsetV1+tE83nFQxjYaifUSWqYKtBtwyfRtUP9FPQ0R0HbSCYKEKBrzcwMV00KusVIQk4 vFxwD72+9T6BYETW0HJEZQGtYqB/745ZFBJ8n3P/r86sUlwAVx/oVhX2CvdyOwmQ0M1pFlggv+S uD8XgYUoiMVABX8hLpaNfCp3zWaKh5uG2vqcyZNQWfTNn6gU0YquXVeKamLqq0PQ== X-Received: by 2002:a05:6871:c005:b0:42c:7f89:2916 with SMTP id 586e51a60fabf-42c7f892ceamr9629273fac.20.1777005160998; Thu, 23 Apr 2026 21:32:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 35/40] target/arm: Implement FCVT (FP16 to FP8) for SME Date: Fri, 24 Apr 2026 14:30:09 +1000 Message-ID: <20260424043014.46305-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::30; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x30.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: 1777005248508154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sme.c | 16 ++++++++++++++++ target/arm/tcg/sme.decode | 2 ++ 2 files changed, 18 insertions(+) diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 29d116a57a..b112f16cd7 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1555,6 +1555,22 @@ TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen= _helper_sme2_bfcvt_hb, 1) TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) TRANS_FEAT(BF2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 1) =20 +static bool trans_FCVT_bh(DisasContext *s, arg_zz_n *a) +{ + if (!dc_isar_feature(aa64_sme2_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && sme_sm_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->zd), + vec_full_reg_offset(s, a->zn), + vec_full_reg_offset(s, a->zn + 1), + tcg_env, svl, svl, + FPST_ZA << 2, gen_helper_gvec_fcvt_bh); + } + return true; +} + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index d6192eb59d..a02bcc0e22 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -863,6 +863,8 @@ BF2CVT 11000001 111 00110 111000 ..... ....0 = @zz_2x1 BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 BF2CVTL 11000001 111 00110 111000 ..... ....1 @zz_2x1 =20 +FCVT_bh 11000001 001 00100 111000 ....0 ..... @zz_1x2 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005340; cv=none; d=zohomail.com; s=zohoarc; b=GRwkke17xxYQhvCqihnA7QpQtibM7z2Y+n2CfXZG4YQuTd4YNR4PJUrnUDy6ZkJYOYEXVpmpEoM91HCi/eu/HOR/qhZQgaqxrLnCVbyzg9zc2B3yzJR9peNN/I/mlpuXEFsCm7QuB6x5Fs2qof9AKDt1cz/HHU8QNdLcLgVCfVY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005340; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=JHw9W0r73gnNntSyeFRZzouxm1QL1rIad4n1+k+yIsY=; b=W+LFYV+cSbi6GWiYYByG6IG2sPq74T93x+dQy1I5zSAO+3NzgveAxyFSqbZS+Jxca5OVdMsE3mwu7i3lW6v6evMbmmeiRBYjErj9z6DihiHAwMkGQDOUs5lDZiPzyMH5n7MWNt/1+bK7ze+GqJPl8QuhIqurmZLfstCaGrJBiWI= 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 1777005340563972.9669801299661; Thu, 23 Apr 2026 21:35:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Dn-0003Su-4r; Fri, 24 Apr 2026 00:32: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 1wG8Df-0003CB-Tf for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:47 -0400 Received: from mail-oa1-x35.google.com ([2001:4860:4864:20::35]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Dc-0003nQ-T7 for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:47 -0400 Received: by mail-oa1-x35.google.com with SMTP id 586e51a60fabf-415e568a7ecso3155658fac.0 for ; Thu, 23 Apr 2026 21:32:44 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005164; x=1777609964; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=JHw9W0r73gnNntSyeFRZzouxm1QL1rIad4n1+k+yIsY=; b=mnbcmVQkFkRz7hucOsdg4Y6lvI64FWWtkVWOdIbn45hv6cb7EQla2uJRAmSF4uV1z5 zHqxFVBXg1A6y5B2LzOraCLxjWejcA8HCrzM1Iae6/iMIMgKr+tvrl3hW3qB2Kc7ynSB iEXif/FqSyoePc+NBwLgKW9RR3ZrAheeHAaSzhzFUl4WCgrbwrX0dJ/gTrWFUbTxuA16 jCoS/hwZWMBETznygsUlwr4Xl+PAHCyPy7yoQeykmojLqs+VV1rQL4cpb/0HRmqRaI94 VKBL/RMn78H5ywYWKM0dSGa1V3V1/OKmyn/pZS8dP1trnXHUJFPOtVmXrm136DoPB0OC fqZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005164; x=1777609964; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=JHw9W0r73gnNntSyeFRZzouxm1QL1rIad4n1+k+yIsY=; b=SmXUTjZb/3d4RDl/65qdP03Wc5Q2l8DqOCzp9jYf4eEDjinQsZdH2L5is9SL/2rgNf A2yfpcNYTKxpT3pMI8YOa/BFqrsTlXUyh7C00aPECrE2SzKQu+T0+4J6o/pc3CFsCHSM YiEDOOJLWNsU6joOcqIebdLD/OFOkZVzL27d5Xx9NLGYHzGUeDDKGD+L1HFImiQf8Zs2 QzfDVm/JeiwfxYYQ1pKBJXP+RI5uL2kib+Q0swWtT/20XUpi7K5vqLHC3pBK/lMy3ITi CPu+qCAejB76ri7a5XyTMtVYrU2IUuIBMRnSi6sTTTFHMAF30viTmsBlaztya3z4RLg3 tKVA== X-Gm-Message-State: AOJu0YzKX1TZIUwv4geEERfIi1HPRarYB81RuVYw4VL85lcUWf/dE55a qwR1FpkHWd96u21Ipo7QWJPHal0KZ0S00sp6Fi5HFD/4x6XT/yy3oRj0dooQ424jP3M2jX89rMK uCtz1z9s= X-Gm-Gg: AeBDietEVFcWCxSzvxE2gClQFAv0VCjCjwG7RQNdW1YgII4OWLG9+Ls5uB1Y4DRWia8 b31UA4LZcTQPs9WVBjv2xMaawoJF+jXl6Ue74qPSsruhD3XspaI5O0jMK3z/7KCZ5ppkH64Jd3E zHGZSP9RcsEdEaJUhIp2T/k1KOy1Wib3WKSnAD07SjQO/M7+0TySlje4U3/cGdhTG2fds3ohQ6m zpFkTsTX1EJEqJB9kU18Sb5Mez5lrWkDvDx9RYZqayU9Y7sYzLr3iOb5Bvx5x2onA5bAXf3oUUK SaGYR5W3jenhWUjFMMV1mi92fajpXiJogSHxVmxwPgV9Xhi0d8SjksWXd9Nx1iO9GkQlnBf/K7F 5F9RgAGP+mr/TYef62NutDWkkZ+NT9bgTt+k0WhGGyx56w+navE42U3KuYY+HsnixAEI3ftAYnl ++IxbXcjBBzCAwF8ARS0H1i9lIu0au/3F2+v0zEdn0L0fhdqb/EycR+zpy1UhrmQ== X-Received: by 2002:a05:6870:5cce:b0:42c:dea:d370 with SMTP id 586e51a60fabf-42c0dead818mr12277360fac.12.1777005163729; Thu, 23 Apr 2026 21:32:43 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 36/40] target/arm: Implement FCVT, FCVTN (FP32 to FP8) for SME Date: Fri, 24 Apr 2026 14:30:10 +1000 Message-ID: <20260424043014.46305-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::35; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x35.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: 1777005341846154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 + target/arm/tcg/fp8_helper.c | 95 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 3 + target/arm/tcg/sme.decode | 3 + 4 files changed, 103 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 5863a6dbb8..36ae977431 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -21,3 +21,5 @@ DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sme2_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvtn_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index ebd448b466..099ca44c4a 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -645,3 +645,98 @@ void HELPER(sve2_fcvtnt_bs)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_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); + 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)); + } + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; i++) { + for (size_t j =3D 0; j < 4; j++) { + float32 e =3D n[H4(i) + stride * j]; + d[H1(i + nelem * j)] =3D + float32_to_float8_e5m2(e, ctx.scale, osc, &ctx.stat); + } + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; i++) { + for (size_t j =3D 0; j < 4; j++) { + float32 e =3D n[H4(i) + stride * j]; + d[H1(i + nelem * j)] =3D + float32_to_float8_e5m2(e, ctx.scale, osc, &ctx.stat); + } + } + break; + default: + float8_invalid_output(d, oprsz, &ctx.stat); + break; + } + + fp8_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); + 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; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + float32 e2 =3D n2[H2(i)]; + float32 e3 =3D n3[H2(i)]; + d[H1(4 * i + 0)] =3D + float32_to_float8_e5m2(e0, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 1)] =3D + float32_to_float8_e5m2(e1, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 2)] =3D + float32_to_float8_e5m2(e2, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D + float32_to_float8_e5m2(e3, ctx.scale, osc, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + float32 e2 =3D n2[H2(i)]; + float32 e3 =3D n3[H2(i)]; + d[H1(4 * i + 0)] =3D + float32_to_float8_e4m3(e0, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 1)] =3D + float32_to_float8_e4m3(e1, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 2)] =3D + float32_to_float8_e4m3(e2, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D + float32_to_float8_e4m3(e3, ctx.scale, osc, &ctx.stat); + } + break; + default: + float8_invalid_output(d, oprsz, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index b112f16cd7..c57c7c122e 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1571,6 +1571,9 @@ static bool trans_FCVT_bh(DisasContext *s, arg_zz_n *= a) return true; } =20 +TRANS_FEAT(FCVT_bs, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_bs,= 0) +TRANS_FEAT(FCVTN_bs, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtn_b= s, 0) + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index a02bcc0e22..2b9e41a75a 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -865,6 +865,9 @@ BF2CVTL 11000001 111 00110 111000 ..... ....1 = @zz_2x1 =20 FCVT_bh 11000001 001 00100 111000 ....0 ..... @zz_1x2 =20 +FCVT_bs 11000001 001 10100 111000 ...00 ..... @zz_1x4 +FCVTN_bs 11000001 001 10100 111000 ...01 ..... @zz_1x4 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005229; cv=none; d=zohomail.com; s=zohoarc; b=fKjiq6kbvK+wXd6DquVOclPI0yTQ0KhkUCPdWiFt4UjNPkYkAAEkZZLqWKWCHaG+dhW1/zsAK8R17phg/zv4Wf+CjSJ8fet/u86XyalLCWgQiQy/tn7kxTx68K6B8odJwBr/kzIhOE85zrIUh7rUo1JVqPohXbJ3dUtj5JXNTzA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005229; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=LypK53C+uqX8wLhW9IqrCcozoMGTNq6E89J8rF61w3c=; b=bbwFZ13Eweb41ztL4bz1bEnvO1/z0TQLgELc+LtfsEL/FtrX+42z/D6ftRH3ZOxaYJiUtLtg/Gb+6mYV1S0dJpVBMeCI2GQsBVGwqAvPx0rArnwUBEAB/d5nZVntt53GGvaExbRUjISrtjwsPA+td1DJ2yylOTBCg4M7wGRoIQk= 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 1777005229734565.0086509666263; Thu, 23 Apr 2026 21:33:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Dr-0003rd-Mu; Fri, 24 Apr 2026 00:32:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8Dk-0003LX-4a for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:52 -0400 Received: from mail-oa1-x32.google.com ([2001:4860:4864:20::32]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Dg-0003qC-3U for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:50 -0400 Received: by mail-oa1-x32.google.com with SMTP id 586e51a60fabf-40efc77933fso4920468fac.3 for ; Thu, 23 Apr 2026 21:32:47 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005167; x=1777609967; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=LypK53C+uqX8wLhW9IqrCcozoMGTNq6E89J8rF61w3c=; b=fOIpUg+mq5DxoTcnuJGTAsKKWWxw1XWAsQ3voX7JSbFNBwquhOYTjpyrXXwAjQJ5uu LPDl+E6GITJSDytNNlrbJazTq57tR8eJGrG8yQZQOEQG4ULShLnHBprnpUbqjhhA5bA1 IEw6qpd8N7P8PEON9IW1ZHiq33y+rgZQ70dAYiNwrBxeAy3A6+/UgtBMIpsWlCXA2q5Y 0Ctc0Zv4t2vXH2PXGz1yPLdrJKSHFOInS8UhM/4qYo5qwHGopLm8Uw6u5hz9eYbFX4LW RzO9gbllI7PXrmskhx6S8sGAEkk9FPiHLGOOxKMqNH9jl1kv5GCFfmd39Nm8PBAePbfi cEJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005167; x=1777609967; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=LypK53C+uqX8wLhW9IqrCcozoMGTNq6E89J8rF61w3c=; b=CHdPqEEdyHS2dpVaKrTStGvMVCRPCfL0xJEfnnNKxV3SqJD9GrXVEK0pBC7KLJQk7l KWaIn4mGHL2XJjo+0W/GFt4dEz4sK7p0/d5zwp4PwW1MuGG6qoBurZh0HextxKO4l1W+ zWDePZY/T6fSbsJCdY/hgoMvRkUeeVd6HIlH6nWAH7612R573Frr4uxii+1jqWrDec96 HI2MIsIZ0oGk/7Kb2rNov0cuP9J4O0spI+IjHVRjS42p3WZIQ+y0N6chlL8/1TQ+naAZ 54rj7vCAF37N20uPU+XQjIbj0TsaN8lEXo3j0Qop0mfUMpfTwbiq1t95NOXs52+l7sk+ JnAA== X-Gm-Message-State: AOJu0YzT1na/Ix/Xso9CwyDc0TE+a61n0U8gnY4DvzhvdZlnP43MVVEo Z1JLseNLrL/9+agjGYReYEAr6r9yxkHpkprPvZGs2RiMYevCXaSzmFE4XKZmqmV9nG0NPzZEZpj BU9USuUY= X-Gm-Gg: AeBDieuCuZsyjjmlzESuRRjko6DcZYMH4JlRNlIGpYQPKbopwWOp65noDdBrO9d1+Xa PGGX/BmWkwjVmQQp7ECJjWMX5b8XoZ9CLcQSfx3ohha9zZjnk5/hqYUKY/oWeWvIqTx0QtcpoHV zaHTxpWY5tRA4arDyLYAtdm7Km/mPlW6ZcDygAxsbgqs16aH1oQmmncvT4Yul6RZ79Nbev5F834 NqwCuHRLTgzfT4MIqJT44+kdXe27FCvNIqMed3bizniWnJ/scEFit+iyElux9EKr45iI1zU38f9 txxDTEUDNdj23PdnFy0EO8naA7DfGnC8Vl4/e9MyEqAgw5iXRaJJ4IKgH52ClMAT8XkbpI2ays6 WYg4AWe6BjsNnqQKbsqB+/7zuuc30M2WMzBDMwHX+0/Cymy4f+Bs/FOI/2P0OOptqWPvzb7L2zO 7pAzNmPHQDYdBQ0NXWs9WwSK8AheR/mIxr1kWrABXLJNBy6YnlvBvjC5YJQb3OX5HqdxxZxfpF X-Received: by 2002:a05:6871:5f03:b0:42c:1d80:2ca2 with SMTP id 586e51a60fabf-42c1d802da8mr10711220fac.38.1777005166757; Thu, 23 Apr 2026 21:32:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 37/40] target/arm: Implement LUTI2, LUTI4 for AdvSIMD Date: Fri, 24 Apr 2026 14:30:11 +1000 Message-ID: <20260424043014.46305-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::32; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x32.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777005232254154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-defs.h | 5 ++++ target/arm/tcg/translate-a64.c | 38 +++++++++++++++++++++++++ target/arm/tcg/vec_helper.c | 52 ++++++++++++++++++++++++++++++++++ target/arm/tcg/a64.decode | 6 ++++ 4 files changed, 101 insertions(+) diff --git a/target/arm/tcg/helper-defs.h b/target/arm/tcg/helper-defs.h index 5a10a9fba3..0db29d13d4 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 6013226266..165dfa4484 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -5404,6 +5404,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 91e98d28ae..16032bb6f5 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -3348,3 +3348,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 / 8; + 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 / 16; + 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 / 8; + 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 / 16; + 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)); +} diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index a9cf259b9b..6aea3ce89f 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1344,6 +1344,12 @@ EXT_q 0110 1110 00 0 rm:5 0 imm:4 0 rn:5 = rd:5 =20 TBL_TBX 0 q:1 00 1110 000 rm:5 0 len:2 tbx:1 00 rn:5 rd:5 =20 +LUTI2_1b 0100 1110 100 rm:5 0 idx:2 100 rn:5 rd:5 &rrx_e esz=3D0 +LUTI2_1h 0100 1110 110 rm:5 0 idx:3 00 rn:5 rd:5 &rrx_e esz=3D1 + +LUTI4_1b 0100 1110 010 rm:5 0 idx:1 1000 rn:5 rd:5 &rrx_e esz=3D0 +LUTI4_2h 0100 1110 010 rm:5 0 idx:2 100 rn:5 rd:5 &rrx_e esz=3D1 + # Advanced SIMD Permute =20 UZP1 0.00 1110 .. 0 ..... 0 001 10 ..... ..... @qrrr_e --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005335; cv=none; d=zohomail.com; s=zohoarc; b=kwSPlE2NFJhfuSuntHOBHBhA33EDccJcMTbqrN1XH4/FRQloU/7uMXpwnZ9gd96Ipw2xXxFTg+1S0QrmlBdn4qk5fMBxkDxjU1gzoGbX+/0aJx8OvIwlmVY+7n5RIXvOtdsZ50jXr4c+qSYSKn3TXpLNJ1HTjKQbV/P7IJT6ju8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005335; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=d6QZiWltGbVrdRcMlM7BU/F3AZKV96hBT2gFmldp0qc=; b=jr6BSkFUEzlYz8IIVzAGOKgUOSkHZKeQdmRc4qxihd9+avjDK+OQi9RplcRpER1W/KdRSBF5LzYrswxqYfLRwP1q61TyvTPVgTnFVSpwtjlxBe7FequfU+O0WEDigc//k7vY6kH2LyB9VGxKLf/8ntRM/s7iMLgqE5em7TD1G9c= 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 1777005335495639.3623220737549; Thu, 23 Apr 2026 21:35:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Dq-0003m5-UZ; Fri, 24 Apr 2026 00:32:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8Dm-0003XN-1a for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:55 -0400 Received: from mail-oi1-x22a.google.com ([2607:f8b0:4864:20::22a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Dj-0003qq-TC for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:53 -0400 Received: by mail-oi1-x22a.google.com with SMTP id 5614622812f47-479d37e7d7fso1765202b6e.1 for ; Thu, 23 Apr 2026 21:32:50 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005170; x=1777609970; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=d6QZiWltGbVrdRcMlM7BU/F3AZKV96hBT2gFmldp0qc=; b=L87rs7n2miVSGMHKpB+5TLgaZZBusU8WFdDraLu5D3muZF9g0IhsU+4nT3eogtHerj jq7TX1Z8mDFM8J3BRiHlO90/RelAE9nTY18Nfi2C1o4o8fsl+WyIcuDPvw+0K6RiG+8O AYzV2exVzV/3h5MGmiWiMC6JK0Mdc4z0FoRd0yv9te9EEYfNY2lpZ1pLTlXBA+J5nqrW bEShFyqQfDwObSv+y8Mbq6+lsnLN0BpfS+x7fvRB7b3/bFDay9rCDUodT1VIWqCfwV8w YKVXZRAxHV1M0N16K3V3jsdRZXKVMc8hNO2fAyjTHdZ4ko+HoBwPTv9v9J37+bGLoby5 29aQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005170; x=1777609970; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=d6QZiWltGbVrdRcMlM7BU/F3AZKV96hBT2gFmldp0qc=; b=rYY4NIOroY4B59kOwRCUQNeoZmlqlv9LNmP5RxQdw8mcRHTzhRIQrOd4XIDBIsWD7Y 0Rgqp2tU/+tC4cLydCvlK2y3xzsh/sxM7/pTcqvuXaOZA22xoWUtjykniJT1f7W5qDju b82eEvaCz+J+sUdNnIaN/KVdFX+2m6LNqr0Yfyr7zLzWzc0aMj9RfX6/CAhQUdJtRJ1f zP2J4FAYa10VT3tmSQvTwhmzbljceTeu71D0ZDzxknLIX6je10qzpvdpPXAzHCtYz4uD hRfrg4PWYyonBuMbkGW2yNg3rDIclVNy+Ibu7kpznCw+k5Hlg9eAhjayTUkmOlCjOPKd 84kA== X-Gm-Message-State: AOJu0YxLF7zlaKhC6q0HbKIDUjRVq5F6029M/PJ3jdNcGmDNJ+tqbv6/ vyGa+nbMgUR5ATqpxiR0MpaCxAae/xibbmEqss2PNymIO3oLFN9Lfvd6QO4nQleeWuZKxA45Vj4 Cv1n3S5E= X-Gm-Gg: AeBDiesVEe6HQX2Jl842iwouztApLhDFqDIy+gzH0PvB5H8qja/1gtGc9VCRP6d+1KJ /jFv250k+gE83eDu0fkVNIAS3/QE9dWHdWZtVnglkWAucxQFEUTMT2VPr7854KHqgyRYmhh2oAF uYj0P4GROgugn4WBdw7GYaFaE6EAaeJkJcHXq5pLd3uL0pgICRSeRzUpKXZfu5ViatsWfxyXpaS /HmZEtQ8gOSoBH5dNjkLa61RNgkBO/4b0kArqvbTKw/T8TbbVrJYmZgbjpslzmeP7LE2WZ9Ly5v 7jIlijcj7+KQ0jW2+xzfJtr+yne1uJHTBHAWePuiPIJNAhAmIilSIbW+UNGBkGvot0ghr0pqzk/ IoBwUaXj8GEalDttoN1MKBA2wPmYBRSV8UGLM7t1FJN0qwNlFFN9b3fj7wGL3zvG1RT974tXF7Y 0/am993tMyvK3Ld9NsbT7r+2mHp3dnDsBgNagetTnIdptGk/E928mVC5HpkdzZzQ== X-Received: by 2002:a05:6808:15a0:b0:47a:8c2:a551 with SMTP id 5614622812f47-47a08c2b6d8mr4772853b6e.16.1777005169539; Thu, 23 Apr 2026 21:32:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 38/40] target/arm: Implement LUTI2, LUTI4 for SVE Date: Fri, 24 Apr 2026 14:30:12 +1000 Message-ID: <20260424043014.46305-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::22a; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x22a.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: 1777005337679154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 6 +++ target/arm/tcg/translate.h | 8 ++++ target/arm/tcg/translate-a64.c | 1 + target/arm/tcg/translate-sve.c | 68 ++++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 11 +++++- 5 files changed, 93 insertions(+), 1 deletion(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 7f1a394ef0..3a48c12a54 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1630,6 +1630,12 @@ isar_feature_aa64_sme2_or_sve2_f8cvt(const ARMISAReg= isters *id) return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_f8cvt(i= d); } =20 +static inline bool +isar_feature_aa64_sme2_or_sve2_lut(const ARMISARegisters *id) +{ + return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_lut(id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index 4001f2fc36..68d67274af 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -90,6 +90,7 @@ typedef struct DisasContext { int vl; /* current vector length in bytes */ int svl; /* current streaming vector length in bytes */ int max_svl; /* maximum implemented streaming vector length */ + int max_any_vl; /* maximum implemented vector length */ bool vfp_enabled; /* FP enabled via FPSCR.EN */ int vec_len; int vec_stride; @@ -884,4 +885,11 @@ static inline void gen_restore_rmode(TCGv_i32 old, TCG= v_ptr fpst) return dc_isar_feature(FEAT, s) && FUNC(s, __VA_ARGS__); \ } =20 +#define TRANS_FEAT_SME1_NONSTREAMING(NAME, FEAT, FUNC, ...) \ + static bool trans_##NAME(DisasContext *s, arg_##NAME *a) \ + { \ + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); \ + return dc_isar_feature(FEAT, s) && FUNC(s, __VA_ARGS__); \ + } + #endif /* TARGET_ARM_TRANSLATE_H */ diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 165dfa4484..2f42b89115 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10819,6 +10819,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 eff3e71ade..b5232c8b0d 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8267,3 +8267,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_SME1_NONSTREAMING(LUTI2_1b, aa64_sme2_or_sve2_lut, + gen_gvec_ool_zzz, gen_helper_gvec_luti2_b, + a->rd, a->rn, a->rm, a->index) +TRANS_FEAT_SME1_NONSTREAMING(LUTI2_1h, aa64_sme2_or_sve2_lut, + gen_gvec_ool_zzz, gen_helper_gvec_luti2_h, + a->rd, a->rn, a->rm, a->index) +TRANS_FEAT_SME1_NONSTREAMING(LUTI4_1b, aa64_sme2_or_sve2_lut, + gen_gvec_ool_zzz, gen_helper_gvec_luti4_b, + a->rd, a->rn, a->rm, a->index) + +static bool trans_LUTI4_1h(DisasContext *s, arg_LUTI4_1h *a) +{ + if (!dc_isar_feature(aa64_sme2_or_sve2_lut, s)) { + return false; + } + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); + + /* + * The MaxImplementedAnyVL check happens in the decode pseudocode, + * before the Check*SVEEnabled check in the operation pseudocode. + */ + if (s->max_any_vl < 32) { + unallocated_encoding(s); + } else if (sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + + /* Then there's a second check against CurrentVL. */ + if (vsz < 32) { + unallocated_encoding(s); + } else { + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + vsz, vsz, a->index, + gen_helper_gvec_luti4_h); + } + } + return true; +} + +static bool trans_LUTI4_2h(DisasContext *s, arg_LUTI4_2h *a) +{ + if (!dc_isar_feature(aa64_sme2_or_sve2_lut, s)) { + return false; + } + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); + + if (sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + /* + * (Ab)use preg_tmp to merge two disjoint 128-bit quantities + * into a sequential 256-bit table. + */ + QEMU_BUILD_BUG_ON(sizeof_field(CPUARMState, vfp.preg_tmp) < 32); + unsigned tmp_ofs =3D offsetof(CPUARMState, vfp.preg_tmp); + unsigned rn0_ofs =3D vec_full_reg_offset(s, a->rn); + unsigned rn1_ofs =3D vec_full_reg_offset(s, (a->rn + 1) % 32); + + tcg_gen_gvec_mov(MO_64, tmp_ofs, rn0_ofs, 16, 16); + tcg_gen_gvec_mov(MO_64, tmp_ofs + 16, rn1_ofs, 16, 16); + + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), tmp_ofs, + vec_full_reg_offset(s, a->rm), + vsz, vsz, a->index, gen_helper_gvec_luti4_h); + } + return true; +} diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 7fce189b36..a11ea08eb3 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -31,6 +31,7 @@ %dtype_23_13 23:2 13:2 %index3_22_19 22:1 19:2 %index3_22_17 22:1 17:2 +%index3_22_12 22:2 12:1 %index3_19_11 19:2 11:1 %index2_20_11 20:1 11:1 =20 @@ -1737,11 +1738,19 @@ RSUBHNT 01000101 .. 1 ..... 011 111 ..... .= .... @rd_rn_rm MATCH 01000101 .. 1 ..... 100 ... ..... 0 .... @pd_pg_rn_rm NMATCH 01000101 .. 1 ..... 100 ... ..... 1 .... @pd_pg_rn_rm =20 -### SVE2 Histogram Computation +### SVE2 Histogram Computation and Lookup Table =20 HISTCNT 01000101 .. 1 ..... 110 ... ..... ..... @rd_pg_rn_rm HISTSEG 01000101 .. 1 ..... 101 000 ..... ..... @rd_rn_rm =20 +LUTI2_1b 01000101 index:2 1 rm:5 101100 rn:5 rd:5 &rrx_esz esz=3D0 +LUTI2_1h 01000101 .. 1 rm:5 101.10 rn:5 rd:5 \ + &rrx_esz esz=3D1 index=3D%index3_22_12 + +LUTI4_1b 01000101 index:1 11 rm:5 101001 rn:5 rd:5 &rrx_esz esz=3D0 +LUTI4_1h 01000101 index:2 1 rm:5 101111 rn:5 rd:5 &rrx_esz esz=3D1 +LUTI4_2h 01000101 index:2 1 rm:5 101101 rn:5 rd:5 &rrx_esz esz=3D1 + ## SVE2 floating-point pairwise operations =20 FADDP 01100100 .. 010 00 0 100 ... ..... ..... @rdn_pg_rm --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005263; cv=none; d=zohomail.com; s=zohoarc; b=UvKvF+jW6vZD+TZrFnMXWRe8DLwpDXRunB4ZQVt3aZ2T+dp3zBfLvKb9gLP/3h0rK21ZONFrvkO+Dh/U/9AYkgKVWzmYTl0/O/jxCvNpvmXqH/345rmOTXgfdpzZgPa14mLGkpJRNeOl0LX9a/pm6AjJUVEWni1fJnffofx7hUA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005263; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=PlcOFioDbZFbr9t83saHWs68EnI69xAMOgUGA4zwY5Q=; b=Xjy+yS8IOZOwWpyH8HA4not6Nob+R5LKpFd67Q3OYarvXewmM/pBo+Wd4hJmmUEzxy23ZYRmCXj4VOmTxKeDqui1L0mvNQ0qdwSI5JTEJvTQr4hfOBwrPxHQKznTu2uzZeGgEuBzW6MmNKgS+hPFuDtjeg51aBtri8EjQjrV1cI= 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 1777005263425614.0005922602901; Thu, 23 Apr 2026 21:34:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8Dp-0003ea-Ve; Fri, 24 Apr 2026 00:32: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 1wG8Dn-0003ZN-PW for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:56 -0400 Received: from mail-oi1-x231.google.com ([2607:f8b0:4864:20::231]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Dm-0003rB-8n for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:32:55 -0400 Received: by mail-oi1-x231.google.com with SMTP id 5614622812f47-4670464029eso4103340b6e.2 for ; Thu, 23 Apr 2026 21:32:53 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b9ac54ec5sm18880864fac.13.2026.04.23.21.32.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:32:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005173; x=1777609973; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PlcOFioDbZFbr9t83saHWs68EnI69xAMOgUGA4zwY5Q=; b=pG9Ie54GLOZFoWu52gL8xEs81Nrx1lGP7OHxoo1A5/33svfWd75tqq5lPnxpSjwqqa iU9yPodPO4e6XBlMIIweba6QKFZGVLd0LBdAN9XjVplyHs9MwbUn2Qjuteb1wH39oznD h6tnjos7FlrLVzevSZEPnWag6dw4pwEiKHPr0AWl5JRRdTxSXlsQW7enq2oKdlF4ySEM zRjmdsSxMGdh6CBTSorvEDWISTrwwbFv5SomJsfNooFmJoZjyRdZ6rCowHjE1sauPMC4 nKsVQxGsIiEIHQTxygUaPxn7/HPFoR1K6Q0AlvQsN+zlaGEaR49kWB4VpYVe0U2tKuGA Hi7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005173; x=1777609973; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=PlcOFioDbZFbr9t83saHWs68EnI69xAMOgUGA4zwY5Q=; b=IdKFh8Hu/3IitPrdQ2yrXPZ4It92lx5+k+4CYbEu84NdprVSvIQlf1vlxAx94bkOnn O5LtBoJEF7dA4cs9+59HUbsBakg3BcaZJ6jSsR1awtiJL/NKWE+H5zWaxDDHDgyzKLl/ tSyM6+DVcB7bFztreBvVG3p5zavGD4o6Q3C9HkdeWC56JDFvUglWNhuocTihe/c4n9h2 gX6j/9DJ92F6UH8vc/37jRRH3XKRXZoP97oiqGvymfC0QxpI2Or2a+U7+hni/ioWaIYH 8nXQlZ1n+VRXjCeGfjOU6xB20DxVME+nTrV+QM/r6ot5bEVXwLQLsY89JWqxf5UfMQ79 3STA== X-Gm-Message-State: AOJu0YxdCqYhCKRNlqEMSnECfzwH3KnUd54LJd03QIvT8iOb6VWBRrnO qXJEa0cwuaw+MCtUpifngZ4Uk+TGl2L4nnPT8D/TjHj6caZhWpFpm3WlGEFJhqsXQeApk4twL1W X4JYOa/M= X-Gm-Gg: AeBDies+O97hAD0m+PzxzDottYDulFJxpmgA8KVgGOszMOh/fMb1fC6Yi6QG9RVeM3j GQZ4NE7zcmUNVUN8tp5+VlYDhzlrrgwBn94ZWCYvL7qhFTYtWsHXO5ViFlZZZFiXxCrlDClqRnB kpwlQY91QYe0zFUf3UeXXiJR8XxGK1LjRVityQ+4ABk5J+dht91AbXq4wFBVKAfk2bSjHIfRwj6 jbrgBwVHp47T1Oj2uJ8KXLu+HD4wa7mG+opZ5trX4YqD7sqhWa2gbTKCebzUWXLQ4H1nLfCLDWS 7fqzlYBZf3Obb0a4Nqn1FHLej/d/828cCS/7q2iIzoJdjP9YmeqR0T2KzTchfrxsli7wvopQET7 SjceXP7AQiyzR+uFkFtzVAHxXJKZvm/v4hEpDfOJlMwRsiIWRBus/mteh3p9IcEehgVdtQmBe6X /SyZjlGTrxyUUfH628plDzenwmtlHbOQpV32DpegnlfBKWlbgaGZbd9+nJAYRiRg== X-Received: by 2002:a05:6808:bcf:b0:467:bfa:bd9d with SMTP id 5614622812f47-4799c9669e5mr18338226b6e.18.1777005173060; Thu, 23 Apr 2026 21:32:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 39/40] target/arm: Enable FEAT_LUT for -cpu max Date: Fri, 24 Apr 2026 14:30:13 +1000 Message-ID: <20260424043014.46305-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::231; envelope-from=richard.henderson@linaro.org; helo=mail-oi1-x231.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: 1777005264708154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 2 files changed, 2 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 40ed799fb8..9b974d6f52 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1253,6 +1253,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, 1); /* FEAT_CSSC */ + t =3D FIELD_DP64(t, ID_AA64ISAR2, LUT, 1); /* FEAT_LUT */ t =3D FIELD_DP64(t, ID_AA64ISAR2, ATS1A, 1); /* FEAT_ATS1A */ SET_IDREG(isar, ID_AA64ISAR2, t); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index fda73d3d07..b38a188088 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -99,6 +99,7 @@ the following architecture extensions: - FEAT_LSE (Large System Extensions) - FEAT_LSE2 (Large System Extensions v2) - FEAT_LSE128 (128-bit Atomics) +- FEAT_LUT (Lookup table instructions with 2-bit and 4-bit indices) - FEAT_LVA (Large Virtual Address space) - FEAT_MEC (Memory Encryption Contexts) =20 --=20 2.43.0 From nobody Sat May 30 19:23:38 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=1777005400; cv=none; d=zohomail.com; s=zohoarc; b=ATIqPRcATIX0WfYfTwKWNTGGKtOUUMU/w4gjr5KrVYwY84U/uFUFCcIurLK964LNBwLdrTbONXPiNvfS3x4AoJpwsyYBFoYdsIkRnwQp5mtb0/aw+i0z0BpEUNJJR0E0cp7bsQV1bTEorDp6j6YQ7J+0gWwBHIyUzubdWGom+qc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777005400; h=Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=9J0M1/wmYbZGkcej9gtpRX9Wg0EaMVJE7guK7SKevIs=; b=WpTtE1a9kMLYMk9pg8LTwq6qUmnnFjTBlpG79Ck8htMDHZwxqTyKqHoCcEAnCHbExY+qMbPENizlYg50JZkfg69Do9QmcDiLg0EVMSzhmSHoLLjTJhnepY7XdM5sMFRae9iYkKAgG8/3gGJGTtiodf2wKX6aa9hPqqUbCkC4PNc= 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 1777005400390556.0226097292625; Thu, 23 Apr 2026 21:36:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wG8HG-0004rh-UK; Fri, 24 Apr 2026 00:36:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wG8Gs-0004QA-SU for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:36:08 -0400 Received: from mail-oa1-x2f.google.com ([2001:4860:4864:20::2f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wG8Gr-0004ja-9d for qemu-devel@nongnu.org; Fri, 24 Apr 2026 00:36:06 -0400 Received: by mail-oa1-x2f.google.com with SMTP id 586e51a60fabf-40ea36b56b7so5594560fac.3 for ; Thu, 23 Apr 2026 21:36:04 -0700 (PDT) Received: from stoup.. ([172.58.183.19]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-42b8fe2c52bsm19473599fac.0.2026.04.23.21.36.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 23 Apr 2026 21:36:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777005364; x=1777610164; darn=nongnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=9J0M1/wmYbZGkcej9gtpRX9Wg0EaMVJE7guK7SKevIs=; b=kED+mbiotN+MYwJOEUtiC6S6J93+XkUDESg+XYYJSti6gQxHEJbYaekC+iSZpRf8kb P/RTusA94kVLOP8+oLDmIrHp+nmcr5tglZEaT7zvSIHgNM2/chC18uN49SnpuKxofzcg Tvp/L/79hXAWrVOLpWXksQ986FdCBs7fBL9l1Nufc6iIy9KhOgxQrRlYgb648cSfYYJz 4RRwBhmvfS6e0vhyBWCsktvvMh5XTpl4mvHF8oDNbAqwsXE7AJMv9slx1/G1eQ917bOp yDsgtWQmedl/p4gH+ujdUY1S1bLFXPtNYpvEmWbn5vykMREaRXg+ZkPDWS/N814s10NJ Ywrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777005364; x=1777610164; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=9J0M1/wmYbZGkcej9gtpRX9Wg0EaMVJE7guK7SKevIs=; b=MGIcV5Y910eBMFHaEHloQoEq/hJZQaCCBdphLxxZoaf6MMU3a5jan6nfIDNmZmfsL3 5Qnf/Gnb2jX6lwuDX/WACpzGaUd/8QND+4SAIrnX+a4oz9mnSk7iMcYxbiyhSuG2GXYN Wd38Hz4/NJ2NtdCPe6FF/aZ7MfxCZrmlzx9UqRmJknz38lOVSTG1shK4ymPTFBxkimGk UyWu+WOR/ruAj/7KRnYbxu5Ftrg5IC9impQnEClElhH6nE9wHGAPA+6yZKHnNQ0UwdQ8 45Dz+Qn8Srd9ebRN+puWA8Nk2DSgSi8seXDS6Ar3f3jBgs+mkfbxV11QAO8f+6fxVYuq /ZKA== X-Gm-Message-State: AOJu0Yz0W4G9bAV5tBKf8Owq2W5oX92DbdAWpSGb/z19PwBrpjTi1HLG QM5I4ot6KNo+apbZQBHJtbt7wDKmMS5booq9gJGLAfGdTOkt3JFLlmfuowkCFG8jxGCI0yHM5pl cBMLDbvU= X-Gm-Gg: AeBDieuTIsBs6TEW7S8dz2Q5PmS1uJPLsfqes8nJ/wxUR9FRyfEdubSdjhGfGazzM9F X7YewkAOoqkB4L7ssz/eGPQRxMpA1K6tWbTwQ6hB1eRYMNhCTZ5cbjPUTmQpIgXBM1vtHbp0TGO e8NhBkmOgj7FOnWlQBkGZlpRub4sJo2OzoJ+TTyIxvpB2OzUKOVNuICYbjewEGVisf6g4x794b7 ogI3x2iaAlidXl4CAPFr9lXoQfmhVK5KLMtRDWXx+8uAzWwgb5A9783UFNTOK0nWn6lKmIlHAdS B/vfXJmq/mMON+ES9eIZT+mkou1ceAn15KPOjlAU1ZU4i9s4kFJvq+qOGmztrjrGwNdxtANWVsJ zgCK0Tu/EeOlBHIRQDt9W4V/YNd1KId+AIfmNxxNB4QAkoj5WtOITOXw6lhLFpOzUVmr9a+7Rgg Puj54zw+flrow+NoyrhHdPnqYGlzJ0UPgtsaMia+P95K8wn787UMPS59bSLze78Q== X-Received: by 2002:a05:6870:c8e:b0:42f:d5c1:dcc3 with SMTP id 586e51a60fabf-42fd5c1eb6fmr5003092fac.19.1777005364053; Thu, 23 Apr 2026 21:36:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v2 40/40] target/arm: Enable FEAT_FP8 for -cpu max Date: Fri, 24 Apr 2026 14:30:14 +1000 Message-ID: <20260424043014.46305-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260424043014.46305-1-richard.henderson@linaro.org> References: <20260424043014.46305-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2001:4860:4864:20::2f; envelope-from=richard.henderson@linaro.org; helo=mail-oa1-x2f.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: 1777005402095158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 4 ++++ docs/system/arm/emulation.rst | 1 + 2 files changed, 5 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 9b974d6f52..4cd18f6686 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1381,6 +1381,10 @@ 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, F8CVT, 1); /* FEAT_FP8 */ + SET_IDREG(isar, ID_AA64FPFR0, t); + /* Replicate the same data to the 32-bit id registers. */ aa32_max_features(cpu); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index b38a188088..5d85bed528 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -72,6 +72,7 @@ the following architecture extensions: - FEAT_FHM (Floating-point half-precision multiplication instructions) - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) +- FEAT_FP8 (FP8 convert instructions) - FEAT_FPAC (Faulting on AUT* instructions) - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) - FEAT_FPACC_SPEC (Speculative behavior of combined pointer authentication= instructions) --=20 2.43.0