From nobody Tue Apr 21 14:39:43 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=1776748526; cv=none; d=zohomail.com; s=zohoarc; b=FZM04QYdEh4YSfBOZSKgnixhR0jtaAgv4fFphHRfqX7ylDMbpYQXwhPmEki62KUluDYNE03RMEO7JrYvqCGH2LTkItqn0wIjehfZJgU9o4QXpApPfawT7FLbeHLGZhwS71a1Zy8aY9tLH6On4f9fUqb2npaNpmCNuBJthuoe7MY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748526; 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=jItr8wXgKHpN2oHB1HFEFCqUSQeJXRlRBR4dUSY3rgSX2Qt46ITYXeT79qS9nIhKr91GoaI9LwRkX4WBBlDjxh1pzO8fro0WIoNON4Dx+5AM26hCqo2/T2ouHa9UMjiweS6ujTL4TASMrAuhzU3OEfEYlKxobcN2b3IiOc6V2YY= 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 177674852641453.08897777638617; Mon, 20 Apr 2026 22:15:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Rj-00082P-Jh; Tue, 21 Apr 2026 01:14:53 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3Qt-0007us-4G for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:01 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Qr-0006Js-8m for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:13:58 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-c7358a7a8d1so2316794a12.3 for ; Mon, 20 Apr 2026 22:13:55 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.13.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:13:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748435; x=1777353235; 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=GKDtbsnwWXBUyez5l22quUYvHv3igKtOzh8KfEUZ4TqyxzisBUoy/7QPlPP5MsI5Ec Ls8CCRuGdw7oJsErc8ghmp9tnvAz/HQewK9ycLoKLHg3PEND2Ki0QxlGEOnZJl7aFVFe 8K2XzWv4PvvzIPhPzBcl0h0MARChBcnC7OZ6DwJxrtHcARNwXkk/rfsTzI7gGBsyOCsN e/PL8ToVYmVjD2PQKWclJNE7qXHPb68AP1yVFNkqmf+e7/wo/gLl1rFIxyd0gBTdeELR 7gFBLNGS1TRrtsGsfjON26Oc4RokzuHHV2lWm8QhmMuu0kZt6jf3roaUKRHs1bZcJoGp PEDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748435; x=1777353235; 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=RqlOLf7aM3lBjS9MwqtPtbQrjafG7oRINS86Mfffu+8p6ed8GwI7WbH5GYwWkCT6pL 4J0dHAncwW82E4CNhcbNLR5MG2wFRoYC7sL5OB+mjOypAr9p06DX6rR0dcYzAWkKnxjn z4dWQku7QvC5Mcid+Jl60SBzPJw+8IV7UtABqgsO9Z3QX5lUHXMjBcBjI8xiezYRkeAp quAEKrxzEpdR8hXaIdJA8sfpvZKRpVjGUAoqQmmw2WthSXE4Ws96+96wbjcnsBaq9HoB NEk3Bdbii8RTmqKFfl1mfQZ4oZ8xa6HAUADxiP27WXJGmJoTwq+Y1oSFJ3gDc+M37R6D PsfQ== X-Gm-Message-State: AOJu0YzBYI6233rBqHyHn+pdJWEibuvUZqpcARTg+DszCDm+9dEQW8J6 +rOhuUO1BIwmoniKlfRP2A6UMgnnATHZWjwd+I1ckSl8WY/DTe5N/JdnhRdDGvkXOuxLCRQURJb 0NKKa8HE= X-Gm-Gg: AeBDietXDcAAir23SOf0mh9rgFdVK3VyuUcqyiU45F+5CK+i9J4BVjwJbxltA3NFxFP UcY/K6zFPY6fgEYb0Mapfp4BZ/Iwh2m0Ox+eGEQRQI4LcRdznt/E0YH4u6OR58nE9+2d+xfMfs9 EsqczExvZB0uRG+n/oylxuostEFM3xtelvddNA5CYOjoDl8/rYM5w/RXxrQ4KVuAhUGaaNFzwBv 8QRz1vCAEnW7Zf7+goaUs+Z5OLNNfquWDrunB66M3bdZrWDPcTrRDCBjEYxxbT1Zce7hdrPG9Xz D1fIpfv1o1VZeTCZ4OM1Ladt5gKOkqf4IVrP+5pCuKmhY9NpVE9H+m1JC++BsFEJ3Gk6qnRax2p fK4000fkyEBDlH6oU8svWUpHGn4NdN1uS1fa+JHqa2zI8fTUGuV86O/A556R0l7v+eq+em8OmTc 4PJAKNi69SR0+eGxnAJAvTHOFLBvNWl+GyoJLnfdgL X-Received: by 2002:a17:902:988d:b0:2b2:6cab:30fe with SMTP id d9443c01a7336-2b5f9fca466mr131495985ad.29.1776748434622; Mon, 20 Apr 2026 22:13:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 01/37] target/arm: Implement ID_AA64ISAR3 Date: Tue, 21 Apr 2026 15:13:10 +1000 Message-ID: <20260421051346.41106-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748529176154100 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 Tue Apr 21 14:39:43 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=1776748526; cv=none; d=zohomail.com; s=zohoarc; b=kqXXHavYb5bf4mPfnnCEbdrSMgBKOS04jbPBNO8dIAXZCJ6wk2buLPOq4YZdG1HVpyYzjHDfTrppfXEcIU3/QCqj06yes52GEzrLgO7+LW/3xbRb4vXeSMrbXA57AargCYusS1OqDnwB4Vv7Winar7mlwxCec6XT1XQ6votcjwk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748526; 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=I7LK7ouWgCVNU2m82+AsT/1oIi/MVB0oDX6x7VabxHExyWUOwsORFXQnFBfndRaSX2Bs2lRjUThrYRU0iX5ZIS6nDZHnMPcHMOM4a8zsmFn0C/O3c3PV7JZi06B55038XTygiEqNcoI9Mx00LOJXl30l4xCOknRLBiegjEIfPlk= 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 1776748526425345.90736027515163; Mon, 20 Apr 2026 22:15:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Rm-00083h-Kq; Tue, 21 Apr 2026 01:14: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 1wF3Qu-0007uu-Tf for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:01 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Qs-0006KE-Rd for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:00 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2aae146b604so25349765ad.3 for ; Mon, 20 Apr 2026 22:13:58 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.13.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:13:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748437; x=1777353237; 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=jVh8NeLdrzDsVPo4OQphatVYXavsLYhMQ92MGrLt2kB4t1w67MfGwpTB7tujT/Xi7S z4iwFkRbAzs2ehBIGNw2POsJG2XE6xp5Gx/WlBdi0xl/U87osuC4S1ZTy6RtSPxOOhoo xAZ5fYO4Tr9R7tz7ddF0OGw+KnmqfosBHG1lwER9bcl2Jxd1krf8jPrg/QVEKcw8ig9C 18Wt68euGMsU3UINCKm2ZazN+987n/1YD/e8Kz2B4mx3HMvol9weeiLm17zHL00YqN8L msy14SGpG87fRshyiiO0mHYC2ycn1rMz42eYqlcMKq4vKADfpdM7MOMew6tljcoKvcSF n36w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748437; x=1777353237; 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=DoEIsLx6DSC0ji/a9v49aX04wfOLisQ1mAnZ/EnpNY+B5gSd0qKcLJ79egfyR8Zl9w 1f+0DSvWhTzifPLDLVpnU85WjUtyLCddz9LClNbUpkwX2NQxFaYuLxwp5Y1wESV5a38o jZYpEuPS10rA66T4dxlfHBe7sQO4NFbsRY4gt7wfItgSbJTyyaomCaT0PzGzHfuASP9C KfMxr1OsZeQddEavQ7HXYE7KfdO7wm6Vgd47RaEOa7gDXe9j0uY/nun1xeetCXxPXxJH WCeg8iikilqsjJP0UzSK0Zw7+W+E4fCuEITVLg9LBWKOJ9a3qpKAxxnUWum2MbPhLQWY AZdg== X-Gm-Message-State: AOJu0Yy6H1gpIMsqtOLUbM7U6K8XQAdE5w6L6VYTzlkF+RvDzcMd7Ajt YWl1PysnUCeVNxFtBgIM0TUZxTR667t1MN5tFvnCIHn6Ycopl27ZYTaP2/Nw10MVNQHad0hrZHr dt3kC4vM= X-Gm-Gg: AeBDiesLwlapMPnBo8oW14KVjkjLhWGPHMlIXCU2wo1+ZoOXVx/UAuIrXuesgqR2RpC JjU9J6DeCo739gmfMMc3RJSTi8V91oybAUC0hvWnzw81B0UlEwf8QG9bbBGE2SOmX1lUWttJM5F hwXwOyaxEMKxpdRYruxeDapYdg15Eho9mxmYvWIQAbjukrBCIr2PSQn5z03zScROdOlhB5iblXS nX3zYeSkN1KJoM6QiBhpIyL5CIYcTBMIjOzExNJeGVcNsYR1i1naryv8TiiJbqlVx7UNkI1JrHI 33//zMjAnuMydQwJQ17aN4gsuII3KifDv0m8JpQl9OGsv4BjDThj+F2y3jdDpLMA6OqtuGm9NQ2 kQT50VnLVZSSzkbGt0BqkfVKVMuEJ+Vw4LAu1oERsTq3lX+iLTWiCJ3X/nMGG7JGDYndCqYY5yy sn+otFR36s9/M9winre1bRZeXr8XY3FSN0mxtDiKva X-Received: by 2002:a17:903:120d:b0:2b2:489a:f46a with SMTP id d9443c01a7336-2b5f9fbc5a1mr187037355ad.36.1776748436960; Mon, 20 Apr 2026 22:13:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 02/37] target/arm: Implement FEAT_FAMINMAX for AdvSIMD Date: Tue, 21 Apr 2026 15:13:11 +1000 Message-ID: <20260421051346.41106-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748529234154100 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 Tue Apr 21 14:39:43 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=1776748526; cv=none; d=zohomail.com; s=zohoarc; b=SW308/66708J+nTtWCCjhxnldiVQ13uCd4KwTrlLTgkaGC7WPzBm+pyNQsbTb8lsO08h4FrT2LS6G+8XDv/Q55ViYC6IiU2BlHWBXLaDD4X+surPOb52XIVwImJju3rhJiWjKMx2/aU+rsSHZ6YYBfe5qmH2RRLw/gt24Y6Hfmg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748526; 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=A4nsm+8RUhZFzKVYEQsfhn1CH7I54q7ALbrYA+8snLaDLCV9/rJEsXokVtNtBCWVoHcrDlVLb5G9pcLTEa0OCYqWIKvPbph6mGkhDrEwoQbWbbVP23PRXN2+9VBIif2Mbfxiozo/tzbD1q2wqqfLQnnulb8flV3/jFbd6zcQVb4= 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 1776748526267647.8697857254374; Mon, 20 Apr 2026 22:15:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Rs-0008DF-UC; Tue, 21 Apr 2026 01:15:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3Qx-0007vm-JV for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:04 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Qu-0006KV-Ke for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:02 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2b788a98557so1537625ad.2 for ; Mon, 20 Apr 2026 22:14:00 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.13.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:13:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748439; x=1777353239; 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=fE1medAYgFDAA2CglfSu7jqjxeeaROtwXGyI/iee/ORo8LvGkrwjCLe5ox3S6oI/Zz ey6X/2Dan/+Iu6pgFq+Rkza4jbXlheUyp4Fyug+44gPq84WuT/rPRBGelIeaAVJJa5fX 6Zj8FMA4Zuev4QsTtoqQX91RnPhMQydyCbkECv84Fa9cZJgfDN99V1+ayYPd1jVuimS5 6CWIwfLJjX/L84hTyCDzDVpDizWG5ras06P0SoDJELTeQX1rVUI3T4O028TD9zFXYIHl hkCLllHk1AzMyAQfk9blOPe6u80/6m2jOoPdRUE836E26TYFPxu0YPJfr4KvrKL0vbMt pfPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748439; x=1777353239; 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=JhPz+Ga8hBXZ+ZBlYBZ8hI5paFNzfrrooR850Lt+BPbDm9y4cyl4KJS0QgGXcpwQyM Tkt+LHHf6U9i6CRfPBpkzMnr6b8tPoE6c1w6oaWMKlMSQdKyhKcTFlntMi/mdHunKcll wxLZaeNK2cFmLs/2rnEXWRDVksWAdqzoJ/wuuUTH9W4Gmmm3DQDFAgGNLkVe/nSAxwKH w6g4ZwASk4mdbAeKybpr9UhAnhRT5I6kGAgcUpRSrP8qhDTdFfO+q5Jq52+JHWfZaRa2 qNox1x+3QqvHWucT92ItdY0A2lU8HWvGfel9xh3o5XtKbNV9f566uzegNem1/0rl0qM3 hang== X-Gm-Message-State: AOJu0YzSRdiNwH47+TRf8hp2Ww6AjC14dV6oAoVKR0cJTTM9Gh8UKbG1 T95yvFJwMLyYjO0yPqeAriP/FpzBO7m48k2aD0pEWgPSRAjoHEu/cVx0ciVeRVT8VGbvnBFZxmD Zfuw4mO8= X-Gm-Gg: AeBDieuyVIE6nZweXkoJJo95kFYd5i7sUHnnsThMFnSfVpFo51k6Loc3iT3duhIvGN/ pj68JgNRaDyCWSzeePmgi4ghSVhyLdSxFED9nGHhHe0V5dl4LY8+AtS6EgAJh0Yt5TJ9O0SK030 Hi1oIMZXAxbrS1drhyX8ROshCK2i5n1C85q9GNU+EnJd/EuUIfMruFj8snop75TmTxL60vzTP7f 4+Zxgmrxg7jwYwIoPkwUYMIsehMnc2XJhYLaTYDAO7HV/krdQCq8BAguv9dvU0lZk985ZUJIqj2 MsgEYgxXtszwNELdunuVUJTRgGfdt4YMtq+ffnha3bc2ml5PN2Mw5UykQyW2YcYoggwhbvr96gJ we2uxoxsTa9JiOXllGAtorMY0DABxWW7gU7O1cX9eqbzY5PQqWiG4YMcLO5WXg7qkJVTU/9TkQ/ Qlr6Kvyw1BvwDUK0QtfTFsrx7zTDMCm6Wa6Mh9iAefXsiWK1OmJHU= X-Received: by 2002:a17:903:166e:b0:2b0:a957:304 with SMTP id d9443c01a7336-2b5f9e85b42mr178861405ad.6.1776748439179; Mon, 20 Apr 2026 22:13:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 03/37] target/arm: Implement FEAT_FAMINMAX for SME Date: Tue, 21 Apr 2026 15:13:12 +1000 Message-ID: <20260421051346.41106-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748528176158500 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 Tue Apr 21 14:39:43 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=1776748553; cv=none; d=zohomail.com; s=zohoarc; b=IrkcjOxQ/zdntgJIvUhrWVRvwvX/k4UR7x0tukWYcr18Pq3pfkcUH6ReqakAWPMq2+B8RodzVeAYaPlAsZNxL1ldEXBC0aZsZQ8zUmp7stRs117M0Jsezmh1x30PcNJEFcJ529oP0DlUSdQSVP94s2Tusb4cQn/rivYqhV/oDUo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748553; 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=Sro3Mg8mkBm/tYhx1X5DwYMYb7Nqo9QBfNQIjX1XajtpbNm+OuLc6heoRd+tvHJMIQQI/6aWQo5maf+LDhVVRUC0aQHze+JV2F1sEoH/0zDHxVMi+gF2VCXCN/CP5eS5EQKbPhT81nI2uZKhHJy8MVmLG5ojnogaWAjOckFsLP4= 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 1776748553814848.3436511885036; Mon, 20 Apr 2026 22:15:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Rq-0008Bb-Rr; Tue, 21 Apr 2026 01:14: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 1wF3Qz-0007vz-5e for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:06 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Qx-0006Kp-Cu for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:04 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2b23fcf90b2so37322185ad.3 for ; Mon, 20 Apr 2026 22:14:02 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.13.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748442; x=1777353242; 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=yLHlW0EjSO5tcE9JikjpE38SDdNKTM/90wwn2+Du19bl4aKLwnziZAoQ0d5EQSYQTg mN44htV0DQ+5sC49M1OLwtBxys43KipnN6AvC7QzG5BBypyfzmqN9I8lcF2h6Fj2NSaW KWCMGbE+hmb1vlM03+mp2zXzfdDfDufKEPMNIgl/JbPUGI4lesMqwcG643R+ju4mrjPS qwXEiZy4ywpN69iEWEjSeCL9SKoUAnO82vlp1djsNUQK1stzCMQ1wKgqsEY70Q5szdLr GnkYcDY+4a2sOYyBe4wzD3+rFr8E7x8lnKekJKZORMaRxYT0FPWdoH/6BkQC9GU1S5b+ ILpA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748442; x=1777353242; 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=CrCF57Kr3fXBi2UR9Xc7y4ymQEBXIBvVmE6bQHOtLWq3cOA+p5Ko/xw36sR2qq8YHO 1uniCNsZekjo6Qy9zn9pP46IqzKGiy4wHP/Gahxbzvl9j4bQgUkerQpbJDKm/vJNWn4F 5qx48/4COyaeiuvPEQZyqh0TGuypeVBo543p3s6DPsLyGpoWXDltQ3zShi/pmQDA80hJ 3wLcPR4raCOaSxo7gwgGYALJjCuENSZSwljd5jiLLqeuz6KLTUmU3VQgLtfkIgOcWLKN 0D/dg/flw2ubaaZTK5oqbVv1rOhKAdxVKAS9PacdMrhg9D/W7b2ZeNBrNL5iffgjt47i 91xA== X-Gm-Message-State: AOJu0YzuccYxVsPsRqbN3WWADYffjFlMGEGiSh0YKfUJ+GniNonfUoyH Ec3Y/tKXBVTSAGVEr40fBpIPD9kCXNeM5kOn18fxCX+aqAkf040GZ/rF0sAWweqvh6eJeQxWTN2 /5rcaWIY= X-Gm-Gg: AeBDievG0yVnQ+vk+uxXQ+cdYzOp6B9LsKwPVBCwHd/oKU1j9KGd+WR1YoIAAPhVF8m ZnqzC00QMRwrXS0dzaX494f82seXlsIuGng8feWE9CstJvoOvw3x6dukM2w5K+pwwiQYwF6UE1s O27JNVWTzqqhGApLUpwCcZqZfIaABK/bYJcTfD9svhJwwL4TfbbIAk0AVdVHm1xPOv+L2oWZDXG Pwc6LAS/bmvTNXEyQoTydeemF0B/LhtEu5ra16dztUOVthyqAGDFAHIxhVvEGBDeYeObicdr5kr RU8ey5OlwXke+zHSLIb8L0ZQTFMulOa2/T97sx1zRK9phjvIPtQJf0zCm1ggkve0ipXIV2gH31Y Q212wBWH/B6SInzvgiEklNYmqaBxZVPAV4C0WP7H7B5lnJyzaTq9D2NAMLTy5G+D+gI2g6PKBCC nNTqsrjMkVrm8AGZWi+p81MufX7+hUJHJPc04fMVvo X-Received: by 2002:a17:903:2986:b0:2b2:4c58:5ba7 with SMTP id d9443c01a7336-2b5f9f43679mr173789765ad.30.1776748441564; Mon, 20 Apr 2026 22:14:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 04/37] target/arm: Implement FEAT_FAMINMAX for SVE Date: Tue, 21 Apr 2026 15:13:13 +1000 Message-ID: <20260421051346.41106-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748555163154100 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 Tue Apr 21 14:39:43 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=1776748704; cv=none; d=zohomail.com; s=zohoarc; b=UTxtFIDJ84X44/1JuycyHETGtsbloBC37oQRhGAqVzJ/b+YWvykU4C1vuyZP9ZeMYH9nXoSj6zjBKOnAOuHD+eGFtCSGM1qWYGcRBkB1+yBuLXyyufTBfDMjqpWis+AB+/FjAkrSBJjbsRCya65jg5Zvcky0UdYIAxM4ItLytRI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748704; 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=S0Y9hoetnxeIMiIbnXT+F5nLS9OuSDZdTlB4UiCSugd07Eu5OH9QnSEpk2v8IFGvnP0e7dLzOWtw37SCTYafKiXmW2mGyXNb7Ro7P4YwxCTsCVdZHRvHblBlsqNJZA8DMWCeuTNZaaW8r2DpDmwQ7yO/WnOUZwyDl98xM6TNBg0= 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 1776748704399547.098455862537; Mon, 20 Apr 2026 22:18:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Rz-0008Iz-3l; Tue, 21 Apr 2026 01:15:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3R1-0007wD-4C for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:10 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Qz-0006LL-FA for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:06 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2aae146b604so25350135ad.3 for ; Mon, 20 Apr 2026 22:14:04 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748444; x=1777353244; 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=yhP4hT/0AVwhIvRTl/mqQzbDat4sAu+d+CKiEGUSwXXXb+dNW3kmZvNAdskf3nz9ax Vv7CehCiGy1eyOUNogt/tgBni0TJx+xtF2K3ghqa8bYQMXyeuqLee/eAvu4Td6nnAC92 a5e1Sw+gSwHVovUZ7AezaAUWcgsZr9Amu0YTQyxGWIg3Y0JajgZpx/wN5Pf/BOnm4id5 fwhZfK2Q1llOK29QogQP+NHWjDJPVcKrAO6x9lZoqxPkyd5jk6gkxNUoLtzDPeizexxT uWpabXS7jiedH/5FJXaIggdKgUnR/CncmdZtyJUxKLoq2MWSDYHpfL9g9ohKzHNZIaXd +5SA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748444; x=1777353244; 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=VP9Z4LqQXBbmZYeYbTVDlsz6o6ixLvfZOGFYNotV5XyvIse/6hbZt2b9fjDPo83Pu6 4nl56BwcWc+Lvwa9590Uf0zDEpW40jBb40oYEZ2p5ZffhTpULC4ipUwtKPhOq9KRaqpY h7jCki5gf62rE4GfevPoD7zw907E7Pt49HobvKW5aUeWPyjWbzUuaw4CpATBxfZPBX3A Xa0QfvzTBB5oW5tl3L89DqBqxNKHytWteUbr8GjEJtx9Nrk3bTsmBZVzErP1mzlipV/p FJ7F/u5p+JSI4W7BiVa082OhqeF0VS92BEQ6ctUCjNbc1GxT96kawRnmbi7LJPNiJoAr bB2A== X-Gm-Message-State: AOJu0Yz4JGrmxi5QOL2aAb2Nk92hLinYMyari5F0oIq25d65m5JgUihb /7RyJ/VoZpq1U824O/ddLZauISp59uxQJkP4fGwHLLAsvCWy3D/rNwDBJjDMX2WKOQ6+9T8PBBS QDbs8MuU= X-Gm-Gg: AeBDieuVkl1Gp0S6y5QYS6wlidwa/vApi8gi9vNLdScyeSuFqPq4L7ouy/tte2ocx4l lGPyGDVu7mbH/+kj4latZYW0IYLiVUsETnnDQ8XjJhpun0NLcUxQ+vTYLjqbOneuSBPqfmGFRBx 9FX9e/FIWJLWES2sHsbsxu8mmf5Ro1dUzF7YXqVVelG2X0I2CwPHWVQpU8jI7vaUmapEh+69znp jifjfLSHsejlGuZ83Nvon3Voczd4+nvBVvP9aouhqv4NxXnbyEyMAvSvJxXh7FOfWF0tlBFTDGV yAdFunYgqbQWBH73KnD2IimQlPi0NjbQN4J/dF2JY581etAgKzfCI1gI0YLRQwQjKqoAavZKik5 YYZ66MLM06rTx1COjJS0nQX/+CaieXW+uzt9ZyjcOJF1LmnDCk2g7tdCJDQUGiph6a6uGCJBrEJ RJSxeT9upt3pAVRmbzIr9aqFQZc/nWeLM7M5Os5FnE6OJMk8Wvh/0= X-Received: by 2002:a17:903:1b45:b0:2b2:4d36:7aa with SMTP id d9443c01a7336-2b5f9fb36ccmr180524275ad.35.1776748443990; Mon, 20 Apr 2026 22:14:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 05/37] target/arm: Enable FEAT_FAMINMAX for -cpu max Date: Tue, 21 Apr 2026 15:13:14 +1000 Message-ID: <20260421051346.41106-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748705904158500 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 Tue Apr 21 14:39:43 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=1776748714; cv=none; d=zohomail.com; s=zohoarc; b=NDl9l4gigUkVoqHVltUiKcBHtCPtrcTAB8HUef9JuN47YyXFbSwfWUDXj77GPjCyaQj/L1zIFTsfIbVLMWp1+3DXiQBrw9/OwGwg/VmRUsdTNVRcNzleKb76ltJb746J0x7FXBWmMCq4HIRc6dpifoFmYDSmDtTowl2MX6hPmQc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748714; 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=kXCACMh8urxa7M+3duE05QzkWEeFCR/nltJv11SZZawMTfsNY1uiL1cOohDFNVOUGHvrUyy8P/eRwxQGojTHZSYtcVo7aLGgM3bx6HFdOmLA+c6Ky2O4juyMXoDpMhlLflDWNnXc1qoc51rGJHYAP0xmaTu/JDu4dRlM34EraB8= 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 1776748714474873.710604779996; Mon, 20 Apr 2026 22:18:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Rx-0008IT-67; Tue, 21 Apr 2026 01:15:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RA-0007xU-W3 for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:23 -0400 Received: from mail-pj1-x1033.google.com ([2607:f8b0:4864:20::1033]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3R3-0006Lu-Fk for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:11 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-35da1af3e10so3670610a91.3 for ; Mon, 20 Apr 2026 22:14:07 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748446; x=1777353246; 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=Q1JM7JEBNH5qKYqgy1ttgEXEcYMFkhnKK5iPNm8rYr+HU7WSlJ2/EsV91AMhlP+5IT xg7PIt+t10N0MUvFhooq+NFxTVJlYcnGEThYYh0LzHJOa2DLFb0xJILSrxtf/4y2UcUU v7Sg/Wg9Vd5WP9UE4yXmcwWm/+DJxGceE9vFE8gAsNxymNxNYDjXMVZRu87EEeSu3UPF aBbB/8MMqOYP0g7gJNFyMuMEXwiJp3qwKcUW7pYRgj0Yq6+TnietHOC3/g4zsrYIHeWS yiNtI6F2sO1lml4hO+kE+OoAajcOZLI4itinbBjAUcbdsw1dl9jZCVbA2UNCTrP+CpQJ 1D9Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748446; x=1777353246; 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=qFP9pX6UqZ77+iZvyH6S6w0GMvw5ZlllQfK6dC+UAcqxMSylEjR0bQ/7/xVV89WSH4 jvzRbjzeVJpSbbRHFKtMT0/SJoUzjmv5kjNo77pua/QGGt9fu6RvjRnnx7x0+XXx9LYF qOJcMdQ09yKQqWk3LlITaRkcvGPSXdyhd4+1AKWMJRrcxi9bCrytQ1Bj0jRFi3y7Wubc 9MmrmEtFyHDNuDXzftpyCveYQWgviQFIAycrdZRhRMGfVamYKSBuCEnPB0tR+NXmSZRl hL4Fr4nYQpOv3gNu6y5EEDdJUEYQ13+XK9pWY8i68EGMs+pAQmwXw1I8yUvt4WTBGbKJ n4Ew== X-Gm-Message-State: AOJu0YxICebdelcelBnOmzB+nKQzE6aUcggAD/ag2J1kuTPVaVnihltJ HEgP2GiTCEH6pYG5FGoI/ylUri/ZuF7Gqg4WPrDZDbIu1n4a6Y6mh4ejudOMN9m5GEJIXDuGzit lYFrDwlA= X-Gm-Gg: AeBDieuX4Ak8GC7ga/CJ/C6UjbNc16XC/eLE/3E9PzSozoZXDZfe3sGeRkRbKlfIHqz dolUdLYOj5XdS9t1M4cYG6XjdByTc9TZFlJRedZ8Yxp7c/8/jd5W+PNOAyqiDsJoxtHueWQEkPt Nns7r1mCSdJe3a/zbmcjE685M/7uzXzQrw1yfA3BwMJzMVYCv8wP/PxtUakghVcLhFQdXpdZZcn pGK8M/lez5vYeLbB3Vujq8HGmsoQ+wiEJ2C977klfSADeIUnz6UUsPZFVWDtUkhrjFT76+rZeky rRD667KOFj1ULCtrC6uf4xBGSv4XxpqS/ZbCYrY5Y9EHHauwaRlw9t0JbX5a2wjvXhyIoSUUu/1 pH9eMg2YXgL6pb15Z5sNhLqH4oslDo+0OAHc2BgwYSszSSEh275Mlzke5M9K8x/nclgJKBimcby 7SWmPzQPjebQK+TPl9w/ja8in67yYRB3CnljFZTz3M X-Received: by 2002:a17:90b:5490:b0:35e:594a:5b6b with SMTP id 98e67ed59e1d1-361404992a1mr19270972a91.24.1776748446385; Mon, 20 Apr 2026 22:14:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 06/37] target/arm: Update SCR bits for Arm ARM M.a.a Date: Tue, 21 Apr 2026 15:13:15 +1000 Message-ID: <20260421051346.41106-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-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::1033; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1033.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: 1776748715532154100 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 Tue Apr 21 14:39:43 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=1776748777; cv=none; d=zohomail.com; s=zohoarc; b=XEaBQ0U2aPL0pR4lpyFZ37NEaH9ycDlZzoUezQiaDJ5OkM0KKgHkOnDoPSSiTL0TgYKDIOSaB3VQJzyTqOhmYY34dokHBpagoSjrOERkNMibGmkxagWvNk6PStKuP5bC/Z4Ss7aKfZP0kw1/NS6XasKZjntWIIyHiXvn+HkbtvY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748777; 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=lRiLBR5Cz/QxZR+8pPNYgs1/unMlkbPLTC6WmTU9oGaG3LJHdlKUMcXnzYFheRhczbTsDvG/p73vOCYS40voQTOYZN4/B5hv8TifO/+/2cQQqr9YuUn4v5zMIIDRJPZuu85DXBiEmJQndLf/xVGJdeDU/iKMzAxsR0RQq2zAE9s= 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 177674877759477.33769056815481; Mon, 20 Apr 2026 22:19:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3S0-0008Kd-NX; Tue, 21 Apr 2026 01:15:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RB-0007xV-0U for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:23 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3R4-0006MA-7N for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:14 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2b4583f0a1aso23519805ad.3 for ; Mon, 20 Apr 2026 22:14:09 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748449; x=1777353249; 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=FgmYs3HEW5cP3ayJXgJx5SzQOk4qYhWFagEab2sLGBrtOSqlLunL75WnjVRYbGB9Xh tWYYP/6USXaEjKCh9W5gy3QvgP5BCJNRwoNZDzPDima1giXfzQl7b4pn9RCNZ2orVZeP Ye8IEpC7wrGAKeGYDA0GNLqotVGMNzxUrQGXrrlLhF+gJebZUZsAKdEqcHEml7+Eloup 97tolVXmFxDVlKGqXQdNEbHKLKPasb+IAv0QZd5ogUuhTqKJdvd6WIl3hBTLODh9/CJA uu4OkEit+Sba66wHHu3Xxk06gKOeogcTw5JqUDIYkHscyPIBeQHYwNSBZqv1U+Qeijpl hBow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748449; x=1777353249; 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=Zn1xl+zfGdWKvPNtVmbqr/V5hlhQEvZaXTjniOPIkPp+iBcHkDBnsVrtXGHO6Utvf7 hjFmW4gFfpYfxNNGimyQM7fNM7VxOJJEytsxekPy8A5f+FLPgpFtRXkxZHcVuL8WFXXj zTO7xUm47Yk/hNlAj9LfkVPCjravqg632IYIzY7i8bhm4zbG/1BdKFxQhJvG1Lb3nZXN jYP/KzzfywC6OQVuX6OJn+idSjxw7Wg64CRfmxe3EVW5FNgdC5QT7AkzAOWyFUJ2tLa5 j5l43MGctoG3ng8noab6dTxGse8eNrNYNyHlN9wvbvCy7PyqVW+H5ZZx/JTg3dgJMoqy 5FfQ== X-Gm-Message-State: AOJu0YzjE+G298Dwe3GBNOK+ubNWSmrE6Yufjwg1m8ev/GF2D1YZt3HC VG7aJwTVyW8gMaZCzSqMjD6VcpSpYsgmvpDJK46NvEbOUJJ0xKqAKrLBB/CzWNxbDPDXekMnRJM ef8GcRt4= X-Gm-Gg: AeBDieuwLBNoVAfMJw4T9kJQOGbrGu7EL4xUwC0LEdTUqvreEzookXF1Dfrl3UyF9RD Tv7oRhyWF0MPknOIVrv4+N5IEg7852OwLqaWjhV4PfBXdudr664JfC9t6F7p/b4JeASfAe7rrIK y7BpfOqYdh8jmDd96WgBB+UwqfxMCeaeQcGvo3XpcJVczMEKOw3gFL6UMTYN3LYQbXZqdzuG/PZ Q/xQozi3SpC3vTSRjpCky/OzkqiaY0OAIN1dcFypdV2KzqN2INX/HyugE0XNPyITHn2qvcIyfmV JflkyRzTO1HUFBZko1VulUHnHZgPOloVqsKJUeUjua7c2ajvJzTVYZEG5VKeVFf0ufz55bicMml BdFatie0Xt+Zh+3yJkQ+0VxsirCrOo5HnMh2fpU4PCBrNj4iUT63fIpJgmmc7BE80DUJX+/CO3l 0hSMhJuI7uGTXgXGcDMrKYb/LMBL3j11S998HuNTZ5 X-Received: by 2002:a17:903:b8f:b0:2b0:7225:d2c0 with SMTP id d9443c01a7336-2b5f9fb9d4cmr164504445ad.30.1776748448752; Mon, 20 Apr 2026 22:14:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 07/37] target/arm: Update HCRX bits for Arm ARM M.a.a Date: Tue, 21 Apr 2026 15:13:16 +1000 Message-ID: <20260421051346.41106-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748778139158500 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 Tue Apr 21 14:39:43 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=1776748694; cv=none; d=zohomail.com; s=zohoarc; b=Hj95nFMuwZG3Pi3xx6j3DdP/kZM+xAf28H5m10ntfYD6WhuSjMjZvZK5dmIi98b5DUQ+y7NNZ4u4DvuFSch/0UV4xEHJ1//+MCW/qobeWPfMEeXgEa8PjNXq+kQ2dht3lQ1w7dNoNJclqZgn5HvSr5+xVZZKy2kACys+uj3oMKk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748694; 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=OYnD1HifN5g3vEl+MSMFSIWemVxHI5BU+KxjCYUC6EQ6RsK8GozrGB2SxBVckxwOfBZSQ9lyWtknO4dPwNgRWkdMumKBa7L3Prd7DUSzTNh5GrSaZkUGLleceGvkvyGcdKQWLgPu+yTvParmi+CrtV51dXj1ruavbPAAHA3FSo8= 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 1776748694066691.0548877780411; Mon, 20 Apr 2026 22:18:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Ru-0008F4-TU; Tue, 21 Apr 2026 01:15:03 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RC-0007xh-V2 for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:24 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3R8-0006MT-UJ for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:18 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2a8fba3f769so16746995ad.2 for ; Mon, 20 Apr 2026 22:14:12 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748451; x=1777353251; 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=xWB4/M8Bq8Gb++OvtcFL6scYmNGcLlw86xswLecFcI3rcvTvc96+dhHxoxdDQtrs5F 0XD/RgcXcYq4ezXB6BD5htkcLgZl7x2BYT09H4lBm8T64bEtzye7D27lraUoc/dv0rqH 62NFi8sAtE+5FcE1PYJJeByhwyn2U465FmJKPjf2KkHwglJQOnKn2gkacU8QN+sZXKuF q5eTWOXqHqngfs04LvpaR0WWRHojJneQBUeI8IrOHdai5AAnCQZk1Z+/PD5s1oH5SjTU 0sAAfelaV1uYclPqmYw8rNdKtvzFlH8zYcVHXNNUpfaEY9zNroPSyGoyT5a1BeSN8iNa B5Cw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748451; x=1777353251; 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=dtPs/wPKZf+EOpwqQxDWUBAcvqIdP5+/Jj1nTg0atzDIqBsuCgBTcCfotiF6z6Tn77 y2MzEFfthGFswbZnCn1BfnAFGQMQRoCjhXzvX8x32Qc4Ss4Q0/xvvnQotEV37/WmDz3A MLIVS6EHQ+KpovdnBSJYcZgtVLaKKMUHaDHOu6w/uY71YcN2yHkIcBMsbexcoCygb5pC IWwCOLyks281CQwGZk7ZPBq3TBJyaWo+9coNONQyYTiN6qxn0p5pTz5jB1dO58Wn5i5N dqSVE5kuu4y0uHsn1/xQlAv1qix/BKfhGg/j916bvtHQZr5NdrBlECNKfB12nfLjAiBN YntQ== X-Gm-Message-State: AOJu0YwaKqMx0MZEw1r5RGlam6fef2e/Lw9Y3JIu83SfUS0cmanAtFS4 WpOY1xWLOZcFniyyNLAUUPa62C8r5clfzF8V87M4UxWnhvIncPs5kDkw3A7Yd3slVyADH5DFWfn e63GQAEY= X-Gm-Gg: AeBDieu15L3tYdAazd6fqoqn9oqmw0YHjcN5D+jNwCC/592eant5hyh8o6jx0JWbMC7 6sg19ZIPkbArjp04TWCRfGz55qq+VcMNRhaFXoLGy/DvmzcsA+4gwigvaHasZLilc3RI7eUYkLh jNmJzshnQxS+5H6KIqioIzwqZGgLRWR6w2wNeG0N79gXlOKzsPNwrHBNNGeqdMeTyLID8q5IHD8 HhnwHdYnztw5U8dtYnBuV2Z5TeRgAFjywqz3fW0NeG1GIJhjPvFU1xiHLK9I3BpmusZduj9ByLJ Gy22H2EfcOTqHikzZAoa3Ez3sc2lg45HvjddMRqQNe1p7/Q3WPbPXAnk8eKsBFhur1sg0XtKhGh 5cdyqY5r7NALGppcuSBIwqAZf9HUb3tVZBjLKhIEgXFB5R8xnT/IHxomRFibUaRAUisb9xftuIH MjsbfwKrQZ2tMh7m+36jFo2J9su0331BckGzgWSdFA X-Received: by 2002:a17:902:988a:b0:2b4:689a:e420 with SMTP id d9443c01a7336-2b5f9e7a9c1mr113132555ad.8.1776748451153; Mon, 20 Apr 2026 22:14:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 08/37] target/arm: Introduce FPMR Date: Tue, 21 Apr 2026 15:13:17 +1000 Message-ID: <20260421051346.41106-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748695921158500 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 Tue Apr 21 14:39:43 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=1776748694; cv=none; d=zohomail.com; s=zohoarc; b=WlC8/VT+P/3A//lQYM3u5bmDoXx/AHQlUgiDnQWgR9R+7j3YUKuYFXx3CntAhukW5vDtHPIF2Sx4OJ/CSUh+FTsbqkHLK1eRt3PwzszfZev0x2N0PDJz5zl/CwcolbMbmFvmpCH2h2Wmpj4i4taJNJ/cvufLRx+wmeRhXOLAIZI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748694; 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=M+7188YCPUldFhtQ5o5JzKSUdxkxDMoYGvd3E2lXTWFHL4ruVDQhdnQqzpVfyJdde4SQT9Skt7gp9t+3ilP0E9kb9iA0Li1MUDvy+OAlUgTNT41WMknAjQ/daZnfZ/uwc83HqfqFu4jIkJ7Q5Ys5l1qIuQ0Dicb8lzB82V++uXg= 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 1776748694087525.6393803579759; Mon, 20 Apr 2026 22:18:14 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Rz-0008Ju-Nd; Tue, 21 Apr 2026 01:15:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RE-0007xl-Iz for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:28 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3RA-0006Mg-QT for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:19 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2aaed195901so16373935ad.0 for ; Mon, 20 Apr 2026 22:14:14 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748453; x=1777353253; 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=JUNR62jvpAyaM6oxISq/E1DwYmDJ/vCVU22hcjJKyI4uK4Fg8Ydfla14X0WzjZaJu5 R7HDEFX13jN0zXbOn52IxN6HmJHi78ZUui6/WxJGLQ2XxPDwtIXxbrSLrIjRzeVGv90o zVsRGuLGpHr+bu/d+tRiCdC8N4XITgcmVMxjgvmyy4t8Mf9Milh7393fnM6k7qQocSsN 3simJIVzaIfaiD1Ickqxp6ZUKteS0gOTvc20no8ZpWqhgFObwDVX/hZI1BdakcNM0mX7 bZ94s5GQJfDUYL4WqTYJcKpb/Bt/AVuXfvCB951JiG+z8ZF7qsna2z5+W1tbVqLrDRvW +jJQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748453; x=1777353253; 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=h4Fr7UROLBEUCL3Uaz3dlfdooWo+J2y8bmN2kgKGIpo643kgxSK9uI72iclNl/clHc zdL3rBUUhpXbdXLcuaQfJWze+qUuSO1sX8D/46lGPVTEqo0MSBRifOVH738rCZ4CsXVv I7yjH4vuWs895tZT8oINqfbl409IbDAPTagxsod+FJkoJG4vv0O8WMWW7RuBrHTQKljb VwjBt1549YpO++1VJEe5svrkpfXAQwmnvNCJkD4iaamRAVv6JV1OW3c16swPFCdU7Eby oID+6ujjKqCCwcuzx47eq7opjZWStm0Se99wcv1zJzlWW8f0Ar3HwHC6NB7wn6mp7vQQ YIwg== X-Gm-Message-State: AOJu0YxFnV9dIfI4HraGJgwP7hIMdEysHpRFsVipfezD9Y8xu6fAxXbX b/f3tJOFCGRTqWCLDPEolfwpTCb1kJz/4L/G1E7Fxe1wt+JJOrOG7vEGDTf18B+gImuDl+U5Ifg LiQRVNTg= X-Gm-Gg: AeBDietOLMHyLdPrTUf8G4pDtGecmTb2v+bQjT7qunbqn+Oi+x/eZW6qlHL787YlHqT vH5EBh8XCi+3Juekw7Vo+MfxTZBRlvNkVeUdnPTmDUaZOJkVRG/BncZiSIq7NzWg/scWEzkDI54 cM0V0NVzdhFfBCxONmzQ9oDCLEXLu+Swtao1rRpf3GbKRXpBsbuwMkcvAMwugC9DJZkThQ9Ro6l 353tNAFl/KPVbf38bE1thtDi9dAGuV8/AWdTN822Si3054QM7TB8JVyqULF8EBQ6hwCd9+2iqbN zoAYGGoQ+qbls+cB6btXho4YDO2om0PFSCBNnG3BF8eJU14rQrHTmOuiI/KPH6Vl/2RWxyCVRDE fxHs3MD2zvRPBL7Q8560Fo9D6d8yG6898K/BoFL2olYhqIliVHl9cBIYrxvvivqjvPhw8nhuVoY r0DsArDt0476BrpFAZuOkVoagnf5rGRGL9zadNrHuU X-Received: by 2002:a17:902:7003:b0:2b0:bed1:46f7 with SMTP id d9443c01a7336-2b5f9fdfb9bmr116830295ad.37.1776748453334; Mon, 20 Apr 2026 22:14:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 09/37] target/arm: Update SCTLR bits for FEAT_FPMR Date: Tue, 21 Apr 2026 15:13:18 +1000 Message-ID: <20260421051346.41106-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748695847158500 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 Tue Apr 21 14:39:43 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=1776748740; cv=none; d=zohomail.com; s=zohoarc; b=Z38c0cgiLwnTzsoAkracYGR0yOVVDwSqRN2tfgpCQgkd2OlLgSUdnctYqfnnKNHshkxGA4+cvTGXz4A1boqZUkKyu6r7FbL4TMo6l85CGojwLlqaHrC2L4VDE7WGoLTgyvJZkTJBzRibuHGAgRBRS/v3wsn0fD0V44L7q0jAY8Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748740; 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=mr+7HF8IEQzc3b0wYIin28EKF2Z5DPS/WA4nug5YKWMaHjGsfyhsOR7K+WSQKG93lh04SK2a1Ky+GXpk6jzi3EI/yAeyxj4h3PyEYrla/ayt1ZLqPo03D+DnfJc3XvkqtzM11zxyKgU/Et/q4HDddWmPENc9rcf7q8YjE6/kD9E= 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 1776748740047248.44886443304802; Mon, 20 Apr 2026 22:19:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Rx-0008IL-47; Tue, 21 Apr 2026 01:15:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RE-0007xn-Jc for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:28 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3RB-0006N2-9w for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:19 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2b4583f0a1aso23520295ad.3 for ; Mon, 20 Apr 2026 22:14:16 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748456; x=1777353256; 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=Z1rAiTvyxCtLBemxG0mVrPyrEqbKi+6xF2WmT68/P0CCX8QbRpzRU8DzYcFdbvFSK1 y9rFJsswMQycCQsxcIKXqKpN+eJofCIslZl6c/DRJhljATITukN29SRzm+o/DOZVWlUQ SwrKlOfHd0cJdtJBPjVb7LYM1zH91awnYuc6kKOa3XszF1il1Z6k75848Ng5ph2Ta5rW VcFwAMXwaJ9s+H/+2EjMCQUtyrexWGPRJzfUfA8QaZxYF0R2pHjkR5qB9mGX3m+Dzmrg I7FoQzoWwrYU47edLafo1nI0Gwu4OQRU0QRwAj2DCLFcTOsSMAL0Wb2/jKz9tWq5l65R r22w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748456; x=1777353256; 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=NpfYJGfErhy8MA50NkB8jJksTlhODE1cIjb2r86YEMaNSN6mxBCxF+6bScNuWKoraF 8gC16mljuRaSHjmY9mee11RErVovw8tFe5EijE2/7N7EW0oiM3c6fbSkwvgWEiisPTtd YzU1qCLChw0Dq2yEGuws+1n9XRKhB12KSktOYOW2FM+F3Rk4hX2gp6RufVUzF/nSTf3D bVvI83v3rVCSACLf+OiKW6Fad9zwfmUWwpABvUrT84/l8lgTxZ4yckErk2ELjNl/bqr6 BTerSlJK/tSHsv63Jn0LOYTUoRNpKU9MVgPbYbHQbOZneOjt+JnROnl0lhLMU4TTFd3O bW6g== X-Gm-Message-State: AOJu0YzZ3CgHp1uNIC1Nn63ETYmdJWl41/JagJkyo32/cXEslGrom22l WXEhyGqc5ifWCMQQ6ScJMfnr5efSkDO/EVHcy10aOA3dCwnbrNQE/kMhpcwqBROrmDegxGRek/Q GHE4L+qA= X-Gm-Gg: AeBDiesWDqu/SlZ8ZsaHr523TeqIFfKTDlgkTXqfouxE4ntFMD0QWF+BwdCxyZacOfP 9sHfqNCBZs6vlF2hQNNuYYA7O6rsYWSk38S4G7WepJ1ksN3gGpN5Lf6XDv8uVkXYWSyGg5Hoosd kicOc8+1rnNvyfXHNqTH/l/XFuwuxt/ruUNqA4Ys/ktZaLRGW9lfRQCvotPHdXxvomixbHwcJcI MIZgakcPH5y8X1eU9jCa73ao6+p5h3evtAk6WyjkKCRIAXwvdPtUxyVV4waM/skZC4F/PUIgRLV PvsN0icPnd0wultIQ4QJkd+poVLJxgBIoctGXngqM4IVGpzqz8affd1n7QTkIxItqlj6hZ+Anfx ZaiHKDsWpn43JsplYwW6NFINYJbU7+uFeeJECXbQidPOA+E4AiUPTyQRD4OFzcKGOfQ8FjBW9UH HcFFdHu1Ujy27/HmSMIuRrcjiVIA+720Sa6oiUDArn X-Received: by 2002:a17:902:da89:b0:2b0:ba14:fc55 with SMTP id d9443c01a7336-2b5f9fa70camr183057305ad.29.1776748455649; Mon, 20 Apr 2026 22:14:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 10/37] target/arm: Enable EnFPM bits for FEAT_FPMR Date: Tue, 21 Apr 2026 15:13:19 +1000 Message-ID: <20260421051346.41106-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748741907154100 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 Tue Apr 21 14:39:43 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=1776748688; cv=none; d=zohomail.com; s=zohoarc; b=SnHhZBXQZTO5KmdIP4myEizrU/6MXhHvKVwswzwxUHbRDNE43k10K92050aSviqtXtuvbwkniDGgb7f94SbHmky3ajGmrazXTGJkO7MJ+cZGahp6imO8bwyn54LwtRo+cbwht71ljddH9NnB/JjcI85asAThxebLAMzJfHbFz4E= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748688; 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=FyZxnyrnDOy5v5RGjeGwrqIroAMzMjA7mIAAbjAheHrCMhu4sfQmuLnPKQk7Rhh6heDhbJHKstyABEFxovysPMjGP7yyq1a5wr7DTxKXvhCGRO7lq30gRBy5ubqB5/zgv9QjB3rN5k/lOnBNIPDUzGTccOScUj/fOJDPomSOC9E= 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 1776748688686751.8835964210176; Mon, 20 Apr 2026 22:18:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Rz-0008J8-9D; Tue, 21 Apr 2026 01:15:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RF-0007y6-QH for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:29 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3RE-0006Nq-B8 for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:21 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2b24fede2acso23730855ad.3 for ; Mon, 20 Apr 2026 22:14:19 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748458; x=1777353258; 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=hIBQR1dandDPBrTshfi248tuvCd+9wFnLnSShrDgZ1m7HLuVFMljcKiTW3ApDemx50 v5BfazWuz8E2ZhQOO9e2DWxANasf1lLECZpN7zKc70x5jVJR/FPevAOLC9souQor3K+C u0H1fCCgo2ZcY0mEZQt0gJnPG0b10zdDh7RCLqpqMbMJq0hByNI+jhOMKvDkVXhpWw6R uMNtF4vPHZWKz2buz/0oYDBbFafDf3AURjXLa1NIXDlG7vd6VIPBdjs3x4q8Swy9A7e9 NkOpqBS2aP70G/6xY2xTPTR+6niYiSgCY2emckhWBnBUi3t8JoBlQgL1fWtnf+Um3Bxm umng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748458; x=1777353258; 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=S3I1Pl8gH6qNfUwNfj4/dfjWvk7l1op+NV+Bdkkh0z2hfooSFaUZWRt1S21eatVaej Y8Y9WvtKqKosxVEA5ECR/Hq5SVpAlDSfbFGBxkp+yqs3D6RG6v5PHUMpYTLxboZnuI8o Nb3xbDxiy/0I0xomd1YGFcyg38V7iv9i7CiGegbkioyRpoH4IUF24d//7cJSsLsMsSKZ rw0E2YmGRQufqlHDLiD8ANpV4Is8pBu4chufgRjkXrLmq2roPfDHLMAvfOYhX2g2jhto Mb5xxVQTNvfYT8VTWrUE8YEhm6yu5NjarPtjMJRRRFAuuWKWjqLcKahkkCqIabyuMRzu t6Bg== X-Gm-Message-State: AOJu0YxRRDSV5bq8qb8tJmF4AQK5VJyWr/LoRY54e474xkIkf/USqMAr 9KT4MX+N1g705GEZyEQqd1Hs1W/XU+RZ3Stv2UekE+VWx/QC5lYz+A6O42uiyOi5qFk6EJcaChZ Fm7wmdbY= X-Gm-Gg: AeBDiesUfgf9Jq65sNcxpW7Pzz3CfYuFWWC8xedRVrrUvnfi4Z+d9lznqGiVhrMzFdi QdlaLYOZu1JiEWL4V5Z6spW4DAZcsuUGLwWkAmE7hoLlH3DZXv69jJ0rYhjempjEuVP90YugMz1 56TFDtxcd2zQdepz7HKwXiDUslcLONzyzv7tcwBF8t8Q/cCjZgfCHdE9BVkOS+QjSGkhverNDL1 OeVhCO+Olf+UJWpfM3aRPdbJToUtAOzAb/+n9k5H57ewAlrPkH9fcghgLqIfHkGEMhLl/92pJoX JAGd9BoOK5VcNQ4JsL4Ae6f4RRTUQ2wbXBe5pJWe7sy4k4qVKmzl7RvEqeQdAgn/TRypDhd/3yt QvEbRocAcBGEbUdO4z7K/RHelMvNhxpBfuzHuIaAqvrY1vmdIdu/z9eBS2AEEleMm/TC49AROZ5 FveNK80ZKwU/Yu8GMNBnKUdSu+1St4s9Fe0A0sh9u0 X-Received: by 2002:a17:902:d590:b0:2b0:608d:d8a8 with SMTP id d9443c01a7336-2b5f9e8e4a9mr163007925ad.1.1776748458079; Mon, 20 Apr 2026 22:14:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 11/37] target/arm: Clear FPMR on ResetSVEState Date: Tue, 21 Apr 2026 15:13:20 +1000 Message-ID: <20260421051346.41106-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748689796158500 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 Tue Apr 21 14:39:43 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=1776748733; cv=none; d=zohomail.com; s=zohoarc; b=ncfrqHzwVIwiCiM7RnMW12updDKeg13kGooZP17kJDxq8ZraftD+SvK0wJCgHDNUtmCtJ8qouMjKWaLQSI31Snh1y8/eX3PZQE2fGN9Ln6HO4+IFrGOmuDw+6Eejge76ckQC8kdzTqwv1fbYgdc/BKyBs9PE/LT9fceeJ+xRuDk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748733; 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=Wqa39jzIUuhx5L4U8j4v1J/VWJRkn3NqhnvK+5j2Mdwb2pRsPlt155ccyqPKBWRA0MTwwssVrCKi8GHiPXxZCqmveUQQNuR7Wq0SgKwZWGwCKQgzxZgap1kidKf7FaYtJEBi8sBdcR937qtBZ8reqaSXS4DVhxvfj6dUDB0Q9t8= 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 1776748733891752.877357666406; Mon, 20 Apr 2026 22:18:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3S2-0008Lf-Gr; Tue, 21 Apr 2026 01:15:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RH-0007yV-Qj for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:32 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3RG-0006R6-5O for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:23 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2a871daa98fso25127815ad.1 for ; Mon, 20 Apr 2026 22:14:21 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748461; x=1777353261; 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=Qh2QXm0C8UpS2Cqpe1vzaqkknNeNTMzJsxdEka0SQxLCj7AfTGeGOwp9ZEQ7+H5RpD UATes9YDY0hUlXtfjSTg6emiShsHfrtBf6RIPSfD9FtVBrk/ViRAp7E93pSrnByezl9x 7Vq8/SpzKDNu3afED0cSYNfhT/CgE8ioKbtFOuAos2G8XlIOMCkm2gtkxeSo1nrHeUfE yhGtIF53kbMZZSA4tSaPQhkX9CYdMYybhc42YMiDHw/bscMR1g8EYwBTw08VAvVkzv3B hhdm1enVtraIHiD3F9WuSU9VsBkmqjBVtV93UUzA2zyfSFxeNj027a9EaHVztAKmqeou pAqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748461; x=1777353261; 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=pwueqllaAlkK1LUqzvuYitPxv4wkpFA0uYmwOhi4J/JZPX4V89BbQZar2q+aFcnZ3l +ujhKDLT7W55177YMW0ekDUmz3vtUnkkMSivjgD2FCm7gFOg2pnKedcZlYaQhZtwtZSd 90HTFdubpedV4btH6uHDiIWSwNiZiFajHpnB/tIEIwBDfQTOWCcva4vpbNvasxwY5dCz bqwZ7xxAI0B+edjNu++i1q28A/zw9Rt57Az/R3qJNrxie3UOBPd990QfcLbhVkHt3H+B gl/kk1ZJ4IzYUXTupn1AiHP0wHfNK/rGQUe2SaBQSfk7Chx2ngdPodxtP49g8docL6fE 8cXg== X-Gm-Message-State: AOJu0YxyoU2VkgntElofjZDZcksR6POv6o3ylh5wWkDJPvZFq6nIBDKD vi93Q8C6Ai4XUz7FB1CfMdU2d29SWFF/APL+VNhfKn2jul0TRmC4ntWBpWZKaCt2Hu10hO0J6Iz jqjIsL1A= X-Gm-Gg: AeBDiet4kp8izFf1ghrxWkihsQ8DCM/dUeDI3e6pHkueSqtPOXlT6xlNAkR4ul6gljf mSDaraUEDYrnN1BHXi27rgSSV+tVs7QIjMiM5kI+SH6Tt5twpFmrBr2TQ6GxcNEhq9x3+HFDWvn 0JCtFgibNcQMzjn1t0OCTRnZZuYbZuk+Fp71wteMV6Twm39iDnO/tdtVDh6esZpy32FKBvPFXeM EHQSWOeFbJSS1zP1TUdarWKUKEhgM3FBunb41Lc+RV6bnEaXTVl65e60MPXkSGMNh8E+kuqyeVn GdxglIx0Xnv27EMwYaYt0lYehabnMjOd0x8tysPH8E2M7Rxm8uL1U87SRMbjgTQwuNm/+1PoIM8 Xzv7bXR9FKLK4HW9lS0xHAdUI9GP0JfPSWnr2GQ2CdvP9Th/1VEjLad64NGDCKeN3iGmrmjVWXc EjYuyhXB4ygL1HQL9WsPEXK7C6zfgqpLdh8Yl8x2TM X-Received: by 2002:a17:903:2acb:b0:2b4:6398:6aa2 with SMTP id d9443c01a7336-2b5f9f3a802mr183683845ad.27.1776748460518; Mon, 20 Apr 2026 22:14:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 12/37] target/arm: Add FPMR_EL to TBFLAGS Date: Tue, 21 Apr 2026 15:13:21 +1000 Message-ID: <20260421051346.41106-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748735965158500 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 Tue Apr 21 14:39:43 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=1776748764; cv=none; d=zohomail.com; s=zohoarc; b=G7mSUprcMbzlSrffO3tTRyE7rGx+oYcrgtiPNEBH0Fc16v3Zhh8gqkAxy7n7ttISUkUYeppPemTPQ71DrFm7Nu28RNzkr3iBaMjz+ckUM6l7zeBeb+Xlkj7eirZaLTTTf5WW+NpI7PsyW4rDYlngqjfdpG0JiZoW5SCu+O656ig= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748764; 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=S88VBOV4IUj4UaNVfiCYrWNftptmjBVSjIj+iRD+GbfZ4sCmFRzDpp9TaCMa1x9yMQsBGWYdXGiqrOJiG0q3jBMhnzR67F0cpqFgv5otQQ5LjQFEPjfqIj90YJzddcICi/LZKoSV4B01/G+cIsRcy9908sQNKxotNhmuumtPOqI= 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 1776748764834680.9442536448366; Mon, 20 Apr 2026 22:19:24 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3S0-0008Kx-Sy; Tue, 21 Apr 2026 01:15:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RK-0007zi-JW for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:34 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3RI-0006S5-Sa for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:26 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2a8fba3f769so16747565ad.2 for ; Mon, 20 Apr 2026 22:14:24 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748463; x=1777353263; 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=S0O5fUqfJZc0h1mUXKbWRdu3BT9gOHU2T9Ya41lnyB+twSinZNNx310O6ysDF8LWat r+uDvNjHTqXmZSrx4CDi80/XZhYPsfets2x/k76QxI0K4S2aF5lsyOQVDlbHOFBwJX7p 7xAnFTqWet0yUOHGAXbB3y5gFQTUms3o68fg4PUzfiVXcHTkRKY6fvNDVe0ES2Ngj8Sr T+k97HXCgJIQKNzkA892kTUk2+fN8EKrDFGzefJMe3awNlMoTh/rqwZ6XxmTYcPE/cA8 sCUUslPLT5jrtxE7bt86V5HU1zGECOi71Z1GiEwcrpcJoXUhoI0hpOenWWIzdnt6XZ1J ajXg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748463; x=1777353263; 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=O1aq7oJZ37qbXB+IjD24JrkOinxVRdIHplNHDwGSO0WWNRCZuzRLFYcy11P77zxgM7 af17yRQOkGF6vHqYxm1NspUHRf3lH7LL0JieoO6lPXk+mWKXnqHExWZuSbAjfyrf1pYC HKIuXRJcGFjIh9/RapIIUC8znD4aaUEvKXZvVCSvbJMpl1CnZ4Fnxy/g6kf0ffDnvxph 16PkDP6tUOxz+FteZWNI40LkLBPsgeEYda6Mw8v8RpBfpMV8Uj5ctBAtCC6MpQYPN2GQ GXchWRfMLMf3Qy5PV6uAURv2Wpz9UIB1HgsyM6gVQX+hojQUSQ0LtxS+AvX4lFl+ej46 06Ig== X-Gm-Message-State: AOJu0YzWzjKsthQd6W8pRl7yKCl7AHj8ao/iZlfgLwd4KhpfBFgij0gp akCaRDPVXDWIUkAHKBvEjUktbEdyo57feau+fBq43nsAEqn8Ct21la4HOJGGncmKO4wMdbgTFDy zkFP32kY= X-Gm-Gg: AeBDieswMWyYAfpPrpZxV20EAH4J74Y8ELEVxYR6wjgu/hDOI0fRjKmiLPieFIoYFqO XUBzfcNrxhyQFXxDxatfak9ASG3btQneAIZMrh5gTZ0Yk2q8Y1m/Vvo4MoHyhXGx++vQZy83msm d8nKYjDRCXtSL0q5rgfTN4bZXdu5rOSyXEThF2G0+05K5ghn0G8OTcbZvw482DGm0Nn39DyZqs4 ttlPtQRbPQxxmgBvgxOlvSStHMR58zeZ+xH+4Vx+IhcY7OkJVGEedizz7gvpKwtijg3Kwfjr32c CPN7D1ZM8WGNqbGpjtFfiatY+oq5BErIKLUNE7VF0hd58xCJUZSf4xrxpGCfCXSn1Eej3YSOmA9 yP/s5u8zKYWnxzi9MVLXusxb+nLLlo4qFUtc1s0lzV4vzSoUvrUaL3AKzAhagfPjJAYpLFhphB6 sf/KZktrynVT733X2LG39NAHv904iFcOMM9vj27X5d X-Received: by 2002:a17:902:aa98:b0:2b4:5cb8:99eb with SMTP id d9443c01a7336-2b5f9f8808amr126443295ad.27.1776748462900; Mon, 20 Apr 2026 22:14:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 13/37] target/arm: Trap direct acceses to FPMR Date: Tue, 21 Apr 2026 15:13:22 +1000 Message-ID: <20260421051346.41106-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748766105158500 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 Tue Apr 21 14:39:43 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=1776748750; cv=none; d=zohomail.com; s=zohoarc; b=XKJeVY+5pLK2BTU+662K4FWI+3blJ8eISpZioUBRtDgzTIorKh8TDZ1GhIzRwc2nKpkfZN0qYJMwtOKgd66PgAeN8+RRDNRb6hg+XxVOAiq9xQYaerMz4+EQWWlJ+ZTp70D3g1n7v+HLxVucEyw87MWi/ncdCNn53zk8LFrJyTI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748750; 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=ecpsRV/mTkZ7kmqzqXeqXq2kM6tS80vynwgRYiXdeCDwAmi8eEWdYL5JsgB5isHdStMDy8NYzJpqC0iEEPACTq7j06A96JoMVxRIzPYtDNxG7aKgzZ3GX70SzeI5yGQjd+pW6Hq0OigaW/2l620EHwbSxWI1Mi0vmvN7U5DX5J0= 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 1776748750476307.4155911558712; Mon, 20 Apr 2026 22:19:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3S1-0008LA-LK; Tue, 21 Apr 2026 01:15:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RM-00080F-8M for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:34 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3RK-0006SW-Oj for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:28 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2b45cb89f7eso27379795ad.0 for ; Mon, 20 Apr 2026 22:14:26 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748465; x=1777353265; 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=S+le+dy34c0SvWCe/PKDHJzCKytZFi2BgBVr4I2Z/F866eXTTJEd4Req6o2cUH+hLh 20UCn3r+vjwQyC3Dtr9MJ41mLAxHFbzAKgKJzzbKny+kxhZePLP8g4Djh7kTwn7Yt5QM A2d2sIxhrxJI8ZI4r8IajN8+4RkDMyrC3ROq2qIVZkc6pR5ubq6oh7N4HH59AUs/RR7C gSNsAiPvnp95zUcgzla2QWXLs3UBQU3+DRVXxi8PzuTwfmkotLrnp19eaZbbRATnSelL nqj49cQtyNSFT9ahX42McY2KhhT0ChTRa1Nrt/zVCMvaQfTAwRPWxXwdLickfmETKjCj z6jA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748465; x=1777353265; 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=Du/91lHh5rOMWUH0G8/0pRUckc+DH7XZJBZluPP1QeVvW0blcqUewUl+q6ItPGoiRS vb3iYcKYPokIeB9PCCyEiNejeD5lLbxgX4fbg1/K/n4HI7Ry8cMP3WMPyn8g57OQkqjn dVS0z4j8VBtQ2FqJBQdd23H9/1pdb5Zz92dUMQh2m0ktYrkVPAjdBaYcBt2J8SrvsFVE CsV0tYD8SCKaQZHGEa+opg+bfiO7vlWcENaw1lbRj6rmd7Fj2EjSMnrR75lhEOMWn6k1 k3Ddro6pTpnq0dvbJkJYdBuPf09Y3h/6R2yiNYk6pF8DuElhb/woZ/5ceUp/sWrBAVRL JpZg== X-Gm-Message-State: AOJu0YzgQ/zgcRT5YVVf4ACd+sRbVOt/Vf3BdzSEBizmfXBZ7ktkaMwI b0jBWGErRKakhhc7WEcIOZTEJLsaOAy+kSaDqtsFE5HwRTh5LYS+uI1sxaMQ+x2WYcHdBXIS8j+ KV3eLaIU= X-Gm-Gg: AeBDieuHCQCj9Vh2hRWm82aTvQTqaBjnnvDbWZ4ottjF/Ib3dusQ6XeA5EoaUzFrWfM zmn3VlFGHksUmoivoZ7PVh0Ck6aW/U/uvbgnzOWar1Cx+/FJNnpFGtW+whT++cyZrvvCPP3NGe7 M6m1igCcf8JxlOHZTvjNG96o2dtd7/yo3L7pEwDxgir7nRubHWSBRtPlkCqS3+e4zoH2cUR+Kyj 72ekbmBCoTEnmeHafdhTazU4Dc/2b6R8x4stgI37qzIY8WyT+bYFoffpjIlY65n7j5BLS8ojTNi Dg8Jk6poFSL6wOue3f7vW/SYlM/42xpSOemQDPvtXSqHRpMTPgOrFXfVKMDIvS8qSwfLLQxAVj2 Z3YMMyNNgQuNbYT6plPkCgwPgAwci90Uv3injhb8owEfC7uNxI3TNfGZSOnVBcpLP3uxSszDFm0 QsMDZQvxmalV2dF45clUbo16n2Q3HudBezQvuIIXRB X-Received: by 2002:a17:902:cf12:b0:2b4:460e:6fa8 with SMTP id d9443c01a7336-2b5f9f61d45mr158091645ad.34.1776748465172; Mon, 20 Apr 2026 22:14:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 14/37] target/arm: Enable FEAT_FPMR for -cpu max Date: Tue, 21 Apr 2026 15:13:23 +1000 Message-ID: <20260421051346.41106-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748751975154100 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 Tue Apr 21 14:39:43 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=1776748729; cv=none; d=zohomail.com; s=zohoarc; b=Fo3fnCJRUujOBq7oEvYXNXiz7BzF3iQEomk35DHbTIVbAuE4RCGO/BugiBhr7E/s8oJZxBYrdTMsRYia2dRi1EQwlrR5d+VH8EQjYr4RH5ODBBwQuSq8pxDUZpez1MSGFjFt6KvCRviCR51WnmsWX2PmAv17+Lt20dcyA69qulI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748729; 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=SWTv4nDCxRTJHwRZGup/DfApfyl2NLELcBV5odFfNjh/GKukL1WJB7zWtPUP4PNPWJTpNMVFyeCiHw/fGtfpwGXARATjZdk8LTL1Cu9kCKKC2aRcALDcnPwikK7bjNEDsP52TW7TaXNWurhmRfdTwpODlfb5gBELZtw6/zdiZvs= 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 1776748728951963.876254904734; Mon, 20 Apr 2026 22:18:48 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3S2-0008Lg-G6; Tue, 21 Apr 2026 01:15:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RS-00081E-FS for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:41 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3RO-0006TC-4G for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:31 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2b2503753efso37116485ad.0 for ; Mon, 20 Apr 2026 22:14:28 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748468; x=1777353268; 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=tiv6PUTgpIdId0Sas1N18w8OCiOsJJ5Y1D9NRZGNpaBciBpnRjxJsNkMPoFiPi0dR+ Ib4ANY07pxSPEM6FQlEQgiHkN5Af6EAdV/Mqt0noGaqmb8BdrTBN4UYIq2NvkIc+mCxO /ouoxLwtJuynxjtzN9GXQM2H5ik24fQ8iFXnLPaHUdEx0EDt34QXTFF0ijyWYDnSRE0W RYt0LA4c4HcEdHCGGjSpLSK9FiW0LiJl0ZjR4ECSnjVUONCYwRd/6ximKFhRj02WzikQ At9YzIKXjLT1J/vAyJjFOlotZAP+1T7Ov/uESUBbMy2MWTqnEo90xVSbrsSK492EukeN SYTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748468; x=1777353268; 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=sKwKeelma6s7Uya7M2SY3CaWWfs238FxsBr60PsIgUjDwMKDr+bYObHtDpXzDYuetF MY1KCzWaiD2LIC1NLkIhFJRvAa5eETGr1Rmjz1caikF06ne6fpXbjNFTei2cabhvn+Jr 2hThEeNLWAwmBsiXnQ8+XlA2oWpSdua/OBBGcerFJ4/A14Cfqa/D3MiIKVaSC6UT8WVw 1O+qbqupoRX/9ku8AC8TNnpn7qqtPxPpM6MAui9WFDegQb93p3pHchEQResJprwZmtfb +1/MBRUPRUIj0Rg42EknzbbyUBd30+KKZM4ZvyHH1GubDEM9h8P7VbnUdEa3MZ6utRZP JHiQ== X-Gm-Message-State: AOJu0Ywe2dfp25Bs6HoAIXukZkSMCVzxebyMvk7bNigD1/29/gXZT9K6 FlDXa3UooeHhxnidbhRnyhPvLUQnzsrv03/r2dxBMY7cQs6G8uMogy2843TQONKI14RsvnNa8A8 H4HNNHx4= X-Gm-Gg: AeBDietNl9PJ2S6oVo3iuarBCU8iMgu5CmIPeD/PBzfzwMJz3YhO3hHOD/0EF/LPmsJ wnMxC6Hcm3wiI8yvCLx99zgW3vmLwLtQ9cIaEl4LxnY2+hEIlkiEnLS00ti1fSwdwgdidGM2Xb8 NzTUi/QMAVU7B69L5X7O2Fe+jigIuorW6UyP7kT/7YEvEduEub/W4V123C67Ht35mrblgyufwNu 0HTQLkvGQDWaQRyxtt7AkiWvunGXGoJPfW8lXZsV3r9sc3wWemyQB+r+eTOyx+aCGFOZa2/L9Gm 1A8CzODRQlf4k60sfZfq8G1Gnr29janNqb1Pw4UojCdYSsIRW0UWo6fx/MpBiAidHcntW3edx30 aOpf9LA8X6Bg8h1WfSW70eKp5ITyxCSRWyJPqCpLZPw0Xr5H4ZwrHrqL9xfPIGXFgQiZx6zSVlH mTLDGKkV2k4JCmGxFUTz7tpHdj664BKMnwKyE1uJn2 X-Received: by 2002:a17:902:9a4a:b0:2b2:4eec:9806 with SMTP id d9443c01a7336-2b5f9e78234mr121062975ad.8.1776748467533; Mon, 20 Apr 2026 22:14:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 15/37] target/arm: Implement ID_AA64FPFR0 Date: Tue, 21 Apr 2026 15:13:24 +1000 Message-ID: <20260421051346.41106-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748729972158500 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 Tue Apr 21 14:39:43 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=1776748559; cv=none; d=zohomail.com; s=zohoarc; b=MNnpGCOLlTrXIuYQuGSwFwB+o8BiXsxMuCCCscBBzwdlwJPRMtGPjtZIr3wY2a2UdosrVDvcghL7M9AbkFdixWl+dQzQ8YLl1GcfXY2DJsywkwFDsdO/IvOSFVRH6xrqQ9KPH54bTHxqi64PWT5nbHy57Lk1Mp/YohErMQEuBFs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748559; 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=SzaNHCmYGLVzlYE6davawAnWm5KB2oXSMn7ZW8LS2toMiLObflcRP7UHj6cKxPIW1aPY5CvafkvDH7p/4SvvER8nygqY33mLMwdMWlIc9Q4d6Rz6DCEuKhS+H7yPeQUchD9x0H1Av69mx+l6vtSSkqr0cFOUnBLqn7IOFgwsbOw= 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 1776748559144282.3362882431187; Mon, 20 Apr 2026 22:15:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3SY-0000Li-Ku; Tue, 21 Apr 2026 01:15: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 1wF3RS-00081H-Og for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:41 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3RP-0006TR-9h for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:32 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2addb31945aso24955035ad.1 for ; Mon, 20 Apr 2026 22:14:30 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748470; x=1777353270; 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=y1adviKkcwKtNooZIvMu1+WM32f8BK3moMKECglwQVeSCMG7fJdi6QX52pBX0Rz1TU 8zFUQ2lJxdxm+4lJbsyxwGxtcv7E+EBkDFfgIsWw2ATnsERRFJhwkkt5vwN0n2iutCnz MoI2rwTgvfM/QssbV8UPMrXmHjKIUDTdWNvxTF8fUrWAIYbQXlgfZ35Ox8dLlRsRtCVZ tT346/7A9ydBwK/5HqOa/1SnOYJ8KmuGkwyvWQRKCIqO315aAURlR+F+5L4TkIO6gACZ nJ8j/JQw6bJO8bPu32gdCA7lkLvmyzy3YMIXuTNLpUqp+nyZaxy4od99u9ePGWUfCIUO 9UGw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748470; x=1777353270; 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=HyKJioM2fJ2NLd/e3QPJldmnoDEuC0TcbzFRTSNiXmD7GmNh23cMPa4GRmK2gH3y1Q qQM6YoUH9836vU3Sq2xICBYT/mY7voenTX7G1P4iWp995Ueadlo5d8IOKZ8KipD9Z9N0 IEdUdtDoEonKcJg8SXc5HWMR+1XY34Yzz6wII7TiYp3dc2lZMk6CkpZHOrpNzkffVtGD qAbkckVz9l6NNLTSqx0udtM8pDBZYzxBc+FVXf8AYfxJivCdXtpJ979pQi9TVe8O/sjf 0dcfOh6hNEyCMh6uyVTdf1y19TqBcQhAIVIX8FTlMvf09WOCHIpYT0PoxBcq+agXnUO1 6GLg== X-Gm-Message-State: AOJu0YwSKLWkALz0C6TvtF8SY7TUU9WgZNwRUVQPhb9sxStjkcaIL5Vr VmALEFanECvz2WjEfOol5YwKWt5nFfsoM0KtRuIzP4mGDpGvJervUJoBmrrfsUI8gHcIGqUPK2j zWFI4o9c= X-Gm-Gg: AeBDieucVYUbWqBz/nUsGIbZRoTDPE6mqsXIstYpDinp4p4A9dfctPW57wFEtPqAS3D /WaobB42H0W4hZ97fwCAvZBMrVaWwxDHgHqkiBUkxBwddikirNMcizks8aTGdeFYG1xKxbaRgx+ TQ6nAdqAlsRa/CNpAjjUYSx9JND1rX8uAypdxA8kW6UMcgvJufTfcG2e1noYz78LWudZpPIRl0R ImhXlgo7bS4rqO4g9w7DeHsKnVJG1/oYaHc8meawccStEHLKkwmfOpq/LTw9+FZP6cVGSU6SxCN HqzzqOqV0UPAQZBYyBwtOKS1iYrFd+vUxoxh35X5CWSL46hd37WNE6ZzIYbfFnygEiXwXz9mHkl IW4jwxFUjE+3EU3zJnsSXWVgGXdaXGn9CdpP4fClzEgyRmjNmtq3qNtnxa2nDkNJttlgfrkTmON kZQAQJr8m1kP2p23wJ7qqpw9VnK4tPrOQGFSmc5gjy X-Received: by 2002:a17:903:120d:b0:2b2:489a:f46a with SMTP id d9443c01a7336-2b5f9fbc5a1mr187056175ad.36.1776748469869; Mon, 20 Apr 2026 22:14:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 16/37] target/arm: Add isar_feature_aa64_f8cvt Date: Tue, 21 Apr 2026 15:13:25 +1000 Message-ID: <20260421051346.41106-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748561316154100 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 Tue Apr 21 14:39:43 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=1776748563; cv=none; d=zohomail.com; s=zohoarc; b=e0a90clfzMvGxkdhjJUYPmwTdGv9j+tDIMnt6sKjtL5+6mMXYi2oStUfxrolxJHe//ei2CR99Kwz2yFhsnxyjGpwobWWP0GR0Ee1RbZBitC1xUpE8dQBjiWTKbz5Wbsdcifdtk1dYrHMzhy5/DRFVcNYatdAELjKeMxRgfJHRE8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748563; 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=S2WXq3geKVomguDm4WNfyCWdmgd/MhmIa1ZKUuPY+kv/tLAs0zJU+bD+7LyPORvftTNtsdUdkC85EddfiX79G3NoDcSSmPPt4A1EM/ewk2T151eG0QhXlJLwsMw8yaefPy8HlGamVmnazHr3aEBZIO1Wy6pfuXtOenHvw2nb2rU= 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 1776748563553779.7801738285126; Mon, 20 Apr 2026 22:16:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3S9-0008U9-7t; Tue, 21 Apr 2026 01:15:26 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RU-00081J-1Q for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:41 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3RS-0006Ts-7T for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:35 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2a7a9b8ed69so33452285ad.2 for ; Mon, 20 Apr 2026 22:14:33 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748472; x=1777353272; 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=xG10FSVJR394xNSPsUYPpjrK3dgDe5M8aWv/PCBZVfWY2/sjqgqS19IlelHUfNRqjx JnjGqReHCEZNt79+27WKTLi5aTbp715TWl+Y1dz70QS7JtbiwBe6XqtHHaPreKkVHse5 bzj730NO7J1uZJeh1ELkGFOfLW4MHRpz9CbxFswAO3r2BoUGvZgEGjzwCLB3s/hnTTqe Z6U6z+mfmBCiUiVcaaPCgbSaVY6Mn7ovuK3lLRRMmGgSZdI/RrjTrgoXNNCAJgORagW9 cOd+OliK0hN2NB3uFqGDWSvzemv+26x5WNMpV/DVfyJYGAyqryOMUMldBpbfB9cHCgTL CEFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748472; x=1777353272; 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=BATVuIbxDS0EQP739e1C/Oc3Iw9uf1B2zAPeCm3jSda8QgvTj2wU1PPv+qQHbPMc+k iBVgpieizHgatfDe9xVrTAnB84ettJqwz/BGXVtebGrOAVC2tkayDKFZQ3EhMujENbBV uS1sE4zLPMyf5euuNbctRUo+s0/DnkySbmYMhm0+jeCncmxg5p/9XC4ZKJtRUHWAY1Ce XVfaS1Mx4mrW1+uyNtnnMv8Wp3faoRIZ+7kKloMkROLfV4flVxNG8wjP1nQCnChnAV1D /Lt8IZtpoqbaCMBjHFzOX0mDP11NX+yk/2YKZT6hHe6M1QyfRtJmf4BDPUg534SqHNIk M8aA== X-Gm-Message-State: AOJu0YzId0a46OZRiuaQTPJ5c410tEJCiOlxhlSqPmm6xLXBgDmlR9TF WnIlgySrawS98wFWwImFjOV/7cdHbI/CR4tZZvHmJPKUpMrnR5JPAQqPuDtcAl6BScjpFTV1HAM hJv2HXmc= X-Gm-Gg: AeBDieuEcwK6fGItDQnSc6PCZp1S7+iurygSG7npsWinnLy1proIfhpqyoE1boZKHC3 Uh3Z2s+etd5yUZakUh5R9j1GU5ACcdRQIeiz/qONi8yClztffpWUoUi1QIkvuLHEAih/ftdIhBc 1924Q3Zfc/Uhe+d6L0vWGPzqquRR/yQj2FRqmzU1Dxx9q66iM5N7+xXrK+H3fNH3t2KvlKgAkGC XsuLS/ipc2xWoEhvAKUaqePToa9+4ej2bfmzjeuzlmnHLsF6mzP5+r+17qKV6SK3QfuDIZrLj0Y i4gUrC34/uwKxVrQAg8iJlFlMWezv29lucVCtZTXFUndyi3N2bdhomsulTwHmYcm/78plxqyan/ HGR19byT9mNW44bzKvbz78TI7NVK8tAnK2PdeEyi5Xuf8gVy29hIyvxJ/4iUTo1NoWSZdTPtxls 9qckBa6AaeZigOrAU+9NsQwiUwvTDxB3w95RbpxCPL X-Received: by 2002:a17:903:987:b0:2b2:3dd9:c5f5 with SMTP id d9443c01a7336-2b5fa0044d9mr197243625ad.36.1776748472332; Mon, 20 Apr 2026 22:14:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 17/37] target/arm: Implement FSCALE for AdvSIMD Date: Tue, 21 Apr 2026 15:13:26 +1000 Message-ID: <20260421051346.41106-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748565337154100 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 Tue Apr 21 14:39:43 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=1776748707; cv=none; d=zohomail.com; s=zohoarc; b=EeQbkH6k2z53sS+v43W8PUyw1FPu+x9q/qi21eyZ60y0y/07bAC++UcQo7mVXEQ2pJOINyWPLgErM87dzSdxciierGtEP9HMojwCHo58iQRZRlBYxWVfzJCzpASz3XfVsfe72Bu19tAZa/4taMIAYl5Ht9DVR78tKTlzG9tNJ9k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748707; 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=EOGb2kuYKRr6rwLgQWqQzeazIh9k1P7UOB2MqJbhxCNAi+cSlwdYjAN6sYlHFFFWtzpYYnTfkyqGeXlOlN7T4bw0CnHeX4h5oy3+CJ9J+B+VY88e+SJb4iJoGhC/AG+fAKNQqTd8Kxy0TaAEUyjpE2X1TBUJaOMpBqwPzUNdEYc= 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 1776748707721502.14753798279696; Mon, 20 Apr 2026 22:18:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3S2-0008Lj-LR; Tue, 21 Apr 2026 01:15:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3RZ-00082K-Nh for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:43 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3RU-0006VA-HF for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:38 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2ad21f437eeso24886785ad.0 for ; Mon, 20 Apr 2026 22:14:35 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748475; x=1777353275; 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=vDdYnR2WQde9ryZWc2xdipl0CyYUhb0kdmUJHGlltcg91rVhJUWKGb0dhvrmdVIK/0 ljwozi30gAvfimv3C5QOp2pMP46cwHwgukaEm91ezsy4/tKBlCcwqlb1H9vL71oMdRGx VDtYhHd4LuuZekplJjtRiganx6qS6udVVAhkTwpLCF/J3yWl3vZfeQgL/XCz2kzBpgjQ 7S4ndjF0S+SR9aiLW6UmN2gXR4gBYL4IOdKt2ly5Nlv7W7/KcXbpx30DVCG4/aD7xsSJ ho5Y7Yn56uav2Y5kKa0TvGEuWTcEzQ86Fph14DaivHUBc44dHdmkO1h77rS3InVcyAln uDpg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748475; x=1777353275; 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=At6gnQJS6MecGecFYfElPbh+IpjHdoyX+HBwXCIDUTLpbVQQff05LveeEx6UNrHuGr lqZb6vsAa04Hy+wXv5pu7FC35jJMuL/TbolFLNI/+4Ah0U3S0Kx3snYFaa+kuJX3LfrY z2hKFxhAvCc7fY6vBX9gGq7ATEYzY7yWYVEZ+L+tkrTDnNqYBzPIgvw+ITu+1ntIvfNJ 9CPVpX8fJI9uAqlRPjVARxpf2HOoFcE9eUO9QpzNP6b7/APhZRsiaxRv2HKGYe0ayjIA /wq8GiJb5OssFhZol2v+GNbfPo2twwDYJYY8c7ihFlORXR7YrcAXNrvoA2PjCn96NN2z 4KpA== X-Gm-Message-State: AOJu0YwngHgOA2AMqpYU/rjwx87FDvYYGhWH0TD0cMPTTuCE3Vk8VfF/ oZgNlERjRl+v4BQZ2ucbmstj83Tw4SPu8bIfmpYqJGKQgh5Ik204ix23QfWJslh8Z+S/0Ql+6YC jxJStXi0= X-Gm-Gg: AeBDiesN5e1lFVO+1IA+8dwqLQuUdqofu3f0Wtb0RwmAikiqeOVFBpXw8CZMNiR2Y1D YGhdsEhibX4ec3R+ch5V4Kgvcoql+MEbuEVmbn+wPUNOwuS5GDNjd6WEMg3CmA8OX3kOL97uJ7L d9z9god3j+KnWoaMISf4zrHF0hZdNNnKwLioLQ4HevmqbpVxGswrqA2ca/7yko43kDk1Qe87KD7 uRZvJ6SuYnqOHSY4BH315NNc5hdfShewO9snzyhs1pzxQvhltCDuX8xua5x4k0/I5SMcSuGwFA7 4Z1x21++Cwr5V4gt3dI4c0Je8TG7e9HArPkdMqqVZStit9nXQamz40bIRhVCF+TA34/ZJVYMuRN jGNJQGzw9UAJ2SmJIVaO0PQ4W2I+a+2gpwPyyR7mnsQDVPUY7MD+W1RUBMhkU1dTbQ4AiVXj5U2 bCExjSx+SK/nVuTIkjVlj6WOnFaktly6Ona0DQmg6D X-Received: by 2002:a17:903:1aaf:b0:2b2:4fc1:f653 with SMTP id d9443c01a7336-2b5f9da4c95mr140202665ad.3.1776748474700; Mon, 20 Apr 2026 22:14:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 18/37] target/arm: Implement FSCALE for SME Date: Tue, 21 Apr 2026 15:13:27 +1000 Message-ID: <20260421051346.41106-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748707923158500 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 Tue Apr 21 14:39:43 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=1776748837; cv=none; d=zohomail.com; s=zohoarc; b=iQ7DiME8ydAJNT4qXAS97Ag+vnAlqTigD9GH9w9tmujvOE3dSJ+SfdmaKVY/cOcidjHnctXthVi24yYJbC6+5C6EsBdlhMZVhITT3Llb9MSqGnTr9ckHIslPnWoiS3tcIh6rsTLWhUM9ZCYhkAPJuyfgs1uqXMxgEhFrYn7RXQo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748837; 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=Ju0Sal5sLtEd1MiX5pBCNB3s17Z4mwski9HNWrCJfpO/lzlH9sh1Qxm7iH/iYzT3PbbnJrHuoFVM0B1IBkG/zQareRx7TCrm+4ylNQ8GEeheSkWBCH496Q5ZHqyFgB9+bfcvXCGxaYnlF3F0i5LFyn0Ls10HayUZZDXWxp8dADI= 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 1776748837235303.1621215625719; Mon, 20 Apr 2026 22:20:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sc-0000X5-Tz; Tue, 21 Apr 2026 01:15:46 -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 1wF3Rf-00084c-If for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:51 -0400 Received: from mail-pj1-x102f.google.com ([2607:f8b0:4864:20::102f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3RZ-0006Xw-Db for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:47 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-35da9c0c007so3538252a91.2 for ; Mon, 20 Apr 2026 22:14:38 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748477; x=1777353277; 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=Imjm8jddpqnSNyBaUs9LOpOFT2cSqIeAV0Ys9u9RXSt+gq9J4x0fcwuZWq3vSRiaCe v7217yl+aed6Avy0osnEnoERlp45kgYGk+Y0B7YVLeeq96n4HmnLN0fyCUqqFVNA09Vi PS/VstQD5S8N8X7wk7Jx9CpOOHtqwTTkneftgyYuxM5YycSNSaiDyMglp2hhSKmmL5uq HPBxuA9Hr8jBiDqIMIYwgj2dO0UOqHDxAYKLDuo1cHijC++NpRt3NGaIbwVPiR9KLVq9 i6KJarQ/j0rxG+HAHN73/YN+ErfViQ7pYA0WgUyniknawYVaWrJRpCUsYpMNVTxfBF7U 7JDw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748477; x=1777353277; 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=JmLlIEJtNrGL9hNwSVTv3ZiXVr2Bf1Nh8ZtfGhbwNAaHNYzbWlzmrZl6m9FJL9I4cM jOSyB810CnTz6kDeTFTZCKRF1gazG2K7b8AzM7CSHxja4/n9PKJnCpSUKbjOmDLL9yQp zlN3+gzQEpsPhfXcMLAQPrGZmLFQ/EqE9RGm6HK8QamqgCndQgezZFZ0IVBSBVKRGYGn x7nZkwKa59MZJ3iaSMs9TeRNj4EyXrIngY8v9p/rJXWHXQe75Knv5h16Q2aL6q9VO/mr YzvBm+anPUSmX3/RobBW5lC2jOh8ng53T2b55GmorXZ6L0O5cXsWFYiGQdG3+5vpBdDw qUug== X-Gm-Message-State: AOJu0Yy91XBd8FGFSDlumqVI44mTexLIySRMqULxYzA/CpA9xBSWWtZv Noql7x9aMX696j/NF9wX5Yk7JQ5lvpgBgtiAvk+abf+o6HFnl1rYQs3uDjqQPwILRZ6atFxLHp2 Nfpfv3SM= X-Gm-Gg: AeBDievNjipR1Y8IOIt4WqBmafEugZQPr7wTTg/x8qHfMTZRSKqu9ks/oCo8GCbieGf p9HkFt3AKGDtLqqJa5XbJ8KgPDcSkJlsAZdqjmDh4v4Fah5BMTyylVjtwN/g2XzQtc1Z6x4abnV hrVTLnrTnPjjrqedcxSz5U9N1ueSY9+kBxzCr9MtE+H++A/fH0PlkZ0wK1CI6Yn8IZHGu+WAS3G 1k8/878Qd8Gu/ryAgmWRM6fwf43WEPqha0t+UyDDmPi4LZR90QxwopTP7E/OSarrhsz/hFv2ry7 Y0GGTKuWYwPyx/bKFTA2JDgs8UAApoB9WQzR0Al2YWkB21wZTqpxsOo89Y9pPMQUi+MhPhS3SVL o3g4MtDrH9GYilxz9DlE0BiJftaejWNIxD+5wZOE/8B15jJIEfjb5YTjNc7tc4CGavZk0xvRBME lUqMlqiKRGW8W1SClOrehBiUQUgscvB6UU/7dLcQ5tcvwCqOL4hDs= X-Received: by 2002:a17:90b:2d8c:b0:35b:93d8:6aaa with SMTP id 98e67ed59e1d1-3614048b3f5mr15922589a91.19.1776748477071; Mon, 20 Apr 2026 22:14:37 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 19/37] fpu: Add scalbn argument to fp8 conversion routines Date: Tue, 21 Apr 2026 15:13:28 +1000 Message-ID: <20260421051346.41106-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1776748839379154100 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 Tue Apr 21 14:39:43 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=1776748772; cv=none; d=zohomail.com; s=zohoarc; b=e6ogLBY0rHMOlW7LqvckKTjofAGAI4ouSKCYumlIsbdjj2ZnBORQ7B3cDmkszdmSBpdVtL3MH8+RqaBDq5aJLQkEGwXFUmY0W8HhvZhHTeKiEaSlVs7Q9VfZiMvBYIH9JLeJtaMs3O07VKpOiwDIy1TB7l75wZt++xIwwSQDFV0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748772; 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=ej+5VUHpIptDYHBYIHpQV0QknYqaCXHZWv687fP9QZ9LuaA0uGOW2mXKVtxrdCaOPVZGvspR4wtXzV7ACM0X4kRDO+ZE0dnu11ToZg8bWSzfER9PnCBGJytsNigErA5azE5TFiPFvcvKZx/1uTrpjESuSHSjqAcO5sOcIjOjtsY= 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 1776748772542808.9992924323855; Mon, 20 Apr 2026 22:19:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3S6-0008Mb-Pi; Tue, 21 Apr 2026 01:15:15 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3Rf-00084e-J1 for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:51 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Rb-0006YE-7l for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:46 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-3590042fa8eso2927694a91.1 for ; Mon, 20 Apr 2026 22:14:40 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748479; x=1777353279; 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=AwG7b1PqEY5KAEXw7my+WFv9gnV1M8AYN8ewWiw6XBBOpxCnHVIhzJo/JexnqI94c3 dmGEmoU3Kq5hbsxbToW1Ll3T/omlcJZlP771L0d443FzKl/ZJCKMW82StoF9oILm8rad s25B+iLZvXh0Evh6ETu8Ow/dx43fchO6JRogIIECReg/+V1Hr5lLLFFodeKqtMuJpuQZ n9Mo9Gr069ujiVofgksJfVkxMA8DTryE+y7Ciq5zXI5XTLrRPxKgIT4rnYwD1JS8FKTR TNSIudTmJkm/PU2YlsZEVZ2TNgWu9QzXtDqfXq8akodReMcXs229JUViYgEnKxLBzhHB OpTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748479; x=1777353279; 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=EZgKE+4EPNOjcL+GFThzxWkyZfgDzRIEGx6c1gIHdBwQu+f7SCywcEbektfR+J+AOb HiwETIHaHcMgTBdIm4CAe6/Wg3VQkJ6e6cGNCkLRqE18+vtIRdJkB56BR+fcSkaDLgim 86TaxuGH3O8rVeY6UT6v+SJXJGswaubgFUvlEQLHiuEeDOLp4cang6i7vdmV0CJmqHGO MCqiW8EbL/3Lk7jNUWlM27HSN1ZZh/jtE3L9hG39/iWMndoE6iA2UDk9uG0ADWRGdZYr yplaB4xSHChTmyHuZcbO2BbuhGMV6Mq8P0bWloXjRp5Fe898orfaZ547BAsXdHpXI4zg G3Eg== X-Gm-Message-State: AOJu0YyVJeSXHTiQaTA2421AD7OGMaaj50jnKkbdarsfUBqJHjYlZNVP R83ar0pw6scFRapdmmKSPdCr++aqANwDUA9bFoii+l9T6jI+6CAqBSSQbmgzLksu91xdjNYusra Ok6QO6tw= X-Gm-Gg: AeBDietLqMZBeSwYot9G8Pxw6d33Lojs/TIhWDwKjEGQB1flqHGK1/s1TM84M10v+pH Ysdu6PcXLdxOc91G3YLKvp8pd4EHxrImk58929RlBYli/XCkHzUxubC51RJD9Hc64YGwSDJ2Ip2 tgMmS/nsrjsIG0qi183t9ivFzLkksOGEQREFMurqigaaeznCFg2nR6+XscjGAc29rDhxqAT0DNK pRJvnXxIpjOvIN1StFcuhnhTGhtJ44e1VajZD5C+vmMZn2a6MV8zDpH/k6SBIK29XvqzJV1sVQf RoPOZyrkMg6lwjiqZh4sJDnf1wY1tcw4MsgvFJW55hMEWpU3OBIjO8Gf80fHpGJiUhwPl33CBkd f8+3WJ77SxwsIkSakS3PHrIuHRdf4BJsLcQok3pOaYh3k/aSXxYdE6UM3F537qhju8LcthyDRt4 Gpex5D06AlkzrS3s4HapMDLaAfMgDwfTX3MtbM+GXe X-Received: by 2002:a17:90a:d40d:b0:35b:e5ce:73bb with SMTP id 98e67ed59e1d1-361403d61d5mr16697701a91.1.1776748479388; Mon, 20 Apr 2026 22:14:39 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 20/37] fpu: Add conversions between float16 and float8 formats Date: Tue, 21 Apr 2026 15:13:29 +1000 Message-ID: <20260421051346.41106-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-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::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.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: 1776748774299154100 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 Tue Apr 21 14:39:43 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=1776748538; cv=none; d=zohomail.com; s=zohoarc; b=O9y4tkN1mkXqK9txBAkHFY5zFsfvswZJi2pvcj40Ph4OF61FTjo7EOBL0NFGDsgWaQCSl9lcBD/cYcd2OzU0nx0tqDWbdCAHBmrXQYUunYsH9WMB5arejybip7YMXBBYlhFb2VAT0JaGu8AoNMI1x60KK0tFc/NsXXDuiAJYVnw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748538; 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=8Ct+14ngv5gKl9pMW8z2QX17zhRqbcV0PCtNvY/bX4E=; b=XBCa0pjPXf215Dr/px700jEh1rto+FSu5UlN04Uu8b43oLXTWC7AIFsKoWr0i0L2fjAum0roTmGd9443aJrlQy5DKDR68arb0rOt2BJKZ+rTHYmAAWjCFQVY6YJxsNoXTaoT8p6ddi091H/bM5a1FbJRVBnNiUJUleWjGLLtPZY= 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 1776748538740433.0131624415619; Mon, 20 Apr 2026 22:15:38 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3SB-0008Tt-4f; Tue, 21 Apr 2026 01:15: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 1wF3Rg-00084q-Mx for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:52 -0400 Received: from mail-pj1-x1036.google.com ([2607:f8b0:4864:20::1036]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Rc-0006ZI-Jk for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:47 -0400 Received: by mail-pj1-x1036.google.com with SMTP id 98e67ed59e1d1-3567e2b4159so2530294a91.0 for ; Mon, 20 Apr 2026 22:14:42 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748482; x=1777353282; 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=8Ct+14ngv5gKl9pMW8z2QX17zhRqbcV0PCtNvY/bX4E=; b=BS5UFjQ+HrtH/SqSqEyYrai4a++46FIYvat/VA2JRt2ftKroGRahhcHyIWnk9lrEnQ Rq9TUcqjpBU2S8++H+etRPKfQQWq2jnuJ4LuX86a8x8WBXX1StYjQjwTMTYxTVQgU867 nVuVsBQ1QGgXARgMo5MwVArVy9QFSi0nDw0cvNqJr2miXpIiy6qhDiNuD0AENXBCH7G5 z1pWOgsuWUISMfRiB4+mT6vmp1P5q05MvVklbMdEpCBQFNUXMpNm/gOJVTG2nSaVljuW FbWKCbtmySe2MtPzj4syVKlOkiG7munVCaZFijkzkehKt+jx7lc67N/28GL9nN9J2tM4 iHhg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748482; x=1777353282; 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=8Ct+14ngv5gKl9pMW8z2QX17zhRqbcV0PCtNvY/bX4E=; b=KYhZ7KM6y48U8g2ltvmQleuc8ty4VbOBXp1FtUG3V4tbpvEWRRi/mEj0qeRjmvcJYk tVmSxxt3gdizkp7ChImLxQ7ysI+Or13Hypplh/fS4lIqMOXwuAm6a2BtJaAg2QLQkmSK M4jySczpQD9mGUxCKn+qY6B0EcAEdLnCDJb/qd+dUXnY9gUNTNx6/75TWKjHD92kTZMj 2hu9viDchMbOM8hZc+admV/dhwiRamUv6139fk2KUfDT7MWuyOMIoRkQyz0bxHTXM7Ah 9JudeQ7X77PnryDUbgaqtXnFeQjZm1Qfof25l/lYDMzVm8DETav9Z8aTTUvOsDYnkNjt uU1w== X-Gm-Message-State: AOJu0Yyw1NjVC4yVoMPtyILTIwgVhJV1x60zydeZ/SzCxb/zYg2/UiOW 8d4BpgfD5YwKN8ZvQTPSDLnx6R4N8l57MV3kqm1xmDQMADXJslcHmbOZVZadjx9rssu8TD3RtYL hcNUUTYY= X-Gm-Gg: AeBDiev0gtpB7YTxvNLNOEYa2ntAmjJUMFB/3dNFWl/jVJn6l7UOAbkxzQt+VCD5wJP h6+brksq85GbAAXpYL4+MP8taTqmFIXaBVREIqCLMOJGzqsdeXNaLTrb85cdPoTfHcStVFKitje /KJGQirvjYe4B5l3SsyU1D4vcrWQYbI7my29GMAF3e0g7wTiDfgdBblnpUk6QrFY+nrDFWwOafd ElR059+n1ShXTbhvHTKqYntQ7hqDXRpUs1yzWViPfxoJ5A2fI3NXcNuYpeqGZAZ/CgVHuXaHJZo ieFJ7l8Ji2BzUT7BzKDklzDEpymtUQBWrFiNK3nuagcHD95+1RDDbn66bo0gjwCIZyjb2/9ynTG 1OcvMH0G5EcPc//q5viA9KleNcIFT3ifyZBtboYV9MGa8CSEzwLQ/DIGZOEn2YgtBzXysImVwqA aG+TATnavrAtmaZjXZkkmBzn5Yyxf1uHH3EvePO2x5 X-Received: by 2002:a17:90b:5845:b0:35f:c46f:2b0 with SMTP id 98e67ed59e1d1-36140473f70mr16759989a91.14.1776748481742; Mon, 20 Apr 2026 22:14:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 21/37] target/arm: Split vector-type.h from cpu.h Date: Tue, 21 Apr 2026 15:13:30 +1000 Message-ID: <20260421051346.41106-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-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::1036; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1036.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: 1776748541846154100 Content-Type: text/plain; charset="utf-8" We want to be able to reference ARMVectorType etc from common code, so move it out of cpu.h. 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 Tue Apr 21 14:39:43 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=1776748689; cv=none; d=zohomail.com; s=zohoarc; b=oD9y9t4QWRBbvgXa9qgbiaQZFpUrEe2q7COJzBa4PLPDU+VqeF706rlcvL3183XNZ4ZhiEPeA3Lztg7+UDIBo/cgGHHVWPWWdIW7vD0SHuOIG6zSacR74KDr6nON0R5P6KNe6dvwCPCvyepPj6q/sgaMP9gybf1tJn0p1iqHhrg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748689; 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=0NN6xt2iu0Bo8EfnYcUGgF0JIURAXR/oqDeZBep1wYU=; b=WGNk3Qu2Lc+jmUBoK1Eph0yaeda9BdvM0SqIafqe71jAmjVeirw/AYwdwuDaRSgM364RHrQnsGsFFaKFNeGUZKeeWymF/sft6nmYnDvc4W29c14fyxCiNU/86M/aJhRXWTsM1fBCv4fli2vXsbfrNkIB9IjFBBpb9qgTeLp+QXk= 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 1776748689190901.1273497932496; Mon, 20 Apr 2026 22:18:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3SZ-0000Nt-Qp; Tue, 21 Apr 2026 01:15: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 1wF3Rj-000851-C9 for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:52 -0400 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Rf-0006bw-8o for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:49 -0400 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2b23fcf90b2so37326625ad.3 for ; Mon, 20 Apr 2026 22:14:45 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748484; x=1777353284; 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=0NN6xt2iu0Bo8EfnYcUGgF0JIURAXR/oqDeZBep1wYU=; b=pi2H9zOWQaLJr/dpsFaSjfNvrdRkZMVUw5qCDdZ5TPvyZLYPRllX9OjlRaEZwwVGy8 qN7bCmAZKd0C0Hp4awmVwkA1coiIaldRuhpcBEgblW3L47xn+KZj+wXIbIV+54lTrj0g XXs1lynd9mpx74IO61Tp4rQh17DBo6qHZenMZf7eqCXgWsFqy/QMPI5VY2MY/qxjCKAZ HSUdD2r6tGN2/ZxRwf3AS5Uqeh9KrsZTkn29BAIPweSixS8eKk/sG23pgpf2z2PcfeGz dh8Y0VtfIe0HgzKbnUyaJ10BznoIYnIkyoavqkpQ1GB5ztiLe+dvkLe0Upn01OH4N/Dq rtcA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748484; x=1777353284; 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=0NN6xt2iu0Bo8EfnYcUGgF0JIURAXR/oqDeZBep1wYU=; b=m96KhkzTFE3UekMsiQj9OpKd8SY0LoHhor4k1D9me4HxO82axNrrSJpbMW0Z2h5fOc hTaVHQkXIslOrOK9+xfddMzWhGTm7ydOSQPUGY5V+9HWeH8Ylt6DixUyeroGrYk/guDt xeDiun4k+rhjbVWN/8YkmIUgLmqagDd8Gn3TO7EWMv+2BcjecqQNcSs+f3hJhEdsQOiU Lt7ufXtpfHpG7mNypEk5P/YiZ/Y3Eu9F0FsFyw8dfLAn+MURCIVl+9hjzzcOa0JXinTx L4nJYlBw9St6FDMlBaXylwR6iDD5bZ0bYEOEivorOCYp6xkGTLBWSDR5m8nowPbbgFdh P4dQ== X-Gm-Message-State: AOJu0YyV+h1GIjMdLo8CUxM3+w/vw1LtHicljBQ1nFHIXIfIuzWkuyiB RIlkHDjseHw7ARUGDWbiuqTamTZjY8fikAoit5ZHvJ+p+dX7EI8jAYUSOFHmnosW3P8O6n5ivW1 PpgTL5Xk= X-Gm-Gg: AeBDieuC3RxpYFIO3XJDnyv62uJ06+v4+2euEhO8VrbTpWFyQIHjWMEyBYnGYwymefM E51ZMeCqhVEMIQkaXImge8C/O/6r07O2GjIwS13Fw7GVQC56FXLMaF0TShUPJmNFUDfrPlbyNLT vpUBqoBaMR3eF9ZDPBWiXinY3tkigBOslh8uts4+Dh95qogN82L6EEIjtDLamUjXGyFSTcpb1UR U+guH3mfAopL52QUa1sSihkfeP2KEQmUeE6xUzQo6Q16ayrf/g8JYvHI/7Y0/VJfT1uylAlDi49 rnXH3IuXOOeC7FTncCjIFa3iNeYrsGdhSyPlyf0OogbyUrvHXt+UB2GUKqzv+0YlMi5IeD0nYP+ Vo/9S01AEhIypeOOCIQr0Nl3IXeOhzKb85veGU5vOI98bLDwZCN4ZzPDMG1IGU4h23qg0hu1L1z jAGMdIY2nxB1p+g6AVQp0WIe3fOm3iDp614zEAe6QF X-Received: by 2002:a17:902:f08d:b0:2b2:4ded:954e with SMTP id d9443c01a7336-2b5f9f2f6ebmr115034335ad.24.1776748484217; Mon, 20 Apr 2026 22:14:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 22/37] target/arm: Move vectors_overlap to vec_internal.h Date: Tue, 21 Apr 2026 15:13:31 +1000 Message-ID: <20260421051346.41106-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62e; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748691213154100 Content-Type: text/plain; charset="utf-8" We will shortly need this outside of sme_helper.c. 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 Tue Apr 21 14:39:43 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=1776748837; cv=none; d=zohomail.com; s=zohoarc; b=GfvYgR0vH8Ud7loKowCmY+AGDZWlNNFFE0mA4WXdBKAjUNQWGyqaLutHUdiSaHOGpg519QHsQznd1MVl3zawxEwoDsaa+Zf0fTMhgC2NtC0ztCrDZ3IJKFMc5hMH5m0KaWUHEvAJLyhvoAsjXgqzKLCRQY9992sRPEhu+5tDknE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748837; 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=lry4p3P2zqlFJXV/MPi9zlx1YrYxJw1mmUvMBwKuKOcFb4ka5szv8kyxmul/WUemT1Cq18rWuSlUbD2Rc+rDSjxDmEUWjHj3ZHeOoWedMlvyv1n9XRWNOq+pLluL0pLobxeon3OXBgPrfQTJxru4NywsXuL3roK+HNYwvIhwwag= 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 1776748837055234.1509282058903; Mon, 20 Apr 2026 22:20:37 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sa-0000UJ-Us; Tue, 21 Apr 2026 01:15:44 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3Rj-00084z-BL for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:52 -0400 Received: from mail-pj1-x1029.google.com ([2607:f8b0:4864:20::1029]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Rg-0006ce-Fm for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:50 -0400 Received: by mail-pj1-x1029.google.com with SMTP id 98e67ed59e1d1-3590042fa8eso2927736a91.1 for ; Mon, 20 Apr 2026 22:14:47 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748487; x=1777353287; 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=A9sEjQ59EFaY8dXV2knZJnsEFmFEbyKkhZbXG2t5U35gAnNBlT9N9qkZgPMY1ud3Hx qPRxeWtfHnQeWVa6Uvo1A56oIplAAmykwvpG/k9IEvZvKTYp2cS1IuTBjE7/Dz9AdLmg rM25exvWbTbzdT4hqtgm/CV3XeWZtQcZTUdhJajG1DOQkVttAmRm9VG2fK/Ko8CcqHGV YjZKYjbOaCPdvvNIrjQFCjuqFL2NBuZJMQOkA5RYCk0Ns2Mu8wbtk89xr8xlSSxW4MbX fHHanBg9dSQAHa3C97UwxavnulZQzm2YDks9XGC4wlq7XbFDwh8+ly/SM+5qQ1EGPwpP Onrw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748487; x=1777353287; 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=L6eqR1Gi7y5+WI0etFdw70km0VhviKRlpADcUDpbmg1akN3HaORErulFA8bBDGgVNQ ZWX7RYUOFnvgyzk95TwhBzYi5ndrrY8PPDWmfNJ30dLg7u+L2PGpMI0mR6TWkR50jOcd PFyXAk5sRgEbPOdZsy5hQ6eT7VxzpMnInnMy77eyRxfJMSV04pG/clYLLH45Ms4k/C7i +5W1lOqxVpmInxdoUfL7uvQZ+sJWB3WavP9Ywy6ZFR5hGcoXYlgjkxqAjLggfk1SYinP ObxUZYXuL1Ld4V0PxPOVK6CFCspAR1qPFKT7KfZnNy65IOHfns1VfRZpjffpa/XhS3xV LzCw== X-Gm-Message-State: AOJu0YxP7+Y9ptHRQvJfmuGZIM03tY6SQUyPJhxwzr/GQUU5DtqXvS6d wqC0KOh8WplyC//XB6KnyuiZyj0szhlXf5B/eaTeTddXdbzNRIApVDBOtO8Lwf/YLNQIhgbKJ2g OM79y/P8= X-Gm-Gg: AeBDieuemHXfVkXCt048wUvseqHz8+nfIHLBRAFrpRJefpcCXhl6w2la3diaIK9CfvT 3ARxy7CNfkRY/Y19iwKaKKEGnb8Mq5wcUUth+O3I1g0kv3wwrHVBXI1h7pqO1CJ6gAZdEuKaLXp /9Fb73C/EcqD8gLhtAVpyAkgbphavaBqy28SZYHyokDMjlvSKpMyLdP+B4aabhZ8aFQfdS4sMsd PnNpQOgO6l8bS+4qfjSA8UipaWxojjnQspcVuQbjwEIKCruPS3csK/n08Onrh4sAhn+p0NlqZ4t MzkzpNf6DqiqTp0ZLg82s0bTd4gCFoLUP8Tu18JabaT5Zqvtcixs1k8W4ngyDykIBxufzXf9LAj K5/DuJwGGyrXeaAmOwuPJDTFCcPhFTM7XAOvnjD4oXF4u9oOgI/piF2RwVMIWb6JJvitcJWPA58 ynu0aKc3XdZics74DscXdXU9qLO/V7F7C82oypZGWsp5DmD55O+L4= X-Received: by 2002:a17:90b:3c0f:b0:359:855f:ff96 with SMTP id 98e67ed59e1d1-3614048b2f5mr15954462a91.17.1776748486577; Mon, 20 Apr 2026 22:14:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 23/37] target/arm: Implement BF1CVTL, BF1CVTL2, BF2CVTL, BF2CVTL2 for AdvSIMD Date: Tue, 21 Apr 2026 15:13:32 +1000 Message-ID: <20260421051346.41106-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-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::1029; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1029.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: 1776748838536158500 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 Tue Apr 21 14:39:43 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=1776748768; cv=none; d=zohomail.com; s=zohoarc; b=kwZvhtmmalgn9j/K8ZwIfz+xC0uILAywBtSOPx2+3Y3mE+ZiTD587qfz3xIQ/33AdRINbxy3FFMM1zaXiKoKSy7T+0KkXNslGfexSDKFSiMm1GYF6Z/aqYijTNQDBgCnw0zk631RjacuccDCCfZBkxMXtzGghf9bZKE7RXqmgA4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748768; 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=VQ2/qRqgvZguSzVADITYz1TzlYR0+xdlzJDqg6UUBRLf965kflg34Lb0LG23Wbow66J2A6NlTtXZrSie/1HYgycECesf27wv5LHdnUEkEPiqXebhefiuOM5Q8shJVDdPuRZsSzD8e5rP489ujCHLZqbHayzFdiLelWxmjzg+AUM= 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 1776748768446523.1169074737509; Mon, 20 Apr 2026 22:19:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Ry-0008Iu-Pi; Tue, 21 Apr 2026 01:15: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 1wF3Rm-00087l-VI for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:56 -0400 Received: from mail-pj1-x1030.google.com ([2607:f8b0:4864:20::1030]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Rj-0006dO-4F for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:54 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-35da9692ec3so3450913a91.1 for ; Mon, 20 Apr 2026 22:14:50 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748489; x=1777353289; 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=IZdQD3Ar4EjgyeoFwpPwSHv5iMbnVBZ9oH93MXAX6Bxgblo1Av14yDA2vfvI/CGcrB Z7foiASXKZqhYiv/HA5x5mzRHmdX0IJ2fGdtqfoFyZlXsgHwwClrf3WCEHoKMQkfWL1w Ze4MPAMSI1CtEGraZo116cPKGL1f4w/6wibwlOCKR/FilixxcmhKdcqWWFoUJoxkG7ut KFEwUSMsvqqTtSLvHBU3njoQrBa00uxCppDvwrAiD2Gk5nMOkq0EGFMIrp8Jfqs4I/ha aOGSrhYimVIgJMy/xZUrO5ySjrN/9W4s++snueYMWWHyn9WBhJHHeYA9LeSFovJFLDgO XUAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748489; x=1777353289; 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=kvoOA+jOaTMuyMsZGrCRtc6m5hltIc99UAO6OoW1e0nwnIxiJveuTdNZZ+un+hmEY7 8/p0NHH0sWbUnXePPQ/l0HTU04TEd3gM2q2WLROlmtwUtZAgVA/acqcGMQQApIgnOSjR kK9wGkiOwRhSczph27o/UUqzpb2rrjmZcQJII+lG/PMEtqvtt9+3C/NEw6fw4spVi3BI PekFH6k/YTk9ICxGAjZ4Sv5xZA5wODYhzWnunUhvs2utkE8/tnzdc1mNu8gIZAUtWc9J nOxzlgL3I5d9SBp+Mm2xVsFrl5ybHyuY/ih+/e7nPL4JwMUAY2jsh0TPpN47/cNBqSa6 XQcQ== X-Gm-Message-State: AOJu0YxnlPPxjwMgxAfhZmPSPazKFZWSQIVz+l/6UyYZ876yAfoVl4kB oo/kLx9vagUwNsouuAKxR32ZnEewmYz0AQbWi8PrZx4M7eE4y8/U0J2mwPpQL17jB1QavXnXGoU XrMuVpyk= X-Gm-Gg: AeBDieugy9cvl0wY+odLSLTbKdwHE7iGwsysN8BwvpPElIB36C6tWIgYXvqt8cToAZp wzCfh6mbrMFYaQL7jaXEKmqG9aumDWkZZAbmZSUbUhVJR9kayFpXxpm1JiSiczYLQtu2xe64cnX 54G4QV2ZbP+i/M0+Lcg0xlPeoirWQpjNfxjaMpgRqky/AZA8dFriJqklOjl5pyRFlfgOWbjIqM6 YOxCYy1upcEqkN94FcgfXMliBzkKqaRpsIe6s2Y6iN00oAg3ntp31QofwlZcAGfGMJ61dplBq1S L6dlx1RoW4csWFLDcJA5VjtGcz6TRj6tVSdR7Uv8svZHwptRmnimN8OF3fSx7O0XYAftIYHhIjo +aeBbht4gOz55sks+PMljjwLDiEO3uvCVXqGCTaN5oxleCL04xiywCcHAEjOnZeWekjNxINKNqp 4dTzoWpVWKPkAFUHvfVyC+arQHC7ljWRYf66fiZOSD X-Received: by 2002:a17:90b:1809:b0:35d:a3b4:2f00 with SMTP id 98e67ed59e1d1-361403d53bdmr16776521a91.8.1776748488976; Mon, 20 Apr 2026 22:14:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 24/37] target/arm: Implement BF1CVT, BF1CVTLT, BF2CVT, BF2CVTLT for SVE Date: Tue, 21 Apr 2026 15:13:33 +1000 Message-ID: <20260421051346.41106-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1776748770126158500 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 Tue Apr 21 14:39:43 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=1776748787; cv=none; d=zohomail.com; s=zohoarc; b=mbi8cIWfqLC6mjClGSASHrm+40rX9HOFImJwifJwaVo9vKxjjCMXU8U87LIffAo02N/zTTskmmo1MUbWG2MdFdNBK2bdmSiR2pZ0KD7ubOLsUEh6VNAH6fGRijE0y9wsgg7BSD8J+Y+PDNDgNqfCgY542DWsyPhUzq81o2LNDKQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748787; 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=NWbuhT6krJQXpu1h5uxhTvdm+STvUaLtrFTrPyJGZgDXbo6+kpFcO/Vu3MO1xb1xhtnIepRkgbx2ejwE+CYI061MWSBPw8hjpTIAIj1GunZKgzYndCzwQfwBkzaRXxvWE0bluLNUtCZ1j5Y4R2hMQYXXzcKL0R0U5QN/Axbh5aQ= 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 1776748787165267.2627947936264; Mon, 20 Apr 2026 22:19:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sb-0000UP-0F; Tue, 21 Apr 2026 01:15:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3Ro-0008AX-UB for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:57 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Rm-0006eB-JC for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:56 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2b2589c26e3so34131405ad.1 for ; Mon, 20 Apr 2026 22:14:52 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748492; x=1777353292; 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=S7ozD9QwUH74iZtHeA+yUZugKoSxsOONUBPzk99481OPi2tomcwF6VreZnrnFH6rE5 GfwpKj5oW+Yw+yosRT8yRUXGwKG9sLfP8AITARwL28qGEhGLcCQKtMc6Rt+1mjdD3vdK 8loLnswKhvRRvXXb53SQhD0rj1N2bUhILeaOdpPVCzyndxv3IX0S3D0VZyzBiZuwfDC5 t89XolqkA+IK/L4edeYiquVtaqfHitZLWG3Bc37SlshEVUzkEB4vbtcXmzp7cZQoBnN8 tRTZ2Flfpo5ZmhuHB7BFbzctCNj5b3O7pP4r0xeKSkpDzS382Xk27GULP7laaXRz/7As nZdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748492; x=1777353292; 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=Z0TW7ujOW3eRExZbm3NsyZfc0qbddgLPy+t5ZLMRBnKvF7VqoBJNgsUeuywvd1dmPh HaJ5PmKmB7xJHuNKJMCAvVn/vklu7q2e6v48araUfQaiwV01hpKh24D5oFiwlIewpBPP bA9A1SnTNomoZg/Y/9/r6/rv8WL4J0tmg0pwD8k8k3WD92FGBUbiDz1PxdqlxhdADoJO 7+5BDVZX35hiLmJxV9vlhU1wb6S/sYOUA6+chS7eTVomhtaI4J3VLa1t9TK6ggfDaedi MGz2fhe61REUcAEAKd1wZsbSYH3X8IVVeO+bFZ8Q9iLjunhzMiXKnjy86r3FPY0aO82c DO3g== X-Gm-Message-State: AOJu0Yx7sdcMeY44Qwj8s1IC/k3Y7CwLwdPY9gbKEwuxDPhteojWs6JF HI2Yyw/B1kWZBOmYqfvehryNivqf7EpQNrRp5doJoIdJuWnX4C+DQPsAmP9bM4KvTRubvlo4JlD tttDx8Bc= X-Gm-Gg: AeBDieu/00B+vcUnuLP4Cvz9W24JVAovz6glfAO2jZXoqUauS0YXsyvbCStBgSDrxzR aAgfFqtuEHyJBof/QAfkt1k2ZmvS78fB1Msg5FMCamBINrnikqbTfwGzBSBgP11uj1wh+OZHsDL pgiE0nQFxMO+GdLxH9QBflNs1ePl0jypDIvmN8GM7o5D+aPUn7R9CRB0qyJKE0DMclwg9sFhDw3 r3zdgmlgZ72nxbaAdONC2adihAtgDn0wuK4NzEkIQUoGIPtmH50cEghT7z42Lkvt2l7B7KwBpyK oEN5HFRS4o/eAxW++kPxI1SZ4MkJtKToooN/UqqP9yAd+hlvBPD3Ofb9y43ybePnlVVNikxB5A7 p/2fUCCNgoHN5XHUedTa2pQ8x5ad8UurX+eJaxMqRwoZ9rHxOBTnA+oC8yuW6kaCKpD9JH4ZP9x WP7kj+lBIBApxJiskLrqXnp/l7BmWv2slfE0vRme3j X-Received: by 2002:a17:902:7c0f:b0:2b2:b117:1e16 with SMTP id d9443c01a7336-2b5f9f7e95fmr123067035ad.20.1776748491520; Mon, 20 Apr 2026 22:14:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 25/37] target/arm: Rename SME BFCVT patterns to BFCVT_hs Date: Tue, 21 Apr 2026 15:13:34 +1000 Message-ID: <20260421051346.41106-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748788515154100 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 Tue Apr 21 14:39:43 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=1776748765; cv=none; d=zohomail.com; s=zohoarc; b=byk+gM3YMgDgMAVDpobIZSGiMD2xeyXwYfzxOUYnNutA8Ij8bSUid7RFoJJa4xMV2EsbHmQ97nXYgWNUdfCQ/HEohubxkkP1Z/2oERIjKvPLhiAn+Nl/vJpzwjZcbQmUda2xJuKCQWVLHuVjzuvRcwgqLp1azaf7YD0/viwi5d0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748765; 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=HlD/sNEojud2E10v6wyOz94s54vFj9FQnwE222NdCBXy4dXnIbVN/qyV+mTLKO5PYoU/MCsES/KqBTEaN0iKguXRiSTqIa0Al3fandP5t1t4D8l2rvq2MTeHQC4cUD1D44vGlXWreTUqCLjAHl70mFJOvDpfxo7GUsr61SkFQTI= 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 1776748765029713.4695031303571; Mon, 20 Apr 2026 22:19:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sb-0000Vi-Fa; Tue, 21 Apr 2026 01:15:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3Rq-0008C5-Fz for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:58 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Rn-0006eP-AD for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:58 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2ab232cc803so18287225ad.3 for ; Mon, 20 Apr 2026 22:14:54 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748494; x=1777353294; 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=CICDkrqRki26lpjT3tMvuYrG2iKGNYOEPpup4NSWJNzGqw3yWoFNLt/N08JSeMSsuw 4+Z1Z+3qfxZADseFilYGFRqnVT46z+Iy9yOEFyq1hJzKqm7s9bgzyuvI/tKr2vS7/8DM /Y1F2xrPqgcTA0/wa0dKJ6uNeb19LqgDGFPLpMLeYWA0+GSz8s0Fa72cG8T5snw4Umsc ZkggYAzByfF4GZ8mvz5hIP5h72KN9A3wz4m+b39lT3N+rbO0eUYcfIqrrNJ2cEdRGU3u fZD3yq8RyZssrEKg1cXddO/cT2bsuiFV82GIPILz3/fDAUqG6Lm+ok1ma6RT3j7YMQmE be7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748494; x=1777353294; 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=Fz1+azaIVUwP1x9qNZQQze71fUKeWxjlSGHY+7fLf/CwmwTXKprxHuxwVDsSxyDWZH LOR6OJsWs/e35mFEJXo4Uwj7UOFSZelWJzWAGdMVRBgAuxVzhqYdb8vnBD/5mD4jTOuQ 3kzMVCc6TBsI4MVisBNHUTZQW1T/wWHXBk/zEts0kRAn3YDV44FYskUFV3vIp3rnR4/j YEW3UPfqJMwDwKXHhbw9ghYjqq8DWMkxwB2bsEHapBlQet8RbKipbP4MPAp/uVuJU1uO kjHDwlZvNFd0jtT9gfJBFweqUqU0ImfpRDFl/aB1pUo6aPIWWlSbDSfxI+J0V85XzdaL JyRQ== X-Gm-Message-State: AOJu0YxRWY9SQmgm0JEgpw22V7jrno9larsDwLzLITISC5mjEtS215iL v+ldRJRRjaPVFpFqIGqYHQSrrD80xtui8Or7cJf6iOLRe5ixpAk/cZwFrCdWbe9qYAd/AbP+cMr KSWN2u5Q= X-Gm-Gg: AeBDietx3cIveJSM+bVZ6Mgzz593q++fl6DPIxxWaJflWw6y1GrqtBZTC6D23RP9FsN 2XncujdaKiTgQi/5I9a6DnUPCt+t3uK2oT2zu8wgQz/qNXjLl2OVEtv16/Vs/Rl0wMXBb/xtbRQ XRIL4O0HCqJrhQ04eB6kaMjdBKB9K2oT6hGa5H7p7QYC8zFZNYkW+H/ECdvLFON/EUWTEuMdSs0 pELjMEnhLGHLWE6xlXEgLc5DdkAl+/j5mfyKy4bmEdfts9Z69adswBYOHKbc0nbQNt9MnSaWxcA CFgLzBIQBHQeBBptsnP0rZWki81dbJTwuzEHOsvh0dkeLKclyjeDO6Md5AZ6t3s0zJ6tTXbeT23 wtbjFSYcVBZabA7XbP1vhshY5s3nKrWjGvmAIlV4HxquSRsNMAAT6DqJtek4bezxfPAGJEhIbx8 BRpE4jHTEua84KeB69bMU+ahRVOt2oFJBd7YvRX2IW X-Received: by 2002:a17:902:ce09:b0:2b4:5d87:a1fd with SMTP id d9443c01a7336-2b5f9fd21c5mr175941855ad.27.1776748493850; Mon, 20 Apr 2026 22:14:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 26/37] target/arm: Implement BF1CVT, BF1CVTL, BF2CVT, BF2CVTL for SME Date: Tue, 21 Apr 2026 15:13:35 +1000 Message-ID: <20260421051346.41106-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748766117158500 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 Tue Apr 21 14:39:43 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=1776748766; cv=none; d=zohomail.com; s=zohoarc; b=UlJ0Ie6aNoPWG9rOug03b9bQdJyx4SasdeB3w2vXNTksfyPue6NgoVA5qTuvI1rF0PYXh8+HTfOl6Y9zPInAO4TfrVjehQgf1oo8Ww/n/G6Mwv0xqjd2GtORFEAXRSYI/6R40QA8UhirvejULcgdoXBuMs0nPr5BEq9HyCUkJyY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748766; 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=ZRlT4b0mY18aKenXYmcyASwvOQb6itKYp7uWHp183KagxRiabkvc3+PpkUAiZTAqspJM+wmdYFDYFmT+sMu+pkEzZ3+T47wtGMTmdQPm2QmUVgSt42n6ZZbpmoXGymZqpTKZTcSxp/Ca+xLZvAydBPZYyMOrRJ+ttmHn8nlcfVs= 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 1776748766090387.5988845873137; Mon, 20 Apr 2026 22:19:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Se-0000YJ-5q; Tue, 21 Apr 2026 01:15: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 1wF3Rs-0008Dd-UP for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:01 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Rp-0006fC-Kc for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:14:59 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-c7980c060cfso986451a12.2 for ; Mon, 20 Apr 2026 22:14:57 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748496; x=1777353296; 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=wp31ysLyLoOsgdlw2Wtc9zp6fEsmC29JyXKZSRdIy85ScQdglBxTvhSZAZj2/uSlxx mXFikPf2XmRxoxVtKatIqULrcFWxDVRaGmGgWapasNthNWLhfVQHMRhwIcc602NDdUf9 1QPFU+k56k+P5TSHVfteYm30tCvn7FT8FrSOwM5PFbGeG8ss+dJ4UhC9RufDo+Q69Ac7 /GJWe1OltZG43lTIa3WHCZyryYf58aJiKwbzJP9/X35HJz+NdUrdk8m/IwY2SAvoFF59 i5vSI7Izpa7lkRul/WKM4uGqbQWAwbADLerDvJeIF1+9vMCh7qk/NvpLn3yBVJ68A3bi ajug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748496; x=1777353296; 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=J7AcCkrQlgyr++vMBFIoOA+sHxujvNmhveBTQ+QIdo4VidDna+3j8wqCv1sKG59A1c RpjHA5y8bZh1rqIxIcYzyNSJ45g6KXftk+k0BakyuIj4fIea3RZqx2fMkZvTCj5DJ+yK wtv3BRT6/ZGgKzViRwMNy/nh4AEUgkRdWml47f/iKlH0QlBb+dzTMeFF/4gZTllrW42f xdxGtDhk+l9Nn6tA1aM7gaEMwSMHARBMlC2rNzA25vA4eXwpRD3gwA4gwzPBAB6Ur9ir 3+KUHoDXU4XnJy3463bb2GTDBnqQ9bEOxFMoa1oFfQuxh+lu9I8YYkLV6muYCLf1Ps4Y T7zQ== X-Gm-Message-State: AOJu0YxDuo6ad17NgJXUIHxfrw3PtCuRRWRTtp3zg+FnFPpHJcrlm6c2 2JAQc9/eX8ApDq4Xa9PT9hvrWRTQRqp80hwHrd0RDSr0EeXEXCNlds1UmPFBiaYIVh7TVPqCLQw unHobNrQ= X-Gm-Gg: AeBDievfJaOKCQS6WuEyVsC1HTwoUxWbaMX9DSQry33pnziaUV2UneGlCOF/RcPr0Tp 3Xdc8wpUG+HG73S3MZPayDVZso8Z+Trp4ioEDBlYtxFMM8fs9PBaKlUl2ivLjhHm8N93bBmf97V Wr3mN8u5WHPokGBiivyG+OE53/hquMTmdeqe5sg2StJZHN2FppdRcNVKGE740BtBGTtXRWbIH0y p5Y+Ia8On/72rYrdy0jCwI2+UFlg54aS7ZeTYb3uufNoYXoK3t4/N9pJ0iLJUeuEOqMXwXappO1 z7qv7M8hqqrp2RoNirQHxA2VqSDuAGt/MdhAB27DKNH0iEuMMqotmkRpSmuMxhjzmeY5WFzYBaT PjCkChhLO58oGzJ831aF6+O3uckOHRDgaQa4x/FQvoZkcyhr50Hk8YY9JEifmTIbW+z/+0LaVAI iJCe18xTltJJgkhI7G0zjD3jrYh66tBfwQp2+x4bkX X-Received: by 2002:a17:903:8c6:b0:2b0:c45a:bc2 with SMTP id d9443c01a7336-2b5f9eddc7emr181652405ad.16.1776748496151; Mon, 20 Apr 2026 22:14:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 27/37] target/arm: Implement F1CVTL, F1CVTL2, F2CVTL, F2CVTL2 for AdvSIMD Date: Tue, 21 Apr 2026 15:13:36 +1000 Message-ID: <20260421051346.41106-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-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::531; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x531.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: 1776748768166158500 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 Tue Apr 21 14:39:43 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=1776748612; cv=none; d=zohomail.com; s=zohoarc; b=NWtgGnGBMqNekXT0mYb5ihSc8bMn/RrY8kY1rtvysulSLXZIpVfWAkZ1jsT9SUN2D+loNhgN/eh+1CHDebMkjmqVcVAmhm4JushpF8q5uv1G8JHWWW42Yf0DHViXIKp+OZW3u9xRoDNur3Y0MTufFQkBrX3r7byEAGcdokSMl+o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748612; 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=RN/vmTlhEGN+3OTSv9Fx7MLp5zLyH7vo+4Yevy8qzFi35qNYUDlL3QvUDSUgLdXMY40lTySmQLDuIXnnDNfQ7emD9jcJ9YE2lJYQMHr5bSDyvilAvcNavSHB7tH97EBKUco9p+8w+Hx0xm0nIpjZX9wuiKnP7MI5Jb7JxRrHSTk= 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 1776748612865824.8736104126135; Mon, 20 Apr 2026 22:16:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Rz-0008JZ-IL; Tue, 21 Apr 2026 01:15:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wF3Ru-0008F9-J2 for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:02 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Rs-0006fp-MR for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:02 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2b23fcf90b2so37328105ad.3 for ; Mon, 20 Apr 2026 22:14:59 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:14:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748499; x=1777353299; 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=zZEGeIPg5sV2RSgCMSRxOdTSkigTZsWmQVsm5ZK65YulQ/qeApfVIpZWMbgWcvMphY Nf8SGB+y/t/Z5L3ZQffgFvkNq2hugG1QZiCJnS9HBT6ZirJWG6eZfgm5FL84ZarEN+wn mrVDtwfllbfDBiFHchlneA6l7PMXqQ601yycCivTEKEfNPcybKIBTm/UEFHslvZ/J2nG lDZABgHixssZ5Uk6ODYS8zS3MjwZpyK82CNMIk6/51cDgaQzTZpFaS5NlgqhRmMPa48Y Ya+aldMYitxO7xe23aaY5ybedYX+DcVOmAaOkiRydN+dl3SW5iN171yoegyMdUBsNBgq z9bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748499; x=1777353299; 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=NPyf06odDjP9BaAE6q0YyQQ2DXd/vnZoUyALZ3g57LXunwuMXNas06eklad0s8cCSb MbQC+xyxoiIEkeY7jV9ws1mhGj5siCzCseVxs/bzFwbq9YiUBQnpvhVGTUcJvFE6vt3C sAoLwwhhSHbiuZ/u9KeY4FcuvKx+Tj4G+cbOhEIDBFQQd8lTgPAOF20p6EEY+NtjIAPr SqCRDisDYkpitFEbSN2PEZbqPE68n1Bpinj6qzDu8GV2B+EShBfqumjvgmY5jwfQj95Z cqm7FZuxBMNV23hdUTLtj73VL+VFKjXPOc6qpS1ZyQtvdhop0M8DiKR+zdPeiQJUXFkf cZDQ== X-Gm-Message-State: AOJu0YzZR5bGeAm8GgPa81DXaHRx1djmq5XeZaOmr+owK7OKGiRBoioR GbhICOmKtxUOl5+0px10UTbFFJMIToOV4+WbS2buWzqjkD6ol1muAhby9py/tjr/+JXv2OgiIdA Ag+zZ5cc= X-Gm-Gg: AeBDieuyRJYMXjcOjnYzFLj6PHVRSEhp/637NulPNkRRfjJPu2E4v1ypolI22Rhgn0j XOhT3ie8p6prmaVGPsXS/dHwKu7joicqeTN2tkfI3NOUl90e1NjUya19mp/BBsHFXbqYM6Mka6e fkY1S0joRAYjh+xcXkdsthgDZz9u4UJKBrQSPEqY9gF60uZjTTDag8NO0T61fR/IBTpQbFMTo9U +HwJfqr72+o1wid5Nv8AujBV0Y2hrBrf1PJC7oniFKuqQDayXPoh/7FX99ChcRug2sRAFAHteA1 fVowbQJqQOJ8ITKRTvv9piHox+ok4+03cwmWbXyaKzUoWNRQCYbqnqLp8V7ptvK/zo5C6kA3Amw g5VcqPivyU8HgUgxf1dAyjYqcMMh4TT3z++vPD1MBb0mH++7ekXLBWTwfsVCdJVMRBtLsB4qnoP giFgXExNyXwchMJNdnrZ5tgRTlqcQw/wdMFPGjW9sK X-Received: by 2002:a17:903:2acb:b0:2b4:6398:6aa2 with SMTP id d9443c01a7336-2b5f9f3a802mr183703095ad.27.1776748498504; Mon, 20 Apr 2026 22:14:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 28/37] target/arm: Implement F1CVT, F1CVTLT, F2CVT, F2CVTLT for SVE Date: Tue, 21 Apr 2026 15:13:37 +1000 Message-ID: <20260421051346.41106-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748615911154100 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 Tue Apr 21 14:39:43 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=1776748741; cv=none; d=zohomail.com; s=zohoarc; b=UCPSQIVq8LFTTzP5WGWsw1sEJ98KBqg3XHONKe2eWWcglwHUopESVneE3Q9oPbv16BefxvC9FN4gxiDk5HWuR9rZafQ1aVA8iSOqFp0uBQjtKmAFVIvjK4B59+Nw+4u3qoIv+iyl8pj7HqzPuGKIbLLEuN5F3vQdp14DofmeM6w= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748741; 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=JylIzkBPgmqX7sts0YUdikPGhnyD1zyYdmhIvI4HZfPBxybJJ0yo9i8Lu2kfCYbaHOrrHMFg5vXoga90N09UGMjW9gBK7XTm4SWA+X/MI6MuN51B/z0718+b+jve62tzXtQ7R5a07mkIqyt7z4v+GDONmVoVURD7PExKmXgiXOM= 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 177674874133490.19811449307974; Mon, 20 Apr 2026 22:19:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sg-0000Yu-3S; Tue, 21 Apr 2026 01:15: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 1wF3Rw-0008Hm-OJ for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:04 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Ru-0006gP-IK for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:04 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2adff872068so17895925ad.1 for ; Mon, 20 Apr 2026 22:15:02 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.14.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:15:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748501; x=1777353301; 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=WUiXqLJorFqDg+oR9aUZPOfyl6+BfI8dJ7lj+XkxzLUtQiBWyjSmOqhqRb0E5oZJQB gBbuF2AkOPXJdy9wu9uXptogqCEYWp9YPgf7pJDrbjhtI8xnClLPxhbyMQ0WazHEuNTh 8c7hdmE+bm9T46LghN3g82myImXBvLo4NcUWMESLzpDSw2xf0y+W4NNN4Dam6z+3qw8G HIFH9WS4/cmTky0VZWzcDbQU+uoUa45n+C2g7ilf2RqmQFwSI0hTlNLHwKG/xkj6W+53 Jj+Cxvbb8MQ7w1QvPzklXrr3zyIRpCMPmH257tHcTE/tFSoLrcUn/nVL0hl4OwuU85PQ hGKg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748501; x=1777353301; 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=KWmbErCVr6fqe1m8tUhwW3uhsG6VTub+0QQ2gOLztV9FAWLeMCu0vG9rTq/vZUeHSk dIacg6+QNWBnOHk2vL5xKFjINqCHoYD8UI5l31HPSRUz4Hw4zx/CkqfGcn0+ak59M6r6 2FZdoDxt7zOcnc8zflyBF5UhCxvKws5R0/O0rJqcpQXKn45rQTNupwVtTFuzfPZg6PRP WXlxvNfIb4XhKcCarR1UjZwy08e8WlpPeCsSCoS1W2vV8+dpOC7UtJeLklNRGDJm3CTy fCmcG5ehKeNxzjaP2jTsQ09XrJgP0dXbOj8mxFK8RU0npZA8CvaK+Til5IW6z6jg0wnU JrLw== X-Gm-Message-State: AOJu0Yye8RL7qh4y+ZNz3+9I6AwyG3umnEdrFDaBcbBuRg2r2vcnZdHo L1ng/02i9x+aGKQGa/Adn1kQRgOIZ6MHVZLKAvvI4J82Xp61HdxKWS4B64G6LMFJQLa3gge3t1Q HELQxXfY= X-Gm-Gg: AeBDietyZPO61oo0C7FSxTYZXMH80EvT25WQ6B0+sPC7PABcNWB9fFU2UVl8s9vdRcK JocYSd9mHNosmJyIb2bdCfehw2pgvpEYLJBVraQ6BY1OIrzHyqVSe5p7QJ1XLC9URB9tXTsTI7i G0rUXTpCVIzznCbrsDAkPQr8mrXcuwS7IcJ0vFHR1tSSiLNmfMvXLRjOmEeexdSFNF7l2BI2Qyq 2BxSpxSNm/DPEzlQdghaunG28q551l/cdNgy7JyuWG+1Cie6ArJVn6j3GqeOPJLMsQ9AFzECC7I hdy5r952tsKaXomXlgKouO5a6Q+OKwHKmBUx53vatcAN/lfz9XUjZLAhDdiW8fgSncACNCHAIpi IXg5tMM/suNg1lc6BOQx4pamnI8aGZGBsfVSASsOVi+TWB1XEsRyS+IaR3rtIRR/LIrFLKx18Ek CgzXCKl5b2/1rdMzJU92BbHtARwp92G2xKm3r3O6SS X-Received: by 2002:a17:902:e746:b0:2ae:504c:ae8a with SMTP id d9443c01a7336-2b5f9f08601mr209357905ad.16.1776748500949; Mon, 20 Apr 2026 22:15:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 29/37] target/arm: Implement F1CVT, F1CVTL, F2CVT, F2CVTL for SME Date: Tue, 21 Apr 2026 15:13:38 +1000 Message-ID: <20260421051346.41106-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748742074158500 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 Tue Apr 21 14:39:43 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=1776748767; cv=none; d=zohomail.com; s=zohoarc; b=aXnxYSu4kzGQC64nprKxXKBymANPAZFvqf1EykIjSgQooZ+UXheiGqjPuqdn5ujdEY8/Gvox02r+Jnjmb8OOSTnq356sVp3FwYwdPtUDWYfXkc9YVW/HnGV5gLXpeigMpUrL6DS7SZ41FNfO0uUjQkcrCbu1QMbXutju4aluEPM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748767; 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=OYJ92YwSppHNsUjV/6DP+i1xNpcJK+jvvhpUDx6rYnbOj5ojcWHF9+efDoxIYBYD8PdQp612ua5JUXMjnSBKeFQicdanEDIOWecEcP02Cirt9DFjvrFtPA1MrADtI8T4+EH+31+AxhDzV39T2FVH4Qa6AKYW+epcmqR0F9eTlCQ= 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 1776748767439557.5534672432566; Mon, 20 Apr 2026 22:19:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sc-0000WX-I3; Tue, 21 Apr 2026 01:15:46 -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 1wF3Rz-0008J2-3v for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:07 -0400 Received: from mail-pj1-x1031.google.com ([2607:f8b0:4864:20::1031]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3Rx-0006nl-2t for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:06 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-35691a231a7so2536612a91.3 for ; Mon, 20 Apr 2026 22:15:04 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.15.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:15:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748503; x=1777353303; 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=EtyXz6i2tuBI3azUy2iFLBeG2wBEu/xNHbdMpIzwcJh+A2idfR4iNvj9KFvejQrgEH Ud0keRSTqnEROixSX7qsUjuWFLI45hrMuCvpQnAq7jsQbr+Xqg1pr315KifRIEaYFWYv LljjwnADoTm0E2Q/UXsAZPe13dA5iMyq2bZkaHiQAFeoB2V1kdvO1Jt0BlSV8Gpnjto7 rZx2yiHChaKJMCMvK22e5O3QJ20LYSIFQugY0ij5WQ53vBsri83OJO/aOIrqc78C5cEs GClukZIP9o1dwB/YxVPReoW5SGG2tv9jMDMzGs8TxC2Un7bJVB0diHLg4Fnax7L9Q6A6 Blyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748503; x=1777353303; 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=N4NAsS9e1/0qEYAkE0ls1N2/CNRuBQJyNIsHgjUh6MJpnvQQu1r7iJFBlnGqiXJ7PC W+oRhwQe8uRwaGRVpJZ7MyGIwp6QQnTtUI2VrJFcKhXG3h5G/PIEsprf9k4ZgUQcjfma +2wV76FWLMc37a3wRS+ZAxPlfGdXz1j6gslzAp3tMj5TJGljIHWZzIuqPzQFLmubDyDn jqvQmwdZuPR+T0xVMRMph4G0uRASk9gg156wFE9xrfNiXoafDFecXT4pub++nb1x2IAg 8lskDFEoKYEb2S1zlRwEVHHetLC2JX0cesNV+3MkranxNwfBJOmvXsHIe6n9h8niszqY XrJA== X-Gm-Message-State: AOJu0Yz4jZnV9ICujaU8WLna1ssL4GdVRoDrfFMKiPTOx9Qs/Cws2Lk+ Xpkc151air8EL4n9OJVj7UYm7J5sPSg2mU8Poqe37AukaipEVhueeQtgRTzw2AHhCZl7NWSqsiY u69tCHDc= X-Gm-Gg: AeBDievpb/u7I0itrE70OLP+3gmMUkXtFDeaqRaKpGUIqI517A+N8MUU6TRr5euYEdd sP2J8fxg9xDP2DbTLUar6iIBrJUGk1lFgXFSRj1gnsBQ66VsMBTD8XrSzgwhYO4K8pD3p3poYfr wJyjk7Kx/4nIz+tA5SbNvLuCoytGMuFqCkZz5Fi3izsCBK/xx8E7f78PgKZvX97Wn7urM4uR6Ii zSfcZ9R5+tYQX5a7e9Kci2K+SIPa5DVhDu7WSPBuKgnUnDXTHcD/iWuTPOuLwkdxI7+5UcQSZQ9 Jhgxas8heNEiBSB0nxtL0leOfggrXTxWcLvkHBBHLFOaqTUT9rAkTJJQHwlACeNgtDn8mxdUX/w NnwP2MCq0FTyUJSzYz2UpfsLZ5xNgN3g92gsAM0QFQ/XE1F1ycLry3ibV9RcRQh34fpswlrOYIM 4GNr8/F0H9KEMli+SjCWWCCp8mdcDs7grFiOT7VZCv X-Received: by 2002:a17:902:d592:b0:2b0:ccad:de1a with SMTP id d9443c01a7336-2b5f9f3aa58mr158637985ad.30.1776748503316; Mon, 20 Apr 2026 22:15:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 30/37] target/arm: Implement BFCVTN for SVE Date: Tue, 21 Apr 2026 15:13:39 +1000 Message-ID: <20260421051346.41106-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1031; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1031.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748770215154100 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 Tue Apr 21 14:39:43 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=1776748666; cv=none; d=zohomail.com; s=zohoarc; b=j+Z4rppwrwbFI+mMY0dnqufWXW+gRukwtOL6z49gu1TgMmrqp4ObfU66kh+bC2Gt7HOD8U0OshjYrU/YfBuKb9kkXLhfFFziL4kFiVm656TK1ZARHl7hmgUo1Io58xRlmxyYUhQNbV+vhBbZ/Da7AMMhXC8jFRiDIBnt0RJ2Uq4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748666; 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=LvDzra/Fooc2YFhwJjyL490YPZkQOllbg+9q5jPf0CFV+SnW5W9cxbboh7pF5aceo2FzyA1p/09/TA8Q3pR18+BFfEnFqQ0wHMyTXSjn1IlABOwsHuRBEDLZvvOGoxEv7fSfbBRJmlgH3q7RADT13IO2RubuCd52eXn9d7gTYBY= 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 1776748666966225.5119323302573; Mon, 20 Apr 2026 22:17:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sd-0000Xm-HS; Tue, 21 Apr 2026 01:15: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 1wF3S2-0008Lm-Kw for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:10 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3S0-0006u1-A1 for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:10 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2b2d3a9e149so22216925ad.1 for ; Mon, 20 Apr 2026 22:15:07 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.15.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:15:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748507; x=1777353307; 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=SqabG5VZSFznNG8AD8KB5xF7Wzg9n4txflCIJPW3fFNJjG+mYWcRrwJyFjkF8r/2Xo KjGmMCvWfVHLxiKTVYmiWjYoJ5OpBYZGrghGtSRXK1FxeUYiSVDC8nl2pTJRDi7fjD0p SrOXRRRL5oQRAe89jamar3F+wP4s0jb+LTzHRmhd3tCIKKvUDQNqY+43IMbU8QGVRI2T FnuxX1DzVIgAeQkXl4c06N2icQmyXK+y3WbZo6JaQgqaK845wI/0SH8nCb3TM2cHcDux wg9/Sg/neus6YO9TYsRldhsGzWGQP2eoK01iIR48gh6fkF5WMKBPS6fy9IhnpBpSHRnA 2jPw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748507; x=1777353307; 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=jkq310lqDBd694kgktVBlVEwjRjSXWIFVZ8jsmHLrVH/b5CZMalgHPECF0yX7vbC9H /RzSAZrkvVosQlf921gd0qW95CUTizOQk/k/1gaBKDgFilP4JREgRdPTIFPVSDB6xYva ZgCFMSgV8LowroNHY1ne2EDDe+mVBJOWGt98MB6smOz4zsAvG4wvEslatC4nP/2pkG7M nPzJBSSvPrZv598HnDzXJO2mQvsrEQm3cQGnJUpEiHezFtd47+YFHBBNFpgQvFGYuaDM FoctloAhb0Xryu4+OhD+gaXoyzX0sU79wlhc4ZKSjZlsHjWebZ25D5OgilESH/5qqhaY 4Zbg== X-Gm-Message-State: AOJu0YzeSGdGM3Hv78NN4W6Kv0NPjf04YmHT0XT4Y0TYygk4GutlKHr9 V62keDOOuX//0IeMls5HFXdseexqR1TeKpxDwIZJLdIH8jUnlsqDlqhPsyxgqND93rW+jsZtt6Z z+nVkJ68= X-Gm-Gg: AeBDieuH53D+Y6PwMSLVO3dGJdqMe0Rk+u0ZrJzG+wEfocw+eoLw677Hsfu1t+yI5Fh m74QNPgvYplY8TmQM/NMEuKB6cMNd+uR1Nmb2yEc2/ASUq8NIY958r9QX4JC6qgSMKobag6RWDO uOn+wynJxbUKPP8W9h4Ccy0IxTM3KlwyWzTPnY9QGcB87jcxdp1kvivjAC1GvpjM721d6uiFxgM 7nytYTAZJrKk61rWfjKQq+53tkFDKT23AnfUWJXLjX3HrlYoynJcPhtrAvw55NjUgFBowyNQwLk ux0jthS1YpxoSnCaPl55mDTkdupsP2drr6PwP+NF1E+fNXqUHiuh5TfHayxWNGtFu18QzRB90hV z31ZvnNoV9AWGWFFjDjgTeG3gtlhd7eihEqo/4dLn8VGKkhoLFRYs6bKZ1HH5J6qoRVdZDGzNQu YXeYgMLv9fFWIslxVgcxiWVrGQw6t2lU66rQD5mNaJ X-Received: by 2002:a17:902:f541:b0:2b0:4f7a:1958 with SMTP id d9443c01a7336-2b5f9efa280mr147131115ad.29.1776748505629; Mon, 20 Apr 2026 22:15:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 31/37] target/arm: Implement FCVTN (16- to 8-bit fp) for AdvSIMD Date: Tue, 21 Apr 2026 15:13:40 +1000 Message-ID: <20260421051346.41106-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748668740154100 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 Tue Apr 21 14:39:43 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=1776748834; cv=none; d=zohomail.com; s=zohoarc; b=ilSJZeeQV/EOjyRJ9YBa0rXwsILzFeWLq2nWwMjkPWDqq/dGbfEbFfCOaXmc2KZtuJx/MrR1iSJr2l0wsQPYtA63rpj68N+Z+Vw2A8IK2UgEVFnpXYdq3/niqf6Q/UPb3AYixMhw/3YQKpiof0HqJb9XOODzt3xfNo9Sf2NC4lY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748834; 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=NHzOtwA+5lh9ByVeNGm0DcdAm+qS/X2U7faelgYEEcpTzK1jH+SX4LPHst/CM3kucpZDHmmutKAI+3dRSAWJu09B3unkIFkfZz/mROdPKag5CBjMYPK6guA1FaJcgLCi7Gc34ECZz99GaNW4USOu6Z7EZVUIV00qDkOzclQ75+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 1776748834143699.3555082839932; Mon, 20 Apr 2026 22:20:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sc-0000WQ-CD; Tue, 21 Apr 2026 01:15:46 -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 1wF3S3-0008Ne-MN for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:12 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3S1-0006uK-Qy for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:11 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2b24fdac394so36281275ad.3 for ; Mon, 20 Apr 2026 22:15:09 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.15.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:15:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748508; x=1777353308; 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=EmSjA5haqH6rZein6PbDTFbgvLMb4zSkQdHsyvIcmC+A0cOvr8yzkO24Qi0dqry/LD BOYTyp8IHW58KdBxTbdB+r0eo2Xzu76Ks5q+1l1BiVXVf8XOsimURDgM32Ac7hKh0ssb /JkfcVNF8Kpydf6XUw74nnEruTp8LjqZ5kNRUaO7HM+fc8xfZWTYz6e6LMM/3v3dUJ0J ptfRaSMugLq0gkDyx/kgHvreA0M3Xe5/WimVm78x08z9P/865GL4G2SKxj+HT+XkLQuk dvvavgxpfAsjbpqsm5iSgAY2bgZ263dR0cJJNuCVx9RbTMV4uNPj1/qlkujQqSu8BYyv 1lYg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748508; x=1777353308; 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=JRClgedP+1Syt/9esMDgKZA/RUqa+/4DRRaWAo+g6Np7lQhkEOROYRIJE7j1nLtyKt ApCGRtXxEGPKjlF8SL4AavqX91DoGgpGEfHVtTpJRKPEwyDvdduD4w3xLZWy9KgczUl+ oCHAkHsHyuupAn+9X+iQy/QUjCuPaXfgaFi/VUxneX22hVesurRHMmAhreu1mYgYrzLV EhS6Sh1SxvnydkkBgIuP/bsSQIk6MyEmJ7VqaTawhin4FFHQkG7B5wU+1csAgheaGwXH 5XrMIYlOqvhhIMPP+dyTQPjck33bNFovmILVWDSJ/51YpiZ/UpET1Z5wDzDv3/SfeTeG wVog== X-Gm-Message-State: AOJu0YyMYLCvnC51hAGYLDht91U9N2GtWb5HRFAaz7c0zxSxPdj13zJI z1yoAfew0BksH+OOpLrgS7Q5urat9K8ok7ERJHpHXcbnZIdRejasU2rsZ7N3ASsbNDo0luOpWi8 A0xznSfs= X-Gm-Gg: AeBDieu0viuBf58hV3ssbrmO/yy0PFm8pn5yOLS76EgFnoon8tI9yf4h/X+LOaifiUz kEJEwDaommqzj9SpXfLPDeCW5NE60Gn45wK3tbwmpCzmoNN2J9XnaxlAU/epqHs7VnjScK7j6/J u92/8PLr+HchykKK0ZRFeOuhCy7SR4fe4pNk+vjfltT4SRMq23DP+tp3tfKUCgBkYOUJVUtL4cN rp4s9+MZlBaNpukZNtjTT/uR+N1/rZA/2ySKbse7B+iuyswPe4HqXnX+8xsGSNWrm8f0a8N03PZ l2aTYgP/Vrb1RZ8DZhHBYvtaY2eqBR/4h9C2EzjEh9hILpldb31dL2prMcxH3WdXm053EkPspDc a2z10IWImp9M2Jd1DWyk4bJZCaN/d55t+xgDCXzDsLGPBB7yzfQaz8oGmVQBKvRLaVK2u+71d4D V3/glhTsIAo3bHU+5gX7f1MvS6ZUwyEuQduPR3g5zb X-Received: by 2002:a17:902:7207:b0:2ae:ced7:4650 with SMTP id d9443c01a7336-2b5f9f7d14emr113637475ad.24.1776748508012; Mon, 20 Apr 2026 22:15:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 32/37] target/arm: Implement FCVTN, FCVTN2 (32- to 8-bit fp) for AdvSIMD Date: Tue, 21 Apr 2026 15:13:41 +1000 Message-ID: <20260421051346.41106-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748835598154100 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 Tue Apr 21 14:39:43 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=1776748593; cv=none; d=zohomail.com; s=zohoarc; b=ZvrfaOGzkV7ra1t6YpHzjnhFdolgAUiLT8d5xlsKqhDK3jM6xFp4HTItsAnUbU056/79PP7oC+7Z7Shxe7KibHZP+J7EixryJSWaHFoZLTN+j3KM9nY7GF7nbCHRoqG7lr8+nABe+A+naLR723+MyWYf0LFgd7F1Q42oEhi5dOc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748593; 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=KUL+p8ImWYLPWjxARyySJeiucqvteEHxTrTKRCx0wB5AKRDY8n2kIcKjea4sht/V9Qafq75bhecLk8HP8FEkB0P9T4CU0aqchpf/z1NlVv+mcZ9TAD10nUf4koEODp4Gx+0FIxlzGldM1dl6YuKs7IocEisUxK1dtX07jrLng/Q= 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 1776748593013249.17333897101105; Mon, 20 Apr 2026 22:16:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sk-0000fG-QF; Tue, 21 Apr 2026 01:16: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 1wF3S7-0008To-AS for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:17 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3S4-0006uu-QX for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:14 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2aaed195901so16376575ad.0 for ; Mon, 20 Apr 2026 22:15:11 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.15.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:15:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748510; x=1777353310; 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=aihioRRMKsEb9WL+alvjMv2g36IDJhbfqtX1w+xhsTO0HO5+1kBvCOdf/yDUUr2gbb osSK+kAvi+yxbQcpllq/eS4CAOwy3hrsccRQzquweep6z8ZD4/gZxx7CmP6rboBHvFvH fZfmXx2qPofenr15BDv5YPlUBNeBpuUyW1SX7bi1P6DIa/VKW4R/D5gPKsYJ46R/xriL lrp2dhhgCw/2iB5nxO97ocbQOEAqtjRbOUEKyyoVCkH+r1vRvKB/2mTK2mcyHlvSmfxH A3ortx+JshUtbuqRFE/R1Wo8eGaq3AUbDiLbbTlA2BJg9f61Lfa0Kl3rk9eKspqMhJSY EH6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748510; x=1777353310; 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=TgMJlSOe1KVnXaRKfZ50d4Nq9+ylkqHs2M16KyXANA0sKGytB8lEv4nrYOCyNq9wkX DHqoj6obcjE+huQKFbsjazZnbF/RjZFuxpomaoDWPpyR9c9PcMv+z9ZnVWiL3u4xWUs1 AUgTLfrjeQxGUMVNrhv3gtvecZ/W1yXZ42NSuW0pCHPXeWE0xv5+u6PT9l9oHKZww0ag lCJCgAkerhPRaEX3l+1Is3i5NDAsmB9iU5dzk9xoeqdwi4LNsCEb+TNtYk+oXQ9Ii0Ns /5Dh6leuCEVE3v6ocWYxy3fG2fh9rA4N7DlUuLBC4gpoFGiI8YOf1lQzdFcGByyfYFRL dTRQ== X-Gm-Message-State: AOJu0YwHz5l3LSS2plSyUE2Dz+WKeAnk5GpSJKPG2+tzn9zxFr0HgFBq lMgWn1vkIe6G8YtaYLAnEPS6cItiFkZ9XeRfcCCaLFgoMihE1DXH3fM7dbJrHpKivFLeUAZNJuQ 2BDQRe9o= X-Gm-Gg: AeBDieskfPeUfkfo0QCGRen3lo2akSerTHwckrQUfKFlG+5Q8oQ7Gzc3PGI90uwjZTS EGpBB0fgnWr9qntmUiaWjId5/oJXSSxCrFs2BHbGE94bM2Jd1SQPAND4YmoifnGo7Hau3UBz5mk JDuHeiTgksuEWWosFtQMP9JB/TiW5vKcC8X2G4CSEvb/5MNEIZN504hmTKSaYY6zLZBSpLAohCf 2X2LoiErb7/jQjG7fMidKWB+vl+ayVZjzJBneMR8d8WW9NRFmVfBQG5tkYVTxmeqng1iiBn+SZ6 e+9hwFEFkeyTWh4EJXY8RFVD8dErN5juDT1el8nwCzqDwhh4ufC14W97Ec+C8KeASPxUavm/EEI QwbahrcbznkC253vm792Szq+uo79wgFE3HL2C5UrkBoXPr8DxU8FHUaG6uYW8vQO2BkuvthKsXe RHMKWWnPzc3+hd8r/TZWwIycNrG9W1sJbn8wsDvCJCDLCxU/yKCh0= X-Received: by 2002:a17:902:a98a:b0:2ae:5eab:132e with SMTP id d9443c01a7336-2b5f9eb0965mr121396715ad.12.1776748510351; Mon, 20 Apr 2026 22:15:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 33/37] target/arm: Implement FCVTN (16- to 8-bit fp) for SVE Date: Tue, 21 Apr 2026 15:13:42 +1000 Message-ID: <20260421051346.41106-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748593487158500 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 Tue Apr 21 14:39:43 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=1776748860; cv=none; d=zohomail.com; s=zohoarc; b=lV4BLy3D+9MPyZMgJo+z/27MvzHxzlSq7CBLsrcTsPPfbs9FMDbgaykWbG4w4XCf5iyEhy8TRk2svD+yYemeo4zQefDOIyk6AOeQFniyugJUMKtKitJfSf6jE6aCRilp0tbNdvLYjE1CBMs3LN+rWGvWxT/JJm/XhOWrG0ZYeLE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748860; 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=E8oIzdU6JB1FLZSb7xmEeiVsR3tbr5hwzU1+88BHKg+NHEk1G9gd3teSINg2rcEDEykqzPbFm7Vty+QPNLakp+JFsbIdV7SlgqEOy/DW0lWbMFzWnc33feheeGgLoFmH4pJO1MEv3g3/BG3EYZu3q2TJ37qOATrAVxLD/F1hZdI= 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 1776748860768639.5280828835006; Mon, 20 Apr 2026 22:21:00 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sc-0000Wm-Og; Tue, 21 Apr 2026 01:15:46 -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 1wF3S8-0008Vd-Qh for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:17 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3S6-0006vI-Ns for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:16 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2ab39b111b9so15584985ad.1 for ; Mon, 20 Apr 2026 22:15:14 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.15.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:15:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748513; x=1777353313; 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=AoYY1mAPoknKGzeNIGDJePkIUQDtZsSbsdpxV4bCXXD0WQDY9CizxdSqzdmmUwZYP+ 5TlnxBWAFIFqzjgLbszkCnKTaJ4nmMKblIK3IQqzcVzzceDKIXOC7p999VvJ73a6Ueb5 65gCtPuFz/qnCIsqOl8sjCvMz0aVAjc9aqtk3dTvsNoGfNRGFfMtlPmqH3Du0jJ/L/+X lCr1SNOtf3k6/Rd+yhocu2HQR0winsUDtK1D4N2m22XqoiSYmQOMhJAkkcFdpNbEPluA q+u8TJIWi6gwXFr+KXpkKl4yDIx6z0cyGQ8DuQXfyNBu3xZtONsP3necYYtM18ubH7hx IVng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748513; x=1777353313; 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=btbIuGYe/5YUh9SUDvz2Ko1Mr9XpoSVy3qyWJySZB9M8JRtqBRA6I/+llfWGLULcR6 2PNa7mdWxqA/IXczAwTYBb9WhlRULZeLtoAzmsq6fYZ188TzicVPQiMYWDfasuAXZXOw YErqBjmV0S6pDb118BlBt8/NUU25cLJuP7m4BC06K6d6qIrKZMD7bcylNVEPLuYE3OSj faHxS9T4Wdo+Y/DauWiDOXgOYY9YrmiIvWCwtQRvIambA2aG8MhICOF05mfoCjFLuvu2 lCXZUyLcUHFSxMK+xvFdxCqojEmrVYoQVioqEbJ+WPU1O8HetB4me7bJE96AqYdIjFQx wW4w== X-Gm-Message-State: AOJu0Yyv5PHJcWLMhHh0JLzqDRttOwkzNjLW2f0dniqyaeswT3eWe+w3 OJXNPv8m1MAR65pnOK7FXqAhVt5z77HoOXr7EDStUQNVFF/uc33Pg8X4fz5fPufOUuJc/e5/bls WJPD+cbA= X-Gm-Gg: AeBDieuB+zRy/4qLYLhTPLYST+FvcR7qv8SwNXkhJVrRsTCFoQvrzSzfb5o7onpAzv+ 5UuV9onZKACZBuZfgeyx2bL4Fjgq+2jRove540QIFILmeCqdMXM9Sp5QsMpB+lXaybELFhPDAPe n3Lu45DDA6+SCox+CoqYAAMSNUbaMmF9Xk2I91HWBSUMIwq4o7urqZ8rjDNHYeoY3MsM4rcQlGD JSvoCM8gR6OwPtW+F7a8EabjHFCCG/4JTJyukUY2tL1X3GUm5u1UUpQnaQACY+keJFcmBgHtj0g h0Rx7y2rAFLq412TL+ECIbLDBSEpeaYc9snU1kcV7fVl5+UdmH1Qi9wHROv2i5EaxqH5RUZ2yx8 zs0OzeS7pxGTiYFTvbN/PAdCIUpQ61yxRufAeyZ+aCCLnhv1RCPZfnKaEWRjr+8yBpemj6Bm0ax hgqxcHYwBVYrqLSNw2stB8/lz5ckQOVIH8qE4mZtOA X-Received: by 2002:a17:903:1a45:b0:2b2:65db:8c5f with SMTP id d9443c01a7336-2b5f9f4f562mr175894935ad.27.1776748512724; Mon, 20 Apr 2026 22:15:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 34/37] target/arm: Implement FCVTNB, FCVTNT for SVE Date: Tue, 21 Apr 2026 15:13:43 +1000 Message-ID: <20260421051346.41106-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748862474158500 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 Tue Apr 21 14:39:43 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=1776748758; cv=none; d=zohomail.com; s=zohoarc; b=hKWZZlIQBdQiizhSDtOIkUgtJgwhlEkrEts0DpYgqdbe8tOa8o1HljVniYjXTnKQj06HCk/N3yIwLp8AY91XsuXWDZ8YdwqFr6pzOfy31uKPDcjSbGZchaA0vmIt0y3aHYsMLfLg4PQrNeCHNmyBfx7qwPjuV1D1kFOj3eLm6dM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748758; 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=LkU9lRWp02hcXuV6iip9u50XBndCvtNKy6Jzc8B9t8EM+To/vZSUVmQ2Z/9/W/Gh+oYeKRrXGCX46+iA/emYn9hDW/26x4wlz1MXqI+OLTAaNiIsd9ECPEKzjfw98dMnR+YPBsi8PK27Lvev6wpQG1j+iiarq1xvp9n7/BspqO0= 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 17767487586091009.8779054251914; Mon, 20 Apr 2026 22:19:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sd-0000XO-4u; Tue, 21 Apr 2026 01:15: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 1wF3SA-00005C-KN for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:28 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3S8-0006vm-O5 for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:18 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2b299b3c739so17247565ad.3 for ; Mon, 20 Apr 2026 22:15:16 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.15.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:15:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748515; x=1777353315; 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=Fr3EHE6XIbiz3QMU3BHwOV5CTeIgS6VSV6Gy5hpfxSbc8l2sRkfJv0JijpbJgKJdTz iymClDR2JmBV6EBaHZmEn5JnXZixqnxkJYlz1w6mrIxIschBH1NkWPuU3Y9Etfi/ldjZ nNXZIo8p/jLNCYF7qmG7+rmtVbzrjAJ3RsRh/adc4UFr/OWCBSEqp08stSnPZJ6+wkNb 50/W6gnHuPEhknbIFGOf59PCGMjNqzY41OJ2Eucteap09Er/yvwBvWe8H9bS0wAZjScV /epM3+V9EjD/aR5OkbJ/ve3i0kUk0wsSF0VTrgtTZkjl60nS+zaJ7KYlenNaKtO40syl 0M6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748515; x=1777353315; 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=AI3DGDOf94e2edkqpiWbz+oRGTEjYv0hqR+CcstKXNxQSOzSuhDNNxQVXHnxOVMFx5 kejDZAJ5BHgbhTZnemKpG/r9TrRyP7IFqd0D+xPP5TmgRmwkPQtU+xVPmDMe7+ZHcn9C i6WbXIFqE1KAAwYiHvfq7MvNhicaoAtYJdKesdHX/UWB95SR3ILa/+RhbwF+qUGHGJ2j 7wYFIUMU8BmKsOJd38iEPU4FNsFYTaUvJ38gSMFqj4bIDeRBb8n/nXhDLRVYeDqhwbAR sOyggHedT7q0YlhBb7dkTjG/Vgo9Eo1S7hndJtkmV2onrvLYm2Ui6KH0KRgHnMlr8xop UzhQ== X-Gm-Message-State: AOJu0YwdwK6JSNLHTdRSp+mS8UEh2VG9u0Mp8J+Nimydveg4YO9r9PXD VqsReZJVCn9LIZKUrmuGbES+MRA2kr307DMoXnKYfELD/BNM4bCwvvSXpqQEwV4lvHpNAlahNPg hL/QEjGE= X-Gm-Gg: AeBDiesrMuyCkrWUSHMAk9sGiF+bezSYhalyR8BnOgB00DnQKsLn1zKfgwnLQeb6940 CxsHBiVPe5HBnocNDQuqaava+59cav/G01NDEbxRffkvC7xb0bpxPG/5niDz++o7sLPEDHDy8x2 OA6nlQadxtuGSTJ9oGvxfo6r/TyvbyURyh6chkGzTs2c+q+Sn7ADOgAxvZdKayzGLL6UTXZkai8 HzaS4707zQbbwYDAt06fOjWj57lzzuTHqpHdcUhO2sYpJThfCox+/C1Rmm5OyQJpAlF71R8sw7a jIx6txemrqXZVFTqnnqzQ9Ux3rpBGZpXMTJkwsEnmFh2HSfaFXCf7/VRJWbIwVutdmUz+0Vr7YJ sSbbIsrNCzMqsq479Ug3oLse7h4q6rycIM94b4knfQV381r4Q1XCqAfxuCqROfmtF7hVOydLIrG jXZnvhqTHZLziTTviqtNiVdN0z1fVZKN/Jod/riBSJC7SjqQ4Jg+A= X-Received: by 2002:a17:903:166e:b0:2b0:a957:304 with SMTP id d9443c01a7336-2b5f9e85b42mr178905355ad.6.1776748515180; Mon, 20 Apr 2026 22:15:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 35/37] target/arm: Implement FCVT (FP16 to FP8) for SME Date: Tue, 21 Apr 2026 15:13:44 +1000 Message-ID: <20260421051346.41106-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748760080158501 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 Tue Apr 21 14:39:43 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=1776748610; cv=none; d=zohomail.com; s=zohoarc; b=To5e1aEjZai4qZ1gZpwEBNzKyP/xQ8I775AhLJ64B1GpKvd4MNm7NEMm8GBjF9vGQPEggqJTKUThwXIgvLdnnVMPOKxGGcd+FZyC+zdUjw1fujKQ0x2ojWYEsbTWvxLcBnLseEvvhYtvMLeIiVm7JBniWaZ1lUIfkAe91iVnkMo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748610; 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=BJofhumpau3+oFqqgFwu4vSloPhpF140nTmYZjsTEx+OFBV3TllTp5Jrm5fXBu/GZqVGjwXUWDrqzfMcBtiv4DmkYJf1XFWD2+HoyVR8Bj6yJHT3XP7QjKpiUPxccz9frDn3sZMPq7Nt+isKJs1vmPYSxWuhB5zT/L8ypDhKfGQ= 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 1776748610565113.27855989124737; Mon, 20 Apr 2026 22:16:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3TG-0001FH-Q7; Tue, 21 Apr 2026 01:16: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 1wF3SF-00005T-5O for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:31 -0400 Received: from mail-pg1-x531.google.com ([2607:f8b0:4864:20::531]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3SC-0006wK-Ak for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:22 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-c76b9efc299so1472737a12.0 for ; Mon, 20 Apr 2026 22:15:18 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.15.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:15:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748518; x=1777353318; 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=c0ADSwEiGQe4Fwc2BBFFK+jkd4l6W/BlJOr3bULl3Q6pYRW7mFZgg45PcpyjFnEkgj G4891Fg3Iz/Z2lIz9dvXmoiM6AQoIvLAWIItFlQKVeL1I87bQkDcW0GZRtE7PlEP/mle qzVj1D1y6eA8LOwOQfTwL2+A1be8ZuIeT2cMxwGwtZU+0EXEJKZbFyJdZUvtea2PZLOc s0tDuLT/7tCQfMbNBZbl06eJuSkJ7M5DDdD0iwikBDcmKxmm6NOYoJlE8GOCbP9xUZzC ZzO/bz8GvWwumsFDDnSS6ulAMGXgDR/WRiSsUmoogHYOvzZYsBvqCWPPhHcoCPd7UXYk uPOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748518; x=1777353318; 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=cEm6cpMxp7X66GqSjgprBUiKtBdTXEUT/I1HCpvNJzpb3E1nPe/tYvncoInHtVpXIn pmX2MScaDXwpeKkWJhP9ae2bzcMafzc5OUMuoPIOtjqxGsPa5pjjhWBZFLd0CHcGGqis zvnwj4byxZPprGPrHp0aCj/wk8Chnj73DX6Oj9uKVr51qeBBhOH6pQaPG6ixsC4C45Nh oXF+lTReWiRHZk0BBMnWeWo26gKSlSOFTyUtMXebucBj06f7eihyHb43xzqzP4UwVX/I wSzvosZRgT7YZR9jO5lbxql2t0Ki9zvOuuwBlwv0Qgg9VmKLCwCuyvJg8BlwFw15Q6Nu Qn5Q== X-Gm-Message-State: AOJu0Yx5PthO8zGchG1KYC8hBSP1X2rG8p8B895SS20LQBVlXIAeqiHI dKkLUk9hJGmm/hau2MYruuGDVZdrwldW8yRruu93gyN36Y3jkXpgHgfnwjt++v21N/nv13oFbKQ TpzUbVss= X-Gm-Gg: AeBDievCXATYrPQb2L7h+Q6SK6G2puzOR+56FZ2PWDImyW+AwKh/A287DduECastyH0 5bRSLMewJddD6SrvhpqDNCiUyFqn8HtdlXb890HpEHr77T/sB1qxD8FLZsoLh6vflWWAQWZG0lJ F2q2uja4xpZMsuXtPT1TrQnQOkTR81mOb2AnqLVtYY32BNc9FaY0+mOuXbEm1zp1AsDiGJrgUWy hYf9dAAfRMzwSyYbh32vsQ4ZeYHbA5TYIjoBnk/HHakS8nnLkycrp3nuGzgyTtwmIiswHetk3ZD f26+bQ/UwzO+XBw5N7b5ik6z1LO0clyoKedEB4S5lowk3h/+7Djmji6+K7SMyH2UBVjCMgSp23F qnyM6BmNYz1Rg1w6vQZ1ADP+ZJqNcb4r9VO5HJqtT2sekcc9bXWP85iJ9m5wYPg4/tCp5ijLDEv mkBSjrGHcJaWD5szLj3nCnl/AX157kalOr8k4n1+c5y6b0AuBJnxk= X-Received: by 2002:a17:902:930b:b0:2b2:67ca:5fff with SMTP id d9443c01a7336-2b5f9fd24b7mr118390615ad.28.1776748517640; Mon, 20 Apr 2026 22:15:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 36/37] target/arm: Implement FCVT, FCVTN (FP32 to FP8) for SME Date: Tue, 21 Apr 2026 15:13:45 +1000 Message-ID: <20260421051346.41106-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-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::531; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x531.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: 1776748612091154100 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 Tue Apr 21 14:39:43 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=1776748742; cv=none; d=zohomail.com; s=zohoarc; b=Q2d39HDjzhwIwEZrE/1Ww8vpCUI1C/dbQEoJ8rAZuDeDpwZU29Y4PPzGIGKUosV0ZAUWEI35AapeKY/TVZx5ZnWdJsBIpzqiCRGRsMrKEljBWlQcQSOmfPmzwH9QzMuTH5HdF+ZugHpmqqOCv0QtlSTZ1acC6jqzQ4+m3qfhaq8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1776748742; 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=tTWYsrlrSDgJMZnV9Rs9ckmBr1fuOPVbeNXWFzp4dX4=; b=FOQM+s0c7hm4aiWD/zlr7kJoxcfKfYo/QIuew1ij39oJVeZwiLUFzweea1vfrXmh5GeHsvEWg+VvXU52NZnVhjDe43BHrjkULFQrqoWr2quSrNHK9yjecUNq6olyokLb29kpk5xQSVmpjHnBN8wH6iIyBJQc1dCFxzZ+WjZUI8s= 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 1776748742627992.5161728172864; Mon, 20 Apr 2026 22:19:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wF3Sf-0000Yc-D5; Tue, 21 Apr 2026 01:15: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 1wF3SG-00005Z-Oc for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:34 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wF3SD-0006wa-CR for qemu-devel@nongnu.org; Tue, 21 Apr 2026 01:15:24 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2addb31945aso24957515ad.1 for ; Mon, 20 Apr 2026 22:15:20 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2b5fab0cddfsm174631715ad.49.2026.04.20.22.15.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Apr 2026 22:15:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1776748520; x=1777353320; 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=tTWYsrlrSDgJMZnV9Rs9ckmBr1fuOPVbeNXWFzp4dX4=; b=o8Uk4K7WvtMb75ViyMAbgDfqH3LS1yhzw9O6VCboYZr8rMMgnTVwHx4J3QEkBAsfLj vyscZKCQREfACOA4XZ/PJqKN1p4aTck4rLkAvZ6YYW2NvtPaJadUrhpyu1Kf6TXDZmZx 0pXWxcTYkMWV1m33Vr5Awzrb+AEpjUGhXTruS9urfmU8NC1yRDH2gzPBqJdR9R0+OvEw f/LT2xzpvMpHvXqjM24V28PVEoGjeNQeXZswJ80eEfDVVslZdS3HSy2a1fRA1djo3Qin 4CZBBP1uId2TkwzT/wnjlyPWlVw7PVh+ZvbEGQRdGrT4pVvF22rlCfsL7hCKz7XZMi+p 5sFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776748520; x=1777353320; 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=tTWYsrlrSDgJMZnV9Rs9ckmBr1fuOPVbeNXWFzp4dX4=; b=OBiyRbozfGVwANzXlQxTLHi4J1h9JrqVYuidmTH/imz+q/xbPNIltw9OCeVSj+wC/8 AdipUPx6QSEjlvwfHhdTKI6i/iMXtNupZHrX4BSMLRv9kodpOlEVUwnaVqMSsod9hN/L TsQqIYZAkn43u2IGEVCT+WMA5NVNDLNGdIJWx8Hu/JN/1pRTaEGHURir+Y1LT6iPh8Xd J1uixvV8o2QmgCppY8sGcXC0A47BChT2cuG13qUP9oDHkGqC2GMjpgBxvrMkRI2UvT9e LiifbB55G7d01ShC3VsNxZgPXr/W2pOLMRlEYB9KAx6irs/CS5z20qih1LCbSKqucpeq 8GQw== X-Gm-Message-State: AOJu0YwFNaJvqOewKT9XyAIUVmZ0Ulp55o2qhmJTYcnGcitKPFDILUnG CnzEzqj6F/vU1rAyo59HKS8R4MHSopLRRmzi1DGs8LCzJ8azQ65jEHzyMPApdgNtRrd3pEtD65N XISFZXP8= X-Gm-Gg: AeBDieslbvGCcsjOzYVffEUE8G8jtYir9B9z2tqnScSDeZKkptqPoioEgjCHai8S1Ci XroZPPUjq/f9jGl1oOuP9tBIrQovVEonx+kqy4kvpT778RpyJgplo4N/3EQk8MJe2MSMuIKHQEb EU3CSkFzpFx6LRSKQTgUCamIAx0z8ZvW0/gAx3VsocA8/0uDWbTagV4zz3Ash/tSxtqGX2BItR4 E+vvwDN3hWpV8Ni6s2iAFDV/5vSirSt6trHvaWb3wuctOYoWIg2ExYzuWrGhsSwGJaZ0OdWnxTG e6/7jZHhLtlBhKp6Q5Pv30TR98YKlQORmKaOxmXWeGbM89a2Dp0jqFW0uZwgklQY02hazV3/auT jhi+/jQkeyS2anESQOXoj4ZsEnmhn2mU9kvNY75WwDqCgr0ZtliAgBECMYbUP6ZbcDznwMxNmVl piwrarpKtsBq46COfwjiQihvLIpurbvudV+0ujHn5DPPLoF69iK/0= X-Received: by 2002:a17:903:3d49:b0:2b2:3eec:c75f with SMTP id d9443c01a7336-2b5f9f638f0mr131009515ad.28.1776748519874; Mon, 20 Apr 2026 22:15:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 37/37] target/arm: Enable FEAT_FP8 for -cpu max Date: Tue, 21 Apr 2026 15:13:46 +1000 Message-ID: <20260421051346.41106-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260421051346.41106-1-richard.henderson@linaro.org> References: <20260421051346.41106-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1776748743821154100 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 40ed799fb8..f0cb03fdf1 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1380,6 +1380,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 fda73d3d07..b0be880ae6 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