From nobody Sat May 30 18:37:42 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=1778977875; cv=none; d=zohomail.com; s=zohoarc; b=IRjx9TppbAmvQeXUsCUUCnh1Yp/NyYMroiskpEFH9oFZBPL++mvZUfiLyuXwspsU85pVH8qNFZKRCSUyr+0oR5t2zKKKDYH50+H6A3bDypdQYtde3zuOcSeNJPTfKeDv6+VAKV4mLS7ipUkUOZh3waNBB12gpJOLv9vcqLhYUBY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977875; 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=FjP/qEuf/tycrqFw+mSyrMAF+WG+DYMnwHYOmyGsbr4=; b=HVOEsL/MmD7xhVYvbgqSeA1JDMOIlFNIK6+9vu8HC+k8EAwfQw1pxPvo6ezGm/igVRaYr+AS4cCSGyPeptAY0fIEWV+iUFFqn0IZKQF/VJ/9+i4aQ5Dl17vE8Mer/OmuK4pMTKfNPAh6089Ry33xaDzWsPDFlIlxXTuI9gb1V0U= 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 1778977875393802.5501671349506; Sat, 16 May 2026 17:31:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPP7-0007PX-Pd; Sat, 16 May 2026 20:30:49 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOT-00073M-Pm for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:13 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOP-0004lz-LS for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:08 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-835c98b659eso962161b3a.0 for ; Sat, 16 May 2026 17:30:05 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977804; x=1779582604; 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=FjP/qEuf/tycrqFw+mSyrMAF+WG+DYMnwHYOmyGsbr4=; b=S1ti30OevQ3yKzdpFa14Czi9fWKejfeJC/8fniQZmKbJwuMEE46tFymK11c74V5A5E fTMqCumV8TmLjrLwd5pwSPnjx3FhEG523dAZHPccAs9WONCMKACz0VG1Sc+zZkZ1eQhP +lKNAQ5yoi2EUqgB5WkL+Es00zN1VLZTJ9hAXJlcd7fLLY5jN/+/TbQT0FhZymwxe5wy qll6yXqk/1qrJfu498kFx8WJVmTsbE7mwQujNSxijOCATwPW7f6vzKXTz6poVZqhdcQk PVnx/upBwufttX3Yr1GXVzCwgk9xcUtn6uf4ZWgZF+xT+Xblp5mxf/qhVbi+KubKbl1C 5nfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977804; x=1779582604; 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=FjP/qEuf/tycrqFw+mSyrMAF+WG+DYMnwHYOmyGsbr4=; b=BtJlsT3rRMhDWcYP2xey9MLAuR53I/TD4DTCjlcktBnGo0bXkZXTYUxbJkCSzb+i4f p952k5jQGEfIl1msMafEXjgB4BcWjWIn5kQ1nqiiybYR2hBUBStW1cy+pEnKqkIgSOZt XK3uYFX6skZ3pDue58X3BXxPuPDN6Z0h42Bk69NjFUJWblsx4eodJHCxzDRtCSf0n1We dfgIh4zyoug1OLTKjwrGNTZ+kOX1SjmJv+coTlW9up7k2gmsWT2pCPNLH1M4InGLopAD Bog6WZQ1G30xefiIQWqD4kX19u8fWXABMmsdCjNDL06d9NPZwhLAHcRMDkOLTW7vSJBs YWYw== X-Gm-Message-State: AOJu0Ywc06+ohwE7fqcpnzwDNjFXsDQJ6RuGJneC2omWDsN7U/a4G/gq EnZSu9i5lILEz+VL3Q8Wefq/mmNpcRb5AMJjguEMdo8zMiuMB05kbEk8Xj6gMINlDZW91Zwp/Fa e/F5Y X-Gm-Gg: Acq92OE/rtmaCXZR551XNJYhdjZOXTjfOY3RdSfklsJaYMBdJXKo5voC4CsJ20wQ7QO HHYLEU92fO6JOvLeux9zhHydq4lt6EkPOBRwy5at3SfNLqkypl77ogCz8LFJNIPUxfv0iaRG/zA XL8mKnIeAVHAcrt0lCGWvVA3jGZyhg/fo58dEUnz/5vS3iHuv3Od+HipRnj3SIrdFCqJ/UAAfhD 5G+8ODdYazCarBnn/1VR9IpMTTXh4ooC5PTVRSiLJme/Hy6JgPIwhdcNJ1CQ5juOcd3FRi1azFk Ctb9ZoKI8oq7F14ounZC03/yO/M26B2IatCG8KteNa49MQkCZsIC2x7lb8qQrpA1V6cZhjqUlp6 0rJIoQBRSRv5OHtNS279Yf7db/rX/zM+ldj2bh3hjJWqIwsHHQKooFAAQygATyv0YTmlfQSLhAM P0hDYcNY0SCpATyLpCDqqWYj3oIUVv X-Received: by 2002:a05:6a00:ac3:b0:82c:9e00:f958 with SMTP id d2e1a72fcca58-83f33a1c9fdmr10663267b3a.0.1778977803925; Sat, 16 May 2026 17:30:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 01/63] target/arm: Implement ID_AA64ISAR3 Date: Sat, 16 May 2026 17:29:00 -0700 Message-ID: <20260517003002.321430-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778977875909158500 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 4e44245a8b..50776347a5 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 8240f1b384..6ad01b345f 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6519,11 +6519,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, @@ -6752,6 +6752,10 @@ void register_cp_regs_for_features(ARMCPU *cpu) R_ID_AA64ISAR2_BC_MASK | R_ID_AA64ISAR2_RPRFM_MASK | R_ID_AA64ISAR2_CSSC_MASK }, + { .name =3D "ID_AA64ISAR3_EL1", + .exported_bits =3D R_ID_AA64ISAR3_FAMINMAX_MASK | + R_ID_AA64ISAR3_LSFE_MASK | + R_ID_AA64ISAR3_FPRCVT_MASK }, { .name =3D "ID_AA64ISAR*_EL1_RESERVED", .is_glob =3D true }, }; diff --git a/target/arm/cpu-sysregs.h.inc b/target/arm/cpu-sysregs.h.inc index 3d1ed40f04..b99579f773 100644 --- a/target/arm/cpu-sysregs.h.inc +++ b/target/arm/cpu-sysregs.h.inc @@ -10,6 +10,7 @@ DEF(ID_AA64AFR1_EL1, 3, 0, 0, 5, 5) DEF(ID_AA64ISAR0_EL1, 3, 0, 0, 6, 0) DEF(ID_AA64ISAR1_EL1, 3, 0, 0, 6, 1) DEF(ID_AA64ISAR2_EL1, 3, 0, 0, 6, 2) +DEF(ID_AA64ISAR3_EL1, 3, 0, 0, 6, 3) DEF(ID_AA64MMFR0_EL1, 3, 0, 0, 7, 0) DEF(ID_AA64MMFR1_EL1, 3, 0, 0, 7, 1) DEF(ID_AA64MMFR2_EL1, 3, 0, 0, 7, 2) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978096; cv=none; d=zohomail.com; s=zohoarc; b=ghsKKcnbsgd8kVtGXDDK3m6C1RadS/aFRjBLxSlZVi0tExXXRSHGuou8WExAIWuTiwx3h76AEG/1IcUh8uRGRkTDZ6ENPYVAuFMrR4ptyFeWcqhuWeUrjmT3o+csXaYTh1r8DpDjCS1i71RO852frPwKGyLDoGuE/7zWAIghBco= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978096; 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=9W1EBfH4i3cptA357mAisKZHMw8L8t6q4cd+UQXFGVY=; b=Ej+FST5J/G6k6uiOYfkzNSZcID05TCVgOIiHlhMyzSPpaXfyGUn1GxrrU0B0B83gWLlNHVaahjCFvagl7Ywp/dsy5FWZvOlZT/fHoQu2U8tKXhEfcvXqV9kJF7brxM/ZUZ+N6c73una/JLvEkpUMVapqf/zzWpruCasVhv4U1BE= 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 1778978096009130.6707938684284; Sat, 16 May 2026 17:34:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPG-0007UE-UX; Sat, 16 May 2026 20:30:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOX-00077x-Jv for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:15 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOT-0004mD-8K for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:12 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-c80203b9d7bso364583a12.0 for ; Sat, 16 May 2026 17:30:05 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977805; x=1779582605; 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=9W1EBfH4i3cptA357mAisKZHMw8L8t6q4cd+UQXFGVY=; b=WZUfJb8hToibQgCV7sPHs5lKX8ZXeDVVMd5IDfL7k0FDx3zLD1+mEZ34fUGoFdcZcx /ml0KgJO239urDWvDRQkc5+4B+qDYVBX9+9erFI15/wOtOsvzuh9lazPqrWLRJnwrY36 bQDW4TgS29RMqyG6oHPdgSzr5c1qUHNN/pF8L2j0HA0KWcyvUKoqTAsd/0EvPV7yHy0b 9+AV5pFX9xI+ZMaDdre5ZaFKsE6zSq2S3daWlKTzcVhoMKOhmQx1k7b0/CogeCJQXGgR sVqgMmr1BL27t+rR4O/lJFgB12ZdHcW8k0cJn+xq0GdnANvuExryJUXAKGBNEi76w06/ dpnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977805; x=1779582605; 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=9W1EBfH4i3cptA357mAisKZHMw8L8t6q4cd+UQXFGVY=; b=VnpVPLdUoBiX/p1pENvF0yw0hHYpUAphLYedYaVlbvVwq93KPe+/+kersXjy/0yHFY T2XJ99RmULl39p8hH0VZG6+2/7WdtGQW4ekwPJKK+5zpt2KOSc+l4pnRtHEUw4bnulok RXAEGCCZAjuJgtP1X1iHF8qEgI2ddTrA5k84bCOpD/hFXeKajSrdE66jHefyDpv+VEwf +qT9ZBgwsCjfj/Olp49RGUbr6Vxy0PeHbGBhE9zSI9sYDcBW9F1CoIWz2obngkvd6W74 o5VhUcHuZtefEvb4i5Fnu3HQy2Hks1mTn1ETZgmJB9NzD7rpsQ1sUQ5WFhpo3XSUAOmx vzuQ== X-Gm-Message-State: AOJu0YzTtby+rgKaApfQ0j4FzKfV9o8SIr9uX12bp9gQ9PtKihzryLGh rgTOQ6YePcvoSO7zhJZFpO9ZOPWlbNpIhVnfl4zxuLXbHgq2UsaTpZMdRnHq1a2BWyfXEPb677i riJV/ X-Gm-Gg: Acq92OGqyeUmyC4CYVPRBVUHa+fTXoS9k+4ZDmZpdgHuRY92zJLkg5FxX0ms4Vcy4ev GzITDPvfuU3FUulQ8ZXxd90Cmh0UXKgsu00XHrcEwn92EbWnV+6hb+sNOGWnlIulE5GJcc7R7i3 Kp49RaMDTAFDRz3+FsmY2uR5kow5/sW3VRN5L/kSdrPP4udSIcsW12Fqr+UXHQEMJYqM37ONU+U lZMihTY/Mx6RYhVh1vdD/MVgloWoEeCqASfahqrXcBkQknmdrEsO2fSWqLvIomVz+w/cUcpV655 t/eaUGKk0p9xsFCdllRCpuleSFSmZiNCgkHCFmdsF9FP48T1YBoQTZROlg4JRW3WQSQkQQjSS1p SikapfwdZgTU86+xxwRseouCLi0RwTGEPcamQCKVIIFV+nv/t10QiIJd1c4B8Vs1TKHMmP5R21D L+XIICxf8kaUZy8GfrFKYw/dSTtkO6 X-Received: by 2002:a05:6a00:e8e:b0:82f:38df:681c with SMTP id d2e1a72fcca58-83f33ab35damr9719736b3a.6.1778977804615; Sat, 16 May 2026 17:30:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 02/63] fpu: Export floatN_minmax Date: Sat, 16 May 2026 17:29:01 -0700 Message-ID: <20260517003002.321430-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978096990158500 Content-Type: text/plain; charset="utf-8" Allow target access to routines using the minmax flags. Make the existing min/max wrappers inline. Signed-off-by: Richard Henderson Reviewed-by: Philippe Mathieu-Daud=C3=A9 --- include/fpu/softfloat.h | 93 ++++++++++++++++++++++----------------- fpu/softfloat.c | 50 +++------------------ fpu/softfloat-parts.c.inc | 8 ++-- 3 files changed, 62 insertions(+), 89 deletions(-) diff --git a/include/fpu/softfloat.h b/include/fpu/softfloat.h index 1580d956d5..097e0a5f1d 100644 --- a/include/fpu/softfloat.h +++ b/include/fpu/softfloat.h @@ -132,6 +132,25 @@ enum { float_muladd_suppress_add_product_zero =3D 8, }; =20 +/*------------------------------------------------------------------------= ---- +| Options to indicate which negations to perform in float*_minmax() +*-------------------------------------------------------------------------= ---*/ + +/* Flags for parts_minmax. */ +enum { + /* Set for minimum; clear for maximum. */ + float_minmax_ismin =3D 1, + /* Set for the IEEE 754-2008 minNum() and maxNum() operations. */ + float_minmax_isnum =3D 2, + /* Set for the IEEE 754-2008 minNumMag() and minNumMag() operations. */ + float_minmax_ismag =3D 4, + /* + * Set for the IEEE 754-2019 minimumNumber() and maximumNumber() + * operations. + */ + float_minmax_isnumber =3D 8, +}; + /*------------------------------------------------------------------------= ---- | Software IEC/IEEE integer-to-floating-point conversion routines. *-------------------------------------------------------------------------= ---*/ @@ -258,14 +277,7 @@ float16 float16_muladd_scalbn(float16, float16, float1= 6, int, int, float_status *status); float16 float16_div(float16, float16, float_status *status); float16 float16_scalbn(float16, int, float_status *status); -float16 float16_min(float16, float16, float_status *status); -float16 float16_max(float16, float16, float_status *status); -float16 float16_minnum(float16, float16, float_status *status); -float16 float16_maxnum(float16, float16, float_status *status); -float16 float16_minnummag(float16, float16, float_status *status); -float16 float16_maxnummag(float16, float16, float_status *status); -float16 float16_minimum_number(float16, float16, float_status *status); -float16 float16_maximum_number(float16, float16, float_status *status); +float16 float16_minmax(float16, float16, float_status *status, int flags); float16 float16_sqrt(float16, float_status *status); FloatRelation float16_compare(float16, float16, float_status *status); FloatRelation float16_compare_quiet(float16, float16, float_status *status= ); @@ -451,14 +463,7 @@ bfloat16 bfloat16_div(bfloat16, bfloat16, float_status= *status); bfloat16 bfloat16_muladd(bfloat16, bfloat16, bfloat16, int, float_status *status); float16 bfloat16_scalbn(bfloat16, int, float_status *status); -bfloat16 bfloat16_min(bfloat16, bfloat16, float_status *status); -bfloat16 bfloat16_max(bfloat16, bfloat16, float_status *status); -bfloat16 bfloat16_minnum(bfloat16, bfloat16, float_status *status); -bfloat16 bfloat16_maxnum(bfloat16, bfloat16, float_status *status); -bfloat16 bfloat16_minnummag(bfloat16, bfloat16, float_status *status); -bfloat16 bfloat16_maxnummag(bfloat16, bfloat16, float_status *status); -bfloat16 bfloat16_minimum_number(bfloat16, bfloat16, float_status *status); -bfloat16 bfloat16_maximum_number(bfloat16, bfloat16, float_status *status); +bfloat16 bfloat16_minmax(bfloat16, bfloat16, float_status *status, int fla= gs); bfloat16 bfloat16_sqrt(bfloat16, float_status *status); FloatRelation bfloat16_compare(bfloat16, bfloat16, float_status *status); FloatRelation bfloat16_compare_quiet(bfloat16, bfloat16, float_status *sta= tus); @@ -622,14 +627,7 @@ float32 float32_exp2(float32, float_status *status); float32 float32_log2(float32, float_status *status); FloatRelation float32_compare(float32, float32, float_status *status); FloatRelation float32_compare_quiet(float32, float32, float_status *status= ); -float32 float32_min(float32, float32, float_status *status); -float32 float32_max(float32, float32, float_status *status); -float32 float32_minnum(float32, float32, float_status *status); -float32 float32_maxnum(float32, float32, float_status *status); -float32 float32_minnummag(float32, float32, float_status *status); -float32 float32_maxnummag(float32, float32, float_status *status); -float32 float32_minimum_number(float32, float32, float_status *status); -float32 float32_maximum_number(float32, float32, float_status *status); +float32 float32_minmax(float32, float32, float_status *status, int flags); bool float32_is_quiet_nan(float32, float_status *status); bool float32_is_signaling_nan(float32, float_status *status); float32 float32_silence_nan(float32, float_status *status); @@ -818,14 +816,7 @@ float64 float64_sqrt(float64, float_status *status); float64 float64_log2(float64, float_status *status); FloatRelation float64_compare(float64, float64, float_status *status); FloatRelation float64_compare_quiet(float64, float64, float_status *status= ); -float64 float64_min(float64, float64, float_status *status); -float64 float64_max(float64, float64, float_status *status); -float64 float64_minnum(float64, float64, float_status *status); -float64 float64_maxnum(float64, float64, float_status *status); -float64 float64_minnummag(float64, float64, float_status *status); -float64 float64_maxnummag(float64, float64, float_status *status); -float64 float64_minimum_number(float64, float64, float_status *status); -float64 float64_maximum_number(float64, float64, float_status *status); +float64 float64_minmax(float64, float64, float_status *status, int flags); bool float64_is_quiet_nan(float64 a, float_status *status); bool float64_is_signaling_nan(float64, float_status *status); float64 float64_silence_nan(float64, float_status *status); @@ -1277,14 +1268,7 @@ float128 float128_rem(float128, float128, float_stat= us *status); float128 float128_sqrt(float128, float_status *status); FloatRelation float128_compare(float128, float128, float_status *status); FloatRelation float128_compare_quiet(float128, float128, float_status *sta= tus); -float128 float128_min(float128, float128, float_status *status); -float128 float128_max(float128, float128, float_status *status); -float128 float128_minnum(float128, float128, float_status *status); -float128 float128_maxnum(float128, float128, float_status *status); -float128 float128_minnummag(float128, float128, float_status *status); -float128 float128_maxnummag(float128, float128, float_status *status); -float128 float128_minimum_number(float128, float128, float_status *status); -float128 float128_maximum_number(float128, float128, float_status *status); +float128 float128_minmax(float128, float128, float_status *status, int fla= gs); bool float128_is_quiet_nan(float128, float_status *status); bool float128_is_signaling_nan(float128, float_status *status); float128 float128_silence_nan(float128, float_status *status); @@ -1386,4 +1370,33 @@ static inline bool float128_unordered_quiet(float128= a, float128 b, *-------------------------------------------------------------------------= ---*/ float128 float128_default_nan(float_status *status); =20 +/*------------------------------------------------------------------------= ---- +| Minumum and maximum functions. +*-------------------------------------------------------------------------= ---*/ + +#define MINMAX_1(type, name, flags) \ + static inline type type##_##name(type a, type b, float_status *s) \ + { return type##_minmax(a, b, s, flags); } + +#define MINMAX_2(type) \ + MINMAX_1(type, max, 0) \ + MINMAX_1(type, maxnum, float_minmax_isnum) \ + MINMAX_1(type, maxnummag, float_minmax_isnum | float_minmax_ismag) \ + MINMAX_1(type, maximum_number, float_minmax_isnumber) \ + MINMAX_1(type, min, float_minmax_ismin) \ + MINMAX_1(type, minnum, float_minmax_ismin | float_minmax_isnum) \ + MINMAX_1(type, minnummag, \ + float_minmax_ismin | float_minmax_isnum | float_minmax_ismag)= \ + MINMAX_1(type, minimum_number, \ + float_minmax_ismin | float_minmax_isnumber) + +MINMAX_2(float16) +MINMAX_2(bfloat16) +MINMAX_2(float32) +MINMAX_2(float64) +MINMAX_2(float128) + +#undef MINMAX_1 +#undef MINMAX_2 + #endif /* SOFTFLOAT_H */ diff --git a/fpu/softfloat.c b/fpu/softfloat.c index 722bf5ecda..56c8ae3e09 100644 --- a/fpu/softfloat.c +++ b/fpu/softfloat.c @@ -397,21 +397,6 @@ float64_gen2(float64 xa, float64 xb, float_status *s, return soft(ua.s, ub.s, s); } =20 -/* Flags for parts_minmax. */ -enum { - /* Set for minimum; clear for maximum. */ - minmax_ismin =3D 1, - /* Set for the IEEE 754-2008 minNum() and maxNum() operations. */ - minmax_isnum =3D 2, - /* Set for the IEEE 754-2008 minNumMag() and minNumMag() operations. */ - minmax_ismag =3D 4, - /* - * Set for the IEEE 754-2019 minimumNumber() and maximumNumber() - * operations. - */ - minmax_isnumber =3D 8, -}; - /* Simple helpers for checking if, or what kind of, NaN we have */ static inline __attribute__((unused)) bool is_nan(FloatClass c) { @@ -4062,7 +4047,7 @@ float128 uint128_to_float128(Int128 a, float_status *= status) * Minimum and maximum */ =20 -static float16 float16_minmax(float16 a, float16 b, float_status *s, int f= lags) +float16 float16_minmax(float16 a, float16 b, float_status *s, int flags) { FloatParts64 pa =3D float16_unpack_canonical(a, s); FloatParts64 pb =3D float16_unpack_canonical(b, s); @@ -4071,8 +4056,7 @@ static float16 float16_minmax(float16 a, float16 b, f= loat_status *s, int flags) return float16_round_pack_canonical(pr, s); } =20 -static bfloat16 bfloat16_minmax(bfloat16 a, bfloat16 b, - float_status *s, int flags) +bfloat16 bfloat16_minmax(bfloat16 a, bfloat16 b, float_status *s, int flag= s) { FloatParts64 pa =3D bfloat16_unpack_canonical(a, s); FloatParts64 pb =3D bfloat16_unpack_canonical(b, s); @@ -4081,7 +4065,7 @@ static bfloat16 bfloat16_minmax(bfloat16 a, bfloat16 = b, return bfloat16_round_pack_canonical(pr, s); } =20 -static float32 float32_minmax(float32 a, float32 b, float_status *s, int f= lags) +float32 float32_minmax(float32 a, float32 b, float_status *s, int flags) { FloatParts64 pa =3D float32_unpack_canonical(a, s); FloatParts64 pb =3D float32_unpack_canonical(b, s); @@ -4090,7 +4074,7 @@ static float32 float32_minmax(float32 a, float32 b, f= loat_status *s, int flags) return float32_round_pack_canonical(pr, s); } =20 -static float64 float64_minmax(float64 a, float64 b, float_status *s, int f= lags) +float64 float64_minmax(float64 a, float64 b, float_status *s, int flags) { FloatParts64 pa =3D float64_unpack_canonical(a, s); FloatParts64 pb =3D float64_unpack_canonical(b, s); @@ -4099,8 +4083,7 @@ static float64 float64_minmax(float64 a, float64 b, f= loat_status *s, int flags) return float64_round_pack_canonical(pr, s); } =20 -static float128 float128_minmax(float128 a, float128 b, - float_status *s, int flags) +float128 float128_minmax(float128 a, float128 b, float_status *s, int flag= s) { FloatParts128 pa =3D float128_unpack_canonical(a, s); FloatParts128 pb =3D float128_unpack_canonical(b, s); @@ -4109,29 +4092,6 @@ static float128 float128_minmax(float128 a, float128= b, return float128_round_pack_canonical(pr, s); } =20 -#define MINMAX_1(type, name, flags) \ - type type##_##name(type a, type b, float_status *s) \ - { return type##_minmax(a, b, s, flags); } - -#define MINMAX_2(type) \ - MINMAX_1(type, max, 0) \ - MINMAX_1(type, maxnum, minmax_isnum) \ - MINMAX_1(type, maxnummag, minmax_isnum | minmax_ismag) \ - MINMAX_1(type, maximum_number, minmax_isnumber) \ - MINMAX_1(type, min, minmax_ismin) \ - MINMAX_1(type, minnum, minmax_ismin | minmax_isnum) \ - MINMAX_1(type, minnummag, minmax_ismin | minmax_isnum | minmax_ismag) \ - MINMAX_1(type, minimum_number, minmax_ismin | minmax_isnumber) \ - -MINMAX_2(float16) -MINMAX_2(bfloat16) -MINMAX_2(float32) -MINMAX_2(float64) -MINMAX_2(float128) - -#undef MINMAX_1 -#undef MINMAX_2 - /* * Floating point compare */ diff --git a/fpu/softfloat-parts.c.inc b/fpu/softfloat-parts.c.inc index 0c617beef7..11034f9950 100644 --- a/fpu/softfloat-parts.c.inc +++ b/fpu/softfloat-parts.c.inc @@ -1459,7 +1459,7 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, Fl= oatPartsN *b, * if one operand is a QNaN, and the other * operand is numerical, then return numerical argument. */ - if ((flags & (minmax_isnum | minmax_isnumber)) + if ((flags & (float_minmax_isnum | float_minmax_isnumber)) && !(ab_mask & float_cmask_snan) && (ab_mask & ~float_cmask_qnan)) { record_denormals_used(ab_mask, s); @@ -1477,7 +1477,7 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, Fl= oatPartsN *b, * but unless both operands are NaNs, * the SNaN is otherwise ignored and not converted to a QNaN. */ - if ((flags & minmax_isnumber) + if ((flags & float_minmax_isnumber) && (ab_mask & float_cmask_snan) && (ab_mask & ~float_cmask_anynan)) { float_raise(float_flag_invalid, s); @@ -1532,7 +1532,7 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, Fl= oatPartsN *b, * Take the sign into account. * For ismag, only do this if the magnitudes are equal. */ - if (!(flags & minmax_ismag) || cmp =3D=3D 0) { + if (!(flags & float_minmax_ismag) || cmp =3D=3D 0) { if (a->sign !=3D b->sign) { /* For differing signs, the negative operand is less. */ cmp =3D a->sign ? -1 : 1; @@ -1542,7 +1542,7 @@ static FloatPartsN *partsN(minmax)(FloatPartsN *a, Fl= oatPartsN *b, } } =20 - if (flags & minmax_ismin) { + if (flags & float_minmax_ismin) { cmp =3D -cmp; } return cmp < 0 ? b : a; --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978189; cv=none; d=zohomail.com; s=zohoarc; b=kHARbL+Jl7DQ0EpTpgBuXS43RsS1aZYBkyqQPJOxLhqJy2fvi+1DRmMNktZpZeymcbgD2KfGSl3u391ixtY7V3HqFWuWiHD9SEIx7uODJswX4YkH5+xY58IX5rhYdZt8NqUPgvu2FJ9PJT4e7dFW3y8wGDl1fbGeAwqGMA2gaHI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978189; 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=igH1Orszu/DZI1tTbnaIoUTxsqOZEnj+4FQPvhRK6EI=; b=LZzJwZva9dEclPu69JUNeToSOTnCICCz/RcquDH4vUAlMtp+uN3XuUX1UQ7SqmZ0gs67mKJZ0sYVz/farsmLs9sheM90kLqrK0L2/bW+3kwad7E2MKXQC1RUELGW9lwlYvVVrhruFLfJdlJN1AL6O+tczsGJwc5//Als+4sEw5Q= 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 1778978189415830.2670181591902; Sat, 16 May 2026 17:36:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPg-000842-KW; Sat, 16 May 2026 20:31:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOb-0007AL-RC for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:19 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOX-0004md-9x for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:17 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c70e27e2b74so357559a12.0 for ; Sat, 16 May 2026 17:30:06 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977805; x=1779582605; 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=igH1Orszu/DZI1tTbnaIoUTxsqOZEnj+4FQPvhRK6EI=; b=yu/RZ2QT7Jl8vc4Eo6tYUh7OJjxrmo01OkB7MpAODaC2rohP5IpktGbqwIcK3rVbyq 1spslMNedQ5htQV6304rOlitFhIVXOvw2nC6RWaEnOBUA0ZJvbhOfCvLoCW7yI0H9QTA fjgL6ftz28afGGz4YVgGUsf1QMA1ZZ/CJkbIg6jR47iJd8SF0NJgLEpwWoOy1lOC+3SP NJDbLNmbw/kmeWVpZqv6DKgR+CuKVwqv19Zfuy5919TU5JkgArfVgXbYWRSzuErS9lHk XGwXBxcndtK4WYpqmoA+Dzhr48PamiGOZo+bvakvoH3GAF49pEjiVIspYhCnqdxFcxtQ tMng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977805; x=1779582605; 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=igH1Orszu/DZI1tTbnaIoUTxsqOZEnj+4FQPvhRK6EI=; b=DQx95a1caAlO3D7n4Yhkw2ew3AVm/tF4mtC6cR6Hij0Hlfp393okdX7dPG/+j2eL+h nreLO00+4PFp6G0N40qz/cXlgjORK1gMnHUebfCMwE8OBwhsbfR7N39fyjQwa3UL5T8m cUpMTmXs8iB1kw4zlA/4JG5IoNKUilhhxLK4zEHS7NHG/RueYqXpbsqR71TmFVHehXgH yLJtTJC8tNYZ6y6ieauXGCzmYi1uMok14fR6oIkpPcrx+DccpeyM4nCr6mEGpyfC9Bu2 dpLHKbPeHg/uckrEIXwsEwTBFYZ7m1PwYLAb1OSpJ4Uc6mISxO7hJH/eOJNhKpzVFrfF C7sw== X-Gm-Message-State: AOJu0YyYqpvNVl4OPbljnB/CXa/0DVhUA/7VHOuxld1qwkkhEmCyaL6k ntVTBNr9eRNvq9qfmzFD9y406nou4dVrFgQ8YpEFAtFrQn0+wuqAwvIR3yzuZPZJEsRBm630xt1 Z/ZED X-Gm-Gg: Acq92OFGtayLS9SC1pc5ZMX2pA6HnJhOUQ491iWhJQAH8F1VwnSnqJboRNFDL1CQafe mEUxMmTWKKsIMGhpJRVELLl1N7bhc2h8KIqGU58vIZOgzxXHXhyTHrtStsFKvbxwu3ZJZ7lp3k4 lMWSRLZOeF4g7sgNKGs4tTEGL1P/yNLpwaPnsUl2sqxBrqaohbOXQjND5Vxf9V8CfWG0qqrBTSV bVU0w0gX2OrYTF/7ahZQIHtAKO3Vb349j6iuIceZqeeEAq1z1HM2H49Y9eBRTMVuvbEx49F2bGo HQYBfS/6WleNBIaIMHbXIliFtzvDeWA3i7aUuWHtH0W3Y0btHZhOMxI438iOent4oTMaguz2kG9 tALATVnX8YjpJI2Tj8jidIxTfBHSTvFu3t+x16BcpK8oDorAbjmiWbqeO5EgXTx+HNi1NNtIv+C 8uJsmG9T/syvHyZ5oTuLO20ZlZvkHB X-Received: by 2002:a05:6a00:3005:b0:837:db9d:9606 with SMTP id d2e1a72fcca58-83f33d26f5cmr10487952b3a.23.1778977805244; Sat, 16 May 2026 17:30:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 03/63] target/arm: Implement FEAT_FAMINMAX for AdvSIMD Date: Sat, 16 May 2026 17:29:02 -0700 Message-ID: <20260517003002.321430-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978191380158500 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 | 34 ++++++++++++++++++++++++++++++++ target/arm/tcg/a64.decode | 5 +++++ 6 files changed, 72 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 50776347a5..21a1f941dd 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1062,6 +1062,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 3c3c5dddb7..215df1201b 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 c7ccb28b18..cc2691b2f6 100644 --- a/target/arm/tcg/vec_internal.h +++ b/target/arm/tcg/vec_internal.h @@ -338,6 +338,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 9a27c4c6ec..3c6559964b 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6478,6 +6478,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..4a5b0782d1 100644 --- a/target/arm/tcg/vec_helper64.c +++ b/target/arm/tcg/vec_helper64.c @@ -140,3 +140,37 @@ void HELPER(simd_tblx)(void *vd, void *vm, CPUARMState= *env, uint32_t desc) memcpy(vd, &result, 16); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +/* + * Use float_minmax_ismag to get the absolute value min/max. + * Avoid float_minmax_is{num,number} so that we get normal NaN processing. + * If the result is not a nan, take the absolute value. + */ +#define DO_FAMINMAX(NAME, TYPE, MIN) \ +TYPE TYPE##_##NAME(TYPE a, TYPE b, float_status *s) \ +{ \ + float_status local =3D *s; \ + set_flush_to_zero(0, &local); \ + set_flush_inputs_to_zero(0, &local); \ + TYPE r =3D TYPE##_minmax(a, b, &local, MIN | float_minmax_ismag); \ + if (!TYPE##_is_any_nan(r)) { \ + r =3D TYPE##_abs(r); \ + } \ + float_raise(get_float_exception_flags(&local) \ + & ~float_flag_input_denormal_used, s); \ + return r; \ +} + +DO_FAMINMAX(famax, float16, 0) +DO_FAMINMAX(famin, float16, float_minmax_ismin) +DO_FAMINMAX(famax, float32, 0) +DO_FAMINMAX(famin, float32, float_minmax_ismin) +DO_FAMINMAX(famax, float64, 0) +DO_FAMINMAX(famin, float64, float_minmax_ismin) + +DO_3OP(gvec_famax_h, float16_famax, float16) +DO_3OP(gvec_famin_h, float16_famin, float16) +DO_3OP(gvec_famax_s, float32_famax, float32) +DO_3OP(gvec_famin_s, float32_famin, float32) +DO_3OP(gvec_famax_d, float64_famax, float64) +DO_3OP(gvec_famin_d, float64_famin, float64) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 01b1b3e38b..666a293540 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1193,6 +1193,11 @@ RSUBHN 0.10 1110 ..1 ..... 01100 0 ..... ..= ... @qrrr_e PMULL_p8 0.00 1110 001 ..... 11100 0 ..... ..... @qrrr_b PMULL_p64 0.00 1110 111 ..... 11100 0 ..... ..... @qrrr_b =20 +FAMAX 0.00 1110 110 ..... 00011 1 ..... ..... @qrrr_h +FAMAX 0.00 1110 1.1 ..... 11011 1 ..... ..... @qrrr_sd +FAMIN 0.10 1110 110 ..... 00011 1 ..... ..... @qrrr_h +FAMIN 0.10 1110 1.1 ..... 11011 1 ..... ..... @qrrr_sd + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978183; cv=none; d=zohomail.com; s=zohoarc; b=CNz+TYOnPHTPe1PfUh9XZYZoSryr7z6dfnk8/KnEDrKcF5aQY3YGPPgIlmstOSbEdMxzM0dn8na90yWRVMf8d/FIgXoux+3HDYDpjDF4YfVZXEx4+hJV2yzZkD+Z6zfEA8mf2GqfrmjDm/ZtpEANdMtvYLhXsB+0YO4oHX1dx+U= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978183; 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=h37zckXYDzucFKJfi7Vv2YlpkD6qilhmC3tWvPQ5Lng=; b=F5FZwYiWXyDKFlwBXVjP/GNuvH586vcMACOf7EcUwV1VC0hE4wrAFKk5JrTnzMCfoD1d1e/GfZcM1IfIcIHiKSsX9XrzQRAJ9Dcv4cRTiTHPWDZskfSi9bGVJbJRBZa7rWRIqRYQw3Q91tFl+rJqRZufNKbhbJMfk8g/IyRBkJk= 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 1778978183648294.0190775785155; Sat, 16 May 2026 17:36:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPc-0007rd-CN; Sat, 16 May 2026 20:31:20 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOZ-00078m-OD for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:17 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOT-0004mn-IP for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:14 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-c8021c8c42fso341200a12.3 for ; Sat, 16 May 2026 17:30:07 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977806; x=1779582606; 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=h37zckXYDzucFKJfi7Vv2YlpkD6qilhmC3tWvPQ5Lng=; b=Tkr9olVLaM3oYjb+75Oa9uMcFBZvxj6wrvMEYTdrS+lu6EuLcYjINuACLfkGjQZTMx jtjrwIpyvSiQf0SWoTDkftLRhPVbBDCe9wXE9t3zRu9gRxyC2LvMmqyyB/me5e4wDa7+ UY2L3l5kR5ap3u7dhxC7Qfw2hR0UIWg2pQU6qvr6fBED1T/wxJrL2OhgLjy8GazHJSTA AuVVzgnJbSEZWD4MpukmVITe4JClLG9sfRnX6d5r6yg01oPYv5q2n4+ndNss5SK+z34s I6ITrwa9lfQeJ9byZdeZAOSv0mlf16nbTRkAIw6UDIEdodN/yvchi7/6zeFHVnBL455y utvg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977806; x=1779582606; 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=h37zckXYDzucFKJfi7Vv2YlpkD6qilhmC3tWvPQ5Lng=; b=BhCY6beKu4B0CxiW/qGu77wQtlhgI/vGb4kkhmEuNyRRs252lg+E2XoVvtDJeyaLJi 3bAh6VSZi1u5LAT2kW3+Dbl6N4sHprnh//61Msby8N4N3hRYoJD8K6VtmY8OMhm8T5YB oj9f498PZg+egHV6UKMOCJ+uT+3aX6ZR49DSMfq/p0H0Pn6xH9pJam4v29TPZgrRF/bq A0CCQhuh9aIJrxCOlaW+mmG3LofHqMy2NerJgeKVE+xEOZFjne8xKPrZoLJoX383T6E7 HSqsi8vIzAi4t8gNyFAh1KV1Qk0gEOPDRSCxagG9RDmdAziexPevw0S38y4PkFuAznuC q3Bw== X-Gm-Message-State: AOJu0Yz6pcZsK6P8O7NhR3yIteqkl+zkObTbp+eMt75/JZSRNXxLHgC5 Dd5bqsWaWVyx/EzXRclcTnAK97IV7qdh0AEX2aznFy4ZoIN1L+DCwoVwjr2gm7/bbD9qLs5nJDX i7GQq X-Gm-Gg: Acq92OHABT33zC4GvguHnwTU47rInhJ43WzFsFtGjTOdbai4UO0vL0etDrC1FO0gz9u WPTQR/Z5jJaEW+wJjf6zsxCjCYsDxLhvisb8IF71IDWEWaXavFL6SXAVJ0aBO6lAze8Xxtf7Vh/ bGmgTzxruueoz/xQyQo//70i0E0CB9lj9Ej0CpoW++dcMOcI76gi5MT5rAuF5bCwwm6pnMiHwWY VxHzWbYkoBbtnnHUh5UrN4k5hM4MVIj4LT+Q6UItDdZ7V65+CkcflleXQZHkPPa8SanryFo6/u2 thieOqctKf41o/wByHKV9DJUy+WDJ2dZuM+TnmtsvOvqyiIk0mn2xPaWPPnKZdqWHdw2iEGS5Bm 44qdUHfBEy0+QMIdd86yab5x4dJauE+zW0Tuw+OoIxfZYjFnjnmauFJbaj6/Irq36y1r+YDXQFk MkKlwCd27YbCmPL06EG6tE2Hqr9pKic1SgHsdRfQM= X-Received: by 2002:aa7:88cb:0:b0:837:b5b6:1b97 with SMTP id d2e1a72fcca58-83f33c24142mr10791609b3a.12.1778977806001; Sat, 16 May 2026 17:30:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 04/63] target/arm: Implement FEAT_FAMINMAX for SME Date: Sat, 16 May 2026 17:29:03 -0700 Message-ID: <20260517003002.321430-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.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: 1778978185258158500 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 21a1f941dd..21b91b1503 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1593,6 +1593,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 08254b088e..a67501226f 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" @@ -742,9 +743,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; } @@ -753,7 +757,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; @@ -812,6 +815,22 @@ static gen_helper_gvec_3_ptr * const f_vector_fminnm[4= ] =3D { TRANS_FEAT(FMINNM_n1, aa64_sme2, do_z2z_n1_fpst, a, f_vector_fminnm) TRANS_FEAT(FMINNM_nn, aa64_sme2, do_z2z_nn_fpst, a, f_vector_fminnm) =20 +static gen_helper_gvec_3_ptr * const f_vector_famax[4] =3D { + NULL, + gen_helper_gvec_famax_h, + gen_helper_gvec_famax_s, + gen_helper_gvec_famax_d, +}; +TRANS_FEAT(FAMAX_nn, aa64_sme2_faminmax, do_z2z_nn_fpst, a, f_vector_famax) + +static gen_helper_gvec_3_ptr * const f_vector_famin[4] =3D { + NULL, + gen_helper_gvec_famin_h, + gen_helper_gvec_famin_s, + gen_helper_gvec_famin_d, +}; +TRANS_FEAT(FAMIN_nn, aa64_sme2_faminmax, do_z2z_nn_fpst, a, f_vector_famin) + /* Add/Sub vector Z[m] to each Z[n*N] with result in ZA[d*N]. */ static bool do_azz_n1(DisasContext *s, arg_azz_n *a, int esz, GVecGen3FnVar *fn) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 6bb9aa2a90..9dec7318a4 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -286,6 +286,11 @@ URSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... = 1 @z2z_4x4 SQDMULH_nn 1100000 1 .. 1 ..... 1011.1 00000 .... 0 @z2z_2x2 SQDMULH_nn 1100000 1 .. 1 ..... 1011.1 00000 .... 0 @z2z_4x4 =20 +FAMAX_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 0 @z2z_2x2 +FAMAX_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 0 @z2z_4x4 +FAMIN_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 1 @z2z_2x2 +FAMIN_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 1 @z2z_4x4 + ### SME2 Multi-vector Multiple and Single Array Vectors =20 &azz_n n off rv zn zm --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977952; cv=none; d=zohomail.com; s=zohoarc; b=CHNoc2s/TonlMplpwy6qCIRUVD2kd7+LhSbqJO3qbzei21PsZKnPpmhYZw0KLbH9Ji+IOjmbzGyihhTboK0VdqgkpKcdYxETnDtZukqOaqwhBEsloOSDAMTRAhjSqddyIFWY8T8vsHjs3fZzk6nHcN8cq8WNU+ytdlkr3KdBLWo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977952; 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=k4CCo6rT9IEUwVbHU8Dce71VDat7kIw7/6H6NNAMEGY=; b=mF3hh8DIiVWmYPusNilBga03+N5gvsiNKDGIoIrMj2PM8gEE4a3B3FHrlYCQ0evoKU7m2MZ7y+nlAVGAKzqWDhCBd4yxp1cpSbhEQ88//hReepTSfgh5yjXs9pJtKtsGsU2uL6sbTF+YZ0Kk9vYHbBHrud5lh3xqLZMfxS/nwvM= 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 1778977952066798.7290034168692; Sat, 16 May 2026 17:32:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPG-0007TV-3t; Sat, 16 May 2026 20:30:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOZ-00078n-Oj for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:17 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOV-0004mz-BJ for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:14 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-82f8b60e485so441855b3a.0 for ; Sat, 16 May 2026 17:30:08 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977807; x=1779582607; 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=k4CCo6rT9IEUwVbHU8Dce71VDat7kIw7/6H6NNAMEGY=; b=P8t2IGW/qfieqFeF7kNwYn5cZ+ZCQEDIBztYr6roKIywp0TKI8+lnNnAsZfA0CAYDL yvg/bKMQ5NcP2QjSwDzhSfGzIEg36X09F6iGc/3+zv4s2ZJSASKTO0FAAmuPm80ImcJu PuXMTwrgN1KExTRlPrA+fS6WJ8bG3LhGKyQGF6vkSjxKXt2reSETmLgoClF3UfaDmqWX E1CQdrNADEzCXM4V27lKdPsI6nLRHswwy1l24l95xg5i3d4GgyHGJ1lkWMTRALwVfvEQ GiGTE5LBEqpkVVVTfCQJ6YTK7Z5jdnNlT3js6Qg0jkWIzrjzcyY/DQK8+dOSM2KuZRtz IuCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977807; x=1779582607; 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=k4CCo6rT9IEUwVbHU8Dce71VDat7kIw7/6H6NNAMEGY=; b=OQCngQdi0pk++1+q5VrqfW3WUrcwVH7PsgYTGKswCk6Dvx0M3Dy4nbNxd3MlPi5jC6 FYyDeUSWygneeKx7uNrVyHz0Y+4kS+Y3J9HDe5qhiBFLBH477yK5yIE9CsPeyU5NIqv+ 0p1RK2fkIfAvJvDD1CWJSqhk2gX29Udvu5KNE+WnHh7AZuFfdl1G6vYiBUOtQQ5pttuf PySK+uw6S3miPGblZVkusZYwHD46x04xkDix2bNLttn7WsCN3B42+d2aQEaMu/JEm6Gg nvZIMKszU6bpob1n+spOXCwORw1hT1CA9lXAUhBcmP0XZJJCDKaikGoPFb4/LR6zEeaA DfTA== X-Gm-Message-State: AOJu0YylWaxAjdSgZQU0ElLI+qgHWKyGUqi8Gg58jHCu1QJGsCDWrRY3 mFxOmlIQJvbXZfUr5KTPxyi0ucW9aZ9aqw2ZKd8ptU2GqWRVhBD5sn0+lVDFAyicCoqJQS//bNM 30o9B X-Gm-Gg: Acq92OGnbzLHi2z+X9MF3W3oBG6KMLA3VkxKi4Mdv2KpS7nO7J33B47AHEs909iA/Qn YReZEF2nzhgqe1A4phiQb+deqLriUelf13HnfezfaRWwO+4GUT3U7A+IDg1Cy5U34vX0UoGxU16 Bgi2zpicarKZJeAm9gX9gG1ix/ktlpaE+U3Lw1yPy5Ju1azak5uO/gQy2JB7gUPF+gPUcTpuk1x cyjI5YHNAqU67yGZDU3lNESPYB0AHjlTCelRCqmBC0wuzk8p49Rowand8SFp8SZpmCYEPeeOTM+ lGYncgmC7I/ccYm1fKc6NKKi7KVSOLXU5plHoFQuhOaKrwXGM5ouDPwflYI2qR6PFGvMW7bQefw i2THaRKYwiubwcZRWkZUzTRXVXFdBV2UvdSzGhE5BOpHeitZRvgLWbTM5n1BT0RffLBh6u12TUk yAmIeiaZf26PxtAeKXUR9Jtzzw2mb9ce7oZvnQMo0= X-Received: by 2002:a05:6a00:1954:b0:835:366f:5da2 with SMTP id d2e1a72fcca58-83f33d80937mr9854793b3a.37.1778977806793; Sat, 16 May 2026 17:30:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 05/63] target/arm: Implement FEAT_FAMINMAX for SVE Date: Sat, 16 May 2026 17:29:04 -0700 Message-ID: <20260517003002.321430-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1778977954266158500 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 21b91b1503..a7ab7e2a31 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1568,6 +1568,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); @@ -1608,6 +1613,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 aa7d72a35e..db32230595 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4253,6 +4253,8 @@ DO_ZPZZ_AH_FP(FABD, aa64_sme_or_sve, sve_fabd, sve_ah= _fabd) DO_ZPZZ_FP(FSCALE, aa64_sme_or_sve, sve_fscalbn) DO_ZPZZ_FP(FDIV, aa64_sme_or_sve, sve_fdiv) DO_ZPZZ_FP(FMULX, aa64_sme_or_sve, sve_fmulx) +DO_ZPZZ_FP(FAMAX, aa64_sme2_or_sve2_faminmax, sve2_famax) +DO_ZPZZ_FP(FAMIN, aa64_sme2_or_sve2_faminmax, sve2_famin) =20 typedef void gen_helper_sve_fp2scalar(TCGv_ptr, TCGv_ptr, TCGv_ptr, TCGv_i64, TCGv_ptr, TCGv_i32); diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index ab63cfaa0f..078a085a79 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1130,6 +1130,8 @@ FSCALE 01100101 .. 00 1001 100 ... ..... ...= .. @rdn_pg_rm FMULX 01100101 .. 00 1010 100 ... ..... ..... @rdn_pg_rm FDIV 01100101 .. 00 1100 100 ... ..... ..... @rdm_pg_rn # FD= IVR FDIV 01100101 .. 00 1101 100 ... ..... ..... @rdn_pg_rm +FAMAX 01100101 .. 00 1110 100 ... ..... ..... @rdn_pg_rm +FAMIN 01100101 .. 00 1111 100 ... ..... ..... @rdn_pg_rm =20 # SVE floating-point arithmetic with immediate (predicated) FADD_zpzi 01100101 .. 011 000 100 ... 0000 . ..... @rdn_i1 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978016; cv=none; d=zohomail.com; s=zohoarc; b=GQvglOMmLOcDhp1rPmsIjp9JsqQv59JTql31J7GqCnk/ruukF8DGZg0f5rt+rd9xihqTc/0Fob7P1NO4wN5VbI55MwGR0Y3SW/RPR5auz+IPM+T1uio5sCqRaaVABhmLEBGvbbb8V67/pO8EF6aAXHfgXMgj6PPydd33+jrC4yI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978016; 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=0L8sm2nuOmiw4XE7Qu74ytG281Y5T5t916Djua5D5pM=; b=UV7sK+i2WNufWYZE4vhVMJmrVnb88MxpwNhNH1JrGEAXuSHkwHQlkDkPzs+jUZxNCbtMQngVUOd+p0eCMcYJORO4YmrZPEhwvbpAIA4QwCG5fqQX+KHahPL8h9J1PzFWGqe/WvSL+KDwIYz6Xq7PGiK6umAt9t3g0jaipkB6qSU= 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 1778978016527776.6464534115099; Sat, 16 May 2026 17:33:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPe-0007yO-9k; Sat, 16 May 2026 20:31:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOZ-00078k-OD for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:17 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOV-0004nC-Gb for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:14 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-c70e27e2b74so357569a12.0 for ; Sat, 16 May 2026 17:30:09 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977808; x=1779582608; 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=0L8sm2nuOmiw4XE7Qu74ytG281Y5T5t916Djua5D5pM=; b=Tt2RXVO99wu0fNHFcpolbvQHyf3L2RuBAQ25SmROeQvB0Iomoo6dI3Exwyx23NXsAg pc768vW1aieUynXBSGlSOPhLTDJpV4uc5hH3IO/Hh1T+NBS4X6033GprRaBxlX9AxUoQ mxwdk0AGiAjr2JUvxj3SGKJfHxqgDCA0o6DNPS6UXkWICqmk2iRvQNPjtEFUZXAeAaOM Fud8czGWEZwUKlz1IS99nsDfHVF3z+bpKQeCytVCxqkmHoaxZevfC54ZjjMq//DBmQtj RLJmNOOkeyEL6ncCzyherPD1ci6m5W/W/6FznqEKsuMdM0xTkNc44Te+agHCoLfwkp2L 7xEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977808; x=1779582608; 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=0L8sm2nuOmiw4XE7Qu74ytG281Y5T5t916Djua5D5pM=; b=KFKDk+9nDT+Y6YZAWJi0qQsH6PbOoBrfOum5jCg3PGsgaMRkMnbTyMZCVXBI8v8U7U Vez6w8nMmERNV9Z90V9bibyeHGZ8ju4kZk8yzXxgf+/5YktLlcyC1bK9tvtqbwm02QtR VaVL2L7vhjfu3+SSrpuTBDvh1YGwaaWkAIWpSByyo7v9kzZ4JxFYhwSOa9Lk6pXZLYXw e8ZlGirs6bRArfhQJ5VFKIvto4j0EkejuImhA260VP9SM0D5hlciW9qTrOBvIQEowjAT 3wRSevffOgMF12BaRAcBpy3Y1bh0uNaLo6ZejC41Zdb/VAHgSJ0n/pw2IyZWMbKSzlR3 od1w== X-Gm-Message-State: AOJu0YzhXyN3qOYvAq8fIbRDWMYebYn3D+XT7D1KRzfarY+TvfX73ceG bSxg5tQv5CVExicp00+WpIWUD7WFbdAT+n0f/EmoW9A1gS0HY7VkjDy6MMAiR+9fgrZAdcIlcin mtQlz X-Gm-Gg: Acq92OE89Wfojiv14ZsOdwfgaQCofjNZg+ouNzGUEAnpdGVB4eA8zNeqXcyjzSrc1x2 fHFFuyOXx1rsDgfGJbiM2mm86i7hvZf/Z8jh3rVgaEzTxG7OC/FcHJ1ZFiaOhaVNvRXhhZuRgA1 jDFodMkESkV5vjPqUhvlDE8jaWmqM6lGlRllJ9Zledqsa+LAt3YO3WwARczHpsxsqLWGvErczQE Uil+UGuFrTAvUSgOjFmdetVfRMqI1si+1zsEw9zSKsmguOW1pz47qp1sLOZLWj/PUKjQkqa7wG9 yPdUDEKdYqeo9/qGnTgBeXqW2fwKruN0/6Q7MFiU9lg3SSMCW0Lbnn4m1YGRCRRw2JrlRk98/5u S2g0i2+Fh000EKwxCCFqRKCKb6uJAMt+JuLD/5mSGqsZ/iVJLSjvolm7n92EeC+UUu3VX00w4Xo Ym6/tTDzSrHaJXcYpli2DXXB3NSWgD X-Received: by 2002:a05:6a00:ab0d:b0:838:1c71:bc7d with SMTP id d2e1a72fcca58-83f33bae2d5mr9723505b3a.3.1778977808093; Sat, 16 May 2026 17:30:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 06/63] target/arm: Enable FEAT_FAMINMAX for -cpu max Date: Sat, 16 May 2026 17:29:05 -0700 Message-ID: <20260517003002.321430-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.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: 1778978018428158500 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 649d854a65..ff0c2b1c47 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1266,6 +1266,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 8cd7fe7b00..da5f7efce2 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -68,6 +68,7 @@ the following architecture extensions: - FEAT_EVT (Enhanced Virtualization Traps) - FEAT_F32MM (Single-precision Matrix Multiplication) - FEAT_F64MM (Double-precision Matrix Multiplication) +- FEAT_FAMINMAX (Floating-point maximum and minimum absolute value instruc= tions) - FEAT_FCMA (Floating-point complex number instructions) - FEAT_FGT (Fine-Grained Traps) - FEAT_FHM (Floating-point half-precision multiplication instructions) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978180; cv=none; d=zohomail.com; s=zohoarc; b=eMFD/6pceUY9UeQeGF9D/lgCbfDc/hrPTivrPTuBmsThTOl4+5NbQMaKlbwaYPaZpk2JOlvIvo2Lyyv6qr7s4aEkCD5Bxu5nZwOICjz9AxWUHk4xao2F1ofiFrPPFP3hgH7TErlho7JARYJY7IsuxKBQxWnyTlLYym+wS8JETNU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978180; 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=HYsxgOkKZmN/D6H7dyuNYSLIwdX/Ih93Qf3lIcR+ofE=; b=kXoTIiT/DAj4weMc3QVTEhGbuSEIfyPKQ2tOUKTuvPJWhl/d1ADn3Noox9u9RXsVZV7gK9mL2zwFhOFkXYKlG9vAhOiYLFWP5+CpN9P3rTcMApM22IjpZLL+j5ZnI0/dVgqW9T9+SoQzUx1GMP6x3cp/0dBT2Vuv7dUJiEtw8mY= 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 1778978180138543.3348922078195; Sat, 16 May 2026 17:36:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPh-00085b-P7; Sat, 16 May 2026 20:31:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOb-0007AQ-Vv for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:19 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOX-0004op-C6 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:17 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-c80227c9572so381123a12.2 for ; Sat, 16 May 2026 17:30:11 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977810; x=1779582610; 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=HYsxgOkKZmN/D6H7dyuNYSLIwdX/Ih93Qf3lIcR+ofE=; b=lBZ3vjlfosNKoyEmQHAg4WFVZQE4OYnW61cHy2fBCnMU2wvai4fNgeFi+Y+OjMvMyL unFN5dsirqSUMs2JIfNmUFTJ3vjUH+M8njAxrvH1UxT81x4MJK4ZEPmf8FQTDfX8jSLk sGArC0l4k7edIRjrPID9/BjIE7kaYe/QxF4HhfjLodsa3Lm0/nqYLKbXPmb20B/XrIIG qwlx9rXmEHqsjTqP9l3vbEj623yMfHp76Y5MtIKACy3w0xzTjpYUFjy/tdnZwbE5Bolx dgN+TlCK55UwfGkGSGmhl0WyBTce6JFyokVHslIeOJRPndLj4AWPa8UFv6SFcOooVtiT RvbA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977810; x=1779582610; 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=HYsxgOkKZmN/D6H7dyuNYSLIwdX/Ih93Qf3lIcR+ofE=; b=jPiOf3fHsL3sLfp0Rsv+ydtnOU/DioqTijeZzfz1DHeBo2gG/r4qlaobGG/H5YTpbe 0/CGDNZzouE3x0rQT1f0ETL9shWq1AnfR7YIbeIy1Ae2BRI35y7DH5ZCP8Rla1BNBa3v pct338PePM7qV86QFwNPrB+ARF1alOmw6NEL41UStc3fcu4gPus2X4+o1pi8I0xmxO/c ablaiiYYYykGSQU+Om/+9pM8m59eC7EE1HQCjmpUb0mBpIwNTM8h98VTEHxGPIDcm3T6 er73A62mJT+q/fXCaQDeXH+ZDdu1phFnkPlkIlIAY5Ug+8pRXBiE8fE4X36QvUpfjaYk eilA== X-Gm-Message-State: AOJu0YzV++icRnyszd2b7SbDm8btw6hxH36t+Kd2Wvmhqw73Cfqu+APo quXxBbzrs2018TcilY7Nw6PEHOMwQA0XGTvuT16sq50Ob2KPg+0LflNL6xARijQgEUn0lpXB02U B3i1C X-Gm-Gg: Acq92OFv2O4M11/4q8kiCsgR+BEF/QmX5JAbYkcXAR9c4wYDAhDmdg9/2Gi54gLglDX SmD7htozFuK2H5WFBjtxrtsANxuYKaaCwQMkewE1gJ8KRIZlkQAVT7F2KS9PmllAq7ZZaY3ee7/ xg6DjWzajuM7TYMhIsFv29EPrYvsOaRxshK6Ml8nB4PZ/xjPpUH+KhI7eQQBMKJ8bsKKw6obDHO F2Xju6mcICqzB5AnQAnwhbH3/Hh15Sl0HmKvsvgM1z5GqS+9s+QZPFf8gvp4yV5C/6q6sdrM7ia WUDntf/4zXychtAlmzHcn8DukLGdlonw/KwA5em/rL0sqRVnSDuk+QdEvdhc5T8Ad/08xVo5iVJ 46nr5RD6wHcM+R4tP2HtPeUR2dfGIq3eQgf5XhTcywVOOv7Cmtt4sHSHFVbVLizrgCdYBKWnln0 qzJaCVLpDf/NvtHSN4RnoJO2smOzZf05X/AfsMmi0= X-Received: by 2002:a05:6a00:2394:b0:82f:74dc:5f48 with SMTP id d2e1a72fcca58-83f33c5488bmr9867314b3a.2.1778977809933; Sat, 16 May 2026 17:30:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 07/63] target/arm: Update SCR bits for Arm ARM M.a.a Date: Sat, 16 May 2026 17:29:06 -0700 Message-ID: <20260517003002.321430-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.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: 1778978181227158500 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 15a13b9292..0a11dd9002 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1820,6 +1820,17 @@ static inline void xpsr_write(CPUARMState *env, uint= 32_t val, uint32_t mask) #define SCR_AIEN (1ULL << 46) #define SCR_GPF (1ULL << 48) #define SCR_MECEN (1ULL << 49) +#define SCR_ENFPM (1ULL << 50) +#define SCR_TMEA (1ULL << 51) +#define SCR_TWERR (1ULL << 52) +#define SCR_PFAREN (1ULL << 53) +#define SCR_SRMASKEN (1ULL << 54) +#define SCR_ENIDCP128 (1ULL << 55) +#define SCR_DSE (1ULL << 57) +#define SCR_ENDSE (1ULL << 58) +#define SCR_FGTEN2 (1ULL << 59) +#define SCR_HDBSSEN (1ULL << 60) +#define SCR_HACEBSEN (1ULL << 61) #define SCR_NSE (1ULL << 62) =20 /* GCSCR_ELx fields */ --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977896; cv=none; d=zohomail.com; s=zohoarc; b=S24p+eUD/P3k2ibCqnFjsXYvPlTmg0PNi0BDigDMI/vLqhb11oa5gNemdUAsS/KvMOeH1tmBWP/7EA7Vsc79CWPu+Amdj7NC+Ckt7jigrtCGeuNkb3LnR6UfAlgPdmN/zCJbIuG95iCbWaHpu09n8iNA1CPQkCEG/aUBstK7Sc8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977896; 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=HTm+tJ9AXbaN4UCtQXozdvXW5oj4hpGtuMfl8xxCE7w=; b=JdJ0mu89q2O0w5XWYwQITTd5Kr2EBQKJInY5UMTickvBvEY/kezEMtEhBUj0E9sOkNPi5F+O8Im1UA750koRI9B3LvFYTIbbmINGBMrj7E81EzW2ArGGz0TrVGKi23BV5sM3t9pVoHlV1Tn3S/cSN+BKB/seOk5QTpXi3wq2VBw= 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 1778977896879265.39231569021126; Sat, 16 May 2026 17:31:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPd-0007vd-E7; Sat, 16 May 2026 20:31:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOa-000793-8E for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:17 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOX-0004sI-7V for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:15 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-83537a80ab6so769183b3a.1 for ; Sat, 16 May 2026 17:30:12 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977811; x=1779582611; 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=HTm+tJ9AXbaN4UCtQXozdvXW5oj4hpGtuMfl8xxCE7w=; b=ikix6iJFvuacZ8TXpQRF5hB4y/ysxl79LLFSAf5kbePiNcUflZakBfAnMZ8CFMHAKM 2nnET4e9FZfG6hmZzC0x8gwGFi6b68x8Wz/wTzfWbX0CIVhcpE0T541db5VLd8VnFxGK oLm9oVdd1Yz+Fyi+DnE5mhF0+LVmEA+YBCI86a5cBV8f7imjbE83dJOPoxiFQF9rQa8+ pPmG4L/lemeUXKl3wqgOzSrOO9KB47s1jdyKazqgQgBLatGZqtH3MzeYVOdsZ9K1H9kz +P5JupKta+4AsJosMCUOKeWIgY1DtXnjBa78ZNjAGFCAeIc3EHpr35F5AEYesXX8CA1I jkHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977811; x=1779582611; 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=HTm+tJ9AXbaN4UCtQXozdvXW5oj4hpGtuMfl8xxCE7w=; b=mwHms6w7C3/YC4g2wjKFOf8PxDTvpH31qRpPPs0DA2LROmLI99WL90TEzF3dvb+cyb 4ugtQN98Q+B0Igoaxy/3CYSYFun468rVAbJRXWlO9AT8vYriElbBu5we7dd1kNRLWHII 2RJZsyunESqJpoVHc0jWA0wRskR6LasDnCHNR/bssg4lOd5KNd+GywvwLBPo1isMBw+a 14NBsE1Yr+MV+15PDmWKOpcvY5J2/dCMYnTiLTBvdydWaAEcn94MvPCOlqGZDVknyPhG /g89EYUIdJr8rh+bkzbb67k1ECT3/awTqmxRoia6K3I1wJNU/EZxiIk6okweA8Ment50 gJUQ== X-Gm-Message-State: AOJu0Ywsb1lm8ZZChlNqfdZhb3tSnxZu2A7+CIzgk1PMVD6Hb4yXYTUf hXRywGpyOSSv8z4lbhfmkI/Xeds7nDTgiIT34hmEq134XE5Y4Jf9VhLNhOKqvSx3WdxkJNWYE10 jCIUn X-Gm-Gg: Acq92OHu3cDHBvSmb7XY0snosgba+voZRnBgzixC2PMpA27XyduFNSj2XlHudx9KgNu m0B6pVMwpiOOQx1VhpTmwKqVRZp8DyzHfYuRIJ96yyFIosCuWUWngQYbeUhT7jRWaVjYX2oFvAE Nv0srLi/fMFuBd5GwsmNn5ErE3HMxa3HeyeCo/wANIWGxRED+lp4jx8b8nbQ+bnNhaNGYBbJH/l /Sc5Ge/+NZ0Du3mUdCzagY1kJzSEowaOp/DCH/KOIuvvnKFGL52LQ5bCtO0gHMzTFYyj34rFUXC GjJpymfC78UptoLNSGvBjCou+dwMSPySGlYHmkqnsI75Tbo72hQ0YlknnzZxsc2WhnWI5J2l3iL QSfUhPpXO41AYdGotvSN/3Rn4F5sHVIKV3gKu+jhpl3O99U2Pm+xmrDbyKhmzHzyZy6NL9x9iCH TOWnLVnmMRYSph45XxNnuGDHtAMkZT X-Received: by 2002:a05:6a00:1404:b0:829:9a7b:db84 with SMTP id d2e1a72fcca58-83f33f30bf8mr9765756b3a.49.1778977810719; Sat, 16 May 2026 17:30:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 08/63] target/arm: Update HCRX bits for Arm ARM M.a.a Date: Sat, 16 May 2026 17:29:07 -0700 Message-ID: <20260517003002.321430-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778977897916158500 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 3edc15c7b4..4414be85d9 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -258,7 +258,9 @@ FIELD(VSTCR, SA, 30, 1) #define HCRX_TCR2EN (1ULL << 14) #define HCRX_SCTLR2EN (1ULL << 15) #define HCRX_GCSEN (1ULL << 22) - +#define HCRX_ENFPM (1ULL << 23) +#define HCRX_PACMEN (1ULL << 24) +#define HCRX_SRMASKEN (1ULL << 26) #define HPFAR_NS (1ULL << 63) =20 #define HSTR_TTEE (1 << 16) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978281; cv=none; d=zohomail.com; s=zohoarc; b=BOTCUGIRhHOOfZt805Blg42bBGP6mhs1NHjmh7CEAY85iJcGCcDBWLkjRKjZyP92xJEWK67V1V7rilekeHIVcvBcdzUdgtH67vWj5MSUPmx2WohulVMb9JfnMXd1KSs81nPlXN2h9mWZXl/Vg2SUulG2rzI4R8YD5RNOhlLOtHc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978281; 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=WK1q3UP9P6NsmMV4Mdmwr5OMlQgZn6qbug7f6ieaup4=; b=U17QkqNDZcpLHguiABzBquSRc90ltcZ17a9hy4mqJtTJkKb/scKNlT1jnw0iLxRjdPuJEyT37O/A4tzKaFOzSeLOmcT+cDXetDuHi3pwXoOdQN08uUhkGTBLb9cU0cK9Z81lzhk2TqYx8M7WmEX9YtqK1RKVRUGj7oKqAD4Zgiw= 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 1778978281194335.4834514459218; Sat, 16 May 2026 17:38:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPI-0007Wv-Vu; Sat, 16 May 2026 20:31: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 1wOPOb-00079f-9a for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:17 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOX-0004sP-95 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:16 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-c736261ee8dso420973a12.1 for ; Sat, 16 May 2026 17:30:12 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977811; x=1779582611; 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=WK1q3UP9P6NsmMV4Mdmwr5OMlQgZn6qbug7f6ieaup4=; b=k+rJ2Py7tvrqT3RPZ+A/WQ/nqwj6aPEE5Sc3/A8SEct8TQNTa9XV0Ojaj8eYPvtwbt tvRLS2OehDTfKv1BIHMXlQs7aF1KFeLrEV6ZudJXBuCaaPezaJmGyOdbecaAtE6ezQhy Wm2Ot86+t6aaC78Jaw/Ojwjjv9wk2i2PIrAITxyHEdV7LsZSicWQLK9hDCi553cRpLCE l0RAfnjClpi32bBJPaptUv0BK6ame8OBWc90bLMowdGvCk+yN4xVk/zNa9t+nBIThbEO TiSSsFGv+Km4MIxxMGhuCPdjgFesXNyBGGHupYdgp6YqjN72AhjUeg7ZE+ohH1afIKWc jN8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977811; x=1779582611; 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=WK1q3UP9P6NsmMV4Mdmwr5OMlQgZn6qbug7f6ieaup4=; b=JEcGjihOanI9w6N1oVMiGYLB4S9WbFGQ2cqQWE/xAkM0YFM3pLTpisGT06JGxfpO0P 6ICrRt8j48E5Ft2g0BXFCSqURZSM04fCZsudGOpEuYBWzvHL7DCRE78xNyx0Jk6juDBF CnerUErX0JiBRIvik+PulwOOvacYf7zv9a4ZHK0v36FqAtpq4JlitxIdr7ZBaFst8nK8 JEjTsKm48aVG2vLPez6LT40/R530Xw3QRGglLVikjJSwJtORFMJ1pNHvRoEaadc5T3H9 5nKwFz2bZ96tokImPjT6p4Kx6jwnpFXjUpeI/B3ZDy1D4IEpN6/hHJwClbxz68SWfX9b g4kA== X-Gm-Message-State: AOJu0YyCaTxN1MOiTsk3oJmJuv6ez8nxwqNjZ1uUMsgY4OwxKY4xIOB5 LDlOn6c9ViCEakEJbac1w/wVipKSQ64TDt8oIjp4oofHaopAfrKa99nMq0eOBfpjNILIvUAhh3i jNn9I X-Gm-Gg: Acq92OE2dU+MIkZIOj5CxZ32FREHo2UYDy45n2e87mJALgQn0wbue4mBMsekw4muhPU K6M3/e6tdNpilRGaAbMYtWf+jxL58q48LcjiY+H0X2etXS2Vf3MzP6eKFqy3kRBDIMHOfWa73Lv g/hgPmYVrzdb/2qmAT/r1De9rK9crzn/so2pOlJQdu+ZfzDw8gf5EUsTR1ONeRCL4EYvy6SQTt5 hrpKTedzNitXKaAIrf5jSwxuu2xrtwfNrvi5Wpg5JjuqM1ofoUz7GYniaXcdY4teDQUc9fPieqk /ogDr3D5Ei2PlEg3eZXEDcQffY66W62yYsGVXYawKbJGJ5Qyrjj4I3aLKMLh/CzV+wPyZrmmwS4 4LFR/wKMp6rKBPNHA7RAuJPQy6dmEm8K4hmlxsBj8EcviFdD7sYRz/zkB+69hIDE29w1IgVUN4w X0x5QCb2Q2/w0z9FxbXwJHwfYRkkUUPNCxHLVaNC0= X-Received: by 2002:a05:6a00:8d1:b0:824:9bc5:e946 with SMTP id d2e1a72fcca58-83f33f2ba2bmr9594570b3a.46.1778977811331; Sat, 16 May 2026 17:30:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 09/63] target/arm: Introduce FPMR Date: Sat, 16 May 2026 17:29:08 -0700 Message-ID: <20260517003002.321430-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.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: 1778978281654158500 Content-Type: text/plain; charset="utf-8" Introduce the special register FPMR and its fields. Migrate it when present. Signed-off-by: Richard Henderson Reviewed-by: Peter Maydell --- target/arm/cpregs.h | 5 +++++ target/arm/cpu-features.h | 5 +++++ target/arm/cpu.h | 1 + target/arm/internals.h | 10 ++++++++++ target/arm/helper.c | 12 +++++++++++- target/arm/machine.c | 20 ++++++++++++++++++++ 6 files changed, 52 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 a7ab7e2a31..e13c1c1331 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1192,6 +1192,11 @@ static inline bool isar_feature_aa64_gcie(const ARMI= SARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64PFR2, GCIE) !=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 0a11dd9002..498af7db08 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -713,6 +713,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 4414be85d9..ff30381fa5 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -292,6 +292,16 @@ 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, NSCALE_F16, 24, 5) +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 6ad01b345f..ae1dd42dc4 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6229,6 +6229,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 */ @@ -7502,10 +7510,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 8dc766d322..58f8dfd53c 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; @@ -1323,6 +1342,7 @@ const VMStateDescription vmstate_arm_cpu =3D { &vmstate_syndrome64, &vmstate_pstate64, &vmstate_event, + &vmstate_fpmr, NULL } }; --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978063; cv=none; d=zohomail.com; s=zohoarc; b=XHKTBNKtoP+q32y955Yr6eC896Yu2ShgfN2S4WCOscke6VeF7wbFPdcm09TtMgPZVBa7/hYsrDc7pouprM2nCrGj7+D4EUMAZpt516znbAg1xykW3j6Snx7RSVwBD46sCvJeySmXDYl9oGDTGT0Ba7/PZd9JRkD/k7ZK2ZwVYbw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978063; 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=RgEwye1A/H/zER4vq4nD2iWWcMLX2i9wMfampUnYlVM=; b=XXOTEbw4e1afGXT37mZjgVFSOAx3h5qvwR76/5pEecfB1oijKCGdElQtrvQOtIWjWplY1KkLoJ4J3MNgPzZRPhp0I3Wts8A/PDQIF42BCKol7FRmYcu6h4TeI8L9MztRPkGUkgDYgJDGz3XVbLium1PkGrbd06kk0j2uCcl64+E= 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 1778978063728845.5003537524655; Sat, 16 May 2026 17:34:23 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPi-00087Y-Lt; Sat, 16 May 2026 20:31: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 1wOPOf-0007Bd-LM for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:29 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOZ-0004u4-83 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:18 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-82fa8d6425bso476864b3a.0 for ; Sat, 16 May 2026 17:30:13 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977812; x=1779582612; 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=RgEwye1A/H/zER4vq4nD2iWWcMLX2i9wMfampUnYlVM=; b=xkZRRbSvQg5w5OK9gcNyWrsF9wjLRkbYSjQcKvrphIP0r7pOQ+yqb47rFdVdpsO+Py hUF/UBKBaBCW8ZlQbJ1EvGB3DNTIWNsvQFC9n37If8OTVtneRVJcWtemTnIzwZql80v8 ovkNHFbV9miu6tK7M7W4ni7N/F1l/NDHpmZK4YmBk9U5CHRoyW/MexJPxLRFLT5+lEMr DXBn4wUr5xbUU0V8pmPuyBpvPBbqq4N8+Q8XQQHXOr45+BuDBA/SIPoB+RS4LzwVaBHO 2OmjhF21NGQirageRmCWBIUzAT1BNGPF8z9R00Y5YZmGRAEJ4C+ZQtI1llIMC5BTXQac AF1g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977812; x=1779582612; 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=RgEwye1A/H/zER4vq4nD2iWWcMLX2i9wMfampUnYlVM=; b=f18SiUsC5kO8YH0krVaYE5PdhiNCRqZQd+sU7XcvVMY8uv4lurX/PJJmsw05XvlO0e R0z5R7R4QfoYVHRLBfVtRmLOKEZW2rD/93g/Vu+OLQ6WyRHjc5s3dCnqKJ47lZLuBqyw xgPY1ZYSjcQRUwqQl7nSTdQx1w9MdAylXbtueGGMhTvmHb4D0QiNr/9sJMgHJv0bWd0m Ef4aUIwZ4qokpprIRjDCNn51jn5N8qLnrYQItnFh72K6I4KcqiyreT9RNEc6NW60Vpvy cCM88Ul16IgOzDdqkQmB75DqeYGQLrLwySsjfFqNjDyz/aIMdKEur+20aWWQlCKLq26Q gcJA== X-Gm-Message-State: AOJu0YxZZM0/FfuYbwFVYEu/3xvpWegUy9RasOWXYhN7GXcXcGtShPS8 bl1MJbj7qL7k+LWqVHEM4RVzTxfZkxMRZ/HqPbQrmMWtDS/aNVFPuKpjcZdtnh4elye5LRdGPWN +14F8 X-Gm-Gg: Acq92OGkrVhOjUnEMkwPmufA4QO8D+TKt9zElYkNgfERIYaNABUToocWiSrM3SbcVn0 gPbQpNX7xWEMAPo/FhsmxDJIdtNucEy9oerdJ9DboZ/XCzi7FaRzrcQpMyyPhRFm+trqHu8TQOD vs7cj7WuwM6y5wfxE3m+H9+LcXE5haNzfpGiLxQxe99EcSzuAoQGMQSM0jzGtYdHaQcqrh9y8sn vSTlKTy5YKIWWBl1Ltax+uZHLUZThahRRLM42uKAm/UR4jTh9jRjekGrILnJGMGp4A6Hg17ktrU UoXe8QqVQ6py3ABEwmprOy2z5H2GH7coMyqkXXJKBfw5+i/sMqIKVxsVeIVmEqPqLJF2d3/sk/k Oejzcwym1HNdDIXHCJVIvLibgdFs4nypdonDnEUX9iBT9JvK6XAG0FFRWGDij6V1KJ+Al2RQRDb IZamYVQllulvNMWBtHHolloAP1CZQA X-Received: by 2002:a05:6a00:90a9:b0:837:e9cc:d470 with SMTP id d2e1a72fcca58-83f33c9ec67mr10243679b3a.20.1778977812207; Sat, 16 May 2026 17:30:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 10/63] target/arm: Update SCTLR bits for FEAT_FPMR Date: Sat, 16 May 2026 17:29:09 -0700 Message-ID: <20260517003002.321430-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1778978064851158500 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 498af7db08..c114510446 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1485,6 +1485,7 @@ void pmu_init(ARMCPU *cpu); #define SCTLR_DSSBS_32 (1U << 31) /* v8.5, AArch32 only */ #define SCTLR_CMOW (1ULL << 32) /* FEAT_CMOW */ #define SCTLR_MSCEN (1ULL << 33) /* FEAT_MOPS */ +#define SCTLR_EnFPM (1ULL << 34) /* FEAT_FPMR */ #define SCTLR_BT0 (1ULL << 35) /* v8.5-BTI */ #define SCTLR_BT1 (1ULL << 36) /* v8.5-BTI */ #define SCTLR_ITFSB (1ULL << 37) /* v8.5-MemTag */ --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977937; cv=none; d=zohomail.com; s=zohoarc; b=FaBZbse9GDOuYzlgtKH/IKa8QsfMm4G3IvXpGw/IddtXwLLUMIgfXgsMkVDbrOaHpNZRabM0oiTHfzKS4LEbVBeZnalTecW+CH+adanUKNBpZf9TOvWnpIZ7B1DWjPYMN3isECGtuSMwROW4mtySgd9he+G9PWAlTWUgI2XmxyQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977937; 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=JAosT0zOJ8eHcyZ5INON7Xq9l371iEzZ0qq0XCtPW+c=; b=O/HeBklabbqh755/xZn9jFN+KBR8ZzQIA+8InJA3+k9gZ4PM21zEtXilXzYIxNoC97IzkCmBsAHNEKdnvtE8xMkzaI2ML7JM+m5x+3XVhL00SCTSR+e4esxQrcVc6oU8RZa0Mfb85XZHay8cl/U13IP5X503LuLfnM2uR0aE1QY= 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 1778977937714162.3208412675964; Sat, 16 May 2026 17:32:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPj-0008A2-E4; Sat, 16 May 2026 20:31:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOh-0007DS-K3 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:31 -0400 Received: from mail-pf1-x435.google.com ([2607:f8b0:4864:20::435]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOZ-0004vl-Gc for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:19 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-836ed29d1e5so408771b3a.2 for ; Sat, 16 May 2026 17:30:14 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977814; x=1779582614; 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=JAosT0zOJ8eHcyZ5INON7Xq9l371iEzZ0qq0XCtPW+c=; b=rYBXiCwRzwHU7n8pK14lruj0Kyfqjwk5fjT9HeP/VWin4Ld95lQYOda31ohdd1YT6G R0ELPzoWYVr92burPOaBn6xHz0Eou7qqB7B+TEXWKg6fxUsvsMdQmjqTP3ag71STOxUI thUnnqwjxN9BmQglh0fnCLcY4Tu/0hY55b71wV8Ak4oC5va++KxPZecmSwl7PCv80kdR EdGLIaCs/+S8AOVxZTEehxXk/S/8zvOwQYK8p9eoAwh/eNiFeHjjWTF0xcI6kCkjUcfy aEFQZhVN71gNd7u+5G4CtVX6CR7qn+nDy+eLYdzo9rl6ddOYoQ/r5F1gRmAuTsGdls1h rJ3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977814; x=1779582614; 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=JAosT0zOJ8eHcyZ5INON7Xq9l371iEzZ0qq0XCtPW+c=; b=p6XjFAUoWGHQf6P+JHvRDze0Gj7yc8HaW9fWTYz5IRFGkTtDKs+9vovzYy4SFNnZT8 kRPkzYnU6GFM+AgvBuXBRL0/yfY1moH3i+8eBMfWdI3Qo17Vv9gMojis//1Z5g4IQuG0 jclXJRR65s0n/qqfKfhoB3n2CX+mLkwwU0Vg40Ki/NOGBR6eqk3ZQdMsP/R14cV7OUAr 2WetaUfi53KqAJ4sDW+RhOBlkD4W+H82DvT6bI2BuNjHfd/ZY6yvv+LE105P97hfY7CJ D48q7rc2ib3zH9Y6MRiGmD70qGxmqQKc4RpkTeDDMjCJJDpOPlxFdLjU/Mid5SJd4eLX nGzA== X-Gm-Message-State: AOJu0Yy1qVjEY27rFqx0n06tbPJ1z47ZeVtPp5o8DAAxG4ta1/RHxOuY bdyy21EyzBA6Ckx1NA26WVJ0pq+owRj7VBq4ZM2NHMW+aK9z5/6vF5QqizUBI+UtV5/PPYPGfbp BNxW5 X-Gm-Gg: Acq92OE7kB2Fw2pqK9WYwVJgBr8qUdwTxlL3bjrrNLU1CndSQRgzWLTLE4qG9SSexU4 tK7HXoLvD3j4jHgcZTIwDXWS7XYnwms/wFQ/RQb8LpNtjy3lSqMbcrc2mNqegpEBUS5zNlbZhAd fkz577aq1RGosGLdmimv5KWsFay/f5JEMCbcBNTsK22fSEMzUMw0VInZ2Fu8lr3AsyGAoFmEivD CLvbzvVhR2ogZDiODam9te/MwY0T4Z4hjNzY/5HCCljSlUkLV0BaeoDOYBIBtZEWbL2Et2rl/yY 84ClREOcfkjwxXjfeoKXZ9ZEmNA04cRpTs5iuri9p6b19+d6BzhPajbW4Tv44XnBkUnFxAVcY2p sB3gDc/YLouw4pIHKpk2hi8O1VZAUvUPhwpHL7U60NuJvbp9oPo2ayw9s21uJJ3kAcxes38gH6l rONTcBWWcZccFD8anWcvG6VyeVC3i0 X-Received: by 2002:a05:6a00:94ed:b0:81f:4e6a:7276 with SMTP id d2e1a72fcca58-83f33c9400amr9378250b3a.14.1778977813546; Sat, 16 May 2026 17:30:13 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 11/63] target/arm: Enable EnFPM bits for FEAT_FPMR Date: Sat, 16 May 2026 17:29:10 -0700 Message-ID: <20260517003002.321430-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778977938153158500 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 ae1dd42dc4..7eb7031294 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)) { @@ -3973,6 +3976,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; @@ -4046,6 +4052,9 @@ uint64_t arm_hcrx_el2_eff(CPUARMState *env) if (cpu_isar_feature(aa64_gcs, cpu)) { hcrx |=3D HCRX_GCSEN; } + if (cpu_isar_feature(aa64_fpmr, cpu)) { + hcrx |=3D HCRX_ENFPM; + } return hcrx; } if (arm_feature(env, ARM_FEATURE_EL3) && !(env->cp15.scr_el3 & SCR_HXE= N)) { --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977918; cv=none; d=zohomail.com; s=zohoarc; b=cIjI4Dc/P7miRnzZZJ0+zfUO/Ev7MrQBhBy7TpxTJnw+qFn1Jjsvye+q9BjnbmsuBD6fxSnaYhaZMUnW/tdKIyYhTO7U+dKpwQifgiqzAo1p9ArwXXwnFzedOM4YinYF6+Z9RS9xox66hjdSSI1Iul0tBRmrP9/H+u568zJflYM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977918; 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=6CH8sn0raFot2c6HYSuCv/vuUo7CdYLWHtN+GrqCIxQ=; b=XrWw4K8h/PmRj5Z682oxacDhcRTLQcKqFKzFUP8z1vH6IBpFbvUWR2mvtn5Lfhs7oFDMNc+2AUxsVfMPIjn1xnaMht5pr6cLnsNRkC5sAFtPtZb4hnCjja1Nebz/zbWCcjStKzV7OyJYlGTwRoZKxHqG7bJiNmBIJE9xjWemVWg= 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 1778977918648167.3281335572634; Sat, 16 May 2026 17:31:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPH-0007Vl-G7; Sat, 16 May 2026 20:30:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOi-0007DT-5d for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:31 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOb-0004xX-5y for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:20 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-83945063f70so1038088b3a.0 for ; Sat, 16 May 2026 17:30:16 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977815; x=1779582615; 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=6CH8sn0raFot2c6HYSuCv/vuUo7CdYLWHtN+GrqCIxQ=; b=uy014aMwhKRPk/HxYOkbD+aJEbXJG1e5oUvQ2oVFG4jdWDEp9WuqKCJSV3zmqzkRso aij0igU9wkKozuJHJMuvkYQjxx7fty3jpDTpMZ4Mlumj/5QFn3TH5nuxQAoXCR3ApjMZ 1ZMWWbify8xrlUL5mryvLe/4XQKzfXPUz/mPttra6aR1WVqbNcNviXbObTjO8G+FpOwv zeI5twh5bJEbyx5JPFcuiQIwsoK3JTAupq1o4I6xW97gq+6CgbGQDTIqOvV36TGhqtF/ pgsSKfvEDE2vZsueOXX2qIAPF0xYg6z2TZzznvQHTfR8SiutDWyZdqQGEsmkxEUAqnUH qT0Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977815; x=1779582615; 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=6CH8sn0raFot2c6HYSuCv/vuUo7CdYLWHtN+GrqCIxQ=; b=r6ICr4NN2RPnbLmviMITyRiIA/ycde19AsH270HVxUGa0b4V6xaO6kVkUfQBgu62EP beyxtSYoElSuy1Bq++wBECkMF9/xa6wd9wwnsDbL1hRUjLwgvojO6UDLBXt6TOCqOYR4 hCmenPF5a3gTdob5rGadfRCUliZWB2BqU/dnaQGj/8t/l1wikq5f4CoZBvCozkTkDHFg 0bTcLvMxRAPVHFLuP91n1GTbUsjBYlpS7DFJW3QrYb0natXCac/BCuw/eKIKCwlXgdy9 Z+2KgDy5EjhLK/nICbWePCflDka+s70kSiLaa7ytqOYzHPClXsZ1JXePgynt6sCKS7R9 Gksg== X-Gm-Message-State: AOJu0Yxw2eXRKS3xROQOJ5ZskSZ0NMDyo7miDhY3IIoM46gFHfxIMglP wlTO1ik6/d9rKGfkv/7GtMQNLblEZjplweUMpkzkIShkEhYPI4w/UpSeWa4LV4qYf7lg1NbEwOl 8bnOJ X-Gm-Gg: Acq92OGUnZg1ZfasJmSdAcSVI71OC4OWa9tGPHhYY/II0cOUJbEZT1H6HiQz65tgSgz yRezwQyH+wL+72iXJSelzJwKxt1JZn1rjZhmiAaGK+CRFjcfK1CwAxSvQAWl8gkquK/dHFTxN3y 0SIbyUa/NRXSKQgTF9uf9G/XXlACUNHy18S7IbI788+hw484wwmiolEzPJRWgTfNlk6/2t/fnhh CepfboEu+eGriWPnnJBx7sELkg/ZWL/xkzuAJSVdoGJyS/Whp9EDhso7khdH4Kqqw1NzprjJMOQ oQrD91YxfVHqxhiUgcdPUJGKljeQV1jqylb8rzHnRFv1AXcJh1Oj9wV+rl+JHh8Ms0jR+efFVHI zslTR7M8DMIHCyAQrIeeJe519dSSwBxj6BJrQxhg4IVmKz9Ef36Aw0cfbIM7KLm4Reivgwfvn3f Kb9kBncx/wjuXVVrVFmk0XoJZZsww0yxbxx3EWheg= X-Received: by 2002:a05:6a00:14c4:b0:82a:146d:36a3 with SMTP id d2e1a72fcca58-83f33c9570fmr7885654b3a.21.1778977815132; Sat, 16 May 2026 17:30:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 12/63] target/arm: Clear FPMR on ResetSVEState Date: Sat, 16 May 2026 17:29:11 -0700 Message-ID: <20260517003002.321430-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778977920044158500 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 7eb7031294..3d6e7f1ccc 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4856,6 +4856,7 @@ static void arm_reset_sve_state(CPUARMState *env) /* Recall that FFR is stored as pregs[16]. */ memset(env->vfp.pregs, 0, sizeof(env->vfp.pregs)); vfp_set_fpsr(env, 0x0800009f); + env->vfp.fpmr =3D 0; } =20 void aarch64_set_svcr(CPUARMState *env, uint64_t new, uint64_t mask) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978132; cv=none; d=zohomail.com; s=zohoarc; b=ir1ztku/RryvX+TEeyT6Xb5zOCqGFKeelgWgwMnMvh4skcuol9H+T+hshlF0NGCxFWbCOwuJn/ZYMqnc0TyjVbcNc0eqYwMd8AiyyD8HPpO9mH+OcSZfteqV3NpteD+XiacIJPQPi+EiwhIqoALbFUaj1Qdu251aj5QvakPOKro= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978132; 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=P2YowRxNRLBYS6ametaessFL4W/WU5kteC+kwFAECtE=; b=CYFsiSgj4gXk1A8SK/9DNfguZFd6gmx+m5+xIJxAS9YB9AkmHMQTizsp4lP82UH38JwBHFd5xKEsSPIaXb9b01SnhICjEIw5zlFuIcPXbPKjtS5XSSdWB2xxzL1fShUDrDM4CwSX1wE+8qLU+JjgwUnUhvRwaUfPGtHv2UbxcdE= 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 177897813273768.98386954755222; Sat, 16 May 2026 17:35:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPf-000809-Cq; Sat, 16 May 2026 20:31:23 -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 1wOPOl-0007Dn-IX for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:31 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOd-00050G-If for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:26 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-82f8893bff3so454062b3a.2 for ; Sat, 16 May 2026 17:30:17 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977817; x=1779582617; 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=P2YowRxNRLBYS6ametaessFL4W/WU5kteC+kwFAECtE=; b=xeLOwWsfGL19P0nfPJ4b/q2PdUeBL5L6xLi6Fi+7P0ur4TWgtgsWsTUdcAwwbymEuU MSL9F49YS+QtMhiFOun1z1RJFqL3wH9NpsOrbASwO7ryFv8B02JnmAyESl6ZfNQfuqxC mEcPTyU5Fh6aprXUcICkB7ofMAwvm9PQbDcCbqP4YxSPGBkLQoF65QTNBGv3A5p3+qa3 bewbn9x6i0ZVroyJLlFz+uyxavw6Vk70sm5e230qKkmEi/ZHmbbhV+dIDTE3PXD85KJK yHV/9paxNbe+ly5tblWSgUZZ3VOM0+8IeLZ0ccGLsXLsbaF83DSMv0WfLA9yTTd2ZpPE i+Xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977817; x=1779582617; 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=P2YowRxNRLBYS6ametaessFL4W/WU5kteC+kwFAECtE=; b=VudP0EPE8OAYRYsfoLHAPUhrQo7TDe1X98SgxmOBFEdbBMrnPGoIBpeMj6+dIgcfcz 95DMC2/2g/Ma6cL3xaNwzonPGd4GLMTl2KctD7em1PE0lsOmcRjq7uc6WugUKuG0NJVo igzMyLRUq9QpepbsFOVb3Aul8rg8mfiHFNWd5WsIWUrA6n8I1ZiKsasF4E5EFq05j5AV HDQOV7JVOs94txiGnWZp8Atrtpu0sml784j12RWnaC+GuDsAqD6In/gaH9aOS1E4IDUE y7Jh0ieIpzcTlHJKKDjSeyFl50PGcwfc5kA5tQQTu2fuyBTFzoKhad+wUXD+P3O7IxJn QwhA== X-Gm-Message-State: AOJu0Yxyqu3IdS+x4xKzSUZCjBRl4ve4Kkh0AEhBmUtJZSRaC+4TZMQf Qblfj0UV+8h1U9Fu7vU9M8yCSPVmJrTJTDAnmF5ESSs58FmRd2XaGEfEV9Tupl0w4V8i263TTIb cQ8kA X-Gm-Gg: Acq92OGJhcu1urYF5e/fIyqFdkf8alRVdZN6bvAVxJvCa+2RM+qZkoSOjsMDpFCXAwK 1+geedLgjgq9vNk6hi0n/gfiX+CMl33QzASe3okn1I9ILmnSE7RwPwYXUCPggGcB7y3uXfxrR3t zPHL675MlKT2+97N40Iu4VGdjTJdYFUKMLmLLH98093u0fxUQ7GVOy0wli4XnqfuuTTqkU6MfFv VtwQl5Dn1Strch9IcWjkycHpCJWggmXjjo6invhxb29cFHqCv547ygcN+mkqFAVj2TCIVCWfOb/ oIa2EEEeQ7eyctQF/Wh8HufSMl8vCgGe/WIOhrRzoW8c/qna1i5H8Su78Fbyh2z3gGo67WkcUJU pcy7LGpHAcRWGitNQnly4bR74NVIvvCHGnOZXcGgy1H3oikCwqEn4EqiXaFTTpl8GJEHHIfmC4J wI/xMHfhGjZ1wN3o///1goch+AmnqR X-Received: by 2002:a05:6a00:3005:b0:82f:6640:7229 with SMTP id d2e1a72fcca58-83f33d39f43mr10366946b3a.23.1778977815819; Sat, 16 May 2026 17:30:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 13/63] target/arm: Add FPMR_EL to TBFLAGS Date: Sat, 16 May 2026 17:29:12 -0700 Message-ID: <20260517003002.321430-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978133080158500 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 c114510446..9e637c1d80 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2567,6 +2567,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 77fdc5f3a1..1648c2c96f 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 3c6559964b..b013dd51cb 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10726,6 +10726,7 @@ static void aarch64_tr_init_disas_context(DisasCont= extBase *dcbase, dc->gcs_en =3D EX_TBFLAG_A64(tb_flags, GCS_EN); dc->gcs_rvcen =3D EX_TBFLAG_A64(tb_flags, GCS_RVCEN); dc->gcsstr_el =3D EX_TBFLAG_A64(tb_flags, GCSSTR_EL); + dc->fpmr_el =3D EX_TBFLAG_A64(tb_flags, FPMR_EL); dc->vec_len =3D 0; dc->vec_stride =3D 0; dc->cp_regs =3D arm_cpu->cp_regs; --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977962; cv=none; d=zohomail.com; s=zohoarc; b=Zw4aAK37FpcyEjG2mpdSsRiUuaGLUKQIkDbzH7UwVm+BRxcnyhG72ZyoSa7EViHg2/V7k7iNBuYUcmRTJGzMOlQrd1flu0JvuRjLoxSUnS1C09Clry60DjydrBDypR3sLrOssPZKDmHKVzKyhY+5/gML2rV7ml7KO0SiUqxwfFc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977962; 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=RuUYRHuovVEbvZDKoFulOJ76CJMsJZBODEhgWcUkabI=; b=lhZ2bmw0tBum/crW7oAVjXab7co/v9xWHNaC5VB1oJN7oAxpj3nmRs0ajnALdajpcoVGfL7TdQ1uNFc0+0N3N1gwz/hQMD7/tVqbgAASYsBle254z0sJi6CTgHhB2WI/hiIIH41nu3M7XVnNvILnqYfE7+zh5grCksxxSxe5Nuk= 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 177897796229299.23187528855192; Sat, 16 May 2026 17:32:42 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPb-0007n3-JM; Sat, 16 May 2026 20:31:19 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOk-0007Dg-Ld for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:31 -0400 Received: from mail-pf1-x429.google.com ([2607:f8b0:4864:20::429]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOh-00050s-UV for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:26 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-82fbf5d4dc2so834483b3a.1 for ; Sat, 16 May 2026 17:30:18 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977817; x=1779582617; 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=RuUYRHuovVEbvZDKoFulOJ76CJMsJZBODEhgWcUkabI=; b=Jbp5fd4/yTAHMauxCdK7vq4AHFtOmNOMZ1nV3+fvRjnXguZv+7n2en73aZHCsmo06K ErvekyJV1ONiQShLhJgFfWtK3LVrhgMpGGpMZO5uFVFZOdnKyPRmEC1WsWobO1Qn24/L bn4/gVfxfiVQ9XE2mKGlJKJuAJiJHZXDStCRU112/UxN5VHsScI7W1S1XfmM8ROtyxwG oCdWUzqbqqM+tGnvkOYHII6gsl5Zmolf0/j2xZSuHHZ4uznS/L+2BM4sM0+Lc/NNgu0S SeBsWXyCNxJ1QBknZPSnVqjfkH9pWc5pwX+Z+ex4aUUVFOBBd0hlC5joG3BBp4FoJgz+ N8kA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977817; x=1779582617; 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=RuUYRHuovVEbvZDKoFulOJ76CJMsJZBODEhgWcUkabI=; b=kaKakvJSKiYGrxEpJIOVy3vCNZ24iG4mpAW4YBjUDOwPnPeHiXKIql7I5gwUKJLlsH dnBAtWRnkmHkEpf8kSlkrTPRRJLvfJYghRjj00euLk2sfcNoWrn523C1+xsyKR+IaasR aOGAQEQMuLgDgqyLGsIZ4GSVZ9QXbSREut4jByyDk9s1gXn0wP7l2gIRo058WI71mLOa FZ/DWqdQufAxZzFifmxKmxZv8L1iqcn1UGg68oNtfS7/iLcQteQs1sEX38q0F/9hZZ+d lfk31eQJhkUXT96kkvTAUYwdRBP2XhdaBFboppVhiMXU++phoFOYWSHskYYzrMJpg88p MxQQ== X-Gm-Message-State: AOJu0Yx3VGzDVqelaOavhwp1n/qcZEBmsKDXo/1uHriybmnkv4ARsfEP lctCQW+nMzKlxqrZCilLmjOLvH34JT3uBgepoph0Xqxy5OPPFhU4+y7iLh4qVxxnVtXVRGEUXV1 MSWRh X-Gm-Gg: Acq92OHx5xhOcIi7p9OenjHi5bbwaYmQg7C0fad471Fhad7m3TjZE3qMS8EgGbNY1kJ 2DZ342FnEdhJu6abS9duqjvK6mCpsCupvjUFe9SyRHpjGNuBOD7Q9l2fvp2wAfJ75yrySyhGYEN TYd20pbGxGw1AFHGR3IuMdgupLaPvOD5aXf1qbn1FjZVVa5tiMuQpRXxLrYY6g7dmkSTBso+Wri ZlxwuWzrbCdGiTk4iXC9OtSGMWSMQ44g6/hKUyTrSDXN+uphhJ4MCRV94INmssjnijrFFbjc8FF hZHIXy5HYHp65Q4bfsTx6Y0fANeUERPrDPLwGUv9PAeP+dNgFHH45cLvFFJJ13R1HFcMYz6UgCp DCXHrJ9bDxmnpFjLoz2MbMFxFyYr1de1AZePLdNILbhlKkMCi2vjS56oc4ivKKhBHbu48uaVGoz XIYz0XxObYCSvn0XPTb5gfBmDPc10G X-Received: by 2002:a05:6a00:ab0d:b0:82a:6ef8:cb43 with SMTP id d2e1a72fcca58-83f33b34ca2mr9971268b3a.19.1778977816614; Sat, 16 May 2026 17:30:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 14/63] target/arm: Trap direct acceses to FPMR Date: Sat, 16 May 2026 17:29:13 -0700 Message-ID: <20260517003002.321430-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778977964202158500 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 b013dd51cb..d2a4b0fadc 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -2899,6 +2899,10 @@ static void handle_sys(DisasContext *s, bool isread, } =20 if (!skip_fp_access_checks) { + if ((ri->type & ARM_CP_FPMR) && s->fpmr_el !=3D 0) { + gen_exception_insn_el(s, 0, EXCP_UDEF, syndrome, s->fpmr_el); + return; + } if ((ri->type & ARM_CP_FPU) && !fp_access_check_only(s)) { return; } else if ((ri->type & ARM_CP_SVE) && !sve_access_check(s)) { --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978062; cv=none; d=zohomail.com; s=zohoarc; b=iuqhJZUfvBx51dRXu/miI80mt/jeSjyGqPexEcTxl7REJ3IarDLLyMkYouSsG9Qjh9ofKDgRgARR0nscO53Ko9RF/hTeKb/9W2ziDms4K523cx4jGp3ZyJmxEf9eRdwQzr4u9tqw9qZJiuLEZv+M8uerjENBADV3Sp+Icet6bRM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978062; 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=ZVsvcQjrwAu/Fw5QeICNMsfPv4wnEzD0NNefmVwM0W0=; b=MMMyK8vK6JA0rRTYxXnY3Wy5ixQBxzDbMEOdDEmmMMl9JVCm1AB3Uvy5/kh+jHVp3oPoXNsegDRkMENPTN3IfkXS849nq4oRJSUMorN5EipyDxRUrPdliV/1GX7O3o1SlJ/+h4vj2tMByBYc4D+gEonB7tnQdKHWyyUAkTnQ+T4= 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 1778978062064822.2512981294065; Sat, 16 May 2026 17:34:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPj-0008AX-Vl; Sat, 16 May 2026 20:31: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 1wOPOm-0007E8-D5 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOh-000516-Vy for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:28 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-c8021c8c42fso341256a12.3 for ; Sat, 16 May 2026 17:30:18 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977817; x=1779582617; 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=ZVsvcQjrwAu/Fw5QeICNMsfPv4wnEzD0NNefmVwM0W0=; b=pBjTfX4Z5hdj3cIYMVVeIFr52mkMeBhMim/nQr5UXl+3gxOEhgxNKSJjWCZSGil+Wv SXSyzaTCzmfRcotl4GA3yzKuUrsRlTe1jbCemUHx9wOY9sOv2c1VW5A1HnRDrJ6YMhug Nd8aEuPyq9qkz97ZEA2wcJNXJ+w5I4Oa4I7A1ThXzcn+msVebH4B6KC00rL9Hvom5tNm V2rB6G2QC9u3CXHoS4mWYXIFEfLPWH+L3kdN4HAfClGF4yJxftcMzzL5R+JtCEHXST5Y aUkMmcfYeAQDo9nI13c5/RFCYVDFiAyYj3WTakT2Fosf9UCf3UU38TMI2vXraNUHsNY/ MCiA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977817; x=1779582617; 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=ZVsvcQjrwAu/Fw5QeICNMsfPv4wnEzD0NNefmVwM0W0=; b=jrWVoYjOrHgqZIbD1UNl937BEhjuBzm0qFK7MQ20pnMd61Rlx7bMatDgRqWF1FMF7K cGi4z37OST+kAqmYhhiO+DyWkRgx7axJVcRyCySUi44tgYZHW/i3eaUvgjFi9f7j/P6i g8ejjTaq4acCiWRuPx9mYNvStKE5KpkZ8sgLFw4+mLzh3CHIMaMK90SshzTpoaB3FrIE NlfRVDoOu3LJPiGXyXIe5TlEPmYa9jASNjrAUPRNBDqbREp7qlXNeaAq971ZuELYzgRF xBiObg87JVj7whRnl4agthkCsQSwnXJhQGqPVR2TgE1usj715z3lcFFHNk+9Kxy4eDA7 /meA== X-Gm-Message-State: AOJu0Ywtvp0h0zNB9g688b0D09pnLH810LS64FEwzgrXW2Y/LANbw8yA 8GucfeEF5cTLIlkY1A8+6MoIvGAHEXtnK7HpbkaCuV+7rV27Cs3hWq7Oid6KKqH5DaFef4tUwMs tq8NW X-Gm-Gg: Acq92OGB+6+/c8OUeTESYMOav3f2b05gLOUw3hyeJt87Cb17JzSl8fX67nU8Al6bCdu jjNZOIKxxnqzFzuRJvdw+BJONGIORYzu/V6wqefoOHOrUFajN7vNEilB1VP87W67/eP/FLpH0P/ iZc/E3dqNujeMS+bXI1/omQ/vN6GRgTYtyrqd0FbGzbsG73uqDgrlVk/6YQTjo8+EigEtTD8PvN Mz05AP1DrIyp3wUsjJ5M52qj69UwIoLZby7t0lVnEgSCZLK6cN5ktAmAshKFKlBFuZdvN9J+w9y R1rFc/TQIgzpBbHoy5KXKD2BcgNnV/XqMEvFENGAdXVr1NuERb0sSgx0OgVtM10ncwHtKAoIt+r BQJNS+VFImY97ZNMgJIP4Jnwl2vA8eaHcOdkhRIGo2Y+uTy6Lujl4M/j3KNTUmZtohpC5HHMRWN kcoqLEqKiBMesHl9sDVmu7YLZqveQp X-Received: by 2002:a05:6a00:2793:b0:836:3f6a:3e7a with SMTP id d2e1a72fcca58-83f33d2774dmr9458967b3a.26.1778977817266; Sat, 16 May 2026 17:30:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, Pierrick Bouvier Subject: [PATCH v5 15/63] tests/functional/aarch64/rme: update images to support FEAT_FP8 Date: Sat, 16 May 2026 17:29:14 -0700 Message-ID: <20260517003002.321430-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.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: 1778978062952158500 Content-Type: text/plain; charset="utf-8" From: Pierrick Bouvier As well, use -smp 1 since there is no visible speedup running with -smp 2. Signed-off-by: Pierrick Bouvier Signed-off-by: Richard Henderson --- tests/functional/aarch64/test_rme_sbsaref.py | 7 ++++--- tests/functional/aarch64/test_rme_virt.py | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/tests/functional/aarch64/test_rme_sbsaref.py b/tests/functiona= l/aarch64/test_rme_sbsaref.py index efea80c578..d252101ac6 100755 --- a/tests/functional/aarch64/test_rme_sbsaref.py +++ b/tests/functional/aarch64/test_rme_sbsaref.py @@ -20,12 +20,13 @@ class Aarch64RMESbsaRefMachine(QemuSystemTest): =20 # Stack is inspired from: # https://linaro.atlassian.net/wiki/spaces/QEMU/pages/29051027459/ + # Built from: # https://github.com/p-b-o/qemu-linux-stack/tree/rme_sbsa_release # ./build.sh && ./archive_artifacts.sh out.tar.xz ASSET_RME_STACK_SBSA =3D Asset( ('https://github.com/p-b-o/qemu-linux-stack/' - 'releases/download/build/rme_sbsa_release-6a2dfc5.tar.xz'), - '5adba482aa069912292a8da746c6b21268224d9d81c97fe7c0bed690579ebdcb= ') + 'releases/download/build/rme_sbsa_release-74b7fab.tar.xz'), + '82a754bacea04e709cb1cf2759d1d12d09fabd612e014961eb32368723c7920a= ') =20 # This tests the FEAT_RME cpu implementation, by booting a VM supporti= ng it, # and launching a nested VM using it. @@ -57,7 +58,7 @@ def test_aarch64_rme_sbsaref(self): ' --params "root=3D/dev/vda rw init=3D/init"') =20 self.vm.add_args('-cpu', 'max,x-rme=3Don') - self.vm.add_args('-smp', '2') + self.vm.add_args('-smp', '1') self.vm.add_args('-m', '2G') self.vm.add_args('-M', 'sbsa-ref') self.vm.add_args('-drive', f'file=3D{pflash0},format=3Draw,if=3Dpf= lash') diff --git a/tests/functional/aarch64/test_rme_virt.py b/tests/functional/a= arch64/test_rme_virt.py index dcb18678bf..2afcdc6b07 100755 --- a/tests/functional/aarch64/test_rme_virt.py +++ b/tests/functional/aarch64/test_rme_virt.py @@ -19,12 +19,13 @@ class Aarch64RMEVirtMachine(QemuSystemTest): =20 # Stack is inspired from: # https://linaro.atlassian.net/wiki/spaces/QEMU/pages/29051027459/ + # Built from: # https://github.com/p-b-o/qemu-linux-stack/tree/rme_release # ./build.sh && ./archive_artifacts.sh out.tar.xz ASSET_RME_STACK_VIRT =3D Asset( ('https://github.com/p-b-o/qemu-linux-stack/' - 'releases/download/build/rme_release-56bc99e.tar.xz'), - '0e3dc6b8a4b828dbae09c951a40dcb710eded084b32432b50c69cf4173ffa4be= ') + 'releases/download/build/rme_release-2701e89.tar.xz'), + '8c40af440f5bd1518f7add7d0a43b39289865ee48430979db8024cb897a74790= ') =20 # This tests the FEAT_RME cpu implementation, by booting a VM supporti= ng it, # and launching a nested VM using it. @@ -44,7 +45,7 @@ def test_aarch64_rme_virt(self): rootfs =3D join(rme_stack, 'out', 'host.ext4') =20 self.vm.add_args('-cpu', 'max,x-rme=3Don') - self.vm.add_args('-smp', '2') + self.vm.add_args('-smp', '1') self.vm.add_args('-m', '2G') self.vm.add_args('-M', 'virt,acpi=3Doff,' 'virtualization=3Don,' --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978016; cv=none; d=zohomail.com; s=zohoarc; b=dnJARE3vhvXqNBy+TlCGFr3adTSAs5XjwGn7/kOt6ZMLrLtMF+csc6Teqg6N3NkQVWkdMp0fdh2nHv95qAzv/OZfWaKojORWQEhe/sYxgNcGvyFX2UZ+mvL83zQdLI5UCcIee2iKr9j7+B4a96ruHDOeIPqeh6x83ABBEbvkDAA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978016; 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=XfEjDJlVu7LsFiNptc3UAEkKV/ApJAH3Ld019vvaP5k=; b=OHr7kc13GA8Z4Hql7BCay9k8vaj3UNZVQlVlEcYKSTUnXsfh5B6CW049Ea+zidHePqPgWV9Mrx2J+OCOrsXsJHm5EWv8vB0Ty/wnBqwboRDVFQnL7nQ4/4IuVwXQqDbDtH4yZVBHr9gR7eVMVxhwWW/qSgBYPmxWbk3iXeYeVOY= 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 1778978016515204.70721667047496; Sat, 16 May 2026 17:33:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPj-00089t-3v; Sat, 16 May 2026 20:31:27 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOm-0007E1-0z for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pf1-x42c.google.com ([2607:f8b0:4864:20::42c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOh-00051X-UF for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:27 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-835386ff122so1127160b3a.3 for ; Sat, 16 May 2026 17:30:19 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977818; x=1779582618; 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=XfEjDJlVu7LsFiNptc3UAEkKV/ApJAH3Ld019vvaP5k=; b=v4xtZom0P734q0Q05eCnVe9fdxiK1hGU0ckPwrNHYYPbPvNh1tl3zK+usEAXIXSkBd BFu5IaFG/oDXuVtj/M6NkekIJ8SB5wvdAfecXXPrjukULXGCe2bQ5pt1X5huBMnNt+FX YPKLeWCwx+VHut5VD7LunfJt65X6HtjYK15aK1Xtd/8yQYur7Vh+tjNPHyxsy7HqCjTT qiSlhpEWrZwMxy1w4UdT9x2fFp7MqQ5ysMz1gfnzh31SdcT/kTTshYodMCh6GHwjzoSj YnYMgEXCcg9KUCUoo+wFkPboxIlmrE9380OV+nwAdSbN3C7DodcySw1zgNmrM84E59iN b+nw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977818; x=1779582618; 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=XfEjDJlVu7LsFiNptc3UAEkKV/ApJAH3Ld019vvaP5k=; b=M6uRHlHVsbU340BsNirAFUo/yZDD+wk+FvrEbgrhqLQzT9B3nigZhJ+BGn4cu4h2LQ pFyvIGVNW7bXlVmbMtCyWu5nIRRKkl50Th2u+V6RaESzE0eyA+KKL7MCaU7Cl1CD2bu9 bm+CgdHXh7ElgthYx6ZfjW+Y5nDuWhrPPwzE508KTUstt/u4tucdCJHpEp42hD2R9AKp a3FpsallQsEGWXGy7XqfDa2mV04VF3xbZoEwiBkZjuTae3319yDevzCwgXQZK7CRFm6G DSRaFTjs8LpYx0bKcz2JWJJoSEz9AhTltIUuAzTGvj/NkwytA/lNhGWJhoPfuIGlhqXm A4LA== X-Gm-Message-State: AOJu0Ywr+6TbOl9uKyz/tFQa7NxFyS5gPQTrhz/ZNQ5po/V5fQUHpFPO cokhpr2FZX+WCwOe6Lc1dvzzdwWQKSc9MecAcgDF+DiFDpdx7ufHaxSHkO/NPKPcjI+yWutxF4t 89lGC X-Gm-Gg: Acq92OE+SMbdwpYkvZlVcehNWXufUJBiU0cY5R4RD0No2XUmltvY/CGxwADYSOLxWzO 7J1HlFPgscAtZ6nP2RHbEvn/gOjAlTAHvV5yGh+w4fgptsGmrs6OX2DtjgLRStfOtBBVkfnX+5H Eygp0DgGMAktSW0doI1tsHemkBszz+4WU9lRyKUqb3EdCYqKDxzkBLVVgVmGDl6aOjQuj8eQ6+s dWqljp8f5sas6PBXQAsy56xy5mz2Fh4WBpeqvKyHMu94tfDIne2ZC8FSG+Zt/eHmBGjCihl2sy+ D41RnrMz7IT64kZ3Qj5AtQhh8hNhDAY8l7vEskAorc4lX2um8ua9tf2ibstmjkzVl4tTdZ0UTFb iF3e02nGnXs3rWwMQpk9AFDNftcsPCF6IKV4SrYtxRdGJpA+SpAoTiDgio6WswaaUySvHldcIBv IkNskxSWjboIpxasfX91e6AD7yFgiJXNdV7MJKxQU= X-Received: by 2002:a05:6a00:3d43:b0:83f:250d:59c with SMTP id d2e1a72fcca58-83f33c9d141mr10072823b3a.39.1778977818081; Sat, 16 May 2026 17:30:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 16/63] target/arm: Enable FEAT_FPMR for -cpu max Date: Sat, 16 May 2026 17:29:15 -0700 Message-ID: <20260517003002.321430-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978018449158500 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 ff0c2b1c47..a377f67b9c 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1297,6 +1297,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 da5f7efce2..44c7196d09 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -77,6 +77,7 @@ the following architecture extensions: - FEAT_FPAC (Faulting on AUT* instructions) - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) - FEAT_FPACC_SPEC (Speculative behavior of combined pointer authentication= instructions) +- FEAT_FPMR (Floating-point mode register) - FEAT_FRINTTS (Floating-point to integer instructions) - FEAT_FlagM (Flag manipulation instructions v2) - FEAT_FlagM2 (Enhancements to flag manipulation instructions) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978176; cv=none; d=zohomail.com; s=zohoarc; b=DAXDiaIEW6C0jTW3GtV7KP4DeLCk2jae1Vb6U+FseAH787K3lkSTQWaFuAzf2j3I3rxJsY2NCqBFSte0rGig+FWGDqkCEfZeufgbc0UjwRRgsCLU9DcG6RACwHL3xGaozOaXITd0TulxaOCX4JiPtDTmzPHx1T+Zjy1tGvembh8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978176; 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=mGCvxGAP+SJVq2oNHJQ8ObdWRbCOzKV7LFFW7Nyer9U=; b=Neg64hFP7IhSFG/dDC3BvA31ssKLBMV+7lQNC1PCpcfQi1gQTJdG9cbmMaMJPnlsQ0eJQx7DBZVrmykKGsgdRAiTyNOFP4O7AJC+AP/Hgm8SMxmHpFzOkY6VS5efkEiuUEeg0fJPF349gGRgdDbYnmK9PWFiaSOqyvMdHQt/VNY= 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 177897817683842.7705695692805; Sat, 16 May 2026 17:36:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPf-00080m-Vl; Sat, 16 May 2026 20:31:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOp-0007FS-47 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOk-000524-DB for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:30 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-8383fb7143aso435438b3a.3 for ; Sat, 16 May 2026 17:30:21 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977821; x=1779582621; 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=mGCvxGAP+SJVq2oNHJQ8ObdWRbCOzKV7LFFW7Nyer9U=; b=xrMjDetp/OyPYkJwl0iin6c4njiuNGR5ZM4/FKXpF7Er9BUyFiLsLkfNYNEgT0p/iO X57gfCdof4uU12N/w1eruUr4ckVaLel46eK+L9MmfEl0BZjeboy3RSfl9K0hLFPIZdIu LXicPDUfcmlymlyAGLA7fvxW7rZ7s/S90/9bLXzP1quZ/qaxCYVsebUFbkO8RxRiv1+J yNvuvvgxo9EYEi8EBzwXJg+izQI1whUQ9KSNw1v5mEUn78l8r5sCeIJ4MrBBSn+JcXsz xVAfkzra0oH7mrq2foO4zxYfbMTbJbyQVp+R/QUFppb6vFt0fmE2SPtJaikmfha/iphA A3dg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977821; x=1779582621; 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=mGCvxGAP+SJVq2oNHJQ8ObdWRbCOzKV7LFFW7Nyer9U=; b=Dp2qO7NLZrpsXIcZiPTWP3RmcJECUA28bLMGzyeLh4dhJSU0KrQ6sT6Gl38yP286Xv XgbPB9iXcaHjWsFfck7rll8SyEcqRaRdCWwFEooUfQj7cWv/lC3yQWrpNeeAxc5WJCYw ciM56SU0jbSeoB25+XzMQ2l3+lW1gS6ODHfAUZg03iGAgH0BmaZZWnU3/R6jswNkljmB Q2pz1q9r/EqLCqe2V8lq95DayS3vfMfvFsGoriBMiQXJCUOxYxUv2lpYVbRVl0y4rnsz oFkyIWxMUTk/PyACzHcgr5uPLaN6RXQqoPPFefJ4ONSqeSC9XksKrtTQMUrZJDFCwT55 qJIg== X-Gm-Message-State: AOJu0YzIkdL9oEFTK0nPw8WznkcG1g0yaNWVGr+zrSmP5JAtSvDGoCLH NosLWIPrBYD9tc5Yhtz/Oe6HvE2zM9D6lGRCDVXdGw3avc5l+iulz3dNUHlTP4WJsMBnAyXtxB3 cz5sz X-Gm-Gg: Acq92OHTlmWvWF76sEcXWJq9+TMR0bXpX3I9/9cQT/tXeddBXwgIKL5OTnuEQUhCBzp b6Rtot9OPg/ez+5L3ieyEK4Zke7neKnZzN9p6TXnD89v/8BnGqwbAGj+sYvqseozuyRccKcw77L cGOIiQHCYBhToUqxJMYuZOO9Zo65by8HhLXTOThavUxL9A8N8qxulJfWFksVxmECLtlQocvnsxY +P6uJYL7a/kbiixe/n+6ZQErvCJvJ5hl88RbB+DvT1fV35J3XByt0yXCFFdGDBgFvWIwCSOzAOr 6NXJWV7MNtJNcUA4AQfpLtxqXHTeEJ6nLcMV86KqVvxDpGx6FZTLcfwSK7yO12TiWP5UyBuACXy /tbNry7jPxqJQAxXrYS0Wx7YBS4m0LFzIwtI6zf/TB1iCxzUW8e1YkHgS4JtzXEiBExIl6ngLak CGDlHpK0Qm1vKgxR/UbBEeMTauNxj4 X-Received: by 2002:a05:6a00:ab0d:b0:839:e27c:6cce with SMTP id d2e1a72fcca58-83f33d97d9amr9329893b3a.37.1778977819186; Sat, 16 May 2026 17:30:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 17/63] target/arm: Implement ID_AA64FPFR0 Date: Sat, 16 May 2026 17:29:16 -0700 Message-ID: <20260517003002.321430-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1778978177223158500 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 e13c1c1331..1bb77d78da 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -410,6 +410,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 3d6e7f1ccc..34487eeaa3 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6477,11 +6477,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, @@ -6712,6 +6712,15 @@ void register_cp_regs_for_features(ARMCPU *cpu) R_ID_AA64SMFR0_I16I64_MASK | R_ID_AA64SMFR0_SMEVER_MASK | R_ID_AA64SMFR0_FA64_MASK }, + { .name =3D "ID_AA64FPFR0_EL1", + .exported_bits =3D R_ID_AA64FPFR0_F8E5M2_MASK | + R_ID_AA64FPFR0_F8E4M3_MASK | + R_ID_AA64FPFR0_F8MM4_MASK | + R_ID_AA64FPFR0_F8MM8_MASK | + R_ID_AA64FPFR0_F8DP2_MASK | + R_ID_AA64FPFR0_F8DP4_MASK | + R_ID_AA64FPFR0_F8FMA_MASK | + R_ID_AA64FPFR0_F8CVT_MASK }, { .name =3D "ID_AA64MMFR0_EL1", .exported_bits =3D R_ID_AA64MMFR0_ECV_MASK, .fixed_bits =3D (0xfu << R_ID_AA64MMFR0_TGRAN64_SHIFT) | diff --git a/target/arm/cpu-sysregs.h.inc b/target/arm/cpu-sysregs.h.inc index b99579f773..6e8b335b8f 100644 --- a/target/arm/cpu-sysregs.h.inc +++ b/target/arm/cpu-sysregs.h.inc @@ -3,6 +3,7 @@ DEF(ID_AA64PFR0_EL1, 3, 0, 0, 4, 0) DEF(ID_AA64PFR1_EL1, 3, 0, 0, 4, 1) DEF(ID_AA64PFR2_EL1, 3, 0, 0, 4, 2) DEF(ID_AA64SMFR0_EL1, 3, 0, 0, 4, 5) +DEF(ID_AA64FPFR0_EL1, 3, 0, 0, 4, 7) DEF(ID_AA64DFR0_EL1, 3, 0, 0, 5, 0) DEF(ID_AA64DFR1_EL1, 3, 0, 0, 5, 1) DEF(ID_AA64AFR0_EL1, 3, 0, 0, 5, 4) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977917; cv=none; d=zohomail.com; s=zohoarc; b=lqnAlAx38IwP4xK+ZszLibI1h+/0E6fGDDIkilXvXrydjqKg/UXPlEoUNd/lIQSGecpRx2IPXdUaVvr6Uh1BPZXbGFZ33eKKG6i2NH4ABWtmj3+GYuG0egRNVycJihjoBq9cDRE3e7uiTnxwAPJuue6OEQJSBiYepdfB/j0hTLU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977917; 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=Wl6+4I26v8HYA+JJlHEMinIiz3qcncuhnbxRtIcqZ1g=; b=J6eN90IJh5w0Uqn/vhJ4GlFzqORSbiGGBLhUBYwTL4DZzwD2CF9c4aVNPZGkweUFRTtyoP/h4DKqx9BmVzUaUyjy4SWbv1RCBczTDssS1D09J8d4Flywsi1AQDZrt1MI64gJmXCA0ZBbS0YyNjCcvgrr9d9Jdzkl29DjpKkXIDU= 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 1778977917825359.1800248841722; Sat, 16 May 2026 17:31:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPm-0008HT-Be; Sat, 16 May 2026 20:31:30 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOk-0007Dh-MT for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:31 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOf-00051q-Nh for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:25 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-83ef1d17904so1078134b3a.1 for ; Sat, 16 May 2026 17:30:20 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:19 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977820; x=1779582620; 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=Wl6+4I26v8HYA+JJlHEMinIiz3qcncuhnbxRtIcqZ1g=; b=vhy+qo4t8cACiidz1/LgBP3W0ZSUqXJJB06eclbYEG4/LrrKE2FCNtblUrH68pg3ao KK/EjaNbgOsEmZgSSZyu+kDCscg1xAHbi0DffGK9zgdkEOsDF5RfZYnzWUotHvdwxADo T1xJ8Ya6TeRnYbY9JnLUTLJJY0WsXfd1aL6WUQtY7lbMHXLV2DtZKK281Gxu8U2BXW1s CcDAE4YkPp/hVyyeZYibGO0iyRdA/pOypHjDIwK2TC7wHgXv4zGmJlDZAIUT7m3xHGiv wfcbK12vKcpMP5KPOyNLjz4l7DtZgWxeTuq7YKzCY+KGZl823CKQJLZKJjSTH3ehdbf+ ZAYw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977820; x=1779582620; 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=Wl6+4I26v8HYA+JJlHEMinIiz3qcncuhnbxRtIcqZ1g=; b=HtFMhT1sT+6YzTZyh3l6+MVAMaHQfCFupFawsTFQCO4/IZxGETCQu8jYA0top4gOjq zNL4idcY/dlglrwniidnnrjILDuNbEVeJz8A5RBNvjkxoAlhVJULLeR7lJ0EX7bsc65g S0SjRRF9R7BTmx14Fw1tFhB9R0w5ccYLym/BbqCTvmTviuBwKXR2kYT57f3gJGlrjJnX 4Tz8Y8DoPLBreEztcxV3gXFgBPBqBVWQ9OOGwkrjpgDnVjLrvwx5/gQgieMLn3tdWs7u U5cKA72l2jFeneoIbalSYUgVI/A0+IYhKYOHsKHhj5FWq+CmGb+vhWRurnn6PG2QcLZQ vggQ== X-Gm-Message-State: AOJu0YwR2KFGxMsRGjTkHVK14V2wIAwPmZ7Mk9ShYAKkzFOmxvzdrFbC QBh8FP3HDWMSzj4Ffx75pddj8qbTd/3nGwDx65xkuhqzYZGAmW0P3TSqE1nKxtMTzQK2dmRSYma HwKq3 X-Gm-Gg: Acq92OHZiPOOOWi1mRGio1ydgDFF9dsXQ0J3MQuTy+qe4m+UdHA2U1o5p/PU/qAHY3j /6jct1x73t8ukJKdiSZLyh/dE+v/gnE6ttfJTPCAJXajZb3KjN37/GNOwJmKm8i3kGculuss1sQ ScMLuHxMwV0kJzmylB86Cibl6dd6YSqCd2TJJMpc5TJ6slwri5U7dqTfGrI8qQiJUSr1b9rI51e b/gpREndmZpXJXghR/Dpb8We9u6I0UDpd/L96UqmH8gZhRHxa15nyUWUhoHmEXPBMwu3MLeXYrL hSJijTfPMyUntTq+/RiO6piBLbMw9xaDQfPEkBQULCmmWS4pLDCVA+/s7OeVZ8SRBQ1JQ/S+kLO XaOcz+L3J/ygrkrsg9PwE1VMqDClZW4FvUt/L5uWgBPez7+YSXWJ1j6cRxnSfOu2WIMLZZbX2E4 0LE0FhTncwkJvP/DbMGFX29+Vx1xef X-Received: by 2002:a05:6a00:3014:b0:82c:dfea:9e2a with SMTP id d2e1a72fcca58-83f33c4d95fmr10807174b3a.2.1778977819880; Sat, 16 May 2026 17:30:19 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 18/63] target/arm: Add isar_feature_aa64_f8cvt Date: Sat, 16 May 2026 17:29:17 -0700 Message-ID: <20260517003002.321430-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778977918290158500 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 1bb77d78da..1fde3e9231 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1569,6 +1569,11 @@ static inline bool isar_feature_aa64_sme2p1(const AR= MISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMEVER) >=3D 2; } =20 +static inline bool isar_feature_aa64_f8cvt(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8CVT); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978153; cv=none; d=zohomail.com; s=zohoarc; b=iMlsBbAybeCZOq3Qqu4Li2pVRN3REIjxmhCJnPW+9MzGQLr43Axw5BXQWHSC7OotRS8JAfiXniXNoTP4WA0vceSV/KEzqtBClJPWelC2bthiOgwGw8Y0JiUO10ZNFHztudKUyldtZCvTQEt8xvIqiC/txdhaf6NZzrLskjUJM0M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978153; 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=ab0YMMyLPu3b50iAah8B/e/2jI2Hs3Msxzymw79EzNY=; b=AZRaVNqBu3a1oQL+oKm5pMc3S/MPamFQuYitnYt0Ajtzl9y+7HPKmFu51n0NV6T06BeovFAJY3YXdYy2+4WBrVKUHq8J3tbBYpMtZcSv2NHJLmPXsmZGJGdcZBj1Cqgtgfg62x0sNa7H4LAy9BEbYTUfxHoiQn4ED/fbDn8rNls= 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 1778978153914853.2340709707134; Sat, 16 May 2026 17:35:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPl-0008Gd-Lt; Sat, 16 May 2026 20:31:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOp-0007FR-3H for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pf1-x42d.google.com ([2607:f8b0:4864:20::42d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOh-000521-W3 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:29 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-82fa8d6425bso476907b3a.0 for ; Sat, 16 May 2026 17:30:21 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.19 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977820; x=1779582620; 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=ab0YMMyLPu3b50iAah8B/e/2jI2Hs3Msxzymw79EzNY=; b=qkn91hdwMkDHCiAHRRGKHbfNQtrVUtm+7ucEaxhEWqujBDnhhBAN/hgLZwP75JWRwe aO6Iec60MBbjIrl7byx1WODeAVB1JTQttnFTfSb00AU+IIJAF41eSzhdZUpcAqrngdkB W49c+wQaGS8wBhN50iK0RZOL/HYkOlPxJNx15OBGRTbor3ZMPtGPxFUXFF47WjQbQivg TR9I4FqMq2JYXCaC+v/zW4GcAMyiYOLR6gouFMen0AhgoCgD+xGGhGM5+XGizIgCA2Rm sDEy22VonEGjLDGTamXmx4ZF1cABs2oADzdpBbHVyXKBuo/iLB7dbTMT0/oKLNkQf/sm zTFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977820; x=1779582620; 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=ab0YMMyLPu3b50iAah8B/e/2jI2Hs3Msxzymw79EzNY=; b=ZvOVsMIznSnFn0kUQ/8UYyzv6jw/TTCsgooJ5hTn880ibTwaj2EjStgTbFaJzvQidr 6kls5diVOFWwTapMw3Bps7dGQ+GWjO2vq7Gd46SAslrXH2zMmjwQ056q0EyLbs53KF+U KEgu4EFz0HwaFJ6r+NbXOg2kH4/MkzTFi8yXE2Re7pc1XwevfmnU0SowNxAJRYQY9802 nQxIejEHyxyqgdZY/1Gw+RANrI1+UUEaOq0JFtpNUIjKCzHmx0cTqcx7lA8nid/8V31K VtNxj5ZOCV1C6Ppv7p5OE5Hi+dEhVsaZpWfXlwjH0whfV1XLzUfc7MF7T8PmJ4aX5JL0 55dg== X-Gm-Message-State: AOJu0YzjYORBxVr13oral/PmKR0fcfa4/cEUXjewmXCIUI77SV51glV+ 9T+rhyEo+9wpe8OubMh30UYCijlTj16WUS3T3yuZKMma6zHqwfCgLR3s6ehX8DVozPsK8STAn4K 5IeE8 X-Gm-Gg: Acq92OGzolQB7ElmdALJHBUZmf1Av8cMf/qWzR6XF17zI2pp1owwugOrPNfKzBB602M 2zYR0LC8clwX47gtZOda8TO6tDJh+isrMRIHEHYEroD4LwJ8DdlE8YA0ZE/2LdVixNm4PisSO5E jNUQAk46B6u32lBsXd4JqoCPrBEDU0Is2W1TghQ3+LxQzw65D81E2KufYF2gUOimIWxlmA8Zrlv CGTDom0y0wPZI4KG8jggA/hfwOfZ7NxMzy963139NSS2n/94iIjv0EqkHGkZddvVgOmoWArcEZn yHS5XAgHotmDK5AJDkyXgEN4oLDDQx8T/cyXSpMVjt2tt9GqnkGhgN3sSCLraZGJALoeZFnKPrG DJrqruJFp8sdDO/QFAYSH0dOqOVz/7wNxWeyCXEADBjGnaoto7XVhYvfH91mthrpBB8HPQgzJ4e WxBuIhAp/wce53P0kr8aIr0jGZrvRouXzHUBK/g90= X-Received: by 2002:a05:6a00:a257:b0:83b:b0c2:17ea with SMTP id d2e1a72fcca58-83f33de53e6mr10153314b3a.37.1778977820431; Sat, 16 May 2026 17:30:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 19/63] target/arm: Implement FSCALE for AdvSIMD Date: Sat, 16 May 2026 17:29:18 -0700 Message-ID: <20260517003002.321430-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1778978155262158500 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 215df1201b..b7880f773e 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 cc2691b2f6..68b1116171 100644 --- a/target/arm/tcg/vec_internal.h +++ b/target/arm/tcg/vec_internal.h @@ -345,6 +345,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 d2a4b0fadc..ac18ceeeab 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6496,6 +6496,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 4a5b0782d1..2f481ac489 100644 --- a/target/arm/tcg/vec_helper64.c +++ b/target/arm/tcg/vec_helper64.c @@ -174,3 +174,19 @@ DO_3OP(gvec_famax_s, float32_famax, float32) DO_3OP(gvec_famin_s, float32_famin, float32) DO_3OP(gvec_famax_d, float64_famax, float64) DO_3OP(gvec_famin_d, float64_famin, float64) + +float64 float64_fscale(float64 n, int64_t m, float_status *s) +{ + /* + * Given the 'int' parameter of float64_scalbn, we have to saturate + * the 'int64_t' parameter of the operation to some value. Since + * float64 has an 11-bit exponent, saturating to 12 bits is sufficient + * to ensure that DBL_TRUE_MIN can be made to overflow. + */ + int sat_m =3D MIN(MAX(m, -0xfff), 0xfff); + return float64_scalbn(n, sat_m, s); +} + +DO_3OP(gvec_fscale_h, float16_fscale, int16_t) +DO_3OP(gvec_fscale_s, float32_fscale, int32_t) +DO_3OP(gvec_fscale_d, float64_fscale, int64_t) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 666a293540..02c7264cb9 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1198,6 +1198,9 @@ FAMAX 0.00 1110 1.1 ..... 11011 1 ..... ...= .. @qrrr_sd FAMIN 0.10 1110 110 ..... 00011 1 ..... ..... @qrrr_h FAMIN 0.10 1110 1.1 ..... 11011 1 ..... ..... @qrrr_sd =20 +FSCALE 0.10 1110 110 ..... 00111 1 ..... ..... @qrrr_h +FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ..... @qrrr_sd + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977885; cv=none; d=zohomail.com; s=zohoarc; b=DL3kWgB7KbwaNnHnUnUouq/xJpe+35NqTyB79UpvCXnQQ+ftdDlykisN8j8hKhBDbJASNrA5Q38bphCKKG20hZkrS6fgLrptZutHcZFe+AD7/dtrF6bwJFZTX4sXi0H/RzbCMm/2CfExR9+vkX7igdZQR7klgplJ4IsKoCiScX8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977885; 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=+C8mEcK0Q/wuIBusokIyMGl5OxDZ+zgF0Mzf/nkafIE=; b=XFBvk/k5orThTEFcv5QmhFRhWsjOPqvPOVVcyKgKBLAknaK2jhnE9A3EkZ9vM1ZMbwHk0ORWHNJa31fzHQES4u8bjVek+kNP3noNf2CuCKpZ9KCB4Hqx76j4rojDJlA84PXcq71DJr1crZ3RFJSx59U0XyAchJP7H+1vPAYeeT4= 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 1778977885135869.149879546226; Sat, 16 May 2026 17:31:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPd-0007vY-Ap; Sat, 16 May 2026 20:31:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOm-0007E4-Ae for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOh-00052G-W3 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:27 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-c82a6278a4cso836713a12.3 for ; Sat, 16 May 2026 17:30:22 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977821; x=1779582621; 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=+C8mEcK0Q/wuIBusokIyMGl5OxDZ+zgF0Mzf/nkafIE=; b=zP9IP3LnFImmXgHeR/J6wvWRWqXhx4qxu+Jzu20JEXLnUDJ6PnO26c5CNrYD/lwGCP U7ICHp4fC3UVlT9SAPO9UCI+Ld19yUhbt4ojw72vj3p4quv34Ojf+j/jKM9Tf8wNymZ2 oPabS5/DwczSkslmogT6rjDwrDeT0JqHX0dAruj0rXCxewuFrPYWpGiZTfrri0xg8r5f 8Hrxgt6uVXY9Kzi8YuLMOxWqvzT7MGyWD/TKYgBPobEDjZkzFMIdO8SBhfdRzMlp4dId tvsF1sCdhfM5pNUhxW+ZMf9IUolz3aOg7+k4T5X4Yw98Gr698fh3wivpY6kIBGcp8YGF siHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977821; x=1779582621; 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=+C8mEcK0Q/wuIBusokIyMGl5OxDZ+zgF0Mzf/nkafIE=; b=O+Azx2VbPw/r/zaOWpnNKjLdbLeZ9uTnxDzKCQU9imuKdMTBxWTdNj6C0QlYdOcY5R edgy1gLN11vNub07TLEZEL7sTvr29TvKDdzkhtQh1T0KiYp2HmE2Gtr3C6tfPCMWzXTg p1tgygdrDf/E6o0TKk6OWOVeYAChLYO+zVXYVMSmhTW3P6uj/teBTb9qVbDt/ALmLOyY DFRjBSIVpmBaAFpP+JpibkNwA9S7OUMNz1kzU4Y7V68ViqF5hz9MrxRPVXBxYeKqJYIq 4GXdvPX1e3gdJgQbCUBtU+gK8Cp7OYurultPFRZnBp2MYk3huupfBlaZ9y1/D+Rja7Uq pRcA== X-Gm-Message-State: AOJu0Yzor+hY2UV83mjT5664n1byNwY/k6gJyToLqomtmp6s3mxbtiUe rFE7IDbSn5feWdsJ4Mm/Rp6BXTm4l/xGGRtV+bo0rDGeIlrbhGY3OMxKbXlSEEkhEX85FExgByR R3k4i X-Gm-Gg: Acq92OEUru1ja9WLA6bnmmvIIMPBJ9W7Dq0enI45yf0QzLoLs2+0XG5L4Rd4hyVg+mS D1rtfl9buFZ49FxfID9ehDmN/4dbXIcf5qlSn1USsKcSUJseoISls3fh92vHoxKzamT5HTCrpFf s458goixcGs8yCaFJF9otoe7BxSex22jn8geXrK3ut+LA6MRsztwypxjkzTuzxxLsjI4ixFfp+1 79ulKij+SS/qS3c8dLzW8juhZwoigkIiZrBypHLqcL8tf4EDzt46uwlD2QMdujlCn8r4Rczy2JK Q3A1aue1k4Taw4HW4wtbGTum+fn4feId76q5OPotc1LYxYFL6j5ffVjdEG1q9VrTaQktzsewH5L wHZDWJHCE5XZLdyDjfOJgE+WpMXchGAi07w0VTpyjdTZ+GPcNXcw+pzHFpoalNv76zoe75QT4Z1 H31aUdtuytdHEtoNSCf2/lv1lqRUilTXuSeO3s5R8= X-Received: by 2002:a05:6a00:2908:b0:82a:6461:6d15 with SMTP id d2e1a72fcca58-83f33f166f9mr10266463b3a.46.1778977821098; Sat, 16 May 2026 17:30:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 20/63] target/arm: Implement FSCALE for SME Date: Sat, 16 May 2026 17:29:19 -0700 Message-ID: <20260517003002.321430-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778977886006158500 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 1fde3e9231..f9c979d20b 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1622,6 +1622,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 a67501226f..e2d17de165 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -707,9 +707,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; @@ -719,7 +722,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); @@ -831,6 +833,15 @@ static gen_helper_gvec_3_ptr * const f_vector_famin[4]= =3D { }; TRANS_FEAT(FAMIN_nn, aa64_sme2_faminmax, do_z2z_nn_fpst, a, f_vector_famin) =20 +static gen_helper_gvec_3_ptr * const f_vector_fscale[4] =3D { + NULL, + gen_helper_gvec_fscale_h, + gen_helper_gvec_fscale_s, + gen_helper_gvec_fscale_d, +}; +TRANS_FEAT(FSCALE_n1, aa64_sme2_f8cvt, do_z2z_n1_fpst, a, f_vector_fscale) +TRANS_FEAT(FSCALE_nn, aa64_sme2_f8cvt, do_z2z_nn_fpst, a, f_vector_fscale) + /* Add/Sub vector Z[m] to each Z[n*N] with result in ZA[d*N]. */ static bool do_azz_n1(DisasContext *s, arg_azz_n *a, int esz, GVecGen3FnVar *fn) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 9dec7318a4..ee874be1a6 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -250,6 +250,9 @@ ADD_n1 1100000 1 .. 10 .... 1010.0 11000 .... 0= @z2z_4x1 SQDMULH_n1 1100000 1 .. 10 .... 1010.1 00000 .... 0 @z2z_2x1 SQDMULH_n1 1100000 1 .. 10 .... 1010.1 00000 .... 0 @z2z_4x1 =20 +FSCALE_n1 1100000 1 .. 10 .... 1010.0 01100 .... 0 @z2z_2x1 +FSCALE_n1 1100000 1 .. 10 .... 1010.0 01100 .... 0 @z2z_4x1 + ### SME2 Multi-vector Multiple Vectors SVE Destructive =20 %zm_ax2 17:4 !function=3Dtimes_2 @@ -291,6 +294,9 @@ FAMAX_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 0= @z2z_4x4 FAMIN_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 1 @z2z_2x2 FAMIN_nn 1100000 1 .. 1 ..... 1011.0 01010 .... 1 @z2z_4x4 =20 +FSCALE_nn 1100000 1 .. 1 ..... 1011.0 01100 .... 0 @z2z_2x2 +FSCALE_nn 1100000 1 .. 1 ..... 1011.0 01100 .... 0 @z2z_4x4 + ### SME2 Multi-vector Multiple and Single Array Vectors =20 &azz_n n off rv zn zm --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977992; cv=none; d=zohomail.com; s=zohoarc; b=D8n2NKJHqZ6bqjNeWvqZSS/q/sQkLugCB5vo9cVfyFL4GPeCCi/AORk+LOZJEIXAuwn2H0hziQhCCs7Ql7qdKYJJbZzmdhBD/JwBWWpj2tRGO9ss2x+jb1kNwvCCX2XcKL6+IVdOju3fHljaRXRwOwJ/2+w8QLkpVoYYlW4LDrc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977992; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=Ad95Qfvf39Y/pJtpBMnjf6EUI1HAMLBfD/Kn4uxVX0Y=; b=HqhQ3Nn2M6Bi5AgN101Fnwr7iSY2qj5ciniT04IC4FL4RDZqbm6oBuSla4nd+mo6ybrliidkGePVBnLMT2FosZPVM6s0DkuR9yfb9uf0jE6Y0v2xzwYmsSHDZ6c+9XOWKyrWU5vd1KE1zRub3PTZ2hFZL80gnNlBj8vkLrVOEyw= 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 1778977992231925.5348307657217; Sat, 16 May 2026 17:33:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPd-0007wY-KH; Sat, 16 May 2026 20:31:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOm-0007E2-4T for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOh-00052S-Vn for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:27 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-c80203b9d7bso364692a12.0 for ; Sat, 16 May 2026 17:30:23 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977822; x=1779582622; 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=Ad95Qfvf39Y/pJtpBMnjf6EUI1HAMLBfD/Kn4uxVX0Y=; b=PAxshp5ZXqRV/ihf143B8zWEx89s5frHPIml1PH7YfDfqI5fd2n4lsf3wE1ejizUzD hruymdhNMBqeIpq2K2ynfki3WQ6g5x5K6SNDbUbzAI3u7Etev+ism+nU2BJtcK0GEOiW sYLUGpWbRLvzObMU/Plv53sHROUeduVbsx6fbA1tUNGNHH7we46QkyHptFh+EqTVJEtU IzWZywUTCAblA5BQi2dUN/dMUeuVCBB6Fl3lcsEgsi1Ref1kgXTku0A3qHYKF5lXYnC5 Tb9VCq2H+74h29rpzzi7Sfbu6bwI44T2LZo90NXZ/MqT5fjKPg5VrWvmDDFUlGwr8wOx rUZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977822; x=1779582622; 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=Ad95Qfvf39Y/pJtpBMnjf6EUI1HAMLBfD/Kn4uxVX0Y=; b=DcT1sQILk5ixD9JMQp/nj4xARpJCSB7Zrlr6EqYecgzJKLngXgjU3hps6AimcaxRz1 TBUBzpsmHuYta78u+3EYZlzZi5mIFTcAK+FDADdjuuPh5KYejz4ZawRU0zCID1m9RygR stU4TI1hvb7she2GXdsJvGJjf6uBp7pQb6/WxweFsFR/daKR+2siLFcKcR/MC0jhHzdG L6r/fHdrRnlGUnkZkYZ1vOZ8okCYuvhhEeDBp4iSPj5V9/6LImtGgN+bxTXofTR0L2fA f2TUpARhv0SMFWVGo6Y8Y1yfFbHr4sS5MotpGtRjyyShCFE2Env/T8vF4zNlWZyxo1bY IjoQ== X-Gm-Message-State: AOJu0YxWHzrIRuNdudG0k9TUQO3oCnVvajR3ceqQrIopuUeNodYQy8oG cNvfScuIF0eRFSybdQPUpJD4qZkgAni3qO/l7nhlS30J+zZJIOEMxRE2nwId9pzXpUTt45+c2LU S+1qb X-Gm-Gg: Acq92OEsaBS9KNx1CP1liGjKXpWg8TcD+wZTgI6r7xkdYsHcPOvt4K0SPFFD6oEPX/+ VQwEdH01AxBeNn0Gm+yLr9qpOaAInIthZiAMqECG3kSwpYnYrJfUhnxHVV2MuhJT5MIT7aZVms8 PIoxcs3NqVchIbJHfg/eG7X3MjaK/VN9AfL5dNTCLaGNkpmDp/NnUuvp5gdBH4Y+4D+a6NbZBlS xpq3zqFaz9sdNQ3qx+tAdhcb08GoKQHftmS8mC+uyLKn9UBVu36sbJQ6533nFpqSyLdwrZ7f6T8 nwKBLNfnSrpsVnnKKDGf+EZq1o4OPnAqMfTYPrxYApJtOte9SJBFAF8SEXHMPsGR8V2XVhEke8Z PfE5rzOntCecS/tFDMukSMs3x1+lAju+kJkvQcGUlpEyfRRW1kTfI6DJzGA0WUDWhAy9946TFhP 5ZTjm46zllDYUVW5aW84SDgS68XPAPm1bYY182MiE= X-Received: by 2002:a05:6a00:429b:b0:82f:d34c:ccc6 with SMTP id d2e1a72fcca58-83f33ab6689mr10007366b3a.10.1778977821914; Sat, 16 May 2026 17:30:21 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v5 21/63] target/arm: Split vector-type.h from cpu.h Date: Sat, 16 May 2026 17:29:20 -0700 Message-ID: <20260517003002.321430-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.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: 1778977994386158500 We want to be able to reference ARMVectorType etc from common code, so move it out of cpu.h. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/arm/cpu.h | 38 +--------------------------------- target/arm/vector-type.h | 44 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 37 deletions(-) create mode 100644 target/arm/vector-type.h diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 9e637c1d80..9f5da3d863 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -35,6 +35,7 @@ #include "target/arm/cpu-sysregs.h" #include "target/arm/mmuidx.h" #include "hw/intc/arm_gicv5_types.h" +#include "target/arm/vector-type.h" =20 #define EXCP_UDEF 1 /* undefined instruction */ #define EXCP_SWI 2 /* software interrupt */ @@ -140,43 +141,6 @@ typedef struct ARMGenericTimer { uint64_t ctl; /* Timer Control register */ } ARMGenericTimer; =20 -/* Define a maximum sized vector register. - * For 32-bit, this is a 128-bit NEON/AdvSIMD register. - * For 64-bit, this is a 2048-bit SVE register. - * - * Note that the mapping between S, D, and Q views of the register bank - * differs between AArch64 and AArch32. - * In AArch32: - * Qn =3D regs[n].d[1]:regs[n].d[0] - * Dn =3D regs[n / 2].d[n & 1] - * Sn =3D regs[n / 4].d[n % 4 / 2], - * bits 31..0 for even n, and bits 63..32 for odd n - * (and regs[16] to regs[31] are inaccessible) - * In AArch64: - * Zn =3D regs[n].d[*] - * Qn =3D regs[n].d[1]:regs[n].d[0] - * Dn =3D regs[n].d[0] - * Sn =3D regs[n].d[0] bits 31..0 - * Hn =3D regs[n].d[0] bits 15..0 - * - * This corresponds to the architecturally defined mapping between - * the two execution states, and means we do not need to explicitly - * map these registers when changing states. - * - * Align the data for use with TCG host vector operations. - */ - -#define ARM_MAX_VQ 16 - -typedef struct ARMVectorReg { - uint64_t d[2 * ARM_MAX_VQ] QEMU_ALIGNED(16); -} ARMVectorReg; - -/* In AArch32 mode, predicate registers do not exist at all. */ -typedef struct ARMPredicateReg { - uint64_t p[DIV_ROUND_UP(2 * ARM_MAX_VQ, 8)] QEMU_ALIGNED(16); -} ARMPredicateReg; - /* In AArch32 mode, PAC keys do not exist at all. */ typedef struct ARMPACKey { uint64_t lo, hi; diff --git a/target/arm/vector-type.h b/target/arm/vector-type.h new file mode 100644 index 0000000000..d94c0d986e --- /dev/null +++ b/target/arm/vector-type.h @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef TARGET_ARM_VECTOR_TYPE_H +#define TARGET_ARM_VECTOR_TYPE_H + +/* + * Define a maximum sized vector register. + * For 32-bit, this is a 128-bit NEON/AdvSIMD register. + * For 64-bit, this is a 2048-bit SVE register. + * + * Note that the mapping between S, D, and Q views of the register bank + * differs between AArch64 and AArch32. + * In AArch32: + * Qn =3D regs[n].d[1]:regs[n].d[0] + * Dn =3D regs[n / 2].d[n & 1] + * Sn =3D regs[n / 4].d[n % 4 / 2], + * bits 31..0 for even n, and bits 63..32 for odd n + * (and regs[16] to regs[31] are inaccessible) + * In AArch64: + * Zn =3D regs[n].d[*] + * Qn =3D regs[n].d[1]:regs[n].d[0] + * Dn =3D regs[n].d[0] + * Sn =3D regs[n].d[0] bits 31..0 + * Hn =3D regs[n].d[0] bits 15..0 + * + * This corresponds to the architecturally defined mapping between + * the two execution states, and means we do not need to explicitly + * map these registers when changing states. + * + * Align the data for use with TCG host vector operations. + */ + +#define ARM_MAX_VQ 16 + +typedef struct ARMVectorReg { + uint64_t d[2 * ARM_MAX_VQ] QEMU_ALIGNED(16); +} ARMVectorReg; + +/* In AArch32 mode, predicate registers do not exist at all. */ +typedef struct ARMPredicateReg { + uint64_t p[DIV_ROUND_UP(2 * ARM_MAX_VQ, 8)] QEMU_ALIGNED(16); +} ARMPredicateReg; + +#endif --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978029; cv=none; d=zohomail.com; s=zohoarc; b=fl82PaPljoe06mbgO3uXuYUDbGWrNRk3PEnHi0cMKzYYRkoR33KhFSlTJISM2gpSBP4cZvpc4FneeQJBPEGpIZQwNclqt6BWf1ui9qKiskKxhCxYM/Hr50bKe/QTbwr470grC/d9wZmgBenZZKspnkzDjgLgyDXfWbiRexN3lgY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978029; h=Content-Type:Content-Transfer-Encoding:Cc:Cc:Date:Date:From:From:In-Reply-To:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:References:Sender:Subject:Subject:To:To:Message-Id:Reply-To; bh=zWru1QCIwOGhRVfqONB531T6JUAP9Yz4VcrPsm570nM=; b=CvhmqZkABmLRXevC9dcWzkHiQCmmDKZWuUz48ZV8kZw2++jYk6s4D1A/WOzuNNfqon4EojgAbiozWQXaLbrX9g6IcOkum3jl3CpaaN3AVILLcBMoTcmjkfah8jGEHFsuT+yKI0rQE5z5oH/2TVGOII2FLWdbU7rFQPZ3L3U+mZE= 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 17789780290481003.542298674636; Sat, 16 May 2026 17:33:49 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPk-0008Aq-7m; Sat, 16 May 2026 20:31: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 1wOPOp-0007FU-4b for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOi-00052d-Mt for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:30 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-8367df48711so420887b3a.1 for ; Sat, 16 May 2026 17:30:23 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977823; x=1779582623; 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=zWru1QCIwOGhRVfqONB531T6JUAP9Yz4VcrPsm570nM=; b=opBm/S535v4Ty+xC7WxtAukQhhjB8CfH0eL1l6AuAIZeqOOs0PvRmmvAW1WyeVNylY M+tteDrpU3YrIswcGwH4WXIb1GdkneoXZ2Ss648U9zcuuyA03Clmv6dAQxb1maqZTjFN Q4Yr8rtZBEv8SYuGl8/hyavRbHSxvOColzTBsUB8rO0wE1yoJ0eTRWmAjud2nboUgviC k2itjvlLpC+k9tEh0PFTko+bTyY1g8OOl6hNPJlCOLl1gXEQR+fDJcijPw0ygWqjrLqm Gb7rhWENZD3UE/jX05UkIZyDevCMjc6Cr/jul70RLQHq/9j4NLsmYs70ExJW/m9phmpl DrOQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977823; x=1779582623; 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=zWru1QCIwOGhRVfqONB531T6JUAP9Yz4VcrPsm570nM=; b=U5ziKID+2qUQWiG8pEi6rM3K+ZAsNFJ8IBbNPhB8tpy5u1LYgelld8NGPjnPgXoaks Q8Oo3OEdC4biZ3W9d3KIGHAn1iudLWcgiJ7KWd6Fxx/0jJfvlGfGkGfaTuFojOkGNJHD kLJfXWAROhlWCNZG5BLH7KWt7S2gBhKHJmLjsnSlhGWs7mk/fV1Cs969hqq/VmKnWXob a0GkSmyfJ7f9MBv4u6/SC/I1bBSTR/McRJvCkEUSO72BHhcBhkzzGsDIiBWMtU0KGkUT QqXCL37B8Jg1uZMgkJEvJq8BEd/Lv6bIEsa370CFRuaZ5Kkt3T33Mb3AAhK2Mhn6dBKY nsGg== X-Gm-Message-State: AOJu0YyIfBL4iZHbrdHs8lLYSjsCuuj1IFuaPIIpYxAFKzcfFJoybiNi dMH2ZU7qvXlUIYFe+T6mW6TJivnTTT1X0jt1dn8GS/8fnOUtxs7PRsLQRbam2vakiRANG7ckXve gBSty X-Gm-Gg: Acq92OF4qmXVVonnY3MOLRov6NGxzG41O1Dge+juHegP80R0iNk/955NytusGV13UXA eduf/+iKfIIHz8GPosdGpkUYBcgsHDDJx3vYANaKokFzdBF7d40Rbm6gd3hoK34AoGdIaw2aN5q MaHmnggds9GgCnE5QnTT5dEZ7PaV1E955W/jnQUogY26k0byxZazl5rmkmwUljWsxwqTUwlJw5u GH4Le8p91hGN+jU9M9dRxvS4+YAjVc1Ol7F++0sJMj/TSvXbkXxS0VVX/p9EYlASldhWp6zoxiZ MEiJWjbeOpqleIJfeGJtXX+JIThXcy5X1xwucbCCXNKLHqeze+KccW97lx1WSjfBCsWxJUq3dom yC/tmS2v/HN9s/MNFSk+6Zj064KzNkT6WgI6rfQBL+7CDP2J11cbvpGpIo1sF7WZbpAueKJiSU0 psZ5BAy9bOLMrugJ3X20ADWaUeR+oW X-Received: by 2002:a05:6a00:3695:b0:83e:b443:965e with SMTP id d2e1a72fcca58-83f33c32a19mr9737704b3a.3.1778977822585; Sat, 16 May 2026 17:30:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH v5 22/63] target/arm: Move vectors_overlap to vec_internal.h Date: Sat, 16 May 2026 17:29:21 -0700 Message-ID: <20260517003002.321430-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1778978030414158500 We will shortly need this outside of sme_helper.c. Reviewed-by: Philippe Mathieu-Daud=C3=A9 Signed-off-by: Richard Henderson --- target/arm/tcg/vec_internal.h | 8 ++++++++ target/arm/tcg/sme_helper.c | 6 ------ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/target/arm/tcg/vec_internal.h b/target/arm/tcg/vec_internal.h index 68b1116171..b906d2a2e6 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 @@ -457,6 +458,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 16b96890cc..7ef6f5d71b 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -34,12 +34,6 @@ #define HELPER_H "tcg/helper-sme-defs.h" #include "exec/helper-info.c.inc" =20 -static bool vectors_overlap(ARMVectorReg *x, unsigned nx, - ARMVectorReg *y, unsigned ny) -{ - return !(x + nx <=3D y || y + ny <=3D x); -} - void helper_set_svcr(CPUARMState *env, uint32_t val, uint32_t mask) { aarch64_set_svcr(env, val, mask); --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978095; cv=none; d=zohomail.com; s=zohoarc; b=QV3UyMXfKrzKhISPWuWIe7op5eWpZdSqQVbHHAMFRpFCUJaxOiIrhhH0v73W0k3HvKLUy1K7LpKDq54c3/br+0DncUZ/WLJClrezTTxjEjNAuk4EmJMij/TTLtdqq07gtv5cs+VPzY8Utd8hbprHYYhnvaZ/Pxm+W+g3qJRVeeM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978095; 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=OZixi1Vftt/RVjdhKeHFrWjm5Jh2dbB7A0JieKjZg60=; b=hhixoreWRC3gVIhb+k5Av9cBmNq404Q06vk9CIahy7OTWXIjA/+vNpWSIEP2CbRYuDp3c5WzuC5EWcmZaaUsxvtq+TxLrNr8DY+U965s6ofU7A1LIWe2RMjNa9h3nx8HO5aym99BKTKTnQ/XEhiNAIZnA5FOtelan4W1tv5qSok= 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 1778978095097339.00745931088613; Sat, 16 May 2026 17:34:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPe-0007zX-RK; Sat, 16 May 2026 20:31:22 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOp-0007FX-MF for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOk-00053i-De for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:31 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-834f1075805so859121b3a.2 for ; Sat, 16 May 2026 17:30:24 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977824; x=1779582624; 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=OZixi1Vftt/RVjdhKeHFrWjm5Jh2dbB7A0JieKjZg60=; b=d4v4eRzobXGy395XlOOQLujCGhHKa4s9ELirxrPdpxcq8xZxtyEe6oBxnAocXTeEOy mFt1r02XQdrA3xSVt8Lc0ak3sA8po4iPT8Jf+kJpOJXQVUFiEg8nAjDFDTFJ+nFvQN6y uj4M2ahjZyL1C4vy9clw1ZC2i6/mTlQ42QNWODj8LaPjT+QmPRemn3HAZl1kpQaOyY5N zegeET0jVT3va6JDl7uwwEpCbpW7jA/4ixCeTy03VDMebcJHHhb95ri/2L0YZXuxc2zM ma4p7NStYf4YObeOuvB5NTxmt51lvHG6rrx79p2axgEteSDJDDbS0iFSzSuHaunVWZ3E I3eQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977824; x=1779582624; 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=OZixi1Vftt/RVjdhKeHFrWjm5Jh2dbB7A0JieKjZg60=; b=j6mm6sqLSZhcRpVW56ILX1RvyteWU7jFh5vtBglIRq0u+TGCsXCzkzZXi6nzStMtzg /wEHvR5A0j07SU2Ei3fCj6yhb+weNpY8RGZN23V9cu1sQjAwLuPNHajLHyvp8fB0FvkU 1LkhFP7Lfq5SPKxy+5rh/VvuPaeEQJTvcRZUGElCQFmsWRJesaRzc5sDQlTdYnd0qIae ZihVn0+vsA+6u/eBVULSdI7M2aSv9p1KdxcAYz2nixl1yTe6voIyLNmSMAuuNo/7E8XD D02AfxojZInke+Aq2BiMWiXiiqPoNM0nxHoTwcGHpUlMXLhHzBS98RgDXTh116OC8/mY fL5Q== X-Gm-Message-State: AOJu0YyF33PbZGQQQtfIarvOKUlaxb4A1CozPO1s1TpM4gyCwilGvjgP QtzHhN0PUJRfH2jMEB8CpqYfA3e4G9dCgJmSUI/DY+49jBCslX0psGFWbioQ3lin+xck9gNLHP8 zE+pg X-Gm-Gg: Acq92OF7ELlyTnBzvf9ncVqYcjXweGhI0klJPRnxo6KhLpBicSZaB4vIiTQkSVd/y1e TedvkzLiixdI6gaACimQLALj9ssY6LlbVhDZCVjHBdxF5V8Se8Un0lZnALFX0pfgR+YSPZ/G300 zsLaOr106EJRASRqwmhIrQLmNuImc7PopXAmMmrrFRPqQDgG0TbeiVKevHZ+v3FHohkDTtRN5U0 0LcuaFl146qxgJauoEuqB7IenGSmsXiHuY26wGfY4XO8cEtX+ks0ZeoHXk1l5jGkayV3FQs2i4R a2BDRGrlBMtHEGXtZxPuTQm6mHLpNE1Xz07jaLY22OTHviHcVNQwZLP16KaywpZPYzPbNdvYPwf 9mk7hqdtRo/JObQOKwyQgAbU+KC/dgC+Lx6DTRAxXog0bvsin3YA7JjEyRz+wiETfUlaV34VwqO Hw2LKWGXptyovXuSrz8UwBgxPfOXjW X-Received: by 2002:a05:6a00:3391:b0:82f:425b:4c27 with SMTP id d2e1a72fcca58-83f33cb3aa7mr10246988b3a.14.1778977823754; Sat, 16 May 2026 17:30:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 23/63] target/arm: Implement BF1CVTL, BF1CVTL2, BF2CVTL, BF2CVTL2 for AdvSIMD Date: Sat, 16 May 2026 17:29:22 -0700 Message-ID: <20260517003002.321430-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978097119158500 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 | 132 +++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 34 ++++++++ target/arm/tcg/a64.decode | 3 + target/arm/tcg/meson.build | 1 + 7 files changed, 191 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..33f12d45bb --- /dev/null +++ b/target/arm/tcg/fp8_helper.c @@ -0,0 +1,132 @@ +/* + * AArch64 FP8 Operations + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "cpu.h" +#include "internals.h" +#include "tcg/tcg-gvec-desc.h" +#include "fpu/softfloat.h" +#include "fpu/softfloat-parts.h" +#include "helper-fp8.h" +#include "vec_internal.h" + +#define HELPER_H "tcg/helper-fp8-defs.h" +#include "exec/helper-info.c.inc" + +typedef enum FPMRType { + OFP8_E5M2 =3D 0, + OFP8_E4M3 =3D 1, + 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_fpst(float_status *orig, float_status *tmp, + int propagate_flags) +{ + int e =3D get_float_exception_flags(tmp); + float_raise(e & propagate_flags, orig); +} + +static void fp8_finish(CPUARMState *env, FP8Context *c) +{ + /* FP8 convert insns don't update FPSR.IDC */ + fp8_finish_fpst(&env->vfp.fp_status[c->fpst], &c->stat, + ~float_flag_input_denormal_used); +} + +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); +} + + +static FloatParts64 fp8_invalid_input(uint8_t x, float_status *s) +{ + /* + * Invalid input format is treated as snan, then one of the uses + * will convert to default nan and raise invalid. + */ + float_raise(float_flag_invalid | float_flag_invalid_snan, s); + return parts64_default_nan(s); +} + +typedef FloatParts64 fp8_input_fn(uint8_t x, float_status *s); + +static fp8_input_fn * const fp8_input_fmt[8] =3D { + [0 ... 7] =3D fp8_invalid_input, + [OFP8_E5M2] =3D float8_e5m2_unpack_canonical, + [OFP8_E4M3] =3D float8_e4m3_unpack_canonical, +}; + +static bfloat16 fcvt_fp8_to_b16(uint8_t x, fp8_input_fn *f8fmt, + int scale, float_status *s) +{ + FloatParts64 p =3D f8fmt(x, s); + p =3D parts64_scalbn(&p, scale, s); + return bfloat16_round_pack_canonical(&p, s); +} + +void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn, scratch[16]; + bfloat16 *d =3D vd; + + if (vd =3D=3D vn) { + n =3D memcpy(scratch, vn, 16); + } + n +=3D ctx.high * 8; + + for (size_t i =3D 0; i < 8; ++i) { + d[H2(i)] =3D fcvt_fp8_to_b16(n[H1(i)], input_fmt, ctx.scale, &ctx.= stat); + } + + fp8_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 ac18ceeeab..085e7e3b95 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -22,6 +22,7 @@ #include "helper-a64.h" #include "helper-sme.h" #include "helper-sve.h" +#include "helper-fp8.h" #include "translate.h" #include "translate-a64.h" #include "tcg/tcg-op.h" @@ -1457,6 +1458,24 @@ static bool fp_access_check(DisasContext *s) return fp_access_check_only(s) && nonstreaming_check(s); } =20 +/* + * Check that FPMR access is enabled, for an indirect reference by a + * vector instruction. See CheckFPMREnabled(). + */ +bool fpmr_access_check(DisasContext *s) +{ + if (s->fpmr_el) { + /* + * While denied direct access to the FPMR raises SystemRegisterTrap + * and targets a specific EL, denied indirect access to the FPMR + * results in a simple UNDEFINED to the default exception level. + */ + unallocated_encoding(s); + return false; + } + return true; +} + /* * Return <0 for non-supported element sizes, with MO_16 controlled by * FEAT_FP16; return 0 for fp disabled; otherwise return >0 for success. @@ -10612,6 +10631,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 4fb2c15f7e..936994eb3f 100644 --- a/target/arm/tcg/meson.build +++ b/target/arm/tcg/meson.build @@ -46,6 +46,7 @@ arm_ss.add(when: 'TARGET_AARCH64', if_true: files( 'sme_helper.c', 'sve_helper.c', 'vec_helper64.c', + 'fp8_helper.c', )) =20 arm_common_system_ss.add(when: 'CONFIG_ARM_V7M', if_true: files('cpu-v7m.c= ')) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978000; cv=none; d=zohomail.com; s=zohoarc; b=Sz9i8nMf9kRuZoIOxosl1G5zzKY2mrJNa8rCdfrVmKGBqLUqEzcOfpwCW0Nzz3jABehJCau/EDOKm1krZ7if+BlDh7C+6iZyxVv8ScEoqGnSkGNDY6S+nl3+0AhhcBf4b5QSCYb6D7SVjkgpC8hpttGrAvgo0BeXfS3TSUth+rA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978000; 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=JYbs//xfSmd30lTvUPo/vUUuHjT2oeSDx/AoUqmlW8E=; b=VQGwqsmfh2nxlvzf7e1DFkuQmvKlpQFBsI36MFVgMh0GmtdjqcoVOggWBrpPFF/nvS0j+tlCxR1Sio+ZC773Zn31ejzkzOtS80dzk5q4LhOp3MKMPJ6lTA5VBrrknhr7rfL3ZyBP9LuNIhi/6ZAWzbUnZ3jPwIAfkpzja2HuQHY= 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 1778978000749838.8544624585385; Sat, 16 May 2026 17:33:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPp-0008Nz-31; Sat, 16 May 2026 20:31:33 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOr-0007Fa-RS for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOl-00053x-Ap for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:32 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-82fa8d6425bso476956b3a.0 for ; Sat, 16 May 2026 17:30:26 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977825; x=1779582625; 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=JYbs//xfSmd30lTvUPo/vUUuHjT2oeSDx/AoUqmlW8E=; b=hsQV22zAJjU7H8vbX5ljjg/WdWMZfSOHu2SjAkXd614bp0dQFGXV0JYWhtDIrsY5tf 1mINda9FINQeQfDVg9f1ZRr4rW1PDYddicjxYyvoR+uD4lakrgcjOq8NeZOPr9nRsq5B webWQl/otWSUt93/hxUK88l7TdOsIttDiUyhXFCsooePQ9Pa2cM2rYV2tCgxp77HM3Bq w/ciA3MXXfmvmkhDXAgMFtncklTlS+ZlvUfrxXDAaxkXAPWag2Lw7xco37S6jmTKV4t7 QHz6Vlu1W5muuYhkcAjqOKJs5gpg2RsRd7Hi7Y/diCQlnTBk5rUrbgLIQvvSzdAWxGIS An5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977825; x=1779582625; 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=JYbs//xfSmd30lTvUPo/vUUuHjT2oeSDx/AoUqmlW8E=; b=e7DbsxCbFUUtwywK7UhvbvQkaIrLO3OwsQg6m9VmD7e71EuaiXxnvN5avBbzpX3CFa lDOWjC0V5Ctsf55fmeBxI3QPwnFudacSLlmjZhMvj70KyOKj/oGwv7LV2R5TIzcAqD0+ eESrdVTAg0jZchzPmS8heTbp2xVH4+C3CKFDoVtX9PxZ9YQCgJtuJZKpSsOEZL6IPBQg +a0m/EfI9gE2szu5vCU/weJSii1PaeIn2EDf3dN39UYCEBphck4N3xfqlZNmhbLut3uI 2FT3B9azcZqcSfi21ZG7biACklcze8cdPZgE1yHg13EhUcHNlDwEKjQ1JS71oxLtjNVl PYAQ== X-Gm-Message-State: AOJu0YyMqL0WtEcyjaxozM+GCksoGOtxOR2qVZVh951XoexroxujHoO1 VE9ID6vJ3oUGUYMZIzjqej+7RUddDizSHPvADUP1EEmGFJc8pylNiUDCCrOpFWa3jYB+Zo3itzT FtPCr X-Gm-Gg: Acq92OEfOoTNnKy81UjkZS6mQtJ/3lIOXevRNwQ/3h9D23ZumAQvH9WvH86igjDfUEO mRFemLsKjKbGmG9yhWXMK0g4cV4D2U53Sn4j7Z4SURbN1XbIkD7NluwFZIGk9H/6xOsCkZLVpNQ 6ozaD2DUGp3OOukplelM+vUBVbo8Z5JN4E4dJaTSOt/c+nrSY0KeDiNH+SWe1X65FxN0spEwy3b y35C7Y9hE9viEgNUOYc88LxAFekh9gFmRYHKdMQBABgzCzUmR4kyqNHH6Cgb6fCqdOWg3Vpml9c LuuXoiD7GQciOrZcBuLaGbIkAU/EIjlt2gPm4BOB3Nq/0XE+q0qQKjdyxWgCwBm0QQKC/1CFr9y YZvLTJS0pRsb9fob0jxcEg7EuB4s7DLfOvPigt42YEcNxCpzUqwi68lnDyJdtx223PuU3QDZRe1 sujgqo0LFwkw9Gc8sebAetlC9vmZht9oFmL/fX31k= X-Received: by 2002:a05:6a00:3689:b0:827:3e19:574b with SMTP id d2e1a72fcca58-83f33dfe64bmr9680158b3a.43.1778977824901; Sat, 16 May 2026 17:30:24 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 24/63] target/arm: Implement BF1CVT, BF1CVTLT, BF2CVT, BF2CVTLT for SVE Date: Sat, 16 May 2026 17:29:23 -0700 Message-ID: <20260517003002.321430-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42a; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978002412158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 6 ++++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/translate-sve.c | 23 +++++++++++++++++++++++ target/arm/tcg/sve.decode | 6 ++++++ 5 files changed, 52 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index f9c979d20b..fd09bbc5cf 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1643,6 +1643,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 33f12d45bb..7719d43d64 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -130,3 +130,19 @@ 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); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d =3D vd; + size_t nelem =3D simd_oprsz(desc) / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + d[H2(i)] =3D fcvt_fp8_to_b16(n[H1(2 * i + ctx.high)], + input_fmt, ctx.scale, &ctx.stat); + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index db32230595..9bab5feb93 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -21,6 +21,7 @@ #include "cpu.h" #include "helper-sme.h" #include "helper-sve.h" +#include "helper-fp8.h" #include "translate.h" #include "translate-a64.h" #include "tcg/tcg-op.h" @@ -4067,6 +4068,28 @@ TRANS_FEAT(FRSQRTE, aa64_sme_or_sve, gen_gvec_fpst_a= h_arg_zz, s->fpcr_ah && dc_isar_feature(aa64_rpres, s) ? frsqrte_rpres_fns[a->esz] : frsqrte_fns[a->esz], a, 0) =20 +static bool do_f8cvt(DisasContext *s, arg_rr_esz *a, + gen_helper_gvec_2_ptr *fn, bool issrc2, bool isodd) +{ + if (fpmr_access_check(s) && sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_2_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + tcg_env, vsz, vsz, + issrc2 | (isodd << 1) | (FPST_A64 << 2), fn); + } + return true; +} + +TRANS_FEAT(BF1CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, false, false) +TRANS_FEAT(BF2CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, true, false) +TRANS_FEAT(BF1CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, false, true) +TRANS_FEAT(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_bfcvt, true, true) + /* *** SVE Floating Point Compare with Zero Group */ diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 078a085a79..e7984fa8e0 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -108,6 +108,7 @@ # Two operand @pd_pn ........ esz:2 .. .... ....... rn:4 . rd:4 &rr_esz @rd_rn ........ esz:2 ...... ...... rn:5 rd:5 &rr_esz +@rd_rn_e0 ........ .. ...... ...... rn:5 rd:5 &rr_esz es= z=3D0 @rd_rnx2 ........ ... ..... ...... ..... rd:5 &rr_esz rn= =3D%rn_ax2 =20 # Two operand with governing predicate, flags setting @@ -1090,6 +1091,11 @@ FMINQV 01100100 .. 010 111 101 ... ..... ..= ... @rd_pg_rn FRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn FRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn =20 +BF1CVT 01100101 00 001 000 001110 ..... ..... @rd_rn_e0 +BF2CVT 01100101 00 001 000 001111 ..... ..... @rd_rn_e0 +BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 +BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 + ### SVE FP Compare with Zero Group =20 FCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978073; cv=none; d=zohomail.com; s=zohoarc; b=lFiyX+S2PhI8LwR1M7hx1vckSGzitUj7d+/TuYy+9w8Xn/SdvM9DYyvoUG7lQJJG92X84MmiHC0H9O0kifCu0sgEvruhVAS4GpmIPk3HX8OZUOT22POhFQY1Rell6sOMJKo2yTqIUbhOZ4dK4eQ7jy8EyP83XiFer3fdgydvWg0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978073; 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=jLgm9UDQEHLrvYYVImCj/f7lgJUJBmTicj8qoBhaXM0=; b=PubV+WAUsCoGKOTrHEUdXTTrQ0l+FKn9CuMWmj0F0PvIa2ixxFLVctKu1iXwJb169YkK6YHQ/Q/lhlqD05LC0js9In4EU/cH9uc0BoPJ+9cMSwoHDPrDYMyBxXGr3niwf/uBBlZy56YeL2JpyWD5WDVr3/Df+Ng403y6bWklx28= 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 1778978073406176.23040780618385; Sat, 16 May 2026 17:34:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPn-0008KI-Ey; Sat, 16 May 2026 20:31:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOr-0007Fb-Sw for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOl-000544-BW for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:32 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-82faf871346so869736b3a.0 for ; Sat, 16 May 2026 17:30:26 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977825; x=1779582625; 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=jLgm9UDQEHLrvYYVImCj/f7lgJUJBmTicj8qoBhaXM0=; b=KepTBpZn7mFbolK24gdbIea7ECowoct3RpMh66SI5HQVanADGaJWpeZHUc5p5VAG7x 2B4Bikb+NLfRKfPA0sScGWYmp2x/xaQwzp8HdMHS3enIc1/C/HzjO8XHBunQy7WhsNrb a8sjAWaMmDSSpPMgvDDIkHP7oWdO3sOqxkuYqtFbrdPBQvSL1O/sCk9MfbX5/JxaSYPp 2Kfn3MgSmsCNSYFguMYmG0SsKaEa6Al0ma8zWGkdo9X/57cadWxJaFkpi7Wgp+bprIH9 WyOiox08693u+lthFN0lujNOg/p/MEommwcGZhZThtN7azF5dJPQHdTv8x5hym2iCYFG rvSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977825; x=1779582625; 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=jLgm9UDQEHLrvYYVImCj/f7lgJUJBmTicj8qoBhaXM0=; b=eJO9EzPBfhnhKUMwiZNQc1VRDF35T0cQW6y3cj6gA6+fKVgBhzohskBOAiKA3SSt7A /fORpzRlrjuwbbkC6zWrkmkJHZTnTh8NgfcL+EpoYQjbXtSEtp2Wu0IwLVflGl40KImA 4ncULc/uGqtNMchKBES9jH5QuSGcE+yk5OBfQPL0YmsPKU281hQm3L5x6amaiDzlkoS0 vc6YQRmAII2Dr3XK9VujhMcgZIjx/LAynGFu/XrI3dS1w3nW07T//jn9d6jgdNHpH+rf 223oPQFkPuCH8j1o4hDyR5U6Y6mXO7sJljyaODKCnvWxtq4Za1QAIh4aL4tCbCOQYRFX 82vg== X-Gm-Message-State: AOJu0YwG2P7OiqfkRuJs6Rol8c/qqyYJ5GCPKM0M7m290RcYIsurhyTA qALb9DEBEZ5KbU+7W3E9QuKCAUkcbqL6AGcbLVSY9BLyD0f8k68GKZgcF1KaHmQHQ5tbJOvejwi ytEGe X-Gm-Gg: Acq92OE6ROUFQ4wK1HQnkKfOpqhs8UyyY7iP9qT/kV47ldPbnVG1m7zH979Q6ixF2wl SPXyLV0OxDBGBPP9BK+aoYDbCQ+yVKI9kYi+rsoMU/uc1tZQyOOTokuJjOnuOBivf8MKvLSY3sV dNnmeUUQ+d3W4wW2xUqe3yaOsvX772onW0IZqt7zAQwR9/2K2fzesAHHDc4k/ABxJ4SSlUDLmUN SfdDjK1kb8SIUtzmxdz+ZnZAwVt4zGGwE5JOnLZPYcinCGk4AR91aMvG54bcV+qtHj7gUZ7m7nk NsjhdF2V0XWaBHmhmfpQJ0RLhHrcP37o9sTg2cGiJyPoPHkJritQw4lOba7zXM4rTop4eY9NvT2 9RSg2lBo7hvvSJvs5OYn3zAcoXN9iFVAjvJsbXspncM9TDnPSsZuHMsCZpRYRA+vYFH4Ob5N1Un 6mR8Al+ieBtv0BKI3oz8NdFlzeLfu3 X-Received: by 2002:a05:6a00:390f:b0:838:af72:fb2f with SMTP id d2e1a72fcca58-83f33aec2a5mr10335136b3a.6.1778977825480; Sat, 16 May 2026 17:30:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 25/63] target/arm: Rename SME BFCVT patterns to BFCVT_hs Date: Sat, 16 May 2026 17:29:24 -0700 Message-ID: <20260517003002.321430-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978074886158500 Content-Type: text/plain; charset="utf-8" The existing pattern is BFCVT (single-precision to BFloat16). In preparation for introducing more insns of the same name, append the operand sizes. Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sme-defs.h | 2 +- target/arm/tcg/sme_helper.c | 2 +- target/arm/tcg/translate-sme.c | 4 ++-- target/arm/tcg/sme.decode | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index c551797c6f..01aad4c231 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -250,7 +250,7 @@ DEF_HELPER_FLAGS_5(sme2_umlsll_idx_d, TCG_CALL_NO_RWG, = void, ptr, ptr, ptr, ptr, DEF_HELPER_FLAGS_5(sme2_usmlall_idx_s, TCG_CALL_NO_RWG, void, ptr, ptr, pt= r, ptr, i32) DEF_HELPER_FLAGS_5(sme2_sumlall_idx_s, TCG_CALL_NO_RWG, void, ptr, ptr, pt= r, ptr, i32) =20 -DEF_HELPER_FLAGS_4(sme2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) +DEF_HELPER_FLAGS_4(sme2_bfcvt_hs, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i= 32) DEF_HELPER_FLAGS_4(sme2_bfcvtn, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_4(sme2_fcvt_n, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) DEF_HELPER_FLAGS_4(sme2_fcvtn, TCG_CALL_NO_RWG, void, ptr, ptr, fpst, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 7ef6f5d71b..30355662d9 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -1726,7 +1726,7 @@ DO_MLALL_IDX(sme2_sumlall_idx_s, uint32_t, int8_t, ui= nt8_t, H4, H1, +) #undef DO_MLALL_IDX =20 /* Convert and compress */ -void HELPER(sme2_bfcvt)(void *vd, void *vs, float_status *fpst, uint32_t d= esc) +void HELPER(sme2_bfcvt_hs)(void *vd, void *vs, float_status *fpst, uint32_= t desc) { ARMVectorReg scratch; size_t oprsz =3D simd_oprsz(desc); diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index e2d17de165..88c1d78c40 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1448,8 +1448,8 @@ static bool do_zz_fpst(DisasContext *s, arg_zz_n *a, = int data, return true; } =20 -TRANS_FEAT(BFCVT, aa64_sme2, do_zz_fpst, a, 0, - FPST_A64, gen_helper_sme2_bfcvt) +TRANS_FEAT(BFCVT_hs, aa64_sme2, do_zz_fpst, a, 0, + FPST_A64, gen_helper_sme2_bfcvt_hs) TRANS_FEAT(BFCVTN, aa64_sme2, do_zz_fpst, a, 0, FPST_A64, gen_helper_sme2_bfcvtn) TRANS_FEAT(FCVT_n, aa64_sme2, do_zz_fpst, a, 0, diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index ee874be1a6..7a8e1abb59 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -789,7 +789,7 @@ SUB_aaz_d 11000001 111 000010 .. 111 ...00 11 ...= @az_4x4_o3 @zz_4x2_n1 ........ ... ..... ...... .... . ..... \ &zz_n n=3D1 zd=3D%zd_ax4 zn=3D%zn_ax2 =20 -BFCVT 11000001 011 00000 111000 ....0 ..... @zz_1x2 +BFCVT_hs 11000001 011 00000 111000 ....0 ..... @zz_1x2 BFCVTN 11000001 011 00000 111000 ....1 ..... @zz_1x2 =20 FCVT_n 11000001 001 00000 111000 ....0 ..... @zz_1x2 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978185; cv=none; d=zohomail.com; s=zohoarc; b=bwme3b6tgbv518kc0Mlj7QktR2bFhDsb8KpcjmuJfeNnSjQDvxj6d6CZxM/Ve+g9LsKKTqk4bFKvxr2u1gLncNrrBa0dXStwC3QKIcA5CJ/nl9zBU/z8YjvatzuSGzYd72VET5deri3/EAhrmRx6Nw5Is2uiqoEZXLi8xEkF+DY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978185; 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=ZMwhwcITotlhtrwdi9BFYsveeRzo7brQUHFTBf9Ij+k=; b=nQaPN0qExkxyw/03ufTchl5aC4No1rne3iPiQw/eYFYxCEBY3TMPoNP6orwZzaSZNodh/uDPpmmKHp7YnxmH5XJIN5beLmSe6EwnRYG1BmBFS7Z/6i5TUQMQAE5I+s1XnJ1QKBPkSTPA3m3k9X6q6Rd3WFwUNmVkE21ZQY+/NDg= 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 1778978185959184.1459720092123; Sat, 16 May 2026 17:36:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPn-0008JS-15; Sat, 16 May 2026 20:31:31 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOs-0007Ff-0g for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pf1-x42e.google.com ([2607:f8b0:4864:20::42e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOm-00054Y-2E for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:33 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-8367df48711so420915b3a.1 for ; Sat, 16 May 2026 17:30:27 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977826; x=1779582626; 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=ZMwhwcITotlhtrwdi9BFYsveeRzo7brQUHFTBf9Ij+k=; b=BqBrq5gRCgRcZgIhIpIPr9GEHXHK4TIsv80y4SGOj7ENwEkxvuCaNnG273Uyvbxo4u bXvtPJF+dj/1ElJ2JHLbDa6YGbB6KMoLxKrZl9Ni1y26c8bieYi3ebVgxRYztPtuDFdM WQgnzbnW+DYhQAyFC5sFwJd9dY3Zuc35kdTL1rJys+dRqUCkAakyhLLepbg2AQq6GYuv jXm1tKvLFU6WbfmsFsqGFbd6DDWDae1MrHvN0NqsGwpcCxga399IIKwa3NG5zmPA4tYG BO5vc8E/Sks1M8+n3zem9R7lWUX/UO6gTblE1ZeA3MTzU2e0aoLf/yzdHQZJNNLiljGw Sssw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977826; x=1779582626; 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=ZMwhwcITotlhtrwdi9BFYsveeRzo7brQUHFTBf9Ij+k=; b=FzEIpjLvAAI01SqWbGgY+ngbg9lTJsQJZKPJ+Krn6F7iEcIP0X3mdJS4tUJ9wDbPZ1 kqlFfA2s+Yc4AcrMq2V/RftUr23oTkpX3dCNGds3kjvW9J6aTEmHm8OU4XsawGViVT1r rYmuq+noMZwlzIgJLTcd/drJ2+SLqcpn+KqVxdDtMSHIeHf7pdiDO3RepuAFhuUcVTDx zAcLnoHZ+DnxjVr15GHVdvvljS6xHCWdbVuDsUg5Zfru/lhdN4rzccrAOCbjpzY1Xvls SIAifyaU6dm3KyFSkzUoqL4Mi7CuUuRHrYODaO5xt54GXIRkIG3lDfkH6La5uTA3gH9A d5zw== X-Gm-Message-State: AOJu0Yz4lp0DIW8asZC4Z6/ASmf+Nz2c06yeX+4FpuZj750O19gkomsq 3InxJliVqo9vEpiMLV2t5EUfksc7GWchtzPwN1vUXBFgJk2hNVpQBsTXTN0FIZTEM9toSs7E0Va gVZ1u X-Gm-Gg: Acq92OFFWRMvQ0Q9q1mVATZ69o4Oanq/ryOe+Zq981us2vAnx72ELnt8cEFRgC570xO kbr/VlM2IrrV2UXsvAx+8EgD3XPUsSRz9wJweUpAO8oQ/Ku2vuHFeZTQc34pSHsMsEpE4CTDX0u 7u8O9tDDng+b3/osg7BgMe2HoHRMjrc93ac6p70I6mg4T5503rvyb51wBxw7eYEN8PWMuY0e7ql ZdtAwVLBnKAcocFm9ZzB6VoS6MkJLWnow3NK7N13vWbkneik30DJoNthUWR7SiW6xYImX0lu7JC 0wuD7dGVd6lqYO58hJ+fgtahvzlc/l+s5fEJcYoDqjHJtYZBgxHedD3Ze+R5ojOcjIKQpxSVyHp P5Z4HmIIFFtkJLnRZWKZoksYQMMaY4tsy6eMB2prEU73KQUajWdWeI/bLPlsqKuWPGYXNztcfl5 kCQNOMzGoCKpS4ZgVZ3/rMZEHpyQHP X-Received: by 2002:a05:6a20:394b:b0:3aa:ec27:e5f7 with SMTP id adf61e73a8af0-3b22ec65c5bmr10882482637.42.1778977826235; Sat, 16 May 2026 17:30:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 26/63] target/arm: Implement BF1CVT, BF1CVTL, BF2CVT, BF2CVTL for SME Date: Sat, 16 May 2026 17:29:25 -0700 Message-ID: <20260517003002.321430-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42e; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978187333158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 19 +++++++++++++ target/arm/tcg/sme.decode | 5 ++++ 4 files changed, 73 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 18ff483bb0..966f83d796 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -5,3 +5,5 @@ =20 DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) +DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 7719d43d64..49e87b845b 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -146,3 +146,50 @@ 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); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vectors_overlap(vd, 2, vn, 1)) { + n =3D memcpy(&scratch, vn, oprsz); + } + + for (size_t i =3D 0; i < nelem; ++i) { + d0[H2(i)] =3D fcvt_fp8_to_b16(n[H1(i)], input_fmt, + ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + d1[H2(i)] =3D fcvt_fp8_to_b16(n[H1(i + nelem)], input_fmt, + ctx.scale, &ctx.stat); + } + + fp8_finish(env, &ctx); +} + +void HELPER(sme2_bfcvtl_hb)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + uint8_t e0 =3D n[H1(2 * i + 0)]; + uint8_t e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D fcvt_fp8_to_b16(e0, input_fmt, ctx.scale, &ctx.stat); + d1[H2(i)] =3D fcvt_fp8_to_b16(e1, input_fmt, ctx.scale, &ctx.stat); + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 88c1d78c40..2841b2b8cb 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -22,6 +22,7 @@ #include "helper-a64.h" #include "helper-sme.h" #include "helper-sve.h" +#include "helper-fp8.h" #include "translate.h" #include "translate-a64.h" #include "tcg/tcg-op.h" @@ -1532,6 +1533,24 @@ TRANS_FEAT(UUNPK_4bh, aa64_sme2, do_zz, a, 0, gen_he= lper_sme2_uunpk4_bh) TRANS_FEAT(UUNPK_4hs, aa64_sme2, do_zz, a, 0, gen_helper_sme2_uunpk4_hs) TRANS_FEAT(UUNPK_4sd, aa64_sme2, do_zz, a, 0, gen_helper_sme2_uunpk4_sd) =20 +static bool do_f8cvt(DisasContext *s, arg_zz_n *a, + gen_helper_gvec_2_ptr *fn, bool issrc2) +{ + if (fpmr_access_check(s) && sme_sm_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + tcg_gen_gvec_2_ptr(vec_full_reg_offset(s, a->zd), + vec_full_reg_offset(s, a->zn), + tcg_env, svl, svl, + issrc2 | (FPST_ZA << 2), fn); + } + return true; +} + +TRANS_FEAT(BF1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 0) +TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 1) +TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) +TRANS_FEAT(BF2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 1) + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 7a8e1abb59..df9586c1a5 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -853,6 +853,11 @@ UUNPK_4bh 11000001 011 10101 111000 ....0 ...01 = @zz_4x2_n1 UUNPK_4hs 11000001 101 10101 111000 ....0 ...01 @zz_4x2_n1 UUNPK_4sd 11000001 111 10101 111000 ....0 ...01 @zz_4x2_n1 =20 +BF1CVT 11000001 011 00110 111000 ..... ....0 @zz_2x1 +BF2CVT 11000001 111 00110 111000 ..... ....0 @zz_2x1 +BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 +BF2CVTL 11000001 111 00110 111000 ..... ....1 @zz_2x1 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977933; cv=none; d=zohomail.com; s=zohoarc; b=lwUhkOti7wmKRfTIXTTL9qcvdhKWw+HI6xzeGNyBCAYvqEUYQKYUu2DKmykgpMTTTiJDkw5FLvoTbSkx12a7qD0x6L2PXs2fmPV07EuihdapHdClRgiK0Q1uxFjYCKKpQD5byAtCVO+IcOm7p/TlBIHe173S74NWvSsiJcBvg8k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977933; 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=gnsJUqVhEWNQzvPoJ30z567Q3+F1eqUVnGAKabsrIZI=; b=fzEa2ztMoSLg8nomFesRAPTwUfAI+movg/Jx9IAyQSRxUS93TRyTAH8W/q5Q92+sQmjREhiRf6EkJkrYQmgOTMp1PqOPqkWN5AjWhinI9UJMSgEgFJGyWVzMrUwqmNXQiKtThy+WaIjXMnSkVGD6DyPNTYX6JE8l6ftm3chFjVM= 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 1778977933289350.42312821756116; Sat, 16 May 2026 17:32:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPq-0008SR-9X; Sat, 16 May 2026 20:31:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOs-0007Fg-F3 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOm-00054r-Ju for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:34 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-8367df48711so420916b3a.1 for ; Sat, 16 May 2026 17:30:27 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.26 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977827; x=1779582627; 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=gnsJUqVhEWNQzvPoJ30z567Q3+F1eqUVnGAKabsrIZI=; b=i2k8U7JhNKjOMrMbP/hFMz78mqsETw5fYIwLnbYTO0hIb385sD2H2Sg6AAV4htURSF vQ52kLQb37+bClCJWuY/bInEK5mwBUcOTZytRyA8WZY+85nPhVcOCEM1+WnwEdpMimye iv8Dj2UkEHcxndPfASaMuSwRXjGO1P3I3A0ynXfApB+vfCaotEjOoguhsOwxTVoX9pBa Jxeseo2wkRyxyJJSv94cH4PZIly12z1qxO5KOboYXIrJf3OngWBeWmDzfoTEAkgqDinb ubgrSScyYkXLqvGwkfZr1niwxXp6H9cGkxSOvXZ0Q4SqSgHV1rpbUTwoYpy9g42cSrEK hGkw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977827; x=1779582627; 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=gnsJUqVhEWNQzvPoJ30z567Q3+F1eqUVnGAKabsrIZI=; b=KQRhiPxU17w1mcgOUbMddcVOUR/IHc6VxechNpKFb8AqhJdk7dlJz7LjOwA9//NBSe XLmZU5KSR2+fAR81KRFVlhymOtqes1iSSZOOwe3qI57qD8xcNBCiW5ELQUz4lIa1nr7K 4Dokrs2rQWwN6fVtxrCV+NLDRu2TJqM2XWNpnCVRCCjeW5CoYjlSdfUdzK/D2cJ5Nx8N Us/ADxu1FXgbH7TEWE+i+P6g5QThxq77yf4hu4quGnoffe9dKrcDdeubsTHdua6iCFkt /c3OQRCNAP6LN76u/DjkPTVIzixmeK9rKjFQ4QHsP9aSej6HszfrWqHf/PIt1HWyXHhk RnKg== X-Gm-Message-State: AOJu0YwjOOR2697YRIugZYmL/MfBeWN/ZdNm6nsw6bCv3KcbkO/Rtcnj 183UWW9v7ym7OvQDJz7XDtsTRzlm2C17+TWx9K3GpWyXAO3+3SEXgmTGaUC1e4J0Rh4nKmgW9lf 4X60n X-Gm-Gg: Acq92OGwLuH3dhDC0Jay7oU8f9EDkbho5MA13/PxXq5+Ye9gvVo2h2Hw0VMs6ibSN9o h3+Hrm+Yydfb5dgwhjufYfrAXODgXTj87fpV7WH3L3FB3H6bZz/ZqA2WySmWQzVZIJCwiOzvCq7 UGo90SPR3rihYZQZ58AnJ7TajQBHrgifccJUYkbstl6gaYmBKWwNbg6jQZxoKaJKSV+lo2jqQQP 6BdGP3qEPk5oXC3nspGJQyne9lVUuRJ4DieIsEu/Qx3VIomKLPYwMitG5HwXgqT+IeQI4FqEQFu M44cwykqKbahcWPeSblKHNwEsEMMz5buKEQMnFTePNjGOYoPEsxVi0yEgOZ2CmWQ4U5/FYnGMRa 4nnRg94UZEX8qHua4SQp/y3mkzh5xfYUqNmf5wkiRV4CnPRhqF+dIx3xa0SYTTyvEvVzXN/sphg JN6zNJR955gHIQBI/2IpQOluZuKpUd X-Received: by 2002:a05:6a00:3a01:b0:838:c01a:7a46 with SMTP id d2e1a72fcca58-83f33d8cd6bmr9817802b3a.26.1778977826866; Sat, 16 May 2026 17:30:26 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 27/63] target/arm: Implement F1CVTL, F1CVTL2, F2CVTL, F2CVTL2 for AdvSIMD Date: Sat, 16 May 2026 17:29:26 -0700 Message-ID: <20260517003002.321430-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1778977934128158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 29 +++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 3 +++ target/arm/tcg/a64.decode | 3 +++ 4 files changed, 37 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 966f83d796..718463422b 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -7,3 +7,5 @@ DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, p= tr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) + +DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 49e87b845b..66411bf275 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -111,6 +111,14 @@ static bfloat16 fcvt_fp8_to_b16(uint8_t x, fp8_input_f= n *f8fmt, return bfloat16_round_pack_canonical(&p, s); } =20 +static float16 fcvt_fp8_to_f16(uint8_t x, fp8_input_fn *f8fmt, + int scale, float_status *s) +{ + FloatParts64 p =3D f8fmt(x, s); + p =3D parts64_scalbn(&p, scale, s); + return float16_round_pack_canonical(&p, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -131,6 +139,27 @@ void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) clear_tail(vd, 16, simd_maxsz(desc)); } =20 +void HELPER(advsimd_fcvtl_hb)(void *vd, void *vn, + CPUARMState *env, uint32_t desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn, scratch[16]; + float16 *d =3D vd; + + if (vd =3D=3D vn) { + n =3D memcpy(scratch, vn, 16); + } + n +=3D ctx.high * 8; + + for (size_t i =3D 0; i < 8; ++i) { + d[H2(i)] =3D fcvt_fp8_to_f16(n[H1(i)], input_fmt, ctx.scale, &ctx.= stat); + } + + fp8_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 085e7e3b95..565053a1a4 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10643,6 +10643,9 @@ static bool do_f8cvt(DisasContext *s, arg_qrr_e *a, return true; } =20 +TRANS_FEAT(F1CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_fcvtl_hb, f= alse) +TRANS_FEAT(F2CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_fcvtl_hb, t= rue) + TRANS_FEAT(BF1CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, fa= lse) TRANS_FEAT(BF2CVTL, aa64_f8cvt, do_f8cvt, a, gen_helper_advsimd_bfcvtl, tr= ue) =20 diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index b7aac148f2..26d31d0a33 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1910,6 +1910,9 @@ URSQRTE_v 0.10 1110 101 00001 11001 0 ..... ...= .. @qrr_s =20 FCVTL_v 0.00 1110 0.1 00001 01111 0 ..... ..... @qrr_sd =20 +F1CVTL 0.10 1110 001 00001 01111 0 ..... ..... @qrr_h +F2CVTL 0.10 1110 011 00001 01111 0 ..... ..... @qrr_h + BF1CVTL 0.10 1110 101 00001 01111 0 ..... ..... @qrr_h BF2CVTL 0.10 1110 111 00001 01111 0 ..... ..... @qrr_h =20 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977988; cv=none; d=zohomail.com; s=zohoarc; b=LyPG6tYdDfMJYt4/UHt3RZ+NbZrfVMUAJxcsDa9+KuPU+hN+/b8BHJdwwCGPNK9fWKtxc4ZY11yn3lXIMYUNOGnW/kk23B+eEBFDJ7wDYij9YUKYXF2XHxQaMrWOIdKS/quYHKIUxZxgqA0SUhDS1GHDN/YXAIbu78shNqauTwo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977988; 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=MLHwlECbQMkESLKjuBWpmuIGU/R9SWCYKPtvsblUdZ0=; b=mowX/ljZrw4qBcASjReKyIkuD46TnINeZ67MSC1FJp7w6WkXAi9ytSZD8jUZWW1pJuokCGhyI2PFVhJ7INUS0DkKIudQXVSMlpKdXA9SuvyHMnIUkgZDiEDYYCASZfPmocrQh9ql3CN/BxgZPh/x2df4QjmaLrmeXDB2LXoyM58= 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 177897798856451.3724156062417; Sat, 16 May 2026 17:33:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPk-0008Bg-N1; Sat, 16 May 2026 20:31: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 1wOPOt-0007Fl-0s for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOo-00055G-Iq for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:34 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-82fbf5d4dc2so834524b3a.1 for ; Sat, 16 May 2026 17:30:28 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977828; x=1779582628; 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=MLHwlECbQMkESLKjuBWpmuIGU/R9SWCYKPtvsblUdZ0=; b=T1WPV/GmVcT2W/U10xswNfRG0eAJA6s6IOVnbsH4rdv2f1qN5HhUTJOxGreC288T3Y BHdnXmrRcm/GIiDdDl3+RI2MuwccA9MMiBtruk9/zH+wHsnwDH8rD6BVHYxH1kJg3+ri fesR/lmqQdncBXkgABpLMGQENaP3Zjuf+ZeYShxqm6wMcp7xUdF34O32xhMIOORF55im HAPdBaMOLPfIcpifAOzQBC6zjZRt+loAVTAWJE6Ix5hkyEDUzM8M0A7KHqnxZCk8hXLt lVA5AQvwRZfiirMwqaDhS/0G1BeCI3ItSfIxrglM/ZlrO3VHvuBTBHAxEAgcy/dMK+iB pThw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977828; x=1779582628; 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=MLHwlECbQMkESLKjuBWpmuIGU/R9SWCYKPtvsblUdZ0=; b=iSdPaT/hj4x7avt9pMsq7OWcqcXSQt0nOppuW61Yk4bvMGEQcrfhZauJNDZ+a4MJTe GzdK9zGNlggWYs59YocDV5fUQpYNKjrjK/GwQV5yUclAZ0pRe+weocf0Pn57X9+fGAUy 83mzZPjVXMayH2Fyz5+0yD+XUb7dcjkXOBDSEw3VsRrJib8C5GLiWcgJj5yurnAtCi0D Bfoud+SRDRllP21yp7Xv7g9rIG+VL0mHukgIJEN/8HK84hJGzOuP2af1f45EwO4cjEYV Oov6F/hf8QIQCGrSkXzbsKp8pg5Ze9ZF2hcmdKBWpAEZYJnAG5y/Kx4NoDOLYeVGwrj9 WPlA== X-Gm-Message-State: AOJu0Yx4aOp5//34rJGk/E9/4vCFIT8lSBMkyVSMxpZuWrDIErkIwpAB 7kecZJN7LmOra5asbFzJgJ+ze1beMuIZ6WLA0zW0vBL0nwN8i7NOjUGlNFFR3Z9kvdGiBNSJ6gM w3+t3 X-Gm-Gg: Acq92OHlvJIQKM4HbcofuBVlxJHxc2rPgetvGDDJpkqU3cWZGDmz7Ax+Edzr7i1ROTH pvKzEUzOIoF0denZFf26vTPodNeYo+q+1ZBqj10n8vwT2r6ogYaFcSUu58LKKaRjSgvz1vyTvel 4ENeRnUnXQhgBeiuQO3b/6BkFxUg9oRb1IyynxHB8whxZkqdf3ReHVe5N/WKkqtciv5Rp5HegCi j8KbYk8hUngizNMWN/5J3WJs0sWLVtA+rq+2xKh7OF3YXVkXNZvojkxDgkLOg20QU3xmNdSaVfq 99ayfmjZczNV72BJNCNMV1sEdbc0xWon91KFGAX9H2ogDVQjfDj+grzb1UNO/zTbxPK5p7C9KRd 2AkF4bF8ni4nlu1b1/ONt5Df537F1Id8VU4RdaEsB4vKCKBkGuSLOWYeh0ke+V2Bz/nxEzj0EUK PkA0hXjKNP6Cg/LGFNtLJtptgc+TKJ X-Received: by 2002:a05:6a00:2349:b0:835:4776:7d7b with SMTP id d2e1a72fcca58-83f33c9e9damr9818892b3a.42.1778977827467; Sat, 16 May 2026 17:30:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 28/63] target/arm: Implement F1CVT, F1CVTLT, F2CVT, F2CVTLT for SVE Date: Sat, 16 May 2026 17:29:27 -0700 Message-ID: <20260517003002.321430-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1778977990356158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 16 ++++++++++++++++ target/arm/tcg/translate-sve.c | 9 +++++++++ target/arm/tcg/sve.decode | 5 +++++ 4 files changed, 31 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 718463422b..3021dafd44 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -9,3 +9,4 @@ DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, pt= r, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) +DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 66411bf275..b5ce5554b1 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -176,6 +176,22 @@ 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); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d =3D vd; + size_t nelem =3D simd_oprsz(desc) / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + d[H2(i)] =3D fcvt_fp8_to_f16(n[H1(2 * i + ctx.high)], + input_fmt, ctx.scale, &ctx.stat); + } + + fp8_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 9bab5feb93..5200f3d034 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4081,6 +4081,15 @@ static bool do_f8cvt(DisasContext *s, arg_rr_esz *a, return true; } =20 +TRANS_FEAT(F1CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, false, false) +TRANS_FEAT(F2CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, true, false) +TRANS_FEAT(F1CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, false, true) +TRANS_FEAT(F2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, + gen_helper_sve2_fcvt_hb, true, true) + TRANS_FEAT(BF1CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvt, false, false) TRANS_FEAT(BF2CVT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index e7984fa8e0..ca110f4bc1 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1091,6 +1091,11 @@ FMINQV 01100100 .. 010 111 101 ... ..... ..= ... @rd_pg_rn FRECPE 01100101 .. 001 110 001100 ..... ..... @rd_rn FRSQRTE 01100101 .. 001 111 001100 ..... ..... @rd_rn =20 +F1CVT 01100101 00 001 000 001100 ..... ..... @rd_rn_e0 +F2CVT 01100101 00 001 000 001101 ..... ..... @rd_rn_e0 +F1CVTLT 01100101 00 001 001 001100 ..... ..... @rd_rn_e0 +F2CVTLT 01100101 00 001 001 001101 ..... ..... @rd_rn_e0 + BF1CVT 01100101 00 001 000 001110 ..... ..... @rd_rn_e0 BF2CVT 01100101 00 001 000 001111 ..... ..... @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978102; cv=none; d=zohomail.com; s=zohoarc; b=oHgBvnEO+9MkaLmuLsK61p50NTO098IbAOigjpgCPjBLA2o6gA3rNTCot+wpVtEVYPOtf8g8e5M1kJwqaYAxgBnFvEfjcSdPwRMRJF2EQXzQeyT+FSKjNaSPtYYjbnAgD/QmYr52jixmr7NhARnHeRcpJxAvwo2JfoufvOoHAEQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978102; 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=BHAMvh5Ai2kol+roI4dT4BmWi6y4yooRxnadTxjasRc=; b=CCo8R9n3ey0LsbZORsWNkamUzp7QAdh2gvJtzTjgNbEPPqB7dChCJZdHLw95RcGFXTV83lSSS8c4spuLOx6ijP+gQ5s4ijUa+q7JGTp6hJAJsQFn5lEGb1fKzDKgxHLFLPDDdj286+/b5YTL5WUDy8fdsVuahE2ltboDSeyuy9U= 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 1778978102505684.12498197648; Sat, 16 May 2026 17:35:02 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPi-000878-F5; Sat, 16 May 2026 20:31: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 1wOPOt-0007Fo-MI for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOo-00055Z-L5 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:35 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-c802803ac17so395473a12.1 for ; Sat, 16 May 2026 17:30:29 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977828; x=1779582628; 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=BHAMvh5Ai2kol+roI4dT4BmWi6y4yooRxnadTxjasRc=; b=NTuqsYzLdH6FQqFYvtuzLthZklY0I9fFmK7FlEzVTGFco9EcNYJrFeM86YG6zTPoyB SkAIlLoEHeB3W9QNRLaVNKHQcOePQ+BmuzY7NfGLzktCnt4W9zxMagkb7mh6mflP3BLo 7KGKTz08B1N2okHcnW3iJlXvIotvZecY+EjIEllLcEtCquxZ7+GKOfpJOB7YV5ZGMtXl +fYdaOypvuq1/tpHcSYmuM0uz+iwLLp0JY/VASYuCv+1ANASx1lHDUvuPr3kDz3z0yj+ rlcFLsRtEJOR1bnTC/1jp/5mWx34LpRzB0Qvp3AHGw24uCyVAn87XUbgoXuWtRG48qZ+ usfQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977828; x=1779582628; 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=BHAMvh5Ai2kol+roI4dT4BmWi6y4yooRxnadTxjasRc=; b=O7n3KHKkZqk5s5/CrJ/s5IH+yQd7xdemYC65jSFDTw4zmpcNAOdmgwQlGIfg1KNK3V 99KTUkqazxiDULweF2Aj8CY3fbzBr4eSpEW3BvJcycGW+ODXJ+mizTYyspWE3WvKPwsQ vFqbvM/UIItF7fye+rEwlbHn+lCxpFTVwyTqvNXH7Bssy6tIVWepTW4enuX25zze/eOx 2aKImypwbS7uPnG/iSaG1NZJLKOqfumcZGlmYF224o9/NvCyIl4ENHn14in5eHr6UE0i yveVkUK6Xv3etPdoJcCuOMxWvu+lZdAy5ihbQ9U0bjJkYPOPXoGir1WXR6TbJ8xofgML JkPg== X-Gm-Message-State: AOJu0Yy2LsPIcblvOyuQXZILM9+nhlfFPyiFf88WgmasD26kZVg12bVO pm3TWo8tYU4xiY211hY/v1SAscRO8VlBiGxgcr2gjd8TGJTLzn25XEvCMOCFDO9xqcVmk6KfoQB 05MAx X-Gm-Gg: Acq92OGPbyGToD3J/NvR1uzDFa2rq9TGZ7lBOWYqhtGXYQrKaBL0C6JVEQ3GZDP+7o3 FFh8WxvDQrMGVO0x/5z4k5yomA0n3j7VF5Po8la16e4H275kU+f3/9SX9DCwalU25f0mli49ua1 cQXUmwvC2vUwVli+91IrenYH/lTcC+bYeI5S2grUOnRom46D3TdJ15R9V/hXg5i6WokjGSoP2tv aeLqWah/gyrvEH6yaiEyblzonYP6IV//us5PcdJQ0JBB1CevpQt4c8Manu+AqEVZxvFL5GORTuN tmn8xUN2ubdpSlW8otuhCbty91ubfPvBYk1sw55VMiG+bCYrDWt9mBdmyNFWiqpD/lFvHV1GmQh 4OhWks3SV4fI3Wiixq62iBtbvX5vAujDdYiwkFoqAMB8fer9AxXdD0DBcv6PHLPHZV3xjIlNcdt LHJQOYdbE/4fjQBQbO57eahs+5a1azUvI5lVHcW1g= X-Received: by 2002:a05:6a00:1251:b0:838:6d43:9488 with SMTP id d2e1a72fcca58-83f33c61c17mr9809513b3a.32.1778977828069; Sat, 16 May 2026 17:30:28 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 29/63] target/arm: Implement F1CVT, F1CVTL, F2CVT, F2CVTL for SME Date: Sat, 16 May 2026 17:29:28 -0700 Message-ID: <20260517003002.321430-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.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: 1778978103008158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 5 ++++ target/arm/tcg/sme.decode | 5 ++++ 4 files changed, 59 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 3021dafd44..b5dc2b7064 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -10,3 +10,5 @@ DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void,= ptr, ptr, env, i32) =20 DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index b5ce5554b1..ec802ed391 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -219,6 +219,33 @@ 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); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vectors_overlap(vd, 2, vn, 1)) { + n =3D memcpy(&scratch, vn, oprsz); + } + + for (size_t i =3D 0; i < nelem; ++i) { + d0[H2(i)] =3D fcvt_fp8_to_f16(n[H1(i)], input_fmt, + ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + d1[H2(i)] =3D fcvt_fp8_to_f16(n[H1(i + nelem)], input_fmt, + ctx.scale, &ctx.stat); + } + + fp8_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); @@ -238,3 +265,23 @@ 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); + fp8_input_fn *input_fmt =3D fp8_input_fmt[ctx.f8fmt]; + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + uint8_t e0 =3D n[H1(2 * i + 0)]; + uint8_t e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D fcvt_fp8_to_f16(e0, input_fmt, ctx.scale, &ctx.stat); + d1[H2(i)] =3D fcvt_fp8_to_f16(e1, input_fmt, ctx.scale, &ctx.stat); + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 2841b2b8cb..0cbad3e006 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1546,6 +1546,11 @@ static bool do_f8cvt(DisasContext *s, arg_zz_n *a, return true; } =20 +TRANS_FEAT(F1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_hb, 0) +TRANS_FEAT(F2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_hb, 1) +TRANS_FEAT(F1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtl_hb,= 0) +TRANS_FEAT(F2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtl_hb,= 1) + TRANS_FEAT(BF1CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 0) TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvt_hb,= 1) TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index df9586c1a5..d6192eb59d 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -853,6 +853,11 @@ UUNPK_4bh 11000001 011 10101 111000 ....0 ...01 = @zz_4x2_n1 UUNPK_4hs 11000001 101 10101 111000 ....0 ...01 @zz_4x2_n1 UUNPK_4sd 11000001 111 10101 111000 ....0 ...01 @zz_4x2_n1 =20 +F1CVT 11000001 001 00110 111000 ..... ....0 @zz_2x1 +F2CVT 11000001 101 00110 111000 ..... ....0 @zz_2x1 +F1CVTL 11000001 001 00110 111000 ..... ....1 @zz_2x1 +F2CVTL 11000001 101 00110 111000 ..... ....1 @zz_2x1 + BF1CVT 11000001 011 00110 111000 ..... ....0 @zz_2x1 BF2CVT 11000001 111 00110 111000 ..... ....0 @zz_2x1 BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978099; cv=none; d=zohomail.com; s=zohoarc; b=buXPRhJuKCD9xjuzmcxCi/VlnKVA8GhwWs/0WW0Bz+2XwdSK7P84JlNNr4nK0KvUV+vm5THwUzhsXmMDcpU/gZLNOs8zFjpausiVZz71aJBwdHBrsQAHQL4FlagCKgl2gU7RBDEYTyoI8yTR0o8TNLzhlCAQZDI0dyRLA4iYZNs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978099; 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=zEqsTd2VJ1sFN/d6Kvzn3pQD1Ykhi1GgjAdhB88nO0o=; b=WPMi7giXYBDS8v9FLr5nhO4VxdQ7SIYo0sr1wSsw+efX8n+gCxjWkJOX/F+LYqExjGsnQ+USUevkljUpqAkd0ObmZYAQdID2geLWAlQ+Uf3ohX7UKC+PT8aXIlPV/yu2Rr5DJEmTomhqfZtu7pLm2atZB/yev5n3ZRouLC5Buj0= 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 1778978099656770.8915714008115; Sat, 16 May 2026 17:34:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPg-00082P-BQ; Sat, 16 May 2026 20:31:24 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOu-0007GW-Mg for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:42 -0400 Received: from mail-pg1-x532.google.com ([2607:f8b0:4864:20::532]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOp-00055t-8n for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-c80148ae949so348942a12.2 for ; Sat, 16 May 2026 17:30:30 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977830; x=1779582630; 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=zEqsTd2VJ1sFN/d6Kvzn3pQD1Ykhi1GgjAdhB88nO0o=; b=ljroRduncW1JpT/ifS87F1gR74cuLRWixMGoPcKrKLE7XDpP5oYfWcq+zYmkRw05/X b1fYqj7mH5NsbZmvBibFnNGaEX8z0Vkyha9Ad9M7mYRn1J/5i9iF5pvuGJ4KaublN2jx YKYr8L1vID8cX2FnOH55TBSaaVmGiLkYASIyoZS6CbJhTVIyfql9Tv3jV9If3UBZXZpD althoN5ZLaAaESlD3XKJX0hnYixpmqE0q2rxzD6qaWNurVNYE8DqDPrGbBhNM4ahZmha zjwCxsC3gX5aze8isL5jNqO1RSllZx5r0knPY3XXkVo7dcDAaBybLC1AJiLxpADsgcZz y1qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977830; x=1779582630; 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=zEqsTd2VJ1sFN/d6Kvzn3pQD1Ykhi1GgjAdhB88nO0o=; b=BJyZbZpgey+Ts2J1rN/1rMl5bXLWg13+oOfy/XOOrCUkPBdnOpsehjaZZT4jYTYnh8 Jo+x8U/hQ8WwVOsF4xjA5Kz5Bz2iD7OPXn+S29qH/Wj3jyaibCpnuHRfJCEN6q6M7xgo 0/h7bl5QQeE91g7/HlnPhwLVlcZ5H9taTds2jf4Yo/lQYk8Or5zGzYWOZSJ7XPxMbCXt ddpQLWIEsU+ZApnfx7vu0RWg5IHH/ucC63gRRaLEF5hpXq0ygDzNgtxGNkBJ6g5NT1nl JMpktO36jNStqftL7G0UzDLyM92zvnBnjTLnBIJ93oe72JbSf6Fogs2ZDNgLXB6Mycts 7eaw== X-Gm-Message-State: AOJu0YzA7Tb5v7QXq2Vul3g5ZWbAF42Z4RFZlSqLHFuvA//wt4nnNejA Cv72Q9ZZeOrBl27+7Fxg9Nl2oKlWBDvVGrSXGZZk3SNiibg3+iH/gkpo8SeAOqZmmI37aq/54CA ExuM2 X-Gm-Gg: Acq92OGrtPNUpN1rHP5AULlFM5OWq4f7Eivu+Gbm0pPcK/z/BNKf9+nK0HQUOLiZM6Q YAxgTJ9xbROjwfA4uhsHBzOZc+SQCt37FSFR0x10wDB6T9F3Jz5DKQTHebwrP16VB4N0RDcgojd K3UJsWwEZvr7rFs87dtQjKnZppCBmrHOQxsk1MfgCAzOLm/v6TPsIoFQY71+GiY8nJFLrJ/chdd cTcSkS18+FPG3s3sXfKgyk3iTOQ9RhVSa8sjfrQe/JPXtYNh0+yvA8Amo9LJcLD7wO2khDi00uY 6z4bMeqV+r9aoqovgp8RlKQNOddffOdAPGEnVb5Ml3gPUtZqGB4wEZc/IZF+5Kw/aJXrM//1LgT 2/oV/UxShyr8zOF6neL/eFcp+6ZMpf9xrnwYciTc/fTxEJ8nacPjxE6S0+L8uwGN8IaSi1UQxyo 1L178IxFfVZcod6ruu8WnU8guRnqjt X-Received: by 2002:a05:6a00:2382:b0:838:c01a:7a54 with SMTP id d2e1a72fcca58-83f33ab35e7mr10188373b3a.2.1778977829553; Sat, 16 May 2026 17:30:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 30/63] target/arm: Implement BFCVTN for SVE Date: Sat, 16 May 2026 17:29:29 -0700 Message-ID: <20260517003002.321430-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::532; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x532.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: 1778978101104158502 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 | 87 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 3 ++ target/arm/tcg/sve.decode | 2 + 4 files changed, 94 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 ec802ed391..8d01393ff9 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -84,6 +84,16 @@ static FP8Context fp8_src_start(CPUARMState *env, uint32= _t desc, int scale_mask) return fp8_start(env, desc, f8fmt, scale); } =20 +static FP8Context fp8_dst_start(CPUARMState *env, uint32_t desc, bool is_f= 16) +{ + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType f8fmt =3D FIELD_EX64(fpmr, FPMR, F8D); + int scale =3D (is_f16 + ? FIELD_SEX64(fpmr, FPMR, NSCALE_F16) + : FIELD_SEX64(fpmr, FPMR, NSCALE)); + + return fp8_start(env, desc, f8fmt, scale); +} =20 static FloatParts64 fp8_invalid_input(uint8_t x, float_status *s) { @@ -119,6 +129,60 @@ static float16 fcvt_fp8_to_f16(uint8_t x, fp8_input_fn= *f8fmt, return float16_round_pack_canonical(&p, s); } =20 +typedef uint8_t fcvt_fp8_output_fn(FloatParts64 *, int, bool, float_status= *); + +static uint8_t fcvt_fp8_invalid_output(FloatParts64 *p, int scale, + bool saturate, float_status *s) +{ + /* Invalid output format writes -1 and raises invalid. */ + float_raise(float_flag_invalid, s); + return 0xff; +} + +static uint8_t fcvt_fp8_e4m3_output(FloatParts64 *p, int scale, + bool saturate, float_status *s) +{ + *p =3D parts64_scalbn(p, scale, s); + /* + * Saturating Inf -> Max handled in uncanon_e4m3_overflow + * because there is no infinity encoding. + */ + return float8_e4m3_round_pack_canonical(p, s, saturate); +} + +static uint8_t fcvt_fp8_e5m2_output(FloatParts64 *p, int scale, + bool saturate, float_status *s) +{ + /* + * Because e5m2 has an infinity encoding, we need to handle + * conversion of Inf -> Max manually. This will be converted + * to the actual maximum value during rounding. + */ + if (unlikely(p->cls =3D=3D float_class_inf)) { + if (saturate) { + p->cls =3D float_class_normal; + p->exp =3D INT_MAX; + p->frac =3D -1; + } + } else { + *p =3D parts64_scalbn(p, scale, s); + } + return float8_e5m2_round_pack_canonical(p, s, saturate); +} + +static fcvt_fp8_output_fn * const fcvt_fp8_output_fmt[8] =3D { + [0 ... 7] =3D fcvt_fp8_invalid_output, + [OFP8_E5M2] =3D fcvt_fp8_e5m2_output, + [OFP8_E4M3] =3D fcvt_fp8_e4m3_output, +}; + +static uint8_t fcvt_b16_to_fp8(bfloat16 x, fcvt_fp8_output_fn *f8fmt, + int scale, bool saturate, float_status *s) +{ + FloatParts64 p =3D bfloat16_unpack_canonical(x, s); + return f8fmt(&p, scale, saturate, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -285,3 +349,26 @@ 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, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint16_t *n0 =3D vn; + uint16_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + + for (size_t i =3D 0; i < nelem; ++i) { + bfloat16 e0 =3D n0[H2(i)]; + bfloat16 e1 =3D n1[H2(i)]; + d[H1(2 * i + 0)] =3D fcvt_b16_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D fcvt_b16_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 5200f3d034..7276d9c44a 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4099,6 +4099,9 @@ TRANS_FEAT(BF1CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cv= t, a, TRANS_FEAT(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvt, true, true) =20 +TRANS_FEAT(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_bfcvtn_bh, false, false) + /* *** SVE Floating Point Compare with Zero Group */ diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index ca110f4bc1..b6ef8ed8de 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1101,6 +1101,8 @@ BF2CVT 01100101 00 001 000 001111 ..... ....= . @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 =20 +BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 + ### SVE FP Compare with Zero Group =20 FCMGE_ppz0 01100101 .. 0100 00 001 ... ..... 0 .... @pd_pg_rn --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978179; cv=none; d=zohomail.com; s=zohoarc; b=nxE7E+FJETnlZQ64BtVx0QMYef3iRU200Lb8pybMPwKPmukPxZYbnwJIHCRmTrebWcHx6YmJh5C7YHkuemjZed0wYHpSwYyFm2pkERyj3fyTRDnrebAYSjC0TMOvBGZ1HopKC2EhyXIlhCiWNXOHkbPmfHMkGlnfnEi56NWPuAY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978179; 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=4TZle6J3SJxA7e07EfpXC2uO2wgjZ/jOBLd9NJqphzg=; b=Fga52pLT5t0N2NhDre6RCPTO3Wj9mzq+MgXgtFlo204w3Rmh8biMg1k/aU8aOwffiV9hPosVXCJ2uy42btc4m9NNFJYw2xa1b/Yhprm5dovMJ0WoodvWkBgHfJAShSJRFSZN2PAtFg4OyhbpSNk48GrFgH2cTLBUmC68CjPdee0= 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 1778978179618533.6343461913747; Sat, 16 May 2026 17:36:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPh-000855-Jq; Sat, 16 May 2026 20:31:25 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOv-0007HS-3z for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:42 -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 1wOPOr-00058C-Ek for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-c6dd5b01e14so435076a12.0 for ; Sat, 16 May 2026 17:30:32 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977831; x=1779582631; 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=4TZle6J3SJxA7e07EfpXC2uO2wgjZ/jOBLd9NJqphzg=; b=GDXxvRcZ+e9tJmPsg9jPXoT82C4Z7+1ZujT4A1XH66zOjEYuuSVaYAPksEC8oxg4hg LjkDyew2dvdwRIcpGZKmJGpr3S27aGYgswHrqvUt2zd/Jq3EHuzw/o+qlBng8IX6QKmi SRLiKVSti2GHuRJheCOda0IG8T7zyaLw+b/1uloFuTCGNjP5Vm8ZEWacklG5uGEx/nsP QEUevoBFBb+PjJTpXi03mSqN2XQOYe4kj2OPEAsWSSoqfOZJI9+O0abz3APRZl8/IjpX iQ0LTj9n8RSIR8UZM7DTNd58XpbgWLTc69La6ZGtryP1g2VqtWkI/SxCIooB9vAh47k1 zlZg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977831; x=1779582631; 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=4TZle6J3SJxA7e07EfpXC2uO2wgjZ/jOBLd9NJqphzg=; b=qRK7uwp0ritbwqUPkik1hLv01FrTKDWJ8ZpyBi9zuQPUK5fcSiE0UgLBppHYxdaPUS PQuETa/jkcAfWVtK/heNygSHfGMfPaLJXiA/H2b1y6ZFdLWbOaGnJhSBMx1URfz5mSYK nh0kUJ+cDgBZJWT28d8qbKLqAkIDcgZVVIb56eSV4ZjN6sMWoPRAokFnIgdU34aWmkZ6 uSad8NjKsLL9PkJOnZd3FXCWA0sfCmfUONzyKCLITE4y1Dh5A5+1VKtu/neJqHZvXAd5 ypyhJufVqhi5xJ4amKYzUUj3oHA0MyNcbtYBcbGjfztbwJzw1zc+DtuaKo3BNdKAkoPF ZAFQ== X-Gm-Message-State: AOJu0YzKfKwMZvc8R8SNyGcws8FhzQXP/k3vUtBorAOaY0aGfyJZE+wv Eq6eeEE5qe8oHGTr2TFU62bweWb9Qv9Cid3IBZCUTiRAoVXH8KXV4SnGGkQUvs+RrrWPnW48tqW SbwnL X-Gm-Gg: Acq92OGlBH7h26zisEyc44bN+J4nPZ3YdCNgo2YyPNK0e6mw/B2uNG0ipQQiT59yc27 ex6+2nWR7rh8KvZd7ryYoDjCXXifcQWQvgCaLlqeetpaBt9Q9wGdMjEWwhg/bmFvQHL0FIA+Zku B0bWWboOr87/2lCq/1X+BKCVdldM/c43N3qbgAXCb6apUw/m36/lvmv5jmGyFMxlytYVzyS3Dnf cuUYg1FbPm+47guepxCX1QxZTkRJ/8W+BDs2UYDkScfV+O1a1S1fcnd0lEcipmDZGHn5UWSwFaC 79W+6bFNveGf38nHcezAA+GMqiSQahdKXPi8C3MF7F/ThgrJtfoFxUTEMKG2p5I/O3ejsPJFiSh Wndb3ZmVijtqPpq1bxxCeqBk03R0FY/nkGLz2rhHkvHDd4KH62t+d5eaNsmeBlYuhR+7yUC2qsm PHlCPr/U73E0JqBd3Jrt5Lxr/cleqV X-Received: by 2002:a05:6a00:1ca4:b0:81f:3fbd:ccf with SMTP id d2e1a72fcca58-83f33da0f1amr9007229b3a.23.1778977831017; Sat, 16 May 2026 17:30:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 31/63] target/arm: Implement FCVTN (16- to 8-bit fp) for AdvSIMD Date: Sat, 16 May 2026 17:29:30 -0700 Message-ID: <20260517003002.321430-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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=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: 1778978181231158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 37 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 15 +++++++++++++ target/arm/tcg/a64.decode | 2 ++ 4 files changed, 56 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index bbc8d69e28..6530d1a6da 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -14,3 +14,5 @@ DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, p= tr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) + +DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 8d01393ff9..95c37a037e 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -183,6 +183,13 @@ static uint8_t fcvt_b16_to_fp8(bfloat16 x, fcvt_fp8_ou= tput_fn *f8fmt, return f8fmt(&p, scale, saturate, s); } =20 +static uint8_t fcvt_f16_to_fp8(float16 x, fcvt_fp8_output_fn *f8fmt, + int scale, bool saturate, float_status *s) +{ + FloatParts64 p =3D float16_unpack_canonical(x, s); + return f8fmt(&p, scale, saturate, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -372,3 +379,33 @@ 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, true); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint16_t *n =3D vn; + uint16_t *m =3D vm; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vd =3D=3D vm) { + m =3D memcpy(&scratch, vm, oprsz); + } + + for (size_t i =3D 0; i < nelem; ++i) { + d[H1(i)] =3D fcvt_f16_to_fp8(n[H2(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + d[H1(i) + nelem] =3D fcvt_f16_to_fp8(m[H2(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_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 565053a1a4..0927eb6516 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6522,6 +6522,21 @@ static gen_helper_gvec_3_ptr * const f_vector_fscale= [3] =3D { }; TRANS_FEAT(FSCALE, aa64_f8cvt, do_fp3_vector, a, 0, f_vector_fscale) =20 +static bool trans_FCVTN_bh(DisasContext *s, arg_qrrr_e *a) +{ + if (!dc_isar_feature(aa64_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, a->q ? 16 : 8, vec_full_reg_size(s), + FPST_A64 << 2, gen_helper_gvec_fcvt_bh); + } + return true; +} + static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2) { if (fp_access_check(s)) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 26d31d0a33..71456d44e1 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1201,6 +1201,8 @@ FAMIN 0.10 1110 1.1 ..... 11011 1 ..... ...= .. @qrrr_sd FSCALE 0.10 1110 110 ..... 00111 1 ..... ..... @qrrr_h FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ..... @qrrr_sd =20 +FCVTN_bh 0.00 1110 010 ..... 11110 1 ..... ..... @qrrr_h + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978136; cv=none; d=zohomail.com; s=zohoarc; b=WEbrjK6sJ+5Ojj3x45lS2C0/e+2FsyK4rhhH7Pdc6s1lsRPXYdvBx9VXPipQOkjjxdlypc+hatYShF+KEx4s0TUqtFvOs9arbSDOjQclF5x1bUnfdin9OWfNrlFRS0N4b/LjmjsC9V+RDQlULhq0Uk1m3Z73e1S2mT2hZ0BcT/I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978136; 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=Dm33jZjik7glMCC+c/+qnvEzbGhxwqQSJMW0dasLBYQ=; b=i5I4a7fobdKn3EZCvGYvNzQe7GnboiYK+BJ4aNjECf2a+sT9LvgFLsA+sHL2s24DSu2x+KDFhqONYggt3KW+6MGEz7V2jDWMcwchjf0J9J0/cVE+lqU0qup60lpGT/dI9tW8ctXooNTN/oRqYwisjz6KWD2smm/qmfHqu8H0IQs= 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 1778978136250504.9805705850938; Sat, 16 May 2026 17:35:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPl-0008Gu-PD; Sat, 16 May 2026 20:31:29 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOw-0007HX-8X for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:42 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOs-00058n-G1 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:37 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-c8027e876fcso372130a12.1 for ; Sat, 16 May 2026 17:30:34 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977832; x=1779582632; 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=Dm33jZjik7glMCC+c/+qnvEzbGhxwqQSJMW0dasLBYQ=; b=v86Q4bWbD4s/fsq1v56uskYfxQ0NdP5PsNS7mjbuHEuttudMZZJyEtlrAEDz93Gy7V PP48PNmdE2ecwNKTxg7SNFuHHj/fS5Fk3mjhfTiaqun4yYHWzuj/hUedC6GsYi9lJXWI 9LInkR1x3EpZ0eH5yfB+MGkhBt/mXQkpaRENB+NZBocqyzbD41Wnk7LYzh7cDE0vdRBR jl8V2fAEFjrb7BTmVbWY9px4/TOGpgZZsvFf+5NZw581S2htJyAEsI72p7tDTlpGPRWm JYYViHevtktPLB/GiZMHKw6antPHeWD8X8JgW889Gz7BMmRSNyyeIYJNbehiC50DYP9Y Tb6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977832; x=1779582632; 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=Dm33jZjik7glMCC+c/+qnvEzbGhxwqQSJMW0dasLBYQ=; b=bysruejW+fvW1mB1w/ofIhVQMYUJbDgTnMtr9oMwkbl5dR8C9XVmKp4d0z54mMCLVb nwD3qweErulLtj9eDMJbOMzCtf8QnBh1zdhSWqTT9OosSVxJsxRxdJ6Pw5tGqeymlfYw 1XwKsgehU8FZm4lip4f1nKqS3O45isP3ZedcpCVawA/8zp9Fp0aVeCUKw02hRmuLbg+B N3UPREZHe1pyZpgCo/dIJUMxnti7KYlueBGH1SRxt6U1S1Po908xiZBLUjo59GU3Swbg wOwI4MMLkMPmPd0UgQw/04R81ej3iEb6NpjYvCbESNk96d9QCbaySs01ttKnlyFON7Na fD7g== X-Gm-Message-State: AOJu0YxLzg5hjZZLoEAiaU4HoH2Bn3YJS5MLYuSQZKCzdvJjU7mFMHQX AFWFpp6udbLlRZGKKj9wpzbjMidrBGarqBFrfGpUNM3cqqz1LO2HfPGILBWLbC64SBrrdF0LcRX YK+ck X-Gm-Gg: Acq92OGt29iw2GrjOdhWGCLJj3Ee3qmybkB+OHPmzDrj948HtwYxoML8DUKu4RTmHXV hwImKqy4ppftsiNZ2HhlG30Cmnkeg8q9YMw29zAsl7jVpdRSpSY1YdzTe+/N+gFF7qeWEvDpBF4 mr2B5x4ZtPpSf+F75Tb2rnXK+mUqwLF9L/dQZ5ij6hWVzqatpRBRKSTwuNaWzupJzK1PC4LFSUN QRTIXzqDZEe3ssnVgc0aC9gmxH6GoQrMbI79B0txZg8oomdOIXXjWDTTismuve9n05Ejhu/GNpa nw1H7SQ18Vuu317SFy0k+bGGvI7lE6JLYyrMq+km7nQmIHfivT+NwSemJ1N4svUZRr7BALjdb4O 5NYslFSZPBPWJEYR73Aa9zrW+FXVfNH9UF5xHxNQSO39hzkiZfpS9mvSnWhzo7kCf8l7LhuFRPH UDZbV/oo7yHyg2JbvBTzrl1aE7UmJSQwrgXkIbGlIcBH874Ywhbg== X-Received: by 2002:a05:6a00:1943:b0:838:af72:fb1f with SMTP id d2e1a72fcca58-83f33ba0ac9mr10563478b3a.2.1778977831772; Sat, 16 May 2026 17:30:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 32/63] target/arm: Implement FCVTN, FCVTN2 (32- to 8-bit fp) for AdvSIMD Date: Sat, 16 May 2026 17:29:31 -0700 Message-ID: <20260517003002.321430-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.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: 1778978137086158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 33 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 16 ++++++++++++++++ target/arm/tcg/a64.decode | 1 + 4 files changed, 52 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 6530d1a6da..023a49e12f 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -16,3 +16,5 @@ DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) + +DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 95c37a037e..4689ffa88b 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -190,6 +190,13 @@ static uint8_t fcvt_f16_to_fp8(float16 x, fcvt_fp8_out= put_fn *f8fmt, return f8fmt(&p, scale, saturate, s); } =20 +static uint8_t fcvt_f32_to_fp8(float32 x, fcvt_fp8_output_fn *f8fmt, + int scale, bool saturate, float_status *s) +{ + FloatParts64 p =3D float32_unpack_canonical(x, s); + return f8fmt(&p, scale, saturate, s); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -409,3 +416,29 @@ 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, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n =3D vn, *m =3D vm, scratch[4]; + uint8_t *d =3D vd + 8 * ctx.high; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + + if (vd =3D=3D vm) { + m =3D memcpy(scratch, vm, 16); + } + + for (size_t i =3D 0; i < 4; ++i) { + d[H1(i + 0)] =3D fcvt_f32_to_fp8(n[H4(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + for (size_t i =3D 0; i < 4; ++i) { + d[H1(i + 4)] =3D fcvt_f32_to_fp8(m[H4(i)], output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_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 0927eb6516..3c784afc99 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -6537,6 +6537,22 @@ static bool trans_FCVTN_bh(DisasContext *s, arg_qrrr= _e *a) return true; } =20 +static bool trans_FCVTN_bs(DisasContext *s, arg_qrrr_e *a) +{ + if (!dc_isar_feature(aa64_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, 16, vec_full_reg_size(s), + (a->q << 1) | FPST_A64 << 2, + gen_helper_advsimd_fcvt_bs); + } + return true; +} + static bool do_fmlal(DisasContext *s, arg_qrrr_e *a, bool is_s, bool is_2) { if (fp_access_check(s)) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 71456d44e1..a9cf259b9b 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1202,6 +1202,7 @@ FSCALE 0.10 1110 110 ..... 00111 1 ..... ...= .. @qrrr_h FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ..... @qrrr_sd =20 FCVTN_bh 0.00 1110 010 ..... 11110 1 ..... ..... @qrrr_h +FCVTN_bs 0.00 1110 000 ..... 11110 1 ..... ..... @qrrr_h =20 ### Advanced SIMD scalar x indexed element =20 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978019; cv=none; d=zohomail.com; s=zohoarc; b=Uh3OA6Yadq2E0WuHrMHfjFbkA8CA9pp6D8HVd6nQ0VSC5cdxX5yxMlHjZyb4gwFhvJGLotvPeDuBGe4Ictrn8PYX+Pzpdjq2bJ3W8ZZsMIL3MkzK9HVXcYU19Gs3z6pfghKMXF+yobmMCUHVKdfDJPXEMEt+F5uQqHj0Ki4H0Rs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978019; 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=YCb2JOKmPFn0zZsJbVtbJgBYvfdpEDHbgFMbx9E3/B4=; b=FCZz755FSNtD3EcZiMFxgMA0/6H/toNU0fssQOYny597tLzlz3IB0wr1Q6dvjY1thecfsJq7hc4QWDsX2M4p/mE1lYWjrSqtTv+7xcGFWBontMCrq2d9oRTY9ImeepIQLUORVkcE3Y2l3OFWHtSDWRsu24xv1BgGRC85ErL3Ni8= 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 1778978019027276.715667408252; Sat, 16 May 2026 17:33:39 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPo-0008N3-Jq; Sat, 16 May 2026 20:31:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOv-0007HT-5q for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:40 -0400 Received: from mail-pf1-x42b.google.com ([2607:f8b0:4864:20::42b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOs-00058V-0z for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:36 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-836ed29d1e5so408870b3a.2 for ; Sat, 16 May 2026 17:30:33 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977832; x=1779582632; 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=YCb2JOKmPFn0zZsJbVtbJgBYvfdpEDHbgFMbx9E3/B4=; b=iYatM5clS4pgYmoc+6sW33Bdg259vLC9kkh04PUslN9ZY6AVquTdF2xUxZ/yyHZ7Qk 8KnKDtNXUZrdHHwhyM/dgFDnLJADVX5usmJeDRtQ1g239hJsN8q8DRnRSE5mEotPw8hL qeRPiD7yx3ySLWTDGv9e0b++PrcDqzfalpD4sqIX2QbB0g/DuOmAxl7OHfIsBvD37GTQ LI9Wx86aYOrpQOcmfeosE+jPxglbuL7WKazxK/HDLTyngtMRh/UCintCs4nVttjxpx4H 5QNsBmx2U61llTAKTmqx4JgtO27ONfmgOl51NG7DTRl/7UrkUYhyE6JPQxAD5h9OdOBB lBiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977832; x=1779582632; 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=YCb2JOKmPFn0zZsJbVtbJgBYvfdpEDHbgFMbx9E3/B4=; b=UM6EZyqkiiAxcE8NiYT/+KZhiMFUAtD4QIdRfwEgGCIlXj6PWyDxQBZYbRzdqP9NG1 Fo+HVBsmM2f/vZ5mbU1UH73HT79z8JOhm/JxXXoO7RD+pcbthEEl4IdzCH3l3iRWicmP 3tAxZF1rW6WOPUYhkcaLd+8bMprIJa3Yb/37VfDxKyCzS6cnWnOq9Ke2UPY/lovU3ANY D0v6ig6PPd6y95Dc0RJ+Ih73iRbWq5fhO8VipVWrNJWvQ98nHZdMEc+u/xJWK8j7ZJg7 BaWWEUtoLzH33tfOl6RR7d9MS3xCmEPPmOMNtQg/EIuHkV720ARmDlE8fQIo4qUMkiqV xg1A== X-Gm-Message-State: AOJu0Yzr/+vu7iX7sirc/8ZGoody81FJox5drt0A+tbyk144b4lRBsvj aqOofJVEG7EwCroTEeecKzDfNtOIouH9o3/ZFXnDoDAzw0BDOp7zhGQk1Rutq4T+YQdMUaypz5Q xarql X-Gm-Gg: Acq92OEyxSgmDh+VKh/B171zuELSTU+QiE3edtX2DA5KHFps2vfRBmEd/yRvBYBz6He 8zrsPrIKcCgpxJm1Vrc+Mh5y3xK3NdVnckO95AF1ufpqsLfVa97nvrrNohKwoGxJZ6fmllLik3v gZcMpR04smfB/aYP5TLndWJugLKI14R2xpAwyM9PmG+KlxOJs+Si1UADHhySmt4zQOfTmGLAfqf CP+tkR3kARYq5i6qeGZHMMDd/NI25HSCR5CSUNRKFgyl3UCdRDfy8zXKbrCHAA5WJx1cY6saDv6 DUV2k1UeDbulNC/6pW8cG2eBPkqAZV6rxjkIN6DHI3EcbK3/dqB2KI8suCck+YriFiBLQbHYuty pRCVproham7FGjs/C7lU/Pqd50kBWFuPpREf1W7rhfOSvdXWxmTEwKCAYSnb0j/qJk1Deskyu5K ijbxhrUKqLIAUHsuNnmilT9poZPnvA X-Received: by 2002:a05:6a00:4c0e:b0:838:127d:a16a with SMTP id d2e1a72fcca58-83f33c9e636mr10330201b3a.19.1778977832410; Sat, 16 May 2026 17:30:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 33/63] target/arm: Implement FCVTN (16- to 8-bit fp) for SVE Date: Sat, 16 May 2026 17:29:32 -0700 Message-ID: <20260517003002.321430-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42b; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978020518158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 23 +++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 2 ++ target/arm/tcg/sve.decode | 1 + 4 files changed, 27 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 023a49e12f..e67fb191c2 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -16,5 +16,6 @@ DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 4689ffa88b..c32577a9e4 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -417,6 +417,29 @@ void HELPER(gvec_fcvt_bh)(void *vd, void *vn, void *vm, clear_tail(vd, oprsz, simd_maxsz(desc)); } =20 +void HELPER(sve2_fcvtn_bh)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, true); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint16_t *n0 =3D vn; + uint16_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + for (size_t i =3D 0; i < nelem; ++i) { + float16 e0 =3D n0[H2(i)]; + float16 e1 =3D n1[H2(i)]; + d[H1(2 * i + 0)] =3D fcvt_f16_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D fcvt_f16_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_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 7276d9c44a..c7fcf27183 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4099,6 +4099,8 @@ TRANS_FEAT(BF1CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cv= t, a, TRANS_FEAT(BF2CVTLT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvt, true, true) =20 +TRANS_FEAT(FCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtn_bh, false, false) TRANS_FEAT(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, false) =20 diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index b6ef8ed8de..806953bc35 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1101,6 +1101,7 @@ BF2CVT 01100101 00 001 000 001111 ..... ....= . @rd_rn_e0 BF1CVTLT 01100101 00 001 001 001110 ..... ..... @rd_rn_e0 BF2CVTLT 01100101 00 001 001 001111 ..... ..... @rd_rn_e0 =20 +FCVTN 01100101 00 001 010 001100 ....0 ..... @rd_rnx2 e= sz=3D1 BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 =20 ### SVE FP Compare with Zero Group --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978051; cv=none; d=zohomail.com; s=zohoarc; b=NZhZpFdvB7wRiFxrqT5e7oWGeLQtotuXQxglRphEADzlTQvSNA+pmqY1EDT/UUzejAJMJIMq7lluc3cQ2osKEORVwur/w0ZH0DYwAoecT2kUy69FzEzWRQqZB7HjZav7FDwM5JjAo3y9MSWjQd0IL+dk2wHVCOvdcZBfyCalR/A= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978051; 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=X2+cLaofG6jzP54pUuw/n61K4yVyE6QqU7IL0/8Yt60=; b=VsX1ho31N8uC9boZSIPIAvlbQdaTyHBZsm4MfwEAAm8tQGC5r99gM2KedMhd6uiULcgYNBnTvmgzi+REEh+KBzv3SXR8rwEqlJez6O2mu2ZdG0g8ugWNzeF4Av/K7ZG9YnPRIgBxUu9/VRNRBWmXMkTihVtouFNocnJYonuiGkE= 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 1778978051904895.0778462734893; Sat, 16 May 2026 17:34:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPq-0008S5-4T; Sat, 16 May 2026 20:31:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOw-0007IU-JO for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:43 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOs-000596-HY for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:38 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-c80203b9d7bso364745a12.0 for ; Sat, 16 May 2026 17:30:34 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977833; x=1779582633; 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=X2+cLaofG6jzP54pUuw/n61K4yVyE6QqU7IL0/8Yt60=; b=qmPOi/fPhiPb5XrO7AjiL/rtXQtJDqVkcOjHWvRDsQ9fYkzmoUgOEMhLGitQGUEYNb RzyyzDM2QEZ3w8QTFJ3homxOfsyDKpL0QJz+KdaoOv0Azei6u7BR1MiPAygS1fom8Trg CMyCeByLJeMoXhRvYjCe4ICBcUUrsksZgsMWR+SnjvJUdlp1YNp5D746LdLQSUyYcT4S K73Q0Rjxb+1SpeeLum+vKQhbf6Up76fyGSPFbmZN1P4bSLVpbcdU8ssBjvgdO3x5QsF1 G7TJctUIc5zgoWfB8CoReoMONqLUJNoLjoSxbwvSa90oCL6F8jpxXKbIWQQR2VQTJESV SSmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977833; x=1779582633; 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=X2+cLaofG6jzP54pUuw/n61K4yVyE6QqU7IL0/8Yt60=; b=nA0cW+IsommM3KpPnWFh89IAFbGs1iLELuGJC8QO8eZwhAuSwHYqBJHEA278b6v9Y/ 3dvGO+t4bme0HGDMi8VnWUT+CVNdIgwCQvMAgXNsBT9EqhySzEq3kKhWAIumjoOwLixR MVF5YB6eZBD3jY1VTBgEmr3r2d6cklhLiSE3GPSj1pYDg0RJo2ODuEdfBkgo4DWlno4i OwcHvPu29Pe43Ku4ZBNP2w30rN7AZbUqC4gJdVwEz7iWsRlJhE+zQeMsQQXQY7tsS99E EZKxV8TU3Uj7iykP13A21LFQKB/+FH+Id1B8TaT3iGq8Lruwp4Gb5r/6rh5vTTwVJF2b wKHw== X-Gm-Message-State: AOJu0YwTxVKB+Qk7hqDol8A/0vBV8OtfhZmhhwpHezYRkyxFqWiexjw7 yyh05px9oWnTa8GM5FjhuRdHdHscTRLlB2TYULySSar0PFSo019S60SGO9fUfYlMx6VVcKEsZ97 DXThr X-Gm-Gg: Acq92OFMrlJIt4VDh+FpRLYnRCTZUWWtinZy8024KtGcV4CgiSu2ClNvuTmGdpSEBgL BEeS6X+rZhh9auBfq8R98vejhhYSOyZL0IsC2kDao8W8RshD70IITZOj5JDe0Q46I1yuwFGtbf6 xav6BxFjuARanNBl2QiWajDqxPtIZB1KCccR7OhwzkdWtCsBwI3+U1pCSlU2IWJWWQdEWYbiyrA BlDwvoBghR2y6FM6KmHZ/7w6aR7YANXxji0ypOXcJqYldPLGSxcOp05WORlvS4W7iIRo1IheS6s ETxpXdtzi3h9150WJnwRJo2tAU+lQNzJYINOg+/ADxkZ/P6uNEi/s4ur+C4MRbNVNfQCvAlUtU0 jyVxTPPQEybCKy+NrwVrzlrWfdu7l7H9i24mJg37kvK4xJ5buMVg6p5zGbdJbfkpj+jlSdHKlRY m3YU35v9q6vXnJOMHyl6717s285uzS X-Received: by 2002:a05:6a00:1d85:b0:83a:a55f:c3f9 with SMTP id d2e1a72fcca58-83f33b4e019mr9880552b3a.20.1778977832987; Sat, 16 May 2026 17:30:32 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 34/63] target/arm: Implement FCVTNB, FCVTNT for SVE Date: Sat, 16 May 2026 17:29:33 -0700 Message-ID: <20260517003002.321430-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.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: 1778978052872158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 47 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 4 +++ target/arm/tcg/sve.decode | 2 ++ 4 files changed, 55 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index e67fb191c2..5863a6dbb8 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -19,3 +19,5 @@ DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) +DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index c32577a9e4..e1d255f864 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -465,3 +465,50 @@ 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, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint16_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H4(i)]; + float32 e1 =3D n1[H4(i)]; + /* Zero-extend uint8_t to clear the odd lanes. */ + d[H2(2 * i + 0)] =3D fcvt_f32_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H2(2 * i + 1)] =3D fcvt_f32_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_finish(env, &ctx); +} + +void HELPER(sve2_fcvtnt_bs)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H4(i)]; + float32 e1 =3D n1[H4(i)]; + d[H1(4 * i + 1)] =3D fcvt_f32_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D fcvt_f32_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index c7fcf27183..13f7ab01af 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -4103,6 +4103,10 @@ TRANS_FEAT(FCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_fcvtn_bh, false, false) TRANS_FEAT(BFCVTN, aa64_sme2_or_sve2_f8cvt, do_f8cvt, a, gen_helper_sve2_bfcvtn_bh, false, false) +TRANS_FEAT(FCVTNB, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtnb_bs, false, false) +TRANS_FEAT(FCVTNT, aa64_sme2_or_sve2_f8cvt, do_f8cvt, + a, gen_helper_sve2_fcvtnt_bs, false, false) =20 /* *** SVE Floating Point Compare with Zero Group diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 806953bc35..72755b27af 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1103,6 +1103,8 @@ BF2CVTLT 01100101 00 001 001 001111 ..... ....= . @rd_rn_e0 =20 FCVTN 01100101 00 001 010 001100 ....0 ..... @rd_rnx2 e= sz=3D1 BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 +FCVTNB 01100101 00 001 010 001101 ....0 ..... @rd_rnx2 e= sz=3D2 +FCVTNT 01100101 00 001 010 001111 ....0 ..... @rd_rnx2 e= sz=3D2 =20 ### SVE FP Compare with Zero Group =20 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978030; cv=none; d=zohomail.com; s=zohoarc; b=mmrL1XdgrTgviV+74ES8c2DEVziqWYTgdIuKN9eaSv84ownLd51PxA1sSHGkx3+I36LiRf2NKTrixZir0IVzxotok1NPBWY30/u9GF9q5AkeRiif3RBLRv/9CB9z6OfiPEs3w8yfpWUGyvdat/vjfE9+MgSkBhxJTjAKV+kPzdU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978030; 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=qClXpzIkhY6HXQLVy4Ou0WWe411jsSWReuNJ6IrI5vs=; b=VSUlZWvl2JQyvfIXtnaqYZhYr3eb9qQ2KArjA1ih7TdSfJT5eKSKfTVVCEMKMgfXZpS/QFeGPpyZaA+8umrVKnUfMDiLm7vLw/H8SlvHPWQgwgR2qbNRDYjAAaswEHMfZFMZS8v9nsHY8PIJCxG/+ZZBMR01CoaJdHSImcPiC0A= 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 17789780309291003.9059122798792; Sat, 16 May 2026 17:33:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPq-0008Tn-SJ; Sat, 16 May 2026 20:31:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOy-0007J1-In for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:44 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOt-0005AJ-Cj for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:38 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-c80227c9572so381251a12.2 for ; Sat, 16 May 2026 17:30:34 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977834; x=1779582634; 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=qClXpzIkhY6HXQLVy4Ou0WWe411jsSWReuNJ6IrI5vs=; b=oTZKghgmrYUgjlkIqErIauTm67yQssFtUpf0ICBhsgj1UupZVkc6RlD2aYfr97jjer ZgyoL22zntOgzDnvF1c7Ihw0yvjb6unhRxlkDr1fxL4A++sGa5VXRqGWji6Ld1PFyOmP XVRg/xCB3N/iGYkuDHNqyT0uEU0zOxA1xRThWoZdfwusjv6h554TCGHGsg7Bt9z9OQAX 9hLJHDwEOadnAqBI87A0mU591AUpKkhUbDEUnMxxkkcBbtznbx1/bDNixMmlUWMljOxA l1hdM6+ece5+6ms18dX4XErb299dHzOBBQkCtuqf+yMKCNbTPEFg8AYyy8OuUgtkzIB7 eGMQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977834; x=1779582634; 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=qClXpzIkhY6HXQLVy4Ou0WWe411jsSWReuNJ6IrI5vs=; b=QpgblUrKBwYfvFA9q36JKnXCEnjuC86qIkJBP1UppCEfrD+u2VEY56aNpPEvHUfBuF VBbl1rO8Gf5ZEJ3yUGtHt6b9ls5TjkLJMFfaMIY2gQHt30AfC08HgV8us84BLZvR2hLA oxFHeSh4we4QrL9i/IYF2i8WXB6kNQxhHJUbfMB8Kypfc0YW0BjSJp66tR5fWvC+Uw2V vbgCOBaJXW3jwkU8En1prihikcSV2siOppQeIji9wiJfndFpAHr9yMrfA0lZbzSwxEj8 HbEmp0qHbXUBAV5wO53Zi5X6Rw42l1ysiV1S3MTf4tREyeBtGNvGEXSoMAk/ylmnEStE 0pfQ== X-Gm-Message-State: AOJu0YyzpU3BjPZgbDUXw3MmDO8pUKe3xapmTmvT862Lnd9rLISAWL88 jHkFzcgCwkB3fsxoJOQtqB3Fs0FXOHEphFeZ8exGeP/jWZ5ovTwsQ3zQKKpS204FyFbqvCKDdng azL/u X-Gm-Gg: Acq92OHk7Vbrw5DlpNZsQt2//tx2M7I0X3eVteeCw5WCSpnPfEgHI0tjGQExzp27uOh SSXflQxa71wNpze6nHe4YHUU3ar+f41yHbZWvLTe6f6WlQPXAOEEn6L9KiEiA39GRyP6pO80Zc4 BVOMGVpYRjlBScUo5W4ageEdSKdS1Pw2YuEHKL/7Z2qSP42511lIDaxlxRhBJJBfmYhgjSwwvMx 3mBPSJpS+xoPROdyKiZfDEqZCd9r3MxGpjRDojpFiip4TIhuBAZREoSSCYTyl+X/iEuOsGOqPZT 55ftkG6gD/26pITOR79yasXw/qZF+F6KJ1azC3DURrTtS/iszMOGt4T4vDradPNiXkDoXbiQjUO HUwO+sQv9mJ5QTrvaWHKJY1odwmiGmX2kkk8YurYCaGbI9Trx8j+GBWn2r7Zhq5fNTlv3FO7zWk Ql27LAFrzvMvlB+E1EHuF8IlNdsDCZdZYEH5y4EIg= X-Received: by 2002:a05:6a00:3a01:b0:837:80a:5abe with SMTP id d2e1a72fcca58-83f33df536amr9778544b3a.37.1778977833638; Sat, 16 May 2026 17:30:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 35/63] target/arm: Implement FCVT (FP16 to FP8) for SME Date: Sat, 16 May 2026 17:29:34 -0700 Message-ID: <20260517003002.321430-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.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: 1778978032504158500 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 0cbad3e006..050c3cfefe 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1556,6 +1556,22 @@ TRANS_FEAT(BF2CVT, aa64_sme2_f8cvt, do_f8cvt, a, gen= _helper_sme2_bfcvt_hb, 1) TRANS_FEAT(BF1CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 0) TRANS_FEAT(BF2CVTL, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_bfcvtl_h= b, 1) =20 +static bool trans_FCVT_bh(DisasContext *s, arg_zz_n *a) +{ + if (!dc_isar_feature(aa64_sme2_f8cvt, s)) { + return false; + } + if (fpmr_access_check(s) && sme_sm_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->zd), + vec_full_reg_offset(s, a->zn), + vec_full_reg_offset(s, a->zn + 1), + tcg_env, svl, svl, + FPST_ZA << 2, gen_helper_gvec_fcvt_bh); + } + return true; +} + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index d6192eb59d..a02bcc0e22 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -863,6 +863,8 @@ BF2CVT 11000001 111 00110 111000 ..... ....0 = @zz_2x1 BF1CVTL 11000001 011 00110 111000 ..... ....1 @zz_2x1 BF2CVTL 11000001 111 00110 111000 ..... ....1 @zz_2x1 =20 +FCVT_bh 11000001 001 00100 111000 ....0 ..... @zz_1x2 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977933; cv=none; d=zohomail.com; s=zohoarc; b=Kye063ivi3ZIbI6NReJdKrTolwvecDmG5HtW8W99YwU47RBznAtUjLHzLSr0od/3B+xLW8MSegU1fPe/EYMI6fFAHKAA9UA/4cZvQIZ05P94mcg9A1Gm+ufg6S8itTJokA5VNQ4hUav3bf54xScGgVApKtXrtshRJab1wtl0QiA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977933; 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=MaS84K9IkggiG07E7o0JZrcvJP6U4NSyHBTBx85vHpo=; b=hxeCF6cziwiVoO42hsHhIfgYJXjP5CRxSpypvAvGeROJp2ChjJnaMFr8Kmbu3DOzSDXp/WOHoLJpWNU7qKrSzSKUa9wNke7xpI4UY4bMHFsGZqTgjCht6obfMsbDABtwH5sjg7j0W+DTXXzohr0WDIsnSpAF7dNsreYWnazWewM= 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 1778977933347651.4540137040917; Sat, 16 May 2026 17:32:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPt-0000FK-70; Sat, 16 May 2026 20:31:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOy-0007Iz-I1 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:44 -0400 Received: from mail-pf1-x432.google.com ([2607:f8b0:4864:20::432]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOu-0005BM-Ay for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:39 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-8353ca0f1f1so430679b3a.1 for ; Sat, 16 May 2026 17:30:35 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.33 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977834; x=1779582634; 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=MaS84K9IkggiG07E7o0JZrcvJP6U4NSyHBTBx85vHpo=; b=SVsKK6q/Oih8j/6K2F4uKBT/YyF04o6aDDFGUcVl3E9JgrJBMbid7IbXtW4U7kIUOb YVqkSXaD46dmTIYeovInpnubLM7LrRQQPe/PPOubPf3x+UjejumuYlAIPqI5GlWa57en Z9YnI4HeKLokD7aU+Tb9aXQ26k8dyJhYLcK/sbKTSdSWWpKIEUbTPWlbfV/kcI+fRv4M +66IByVpR0HPpPZ57i2Igz1I7pog/wC1YEho3YoLiPNvGa5Xbsx8i4v/ff3aNXpOmh71 dXBRGq0jfGFhMYBphwuxwCZnBqflyw58uHwUUAmM00IyuD35S6WBrIIm29MqHKB5QpjR 2hFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977834; x=1779582634; 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=MaS84K9IkggiG07E7o0JZrcvJP6U4NSyHBTBx85vHpo=; b=HGNYRSXpjqTjJwd8bmVDx7uSATDWGuKrKOL2mt28qoNDXMpSxOCSJajJmO8L8ke5Mf 0F2x15ZWN/63wlKUANClqFwiSXFXCld5JRyMA5rMWMqODRSO9I63ZWw5oerZ2X3tqcMx edKjkoLJLYoraDZ4gDPXgVqBHltzoCXtiUq9Ke+xYVeQoj5vEKsz7fqO7NQfILikLIeh tzg+jSVbzXs/QnwX5ssGhKoQYIXzWsB9lrR0wlhsEc9N+2+faqDLULnWRTE/1pRJQlEe Lwy9U+/ERn6Sh6hGMajdX3aJ8fge35W6QRCHqzWzVZhV3ihqiBM+JBmNnxrQj5RKffGb FHlA== X-Gm-Message-State: AOJu0YwMBJedgEcVqpA8bwN9X2bjB9+p/6ERhfr/GThmuAbY0VNPon0A zxRHFriCn25q3zk/+QC3yG8oZHP1k+FA+48urLibSsDkEKNWog/luhhCvYS1EunW/G9pu/ZWvGV 6ijZJ X-Gm-Gg: Acq92OGP0rfKjGzquVjrGKKJ3MF760p6RGMWfenC7VQe3ZYB9ZF76yjmzDzNaf/2XGl 9595lbUZxKPzD9hg6OO98f8Jf5L4bIhKM9wU5gFyXqEBjy8KQUWtNyjQ/O53PO6iOFyON8uGsMN ZC2ekbMKamJ/OgZOLjpgXUE8xoEal0oY4Truj2fdDmDSJTk8bi5BGvCsVno6b4VmuI+vJpKaXPO 10QQ9yx+CVjDPlbXROuQDWuDBQAbVOkPGS9yjIw14Z/zH8UtuJ+mUG8BXh1GssRtiD7EPhjGevd 6e+Ic5PZVsfZ3ME5d8AX0E/09/r9xi3tPHb+jBjwdn2ohQ3S2zhfMYfahse1K3OWpoMYljLirCE Ujluy3dwKEcbxIHZvwY8P1BCqjZKZ928TT1Bk+yLQqOhxkpMTr6L+Gwp2CBZbW6aeTJak4+bKMr T7tf3oR4aWnW275+55zgW2eG3cK0D1M4H4IRhY9aI= X-Received: by 2002:aa7:88cb:0:b0:835:537a:6f15 with SMTP id d2e1a72fcca58-83f33c24e60mr8331077b3a.15.1778977834468; Sat, 16 May 2026 17:30:34 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 36/63] target/arm: Implement FCVT, FCVTN (FP32 to FP8) for SME Date: Sat, 16 May 2026 17:29:35 -0700 Message-ID: <20260517003002.321430-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::432; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x432.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1778977934159158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 59 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 3 ++ target/arm/tcg/sme.decode | 3 ++ 4 files changed, 67 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 5863a6dbb8..36ae977431 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -21,3 +21,5 @@ DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sme2_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvtn_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index e1d255f864..931ea54cb6 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -512,3 +512,62 @@ 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, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n =3D vn; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + size_t stride =3D sizeof(ARMVectorReg) / 4; + + if (vectors_overlap(vd, 1, vn, 4)) { + n =3D memcpy(scratch, vn, sizeof(scratch)); + } + + for (size_t i =3D 0; i < nelem; i++) { + for (size_t j =3D 0; j < 4; j++) { + d[H1(i + nelem * j)] =3D fcvt_f32_to_fp8(n[H4(i) + stride * j], + output_fmt, ctx.scale, + osc, &ctx.stat); + } + } + + fp8_finish(env, &ctx); +} + +void HELPER(sme2_fcvtn_bs)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc, false); + fcvt_fp8_output_fn *output_fmt =3D fcvt_fp8_output_fmt[ctx.f8fmt]; + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint32_t *n2 =3D vn + sizeof(ARMVectorReg) * 2; + uint32_t *n3 =3D vn + sizeof(ARMVectorReg) * 3; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H4(i)]; + float32 e1 =3D n1[H4(i)]; + float32 e2 =3D n2[H4(i)]; + float32 e3 =3D n3[H4(i)]; + + d[H1(4 * i + 0)] =3D fcvt_f32_to_fp8(e0, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 1)] =3D fcvt_f32_to_fp8(e1, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 2)] =3D fcvt_f32_to_fp8(e2, output_fmt, + ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D fcvt_f32_to_fp8(e3, output_fmt, + ctx.scale, osc, &ctx.stat); + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 050c3cfefe..2f79c458e1 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1572,6 +1572,9 @@ static bool trans_FCVT_bh(DisasContext *s, arg_zz_n *= a) return true; } =20 +TRANS_FEAT(FCVT_bs, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvt_bs,= 0) +TRANS_FEAT(FCVTN_bs, aa64_sme2_f8cvt, do_f8cvt, a, gen_helper_sme2_fcvtn_b= s, 0) + static bool do_zipuzp_4(DisasContext *s, arg_zz_e *a, gen_helper_gvec_2 * const fn[5]) { diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index a02bcc0e22..2b9e41a75a 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -865,6 +865,9 @@ BF2CVTL 11000001 111 00110 111000 ..... ....1 = @zz_2x1 =20 FCVT_bh 11000001 001 00100 111000 ....0 ..... @zz_1x2 =20 +FCVT_bs 11000001 001 10100 111000 ...00 ..... @zz_1x4 +FCVTN_bs 11000001 001 10100 111000 ...01 ..... @zz_1x4 + ZIP_4 11000001 esz:2 1 10110 111000 ...00 ... 00 \ &zz_e zd=3D%zd_ax4 zn=3D%zn_ax4 ZIP_4 11000001 001 10111 111000 ...00 ... 00 \ --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977983; cv=none; d=zohomail.com; s=zohoarc; b=bA3HgyKQo11ja03ByVXhD0CC9nn8PIcTVrukBAwvjIo8A6PId67rHAOutAYaatXzL82PgIQNkhzKAeokxvmommHhCZ/uMr8e5AFnVc9lNM4ePWGifCX+oguEaDR84bk0KWGTo8jL/cYHxu++2bgGlHRm0QLDp0gob9aecmki87Q= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977983; 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=Bx6V5xexS6QBguhY68aVthqetxJKcwrZF5tZurwJO1k=; b=Z3Dkh2AJ2df+YJfKySct8HMu8JNqWOQofGWtQ9qDiEuwB06JwR4xV+LPv1cSe9IdcVDq8nkmnKOafgbqGOQNAJvgT7ztucxIANSahETzS5jwkMLSXh9dOlmllKd/AKutetpmgHX0M3Pde1MpgeOdtCCyf4afccYUzY1ATFJJWsg= 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 1778977983558758.4172178189679; Sat, 16 May 2026 17:33:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPPv-0000Im-OG; Sat, 16 May 2026 20:31:43 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOy-0007J4-Mw for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:44 -0400 Received: from mail-pg1-x536.google.com ([2607:f8b0:4864:20::536]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOu-0005Cj-Tc for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:40 -0400 Received: by mail-pg1-x536.google.com with SMTP id 41be03b00d2f7-c7ffe8eeaf2so351703a12.0 for ; Sat, 16 May 2026 17:30:36 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977835; x=1779582635; 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=Bx6V5xexS6QBguhY68aVthqetxJKcwrZF5tZurwJO1k=; b=oChZCnjiTKLeQ336BsP8SIxg0xO2GXsC/o1fij4d77hN/9dPNBmrrS6o0prBA1clmS BKFd+UOLBnImjzNPkVj9pdMfJCcXukuG8rFQ1uZyBMVimiTSEe8V4PbEGOgTxPjj9ST6 64V10+7KjeJoKdA8r862CCA0FzFc/EbJBPg4AvcwJNmEXqOxKCIyWKBAP06rSIZtJihH 6mXHxvRY3cTPRw1vrhQiHSH+VRRwnnO/MqXucSGt4hVsfj1uR9yhLAtJeqUBec4nhEFK n0bDYqsskH5wG6yWsOadKSo2yScjpsEzMiL3Khurq4ls69DxgLDD2f73r26oeeB8ANti j42g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977835; x=1779582635; 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=Bx6V5xexS6QBguhY68aVthqetxJKcwrZF5tZurwJO1k=; b=NYye5i6qonUzxmIfgh5XsIv5Wv85iGWdraYq0VUzfBh/ZO+Y/Hmk1Zg+d+KV629UKs QzGIFcWMZyVC2kyNhJrrgtl+89oBej2rdWYK0HKc1qW8fF1S6LctLNWzrjpuLYpE4M6D fwh4S37bwyAfq8uoI9omQMXik1qe+YG67HvH6y5k1GwXNwY7diNlJ+u56zqPUPre78Se /P3HRY7IiEEt2Bfvk6daaEuxXxjGin5xV3RGU2AHqaxddhTTDTZUrSXPq+4QVhrAVLhu aX4/CWWTejDcdjvU7uT5NSlkDp0nOwsLyc7JWIpiSjtx4EU4Xj3jtqUd+HAD27N/bBs6 HONA== X-Gm-Message-State: AOJu0Yz282akqQGvYgrbf0DMXTlJYb24QDTfOrVItPsSvSOgjLsTm00A RVUiMYkUHHWc9j0H0rnTe2ocW4bXApeQ4jabgiM+CFp2DENGR3XiI7+O3Pklt6RVSQPGI7jkfZS RO1Qz X-Gm-Gg: Acq92OHRNK4M7fNy2+XGqdg6SOpSwNqYnKojorCeX0LKij7DF8zUsNK1Io5+ZupRhXN PfDt964tCPqoZ6/IPLikSqTp1SjXs6cvYPnrf+BbG0vcGrGmZ+clEziSZhCzZSYFkXsj+elUVNU TsZY9/tXB3AJw3Mf5WvwpLca61Xd02Icm0Y/DVeTg6hfxG4pt/9+oL+6y+H9POGaQxpwhU+nZNx wvNXgmznMM64hDq70xRW/r5Q6UbOt8NP/1HVNIQ0PfnQ/ljK1wf5FkuZfOTEKfSJC2nBE0mDWhb Ifs9Jv6DwIm2jYRuemCTZuQwxIsd0DQ67HgE1IDRwaDlF5wvUnJ02l3vrnbZSP2OXsQA3+86xuh KcEUQ3amlbD5gL1KmTo0rGYR8JPl3F/rj40sJH/nPUhD15AQXqJ8lAHgeDkNXtp/4xNBkGb133T 52SKc2QdNK6F/uz7EtYdgZpitggWAZ X-Received: by 2002:a05:6a00:39a5:b0:838:c01a:7a4c with SMTP id d2e1a72fcca58-83f33d3ac94mr9954640b3a.33.1778977835241; Sat, 16 May 2026 17:30:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 37/63] target/arm: Implement LUTI2, LUTI4 for AdvSIMD Date: Sat, 16 May 2026 17:29:36 -0700 Message-ID: <20260517003002.321430-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::536; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x536.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: 1778977984381158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-defs.h | 5 ++++ target/arm/tcg/translate-a64.c | 38 +++++++++++++++++++++++++ target/arm/tcg/vec_helper.c | 52 ++++++++++++++++++++++++++++++++++ target/arm/tcg/a64.decode | 6 ++++ 4 files changed, 101 insertions(+) diff --git a/target/arm/tcg/helper-defs.h b/target/arm/tcg/helper-defs.h index a05f2258f2..05ccf795e8 100644 --- a/target/arm/tcg/helper-defs.h +++ b/target/arm/tcg/helper-defs.h @@ -1122,3 +1122,8 @@ DEF_HELPER_FLAGS_4(sme2_luti4_2s, TCG_CALL_NO_RWG, vo= id, ptr, ptr, env, i32) =20 DEF_HELPER_FLAGS_4(sme2_luti4_4h, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_4s, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) + +DEF_HELPER_FLAGS_4(gvec_luti2_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_4(gvec_luti2_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_4(gvec_luti4_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_4(gvec_luti4_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32) diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 3c784afc99..508d8e377b 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -5405,6 +5405,44 @@ static bool trans_TBL_TBX(DisasContext *s, arg_TBL_T= BX *a) return true; } =20 +static bool do_lut_1(DisasContext *s, arg_rrx_e *a, gen_helper_gvec_3 *fn) +{ + if (fp_access_check(s)) { + gen_gvec_op3_ool(s, true, a->rd, a->rn, a->rm, a->idx, fn); + } + return true; +} + +TRANS_FEAT(LUTI2_1b, aa64_lut, do_lut_1, a, gen_helper_gvec_luti2_b) +TRANS_FEAT(LUTI2_1h, aa64_lut, do_lut_1, a, gen_helper_gvec_luti2_h) +TRANS_FEAT(LUTI4_1b, aa64_lut, do_lut_1, a, gen_helper_gvec_luti4_b) + +static bool trans_LUTI4_2h(DisasContext *s, arg_rrx_e *a) +{ + if (!dc_isar_feature(aa64_lut, s)) { + return false; + } + if (fp_access_check(s)) { + /* + * (Ab)use preg_tmp to merge two disjoint 128-bit quantities + * into a sequential 256-bit table. + */ + QEMU_BUILD_BUG_ON(sizeof_field(CPUARMState, vfp.preg_tmp) < 32); + unsigned tmp_ofs =3D offsetof(CPUARMState, vfp.preg_tmp); + unsigned rn0_ofs =3D vec_full_reg_offset(s, a->rn); + unsigned rn1_ofs =3D vec_full_reg_offset(s, (a->rn + 1) % 32); + + tcg_gen_gvec_mov(MO_64, tmp_ofs, rn0_ofs, 16, 16); + tcg_gen_gvec_mov(MO_64, tmp_ofs + 16, rn1_ofs, 16, 16); + + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), tmp_ofs, + vec_full_reg_offset(s, a->rm), + 16, vec_full_reg_size(s), + a->idx, gen_helper_gvec_luti4_h); + } + return true; +} + typedef int simd_permute_idx_fn(int i, int part, int elements); =20 static bool do_simd_permute(DisasContext *s, arg_qrrr_e *a, diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index 3231bb2100..94941aafad 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -3345,3 +3345,55 @@ DO_SME2_LUT(4,4,h, 2) DO_SME2_LUT(4,4,s, 4) =20 #undef DO_SME2_LUT + +void HELPER(gvec_luti2_b)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 1; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_b(&scratch, vm, vn, elements, ibase, 0, 2, 8, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti2_h)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 2; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_h(&scratch, vm, vn, elements, ibase, 0, 2, 16, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti4_b)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 1; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_b(&scratch, vm, vn, elements, ibase, 0, 4, 8, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti4_h)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 2; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_h(&scratch, vm, vn, elements, ibase, 0, 4, 16, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index a9cf259b9b..6aea3ce89f 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1344,6 +1344,12 @@ EXT_q 0110 1110 00 0 rm:5 0 imm:4 0 rn:5 = rd:5 =20 TBL_TBX 0 q:1 00 1110 000 rm:5 0 len:2 tbx:1 00 rn:5 rd:5 =20 +LUTI2_1b 0100 1110 100 rm:5 0 idx:2 100 rn:5 rd:5 &rrx_e esz=3D0 +LUTI2_1h 0100 1110 110 rm:5 0 idx:3 00 rn:5 rd:5 &rrx_e esz=3D1 + +LUTI4_1b 0100 1110 010 rm:5 0 idx:1 1000 rn:5 rd:5 &rrx_e esz=3D0 +LUTI4_2h 0100 1110 010 rm:5 0 idx:2 100 rn:5 rd:5 &rrx_e esz=3D1 + # Advanced SIMD Permute =20 UZP1 0.00 1110 .. 0 ..... 0 001 10 ..... ..... @qrrr_e --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978068; cv=none; d=zohomail.com; s=zohoarc; b=bC/sfSTjUBUnrv/MYvog0mXR2sDmZvBE/OpfcyqflXb35QzmpRmApTj2m2GUcrd6BPMDWtQa6qz7NgdmqQRLABx1nQLuzAAterY0gu6NQSo/Teee6CXNzuWdWIRBTxXvFP5zUXHeVRsxaVbxZWkdaUmQqczcZEgTtlj8DSlxsrU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978068; 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=LT7OexZ++nqH0+TQBAA8KZwuqR3fGnFfvg7Y1abp9k4=; b=T8rKBOnK6doDZXSf8EalmC5nPa+R/kmxApGRTaRaz3m3tHZXM4Yxtwip/CKL7qD+W61FrGzK4Mmkjy7LuGH7wTopLasBP99oe2X+/oZyp21CJ3fs0Az47qqqK6M6Z/pzb20if8ZQJ5gLkhMTMOCCHxrQIatFV/k0LpCf3vxhBd0= 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 1778978068388765.5156736129969; Sat, 16 May 2026 17:34:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPQD-0000cI-MT; Sat, 16 May 2026 20:31:57 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPOy-0007J5-Rk for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:44 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOv-0005Dn-BP for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:40 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-c7ffe8eeaf2so351706a12.0 for ; Sat, 16 May 2026 17:30:36 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977836; x=1779582636; 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=LT7OexZ++nqH0+TQBAA8KZwuqR3fGnFfvg7Y1abp9k4=; b=jOB5MgzWvuV6uCl4j9RNacDRUVkI+drjFp2KJaYhORzsS3BMJz7cznxekmxC879GGa ylWskpZaNnU8DKzN/0hm3fL6ebq27zftHv5FdL8i+63a73kiTKY/VzNYybG6XAxVq1HQ BMeIqJ2TKgXMg8E4KFh8GG8XWaqzbUFbv9K9BJhkMYmamlxlH8dt/BsdczzHPDarOrvN Itju+hlUvcdxMNYphPFBF7QbUeW/FSNEyXZ0CHqfeORr8Z+/q53Y3VWKTmGe21cS7Gl3 SJFV1O3gMKK6fEzf53ydJPE7dIdS0v/5NGU52XoyUJFBAc/HBHe6F4EG27u+igkagE3M T6qg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977836; x=1779582636; 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=LT7OexZ++nqH0+TQBAA8KZwuqR3fGnFfvg7Y1abp9k4=; b=RiMZXiydSRxIuDCh4igKzPfbNEe1ypRJII+Cxyfb+7B3rXWWfXtjJMOJq7yi1LivGD FSalSMc7u3Etei5YfgX9umGlji2LyeJR9SmNHeKrHB4vLGYELn0kbRm4vWcmMOAdsmGD T4kvQyp7orIv1SkpzNsLH8VTu2lz3yrd1Gnud6lLtLSQvBUVue9B6rc9INhdFDcPWEhW i8NO2SC4RgiuusYSVkLiF8A6sydi/MbsxAwediGAFTV+Nm34xa8qiG5oJMLZsxNBR1Gl AgjNBWYKpWivOO1CrxFRLRAcKcB2DUzLEXXjjSGux73JaQT2FQmPlG3zAL+cg52ETvef Yt9A== X-Gm-Message-State: AOJu0YwcElVnkXQcOMeTMTqmNLrkPWVMuckI2ZmW4Fc4A12z7HIgJBeL 8XYc9qzUWrgNSlbGWWFePsVBBDcvgSWRlbUQzBZWOhVkkm96nx5Fm/1d1xTGkvVYRFEYghL5X8T SIpWx X-Gm-Gg: Acq92OGcepgTk+l2WDW2j9FOqnEn5ndv3Jo5zkdBUNLoaXadhyAIVvKFw2lVKs9Ym22 Zp8A94dWedVbQ486Otln52uPGkIQanpQe2LqcyADAzW30STrzbi7ephD0qm06pyQ5mdWd+Y+hLl AUQ3ZXdcxbaF6KUQ31Elra4+eL6kaa2xpgZx9LkRYK3KTlAgbYD9PgHB0/mES7SP4lXutrlssrW tzY7mHAJoUuqbit1is55ouiLtwcN/ssXWAFdFZacw7u/t/8BtCiAn6T2BPg5UkMOJFAezVCSGhU 3/c13OehvSq7k2zf6P7+wYLAkMgQez5iE0kN+qO0LahEn1Zieenb0sspo6xgXW8BjIgn0TMAU9O DP4sNLr2hLpauHTNvjcltgS+BEnRYrTmD+GVUaTj6nDYlOfg5m/ZvMmGYduiYi8RADEp2mRYViO uirsbPw3ctDEIjHFaoROHxWpav+6jH X-Received: by 2002:a05:6a00:909d:b0:837:6bb9:acd5 with SMTP id d2e1a72fcca58-83f3398a3c5mr9683858b3a.0.1778977835884; Sat, 16 May 2026 17:30:35 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 38/63] target/arm: Implement LUTI2, LUTI4 for SVE Date: Sat, 16 May 2026 17:29:37 -0700 Message-ID: <20260517003002.321430-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978068976158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 6 +++ target/arm/tcg/translate.h | 8 ++++ target/arm/tcg/translate-a64.c | 1 + target/arm/tcg/translate-sve.c | 68 ++++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 11 +++++- 5 files changed, 93 insertions(+), 1 deletion(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index fd09bbc5cf..6d5994450f 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1649,6 +1649,12 @@ isar_feature_aa64_sme2_or_sve2_f8cvt(const ARMISAReg= isters *id) return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_f8cvt(i= d); } =20 +static inline bool +isar_feature_aa64_sme2_or_sve2_lut(const ARMISARegisters *id) +{ + return isar_feature_aa64_sme2_or_sve2(id) && isar_feature_aa64_lut(id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/translate.h b/target/arm/tcg/translate.h index 1648c2c96f..b703e75b70 100644 --- a/target/arm/tcg/translate.h +++ b/target/arm/tcg/translate.h @@ -90,6 +90,7 @@ typedef struct DisasContext { int vl; /* current vector length in bytes */ int svl; /* current streaming vector length in bytes */ int max_svl; /* maximum implemented streaming vector length */ + int max_any_vl; /* maximum implemented vector length */ bool vfp_enabled; /* FP enabled via FPSCR.EN */ int vec_len; int vec_stride; @@ -874,4 +875,11 @@ static inline void gen_restore_rmode(TCGv_i32 old, TCG= v_ptr fpst) return dc_isar_feature(FEAT, s) && FUNC(s, __VA_ARGS__); \ } =20 +#define TRANS_FEAT_SME1_NONSTREAMING(NAME, FEAT, FUNC, ...) \ + static bool trans_##NAME(DisasContext *s, arg_##NAME *a) \ + { \ + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); \ + return dc_isar_feature(FEAT, s) && FUNC(s, __VA_ARGS__); \ + } + #endif /* TARGET_ARM_TRANSLATE_H */ diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 508d8e377b..ee71c63116 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -10820,6 +10820,7 @@ static void aarch64_tr_init_disas_context(DisasCont= extBase *dcbase, dc->vl =3D (EX_TBFLAG_A64(tb_flags, VL) + 1) * 16; dc->svl =3D (EX_TBFLAG_A64(tb_flags, SVL) + 1) * 16; dc->max_svl =3D arm_cpu->sme_max_vq * 16; + dc->max_any_vl =3D MAX(dc->max_svl, arm_cpu->sve_max_vq * 16); dc->pauth_active =3D EX_TBFLAG_A64(tb_flags, PAUTH_ACTIVE); dc->bt =3D EX_TBFLAG_A64(tb_flags, BT); dc->btype =3D EX_TBFLAG_A64(tb_flags, BTYPE); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 13f7ab01af..ea0d66178e 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8268,3 +8268,71 @@ TRANS_FEAT(LD1_zcrr_stride, aa64_sme2, gen_ldst_zcrr= _c, a, false, true) TRANS_FEAT(LD1_zcri_stride, aa64_sme2, gen_ldst_zcri_c, a, false, true) TRANS_FEAT(ST1_zcrr_stride, aa64_sme2, gen_ldst_zcrr_c, a, true, true) TRANS_FEAT(ST1_zcri_stride, aa64_sme2, gen_ldst_zcri_c, a, true, true) + +TRANS_FEAT_SME1_NONSTREAMING(LUTI2_1b, aa64_sme2_or_sve2_lut, + gen_gvec_ool_zzz, gen_helper_gvec_luti2_b, + a->rd, a->rn, a->rm, a->index) +TRANS_FEAT_SME1_NONSTREAMING(LUTI2_1h, aa64_sme2_or_sve2_lut, + gen_gvec_ool_zzz, gen_helper_gvec_luti2_h, + a->rd, a->rn, a->rm, a->index) +TRANS_FEAT_SME1_NONSTREAMING(LUTI4_1b, aa64_sme2_or_sve2_lut, + gen_gvec_ool_zzz, gen_helper_gvec_luti4_b, + a->rd, a->rn, a->rm, a->index) + +static bool trans_LUTI4_1h(DisasContext *s, arg_LUTI4_1h *a) +{ + if (!dc_isar_feature(aa64_sme2_or_sve2_lut, s)) { + return false; + } + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); + + /* + * The MaxImplementedAnyVL check happens in the decode pseudocode, + * before the Check*SVEEnabled check in the operation pseudocode. + */ + if (s->max_any_vl < 32) { + unallocated_encoding(s); + } else if (sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + + /* Then there's a second check against CurrentVL. */ + if (vsz < 32) { + unallocated_encoding(s); + } else { + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + vsz, vsz, a->index, + gen_helper_gvec_luti4_h); + } + } + return true; +} + +static bool trans_LUTI4_2h(DisasContext *s, arg_LUTI4_2h *a) +{ + if (!dc_isar_feature(aa64_sme2_or_sve2_lut, s)) { + return false; + } + s->is_nonstreaming =3D !dc_isar_feature(aa64_sme2, s); + + if (sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + /* + * (Ab)use preg_tmp to merge two disjoint 128-bit quantities + * into a sequential 256-bit table. + */ + QEMU_BUILD_BUG_ON(sizeof_field(CPUARMState, vfp.preg_tmp) < 32); + unsigned tmp_ofs =3D offsetof(CPUARMState, vfp.preg_tmp); + unsigned rn0_ofs =3D vec_full_reg_offset(s, a->rn); + unsigned rn1_ofs =3D vec_full_reg_offset(s, (a->rn + 1) % 32); + + tcg_gen_gvec_mov(MO_64, tmp_ofs, rn0_ofs, 16, 16); + tcg_gen_gvec_mov(MO_64, tmp_ofs + 16, rn1_ofs, 16, 16); + + tcg_gen_gvec_3_ool(vec_full_reg_offset(s, a->rd), tmp_ofs, + vec_full_reg_offset(s, a->rm), + vsz, vsz, a->index, gen_helper_gvec_luti4_h); + } + return true; +} diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 72755b27af..e2106fc7f5 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -31,6 +31,7 @@ %dtype_23_13 23:2 13:2 %index3_22_19 22:1 19:2 %index3_22_17 22:1 17:2 +%index3_22_12 22:2 12:1 %index3_19_11 19:2 11:1 %index2_20_11 20:1 11:1 =20 @@ -1737,11 +1738,19 @@ RSUBHNT 01000101 .. 1 ..... 011 111 ..... .= .... @rd_rn_rm MATCH 01000101 .. 1 ..... 100 ... ..... 0 .... @pd_pg_rn_rm NMATCH 01000101 .. 1 ..... 100 ... ..... 1 .... @pd_pg_rn_rm =20 -### SVE2 Histogram Computation +### SVE2 Histogram Computation and Lookup Table =20 HISTCNT 01000101 .. 1 ..... 110 ... ..... ..... @rd_pg_rn_rm HISTSEG 01000101 .. 1 ..... 101 000 ..... ..... @rd_rn_rm =20 +LUTI2_1b 01000101 index:2 1 rm:5 101100 rn:5 rd:5 &rrx_esz esz=3D0 +LUTI2_1h 01000101 .. 1 rm:5 101.10 rn:5 rd:5 \ + &rrx_esz esz=3D1 index=3D%index3_22_12 + +LUTI4_1b 01000101 index:1 11 rm:5 101001 rn:5 rd:5 &rrx_esz esz=3D0 +LUTI4_1h 01000101 index:2 1 rm:5 101111 rn:5 rd:5 &rrx_esz esz=3D1 +LUTI4_2h 01000101 index:2 1 rm:5 101101 rn:5 rd:5 &rrx_esz esz=3D1 + ## SVE2 floating-point pairwise operations =20 FADDP 01100100 .. 010 00 0 100 ... ..... ..... @rdn_pg_rm --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778977972; cv=none; d=zohomail.com; s=zohoarc; b=GO1O+wSZLauzjfhqr0m/55ziZbEs2hyjHfbgfOtdCik4jK/6V1lu++wHtPnyscy3g+Ud20HjqmfmhnQaff4jVkBUYO0w8MfPjusX8pre3tMANXpHvF+D7S6z6XgG0rTKDJ5XMoaFibBaEsaud8bG24Aww1h4XeJNy36lEgQp4e8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778977972; 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=7QG3SAWZXTLSfeqfkLdTcj+WQldu34LGY3+/Bb5YVXA=; b=OInoFfS5rZ12MPwkSuypG8EWO0FL3ZVBdSzdN4E3CKkFXfpMi/FWZ1A2QQx1YTCCqSU0GfNZWoYqEV4N6uHy1aCth1xuFyEkPcKlZSwTx1QXIjgfgd8uBBO9DfZUj5OSugL/XGJGT5+Dtv9nLl2Id0B4gVLG0BzPcAkM18VxXFs= 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 1778977972193243.3582030211552; Sat, 16 May 2026 17:32:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPQC-0000VQ-Bl; Sat, 16 May 2026 20:31: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 1wOPOz-0007JI-PX for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:44 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPOy-0005Fv-A2 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:30:41 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-8353ca0f1f1so430687b3a.1 for ; Sat, 16 May 2026 17:30:38 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-83f19663cfdsm12272745b3a.9.2026.05.16.17.30.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:30:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778977837; x=1779582637; 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=7QG3SAWZXTLSfeqfkLdTcj+WQldu34LGY3+/Bb5YVXA=; b=UX3xPEFu1k26ViTsdrTlND7Og9TQd/XjkXIFja4ziSw4knkYKHd/rLHsTqzKQ5sYac R2B/YOSjN/4j0KjMHC0jrlRIlWhMX7wiH+dmw3PMyrGnMjpHsX61nBxhNkAv4MWGR5rl rc0GqSfRH5/QEjPtRZ9M1h+bA3GpITk42axZYYAX35DIGu4h8nqB7Nh/t6tH2c52rF/f 6VN0CdApK8nib8R9Vo84rrAZaWDJfBiT8XvDXCvD5n5wGgEON7QozWbpBiJ+xOg3zB11 w98IYngfbCcaSxnN8xmMWveMi8UGLhrU5vAS9Idlnb4PdZhQG/JRtWDVbK31bojQAbR4 /WVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778977837; x=1779582637; 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=7QG3SAWZXTLSfeqfkLdTcj+WQldu34LGY3+/Bb5YVXA=; b=fNB/cWQ5AOaJ1jX0n41oyqADxjPlKtoMUcEIP2ZDgUaoDHFc8UO3lg5RrHpjxhLB7e Vm3yb2xDUNmja+0JjQUGt5ZtQ5G0sDeuqX4Gi1XCmfCSeDE6kKJ/35cO0CiTtghoZehC +b0hgKH+Rn9fuIq/pV1XqiGzI2HPiUXKMN9u0ihr5SMwCPAdB/xttIJwaP4JcHWH4OAp UbgQTJAr1f0md70UmMv9mEPVqHf4tdA9rkCI/WNT2McSoic6Y2VQm//zQML5vpZIxpP3 ddDXWndcvIpK7pH5EyntWzTwVEp/dGVFYHFk1Sw31clZD3TWidgl+QPgLDK+uMHLRcb/ Kwyg== X-Gm-Message-State: AOJu0YwDhtThzic8GcaBn4v+B43omU21nkzqVYoEVMc+/NsNXrbL27Xh QZWgr5pLTejITZYFqfTfZZamwrm1wiVUyrw5DLa5Huvv8xm8FnFEslOHABL1A2z1pdpFu2mnalo 1Ffq8 X-Gm-Gg: Acq92OEJOlA9zVkFFMksR1UuH6qT7WvnZSjrwMPeM06AYWw8Fu/ZesIOOaj18kopWLf Vw/TKrguNQR+xIYGLgqkHiRhYG40p6FIGt/Xr9Q8MySDZlSeoQuSX+QR18a+g+36+gpYEEMIC8S 8FQMQKYTBqXPRHiTPmcUrUevpfsfu28RQCPpufj9sK+wc/D40/ouTxV0+B49hpGSFOgOHCs4TKL VYt72/krOFy+zWAw1tj8pSVucnIgp6ZepW1hjhf2DAor4vBY6Ts/J7EvRtLCg17fhXZkPBNGwjh dswhvQwkW97prf2h24vFg7teu/2TUWwuu5gCNtROL2LCc7zF/ZVvdb12R1HgZCMLA14uFPGxEMm AAF1qETkF3xaGwgLx+vMGgILfqsWxdx6/pmJBczcT0qHmSgf6ahNhU4pc83ZJzKqS54v8nPE1Un WMM8K8aHr7t/jeOPVgRn3YCTkdIKye X-Received: by 2002:a05:6a00:1146:b0:836:6f2e:bb6d with SMTP id d2e1a72fcca58-83f18dbd9c4mr10903925b3a.14.1778977836984; Sat, 16 May 2026 17:30:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 39/63] target/arm: Enable FEAT_LUT for -cpu max Date: Sat, 16 May 2026 17:29:38 -0700 Message-ID: <20260517003002.321430-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778977974325158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 2 files changed, 2 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index a377f67b9c..bc866c5a67 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1263,6 +1263,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64ISAR2, BC, 1); /* FEAT_HBC */ t =3D FIELD_DP64(t, ID_AA64ISAR2, WFXT, 2); /* FEAT_WFxT */ t =3D FIELD_DP64(t, ID_AA64ISAR2, CSSC, 1); /* FEAT_CSSC */ + t =3D FIELD_DP64(t, ID_AA64ISAR2, LUT, 1); /* FEAT_LUT */ t =3D FIELD_DP64(t, ID_AA64ISAR2, ATS1A, 1); /* FEAT_ATS1A */ SET_IDREG(isar, ID_AA64ISAR2, t); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 44c7196d09..cf8771d541 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -101,6 +101,7 @@ the following architecture extensions: - FEAT_LSE (Large System Extensions) - FEAT_LSE2 (Large System Extensions v2) - FEAT_LSE128 (128-bit Atomics) +- FEAT_LUT (Lookup table instructions with 2-bit and 4-bit indices) - FEAT_LVA (Large Virtual Address space) - FEAT_MEC (Memory Encryption Contexts) =20 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978076; cv=none; d=zohomail.com; s=zohoarc; b=QhTWleI2Pmyj9ls9G24Qgqrq2hHTQ6G35JJLAetXxg4omxJ2puzbCD5alj6LeZo+zMgTDM8bZHOCMA9mC5fFzyQL28gDNFRKNUSC1WcVz4drbcJN39agsIDWp1prcEaPkMLxDLSmICCx+FoxsAK9YDMEcsDJze7VJKXigjcYE48= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978076; 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=nTIDtuillPXckV86mcaM2Utf4vRJVw8yqCVUR2w2Jkg=; b=bHNOvmOPojU08ZQH+L8/5L0KJsAcqpjYUQFFNstkyMpMdRJh0FSkbGeinPCTldPh7W02rFjwqwkZcaUMfRJjRMRYztUIBEQQCmm7EAT3qA0iJlx6xydt9KsyV0Q4Sf4mIJDx44eYu0ahhXWz9ajpwtKXf9G4e+bS1mvJfn9MbQU= 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 1778978076146196.94510811672433; Sat, 16 May 2026 17:34:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPRz-0006Pw-KY; Sat, 16 May 2026 20:33: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 1wOPRt-0006Ax-RP for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:44 -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 1wOPRs-0006mo-BZ for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:41 -0400 Received: by mail-pj1-x1031.google.com with SMTP id 98e67ed59e1d1-369002b26f4so448563a91.3 for ; Sat, 16 May 2026 17:33:39 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978019; x=1779582819; 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=nTIDtuillPXckV86mcaM2Utf4vRJVw8yqCVUR2w2Jkg=; b=sH/neINZE9bYGzCcPFMSt6uKEvC6UmUCyQss22gvWWRFYeiPnYjLpbLB0gsYAxPj+u kyKtwcUEMW4qiP3ejP9ufF9nuPLYBjnWoIqdxTi5zNQlSh9WbrI6NKuGaLHOIeS0nAWC EoBtZi8bnHQrgvhRKklQhldGGeEgPhjqtHpwTw5Da5Gq15A2t4yZcRBFKrRndUAvoK4B G90hUj99IEZ3rkwgOovC3D+mPgkFjZfrDf8X5oVY0vlRMKQLU+ygFqqvvuYsz+njLIEp Y7cyIhHE6Q8wtZfPvszWObFwLym5A2O5B2JMS2XgsquAlM8d7RKZthi/eCKbnKYZSu3/ SNIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978019; x=1779582819; 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=nTIDtuillPXckV86mcaM2Utf4vRJVw8yqCVUR2w2Jkg=; b=Ar42TFc7dEudWQQfuATtsOxWRyDw85CRiIHaI3/EVXjX+HOQwNB6gU+6Pb7LedzPz+ QTrf95mrxHnOcouj4OrKbiarE9DvNj17k7p2q28Q1jelr671j3VPMhZmcNf78uBY4vCa B5BKuJfaOu7VOz752+Z5UYnUQMHNMgokbCX/Gx47LSPlo3Z5C66xOyRP3wxQQhKqsSdQ 13dIi5EXSypXrS8vouxOZ+syGgFQt4eQbByPCUZBERbXjOWOU+QTKTOh4FRRe6yALoR6 /eesnFkhIFE6rFqbKusnsG2pPIZJeChzVg3X3eTTZEbUIQBip9en5OAyJp+o7Jxml30O 0B2w== X-Gm-Message-State: AOJu0YzxqIu897Qv4cb5WQf6uKs5A0a7Vn+jNB1ccvizVSphYPa2OaLH x01/JtMhpYGwshnARmELJnB59uBgVoAj3/soRGAKDI/BwcNp8AO7SSZH4LaSbbGNhNw0Uw71Zl8 H1FT1 X-Gm-Gg: Acq92OHggwdQtk1qWXzmo0D48p3BnV2HRJNNxOZgwgL4U4gp+ovHua4IgaEjZV63uLQ ySqFMD3IuwUlBjZ4s4Xl2mBkdw4SjyH/U+nyP+yvW7YuF+57PPPWYMutBDMMDYc9SSGfEnIt5mO tDXADEbwcfc8WGhXxGVvDwO/MkA3518BbZMh21bP0TLbYZfiHs888sY5YWraqX3w+QmGBSa62pk vgjrDiJPry9JZK5pQ+YE4nlw7fHX897z7APA4spG84uEyRy/uiUVgcY0eppLHZKvEL49QgQJYBn p+uYSwEQFlMaaI2CEx+EDugcgpMlXYkLVlKd7LSI+wkxL4MRDYuaiDTYNkzE9V8YcwGya1rUa9e NcQ4X8mRKT4l/38ifHBTs7ObEdvk8yaoiyly6keC0HXpK9azOd6ygJidguCcHQ9/PCKL8BPu5yo Fw29E8hXwPQuY4sx8gBUPQzDAeT+HG X-Received: by 2002:a17:90b:48c4:b0:35f:d56d:1c45 with SMTP id 98e67ed59e1d1-369519cc92amr9537792a91.12.1778978018631; Sat, 16 May 2026 17:33:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 40/63] target/arm: Enable FEAT_FP8 for -cpu max Date: Sat, 16 May 2026 17:29:39 -0700 Message-ID: <20260517003002.321430-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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=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: 1778978076939158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 6 ++++++ docs/system/arm/emulation.rst | 1 + 2 files changed, 7 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index bc866c5a67..8d0c057902 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1391,6 +1391,12 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64SMFR0, FA64, 1); /* FEAT_SME_FA64 */ SET_IDREG(isar, ID_AA64SMFR0, t); =20 + t =3D GET_IDREG(isar, ID_AA64FPFR0); + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ + SET_IDREG(isar, ID_AA64FPFR0, t); + /* Replicate the same data to the 32-bit id registers. */ aa32_max_features(cpu); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index cf8771d541..b6f0ca9351 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -74,6 +74,7 @@ the following architecture extensions: - FEAT_FHM (Floating-point half-precision multiplication instructions) - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) +- FEAT_FP8 (FP8 convert instructions) - FEAT_FPAC (Faulting on AUT* instructions) - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) - FEAT_FPACC_SPEC (Speculative behavior of combined pointer authentication= instructions) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978215; cv=none; d=zohomail.com; s=zohoarc; b=UakN9Kd8sc1fJR70MsZ1hKHrFlcpPZEv36MgunY2wRyPi6JC4fuH2d07F0z92P6TFU7YhwZDTib/ZcZ4eoqOzcJ2fE4Cdg3SHVfUbMJXS+XNZNayOiV8AS/p1dU/+gO30nNchpwgoCbJofb9HHWvsRAQw6WcvaizCBSRSFEmEKY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978215; 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=xM35gHOjOqj4uCcYch+AkhQTaXi12XhXc0hhEraB8uM=; b=fOSuzk6ysajn8uMRTZyAVzbZQAIaSA1vTGooOGuqpQ9KrtG3zkpUJz9ZQ+esyKjd0/r5JVuBApEj9Qdqm1BzWd1HxoTJy+WIpLU0VOlOTtNMV9qOCHZFcBmDmq2zoI8a+Y5FiyNEdzRXfAp5yWP2kQY+VLSmoP2MDKMlfOPDiqs= 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 1778978215643418.1629655612742; Sat, 16 May 2026 17:36:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPS0-0006UL-ED; Sat, 16 May 2026 20:33: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 1wOPRx-0006FP-4E for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:45 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPRu-0006mx-KN for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:43 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c80148ae949so349457a12.2 for ; Sat, 16 May 2026 17:33:41 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978020; x=1779582820; 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=xM35gHOjOqj4uCcYch+AkhQTaXi12XhXc0hhEraB8uM=; b=mYAeAGKbflE16nDYTk+DNhzAa79bOLyEYtJHuZUjnn99U9caw/ZqSXMz+L0ybaXDRi 32mJsNVACLc7EIvlmCNvJ9QnI5a6dcgOdZKXJQdRoDlvpSMRQ5NMLMboD77uY5ei1hyY ShaGSyznLyHkhMsU2o9vMp4gzNmSo+m21WQBjHsEiAo+9+1n18Ddp4j6QLfBxz0Vbqed fn+HOLu27jklSpi+mqtk423iB74rmswzmO39tDIeCKuOB8T0CQdPwdAPPUo47GGO+TYJ l9i9lnWYcQrscrQefIDjTegejfaGu8WmkgAZfyadaudRrS55bFPQdaLPIhyXtZcV7wGR 9hAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978020; x=1779582820; 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=xM35gHOjOqj4uCcYch+AkhQTaXi12XhXc0hhEraB8uM=; b=ddkcWSlpwEBOIUmWhdx50l+6cCKDUABQaj88C3inVysDoQhCRLQGmlRmO/Jgx2pVh1 4SWngPCry15aSEAYYy4tAjoNHOIbwjnq3YA+6IQSCQzVl9aT8pEO/9GHh2zUhjUZeE6h ZINarCxhLZwygevVdOTt5mYgFuSiOO6W4Whgkw3D/AU+0XcY5PG6VDg35K2mZgMTWO2O 2cD2Yzpek4UyUdfKR3YrNm7Yn5SMVVS4W86WbN1CaMdCJANwoS46/Ee8ywObEoeHe20z dgweMk/2JMJ89LFJItyM+xggsT3A8WYxf2qIo50ztln0akvAcS+kOE87EhktQMYjfNeL 0nlg== X-Gm-Message-State: AOJu0YwilLQVJYOm6VlQdHDWo1XcN6CdKn7OvxWwq9xjyUz90Wpvy1Yb KFApDc/+8hXjwTKnmgFxfNe/N+Uu0MiPg7NdGjhEw1bQt5TYh5BAbQtkZtBzU8ZOJqRxcg+xGPl evPNs X-Gm-Gg: Acq92OHjw1o5nqXnrAqlvoD8EKiaMLjZv65/z3wgoOh4mAZeiXXMnrjkkWhIP4wp6Yl GQgQzULBG+8nZMgqIOb+HSrM2jU4xAcsmF4AmVg2Tx4dGa1ICCCsm7/EDdvvTViGr/2KN3e8Vgw f0RRIvmNQjrAuSvmjtkCQ485GEMD9qssa+VQuLyHFZhuFVlGPcm7tg7udb/gTvVguy4/yGLcgrp +WGiDp07yZO+caLqYd+8Wqa1XDVWYPARcXMjsfX997SYnNxUIdNJ0sc/EBqRFYYzq8QUyHHIIuB HlphkPZcPscVelzTO3TyprutWxZA7pYUW9QP06C/VjKoXMHO6IEI/UV1Lwvd1TlbHkxWxjvQ9u3 jTlGQjKk4bvctIkXkCyaKD2MpzvRp4H88l9NEHDkf5X+LRPsfArAO926fHk6dg+CK3yTuiDNE8L m+RfP4nT487BfcHTxM4m/LNoQaWhcseo5N6uBNkTA= X-Received: by 2002:a05:6a20:6a04:b0:3ae:b670:6d35 with SMTP id adf61e73a8af0-3b22ecab6f5mr11471316637.24.1778978020427; Sat, 16 May 2026 17:33:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 41/63] target/arm: Update ID_AA64SMFR0_EL1 fields to ARM M.b Date: Sat, 16 May 2026 17:29:40 -0700 Message-ID: <20260517003002.321430-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978217357158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 6d5994450f..811f2a7291 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -397,17 +397,28 @@ FIELD(ID_AA64ZFR0, F16MM, 48, 4) FIELD(ID_AA64ZFR0, F32MM, 52, 4) FIELD(ID_AA64ZFR0, F64MM, 56, 4) =20 +FIELD(ID_AA64SMFR0, SMOP4, 0, 1) +FIELD(ID_AA64SMFR0, STMOP, 16, 1) +FIELD(ID_AA64SMFR0, SFEXPA, 23, 1) +FIELD(ID_AA64SMFR0, AES, 24, 1) +FIELD(ID_AA64SMFR0, SBITPERM, 25, 1) +FIELD(ID_AA64SMFR0, SF8DP2, 28, 1) +FIELD(ID_AA64SMFR0, SF8DP4, 29, 1) +FIELD(ID_AA64SMFR0, SF8FMA, 30, 1) FIELD(ID_AA64SMFR0, F32F32, 32, 1) FIELD(ID_AA64SMFR0, BI32I32, 33, 1) FIELD(ID_AA64SMFR0, B16F32, 34, 1) FIELD(ID_AA64SMFR0, F16F32, 35, 1) FIELD(ID_AA64SMFR0, I8I32, 36, 4) +FIELD(ID_AA64SMFR0, F8F32, 40, 1) +FIELD(ID_AA64SMFR0, F8F16, 41, 1) FIELD(ID_AA64SMFR0, F16F16, 42, 1) FIELD(ID_AA64SMFR0, B16B16, 43, 1) FIELD(ID_AA64SMFR0, I16I32, 44, 4) FIELD(ID_AA64SMFR0, F64F64, 48, 1) FIELD(ID_AA64SMFR0, I16I64, 52, 4) FIELD(ID_AA64SMFR0, SMEVER, 56, 4) +FIELD(ID_AA64SMFR0, LUTv2, 60, 1) FIELD(ID_AA64SMFR0, FA64, 63, 1) =20 FIELD(ID_AA64FPFR0, F8E5M2, 0, 1) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978221; cv=none; d=zohomail.com; s=zohoarc; b=nBsAC4lxPs/NDgYspfIkXSNCkme1TotMkEupYjxkVm6MurMChjXS1kpLRHNM4ZvOQkYGQKWMrkgwmHHk5HwRS/9I75TM4cfbU3f/PUy4uhYczdSwPKoRSH35136WkBPg7GaUKV2y2ml8XgJGbuu2THJtH47i11jCqaMTXmXYLL4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978221; 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=rijKST64WZpELrwBb6/Q5we+Vkq4bBbLxG5KgrYkJ+U=; b=IGIXBTx47z0KZ3FI31l1YC2UJFjbs+O3HZFN06HnjbJJwJshKJ5pJGAyJQlyva6ztKKXYtphxQKQYG4HP3naQg9gFTwVhYth1a/XR+OZSNJjt8P2CfmMS/Ae4eccbT1Jb1lMe67rTPTkR0MOwQoE+SSL4OC/tUtxb7OBwpJzlpk= 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 1778978221948237.61300866528734; Sat, 16 May 2026 17:37:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPS9-0006t1-Jx; Sat, 16 May 2026 20:34: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 1wOPRy-0006MB-Gs for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:46 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPRv-0006nG-Cc for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:46 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-8354461da74so445540b3a.1 for ; Sat, 16 May 2026 17:33:42 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978022; x=1779582822; 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=rijKST64WZpELrwBb6/Q5we+Vkq4bBbLxG5KgrYkJ+U=; b=QJMsIKFYy0J47fbGj5JNyB2KfQL2uRGpGbF71wpwUqswfsRORvSkWpoDXK9QYazH7+ mLIg3pTEIZhxsw3IwmlrGK05Kc1O6j1uqZbol1GXlWzHKJfWUaLAKzrz+WZOSrpZJ5Xq 0awiTBk6WwpOEV38cG3yGoxL/LJXBW5HUI3clKYfOQAjRKndhyhvOtstSDIecmkdkpBS tX26Q1piMdnzJBmrsZgabmZwKZYGJ1eYN8jjLu10903GAd6aYyjNQ65+V5yaUq828blL uL6BGIqfLjHCuKlmRM8oIS+DGV3ANVIBpA9B5nVgKr1Wp4xd7LDXSeV+JWT4Iz5Snb/3 s/Qw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978022; x=1779582822; 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=rijKST64WZpELrwBb6/Q5we+Vkq4bBbLxG5KgrYkJ+U=; b=UC6rFy7utDUvsexbjpG8da0AsN6LmzpUbYEs8E2+9cyJUVRCySu0DnsljnPyP4ksj6 LQ04oDM1sGfU52v+zmNG9tl0xTp9XyiijxPISTTy6FQYs9WtZMYKDC6y6EWNt0I3Nk9n YbBixKvj9RAzA2oiTUxNQZ0ArIEofHMbJNoAW3ki+C45IsHdPbi+vixchAwSQ37zKKCj zqc5mQoyTveNOxSWIfHpT83sAh6bUgFXCkxXVQWvL+KC7WqkCBKYBUzGHu/bXuZK+FfW JiaqnUVXEEaqAE6JAtCORwMKTiDb7UsuU9pFKdfoItxY8zxQIo8LjeulGIB0jkL88/ok Qo/A== X-Gm-Message-State: AOJu0Yz7R1A26Xg0H5XUNoRVJq0MeVRVCMfziqtTOAc06mAN43f2V4DY m1Ftt4Dziq/gpglBvm3Wh0RBCZ37bd1cg4TTqNeJ//N8P7Ua5h+LO4yisLFVMF5xzbGKi1ZlWdh ZEkbQ X-Gm-Gg: Acq92OHAr4UoqV7qmQvKPwxH+k4Gx25WrHgTqzsAPdk5XydpQAUimOwVWrst30UaZSM dpwG3v1dnEKJWjBRjH16ojOSR7IPrFIU4IYZTAOC3j315DCQrXlhuV7e2y1oaz/vkFVWfOvVYMw I6GeNdhW7X96tb2IANk96X2Vfw9VUKGPeYP7pRPdgvBXmfPIqonkf5fhU0naoOoiaMlYMJM+K2c f7F0/JT3y95lqZHjKz3la5vUDc5b8J5GUMyLcPKI+zm+XS8KW58wfUrmcZRu0Qd7s/niFOgsUub Q7axAbnFItbVcqMRpke4WvQFf4FdnfEei11G6H0WowTi97ocjYOUoXU99WrILsbbpOIFmP4LdQB zOt6obSWmPXV/8ZED6T8pL3oy8kBGXPvyv+re6soMxZpPb/yeeU6Vfc1Cw8TyULacQC2qASrzVa CXhbYQo0HrSdpoI7gYXLHzZ03i4ytJ X-Received: by 2002:a05:6a21:32a7:b0:398:7eea:50a0 with SMTP id adf61e73a8af0-3b22eba10c7mr10819262637.18.1778978021954; Sat, 16 May 2026 17:33:41 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 42/63] target/arm: Implement MOVT (vector to table) Date: Sat, 16 May 2026 17:29:41 -0700 Message-ID: <20260517003002.321430-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::434; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x434.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978223563158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sme.c | 18 ++++++++++++++++++ target/arm/tcg/sme.decode | 2 ++ 3 files changed, 25 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 811f2a7291..29d0464a03 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1570,6 +1570,11 @@ static inline bool isar_feature_aa64_sme_fa64(const = ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, FA64); } =20 +static inline bool isar_feature_aa64_sme_lutv2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, LUTv2); +} + static inline bool isar_feature_aa64_sme2(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMEVER) !=3D 0; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 2f79c458e1..214427db1f 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -391,6 +391,24 @@ static bool do_movt(DisasContext *s, arg_MOVT_rzt *a, TRANS_FEAT(MOVT_rzt, aa64_sme2, do_movt, a, tcg_gen_ld_i64) TRANS_FEAT(MOVT_ztr, aa64_sme2, do_movt, a, tcg_gen_st_i64) =20 +static bool trans_MOVT_ztz(DisasContext *s, arg_MOVT_ztz *a) +{ + if (!dc_isar_feature(aa64_sme_lutv2, s)) { + return false; + } + if (sme_sm_enabled_check(s) && sme2_zt0_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + int tsize =3D MIN(svl, 64); + int offset =3D (a->off % (64 / tsize)) * tsize; + + tcg_gen_gvec_mov(MO_64, + offsetof(CPUARMState, za_state.zt0) + offset, + vec_full_reg_offset(s, a->rt), tsize, + offset ? tsize : 64); + } + return true; +} + static bool trans_LDST1(DisasContext *s, arg_LDST1 *a) { typedef void GenLdSt1(TCGv_env, TCGv_ptr, TCGv_ptr, TCGv, TCGv_i64); diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 2b9e41a75a..339de72b8a 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -141,6 +141,8 @@ MOVAZ_zt4 11000000 11 00011 0 v:1 .. 00110 za:3 z= r:3 00 \ MOVT_rzt 1100 0000 0100 1100 0 off:3 00 11111 rt:5 MOVT_ztr 1100 0000 0100 1110 0 off:3 00 11111 rt:5 =20 +MOVT_ztz 1100 0000 0100 1111 00 off:2 00 11111 rt:5 + ### SME Memory =20 &ldst esz rs pg rn rm za off v:bool st:bool --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978146; cv=none; d=zohomail.com; s=zohoarc; b=BWjbo32orUjP6epY3yxR70FU5aZD820j81ltqXHcrvVngkSMISFUYYRkh8bbpd0RZeEjEdmX6geaf0/SPosZhnzmAPykBx1LjFDOsAMbv4MULGhmjrlW0BNVNpwZKdJ7rUe458vIBuFakBbTcPoKllzNHBnwhhGWiUtgjvLRvbY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978146; 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=9u+pC6qfLsh3PIfjCDo0yknUM7ruUVVjw6a7o8FY9dY=; b=jvY+yvD2+emfw4a0KiTMBCwuWseIdjxdbWpK+KzW0QaBuvKalurONR6q6pnwoxGDFqTuLgxftw7tfY0V0rrHRl4ZNioeu1gd1ICYvKfDd507+L2G0l/Ces6zQgfqCZ2h5GlT38IJs/uh5DbwOGkGk0ERYTWqujpka60X6m8MFtc= 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 1778978146432414.87225358238186; Sat, 16 May 2026 17:35:46 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSh-0007n5-Vw; Sat, 16 May 2026 20:34:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPS0-0006W8-4n for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:48 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPRw-0006nP-ST for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:47 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c7ffe8eeaf2so352275a12.0 for ; Sat, 16 May 2026 17:33:43 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978023; x=1779582823; 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=9u+pC6qfLsh3PIfjCDo0yknUM7ruUVVjw6a7o8FY9dY=; b=levixgi8D/G3jmXylW7eSgz30/p07GX6EBrSa/X7Ntsx+yUZyMBtKA1ZosMpSKweyN ZiJVzeugV88xVfPuSv4csw/bzbdKPrQKhIQqtoYOqj52J1Ne25RjHOboexIw+qjn+/DJ rQ2+cEjH2d/Zk9SsVcbcc/AWtoigXwLSMRJyuEya6pYKq3XEznDXOA+4Gw4X7kaXt8+H ngfnS7Pyq2UId7Bz+Xx1kbUQvWpzMmEEy2qDBzhM9U7I7BLm7/mhAFENHjq2bjK1vXh9 Pu0T5VQEWD98HvfXrMmSrqVj1g4qb5A3SKMZ4xiYdo1R6QrmX7oYf9fqkMWvvYCcxctU LxbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978023; x=1779582823; 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=9u+pC6qfLsh3PIfjCDo0yknUM7ruUVVjw6a7o8FY9dY=; b=KoYNUuIYhfR0fgwQrFlcYSATvssKdARYSfOzuX6Oxlc/DMfjWhiiImFuLkXosT5DcZ VgxzpU74VBGvArrRlD61CCY11xb0LWWf5VNwkNEparhpg4EaoA1jhRovZ6qYAQ1Kjd7J qgjGUa8AFzE93zP9gb7XctUpdNh7LvvhKdXBYL9qHBrAXM55fBsofqjxXzoVRiHWneyu KPOmtccJ2/mDsRvYB4tErNNwIlaP/b3oXet99OsM+huEIvEbnn0f5KvJ6O6aWeeYUHgC jnqP9xHz3yR8eegtmtWiTqkWG4j3D1qTt8tjPFRrZLJ5SKmfUf+KhkqAtL0a1uqYxeg/ gGuw== X-Gm-Message-State: AOJu0YzcQPmtibRJgvEOBsySHmYK2oTfHitJeCmaOH39Lw4n4tYI94XB tCsuGI7P7UwLT8S1Me+2+l98kN5SSFK8dMHF41tEs0XRy3deJZMq77ib1ySL5amytJODSw6WWct y3Sbq X-Gm-Gg: Acq92OGwED7ypGz7S9lzUuBayaevGkyTzIsU0LNQukWQiYp5v7/yECt3QVhYmkRl7TX q8GhHOMfKu3JJmbIjkyTI7gvN2e+Rhl7F1S7PIYFDx3l9TcFANRBRNLqf8+wq+J1qgSUAujZ0I5 hQ3uwDkww0JaI2OoNtnjQlUgRRybMm+0CyrvJvrmuPdBO+sQOmLPe+eh7fZgSmXQBBqyf/3AzjB Vkk5XMpjX3HMONCLsahUuZSbrO20gofrg6s1vaqXozyQUsz5H0lhkhoG2fh6wmTbid7hlV2W2nx PYSpCORzDsTd5WVNM/JNN0BVDGffkT1vwgsN8j5jsgXUuXfWsKnnISIe20Ve+0xgyPxfxjnEh0g 0g9+Zs84GrtaJw650Gi0AFAZD2k9shGRcxAgHANz7SF4T/nRnJUOyEzCmCDvnN4MlC2wOhGY4uk B8qLs7lyyJDFzbqQVLXJhKjHAYmK3l X-Received: by 2002:a05:6a20:e212:b0:3ae:c3c9:29c3 with SMTP id adf61e73a8af0-3b22ece9489mr10818054637.49.1778978022697; Sat, 16 May 2026 17:33:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 43/63] target/arm: Implement LUTI4 (four registers, 8-bit) Date: Sat, 16 May 2026 17:29:42 -0700 Message-ID: <20260517003002.321430-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978147183158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-defs.h | 1 + target/arm/tcg/translate-sme.c | 6 ++++++ target/arm/tcg/vec_helper.c | 14 ++++++++++++++ target/arm/tcg/sme.decode | 6 ++++++ 5 files changed, 32 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 29d0464a03..007e656ed4 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1643,6 +1643,11 @@ static inline bool isar_feature_aa64_sme2_f8cvt(cons= t ARMISARegisters *id) return isar_feature_aa64_sme2(id) && isar_feature_aa64_f8cvt(id); } =20 +static inline bool isar_feature_aa64_sme2p1_lutv2(const ARMISARegisters *i= d) +{ + return isar_feature_aa64_sme2p1(id) && isar_feature_aa64_sme_lutv2(id); +} + static inline bool isar_feature_aa64_sve_i8mm(const ARMISARegisters *id) { return isar_feature_aa64_sve(id) && isar_feature_aa64_sme_sve_i8mm(id); diff --git a/target/arm/tcg/helper-defs.h b/target/arm/tcg/helper-defs.h index 05ccf795e8..8ec6c16319 100644 --- a/target/arm/tcg/helper-defs.h +++ b/target/arm/tcg/helper-defs.h @@ -1120,6 +1120,7 @@ DEF_HELPER_FLAGS_4(sme2_luti4_2b, TCG_CALL_NO_RWG, vo= id, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_luti4_2h, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_2s, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 +DEF_HELPER_FLAGS_4(sme2_luti4_4b, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_4h, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) DEF_HELPER_FLAGS_4(sme2_luti4_4s, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 214427db1f..0af133c1c4 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -1846,6 +1846,9 @@ TRANS_FEAT(LUTI4_c_2s, aa64_sme2, do_lut, a, gen_help= er_sme2_luti4_2s, false) TRANS_FEAT(LUTI4_c_4h, aa64_sme2, do_lut, a, gen_helper_sme2_luti4_4h, fal= se) TRANS_FEAT(LUTI4_c_4s, aa64_sme2, do_lut, a, gen_helper_sme2_luti4_4s, fal= se) =20 +TRANS_FEAT(LUTI4_c_4b, aa64_sme_lutv2, do_lut, a, + gen_helper_sme2_luti4_4b, false) + static bool do_lut_s4(DisasContext *s, arg_lut *a, gen_helper_gvec_2_ptr *= fn) { return !(a->zd & 0b01100) && do_lut(s, a, fn, true); @@ -1866,3 +1869,6 @@ TRANS_FEAT(LUTI4_s_2b, aa64_sme2p1, do_lut_s8, a, gen= _helper_sme2_luti4_2b) TRANS_FEAT(LUTI4_s_2h, aa64_sme2p1, do_lut_s8, a, gen_helper_sme2_luti4_2h) =20 TRANS_FEAT(LUTI4_s_4h, aa64_sme2p1, do_lut_s4, a, gen_helper_sme2_luti4_4h) + +TRANS_FEAT(LUTI4_s_4b, aa64_sme2p1_lutv2, do_lut_s4, a, + gen_helper_sme2_luti4_4b) diff --git a/target/arm/tcg/vec_helper.c b/target/arm/tcg/vec_helper.c index 94941aafad..e1b5f90826 100644 --- a/target/arm/tcg/vec_helper.c +++ b/target/arm/tcg/vec_helper.c @@ -3346,6 +3346,20 @@ DO_SME2_LUT(4,4,s, 4) =20 #undef DO_SME2_LUT =20 +void helper_sme2_luti4_4b(void *zd, void *zn, CPUARMState *env, uint32_t d= esc) +{ + unsigned vl =3D simd_oprsz(desc); + unsigned strided =3D extract32(desc, SIMD_DATA_SHIFT, 1); + unsigned dstride =3D !strided ? 1 : 4; + uint64_t indexes[ARM_MAX_VQ * 4]; + + memcpy(&indexes, zn, vl); + memcpy((void *)&indexes + vl, zn + sizeof(ARMVectorReg), vl); + + do_lut_b(zd, indexes, (void *)env->za_state.zt0, vl, 0, + dstride * sizeof(ARMVectorReg), 4, 32, 4); +} + void HELPER(gvec_luti2_b)(void *vd, void *vn, void *vm, uint32_t desc) { unsigned part =3D simd_data(desc); diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 339de72b8a..495330aed7 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1014,8 +1014,14 @@ LUTI4_c_2s 1100 0000 1000 101 idx:2 1 10 00 zn= :5 .... 0 &lut zd=3D%zd_ax2 LUTI4_c_4h 1100 0000 1000 101 idx:1 10 01 00 zn:5 ... 00 &lut zd=3D= %zd_ax4 LUTI4_c_4s 1100 0000 1000 101 idx:1 10 10 00 zn:5 ... 00 &lut zd=3D= %zd_ax4 =20 +LUTI4_c_4b 1100 0000 1000 101 1 00 00 00 ....0 ...00 \ + &lut zd=3D%zd_ax4 zn=3D%zn_ax2 idx=3D0 + # LUTI4, strided (must check zd alignment) LUTI4_s_2b 1100 0000 1001 101 idx:2 1 00 00 zn:5 zd:5 &lut LUTI4_s_2h 1100 0000 1001 101 idx:2 1 01 00 zn:5 zd:5 &lut =20 LUTI4_s_4h 1100 0000 1001 101 idx:1 10 01 00 zn:5 zd:5 &lut + +LUTI4_s_4b 1100 0000 1001 101 1 00 00 00 ....0 zd:5 \ + &lut zn=3D%zn_ax2 idx=3D0 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978188; cv=none; d=zohomail.com; s=zohoarc; b=gO7IkeGxFlWOyfCHB5+BOfVSxdNCS4jtjeq9IP16MRLINSm/GGl/XHUNa17Lmxh+zG/Xu5UzPcEEnOvKQl74o3mZMhxJCBrMqHqgMMpSoXqh17mwS1sEtZcE801E8OzmnaLbv670PUBbjiSifnZ2SH27kNBt+WFHphVghbWjT34= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978188; 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=BiL04P2CzHdch1eAb8Dy0QC+hd+UkcPVAZS3KCpqoms=; b=de7ptc+pIEQy4bsHydndIzEzAsReZLu2t7MkCEGfL3HxoqBq67aCVydYh/SkNHoUU931lPS4ualqGvsT7uqbBtJX0ekkN/R6SeezFGTz/13HDvKahKuAhms5KRn2h347/nURTgBww2JCr/EXdYl6LIPmHH7tAYvlnKA8D2JI9jE= 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 1778978188310343.4109917642603; Sat, 16 May 2026 17:36:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSh-0007kQ-QS; Sat, 16 May 2026 20:34:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPS0-0006VL-1v for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:48 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPRx-0006na-EM for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:47 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-c6dd5b01e14so435920a12.0 for ; Sat, 16 May 2026 17:33:45 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:43 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978024; x=1779582824; 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=BiL04P2CzHdch1eAb8Dy0QC+hd+UkcPVAZS3KCpqoms=; b=mE9H3bpk4nH3dsyKeDrx+sACsQEasWLzjX4u78FCc8J+ofDAks3mKv62+hmi79SoHv ibC1GujvXuIi2lljTuRKVYc/smMQY5qCIWzziTa7hF5gdmhpyKDyuxMyacZoXkG89ElP vnpJJNUHHYWO0hGRwgMsfKGW1Ghvy0bcdKwpWORxfN9C3T70gZX3mVCD7Dwubw4aElCq cuQK5nn5jPNCQNQH0xaC4KEUymqtQlM5WGFR1w/4H/bdJ8yIV3l61Iuo020WobjSEvHw MC9iPkXVdx8MTJGuVIt5XDD4Qsr+LXaBPlNvhPNzrgrPyiQGmuGV2ijB8BYyeclB6Z3m eAtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978024; x=1779582824; 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=BiL04P2CzHdch1eAb8Dy0QC+hd+UkcPVAZS3KCpqoms=; b=GjIVYlfU8AHhkWikBJvQnkYlgzk/W9jC/VqNGKTksHgHkfCP/yP7uodnmmjD+cORu9 Edl5Q9IS7CDVzLXTZ8m8LMixHTvMTlNnh+LHKjZK1DGm/sm8VXZrphLbraR3SWos1QJQ 92DMltnlYbIIKRtjTKfUilfO3IkRCCNwCqFASbGlHY8zCTD5kllI9+esJ5+6CZID6tIv OtH4+SCw6bo9GL8b664JOK+idsFXrkW7IC9B3EVO7tFoN6PZmyDxPGraThvGLXZ0Qc65 u1f5HvlKDyzURj4PWw0GZcDXiEUnTPYoLmEbaSJ0sZ0BdbqugsTdgTrO8eipTiWUa+ey vXpQ== X-Gm-Message-State: AOJu0YwVfnYngMQ57ZboqMh6nWIufHmT3BKTWW3995kJnApPCpacQgS0 zPSMZLQU+J9hFu3/h0ItocfZN/lWrVi4OvNCVbo6oUstFNkbMwEj+E74kjGmBBdT1tZ6Jt1gfrC kUOg8 X-Gm-Gg: Acq92OFdcZQ+CRZudU+50LtcHw9q4XEeQErNi/Wwj3L6Sq/UVg3ZchuZTdU6w6cXsXD cCcPHEI//ONUyDORRxq1I9I9rloM5uGjayxEYYOTH+Iw7xwndSrsYd4OvQi1BzcyPDDsLxvXlWS qdE4pHdFcieuN9BV1rAZQTF1+X7qtfOCGRamQkYp+GnVEqElJ3vdE4Xn+nBseGK1rh6+ZxdK+c+ WsgSpLWWJ2WM49Azf5w6hE6kLMj9vUGoEJGykzoy8XLge/MK6/hu064O0s7T36o2pjZ3ioYzBKz 9cBOFx1/jbAbY3IZpZoR1dTfdpOMi8i5yBwbrelSQjJE6rPTi35UBu14WKSsYz1rQDfKBgzpSih jOWarxz+kB+yKDw2q3K187wTCM8HmqKIu4c8/aGXZv+0XBW7WBJQrpHPggplvwq61n8i+WMg1Pl 1jQeK4BTKFANqqHx4INNI2WRhuBUWE X-Received: by 2002:a05:6a20:3d21:b0:3aa:f9cb:d43e with SMTP id adf61e73a8af0-3b22e72bda3mr10524353637.18.1778978024022; Sat, 16 May 2026 17:33:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 44/63] target/arm: Enable FEAT_SME_LUTv2 for -cpu max Date: Sat, 16 May 2026 17:29:43 -0700 Message-ID: <20260517003002.321430-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.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: 1778978189296158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 2 files changed, 2 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 8d0c057902..90214a355a 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1388,6 +1388,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64SMFR0, F64F64, 1); /* FEAT_SME_F64F64 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, I16I64, 0xf); /* FEAT_SME_I16I64 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SMEVER, 2); /* FEAT_SME2p1 */ + t =3D FIELD_DP64(t, ID_AA64SMFR0, LUTv2, 1); /* FEAT_SME_LUTv2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, FA64, 1); /* FEAT_SME_FA64 */ SET_IDREG(isar, ID_AA64SMFR0, t); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index b6f0ca9351..0dd6b554a0 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -158,6 +158,7 @@ the following architecture extensions: - FEAT_SME_F16F16 (Non-widening half-precision FP16 arithmetic for SME2) - FEAT_SME_F64F64 (Double-precision floating-point outer product instructi= ons) - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) +- FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) - FEAT_SVE (Scalable Vector Extension) - FEAT_SVE_AES (Scalable Vector AES instructions) - FEAT_SVE_B16B16 (Non-widening BFloat16 arithmetic for SVE2) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978392; cv=none; d=zohomail.com; s=zohoarc; b=nr5+vzAs6JGOTBLzKQ5vsqEyhIOGL8bdQGzQefvCS+mGt9cXPspeEh0PYYF8CWX+GxHwWZVp2U6Q2bnyN9+Wlx1/NyoyylicR1Lhd6uTE+8K9QvVacUhWgEKa8uaW7f/cwQkAHkKSPANrwHuMWiz4krZGOiWAIqDKvxGJW5/VPE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978392; 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=VNbX6rDkUzGYSDjQPckiG6GuulyRjAicqxJ0YGYEVwQ=; b=EQFx6Vcz2IXOiKX1C9erG+fLtWnUuNhC8Cun01oZMw2E4qkeJcb7kroRudNs6QRsnX2l06ceDTf/BlZ0VQS5s3ndlkOpE5De03xVWhz3A10o2HbD1MMTb8YW1Tc7VlvCGDp9KWvnu1mqAM35NpAO1FNw+sxu9RALcWku+Qy5+Ks= 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 1778978392926921.7233469291112; Sat, 16 May 2026 17:39:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSs-0000mU-LT; Sat, 16 May 2026 20:34: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 1wOPS1-0006hG-TN for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:50 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPRy-0006nx-RA for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:49 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-c828daf83e2so414285a12.2 for ; Sat, 16 May 2026 17:33:46 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978025; x=1779582825; 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=VNbX6rDkUzGYSDjQPckiG6GuulyRjAicqxJ0YGYEVwQ=; b=ko5lrW2P4AD5j1wB1A7RakpOn29gPrr+clWK1qVwB7xYQBzKPzam8flkoCUbKbrlzX 26ND9/0RLZXsC/kitNRkUFkUiPBexalLyul4lfVsZdc/srpbfxP9JS5SyapSILg2Ml6B 5GavZkYUdqPt76LmnPx9l8LcJ17Zcy0xoBfBX/PznasZFfDavFUqhOmy7H5kpoyjiu/q +g047r87kDoQNOXkgDqgvVe+aeMfHFBwuXGtErpnXT8mRpHZlUVszdpaHiWHKIa/hG/5 9XPoV5pJvel8wbfvd1fLPHqyVAXZtnSIW8ttUI9gBj5rge4c7YjAlYUxpQDSxuYuuyZ2 wZFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978025; x=1779582825; 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=VNbX6rDkUzGYSDjQPckiG6GuulyRjAicqxJ0YGYEVwQ=; b=ZUfzTu0SMaxt6wWckmM86UHF/3HxROcJF4+T7CL99qJqC8Ch9CcIgBtyTjI5oQT4xX WivZdWf3bZ7ufCPM7YhE8UpTRiC1EBVvLlfUFIByqDmG9iuYg0C6lYD0ipqBSDKNLMmv VcJ21A26F8YNrWmzH5slyScHxjNTIJvV26aKPQY6beZhZpxpS5C/xMwL6ZYDW4LD2Pe9 YfQ52KJHruLdY3BQGWRNH3NZvN/bR43Su/QU5Bq/ENtv7zgaAD7FTkbGR1XIDo2rbhO3 ikFcFap1uC6pbCUVfXM2MN+dfzzxYwvUHid1IAxx2NLsO7Mcv13oguSBblIf6duMMWzv jzIg== X-Gm-Message-State: AOJu0YzlwcTa/UQurF5w3rApbjxm4ePbzi1qMt67Z95/hHtp6xPsV9C2 SbkF74y+QGZSLM/79nAef2sNlcudzZVpBDjO7zSmt2y6pd+gEKlTdSjp73jpBbhiOiyTNO1a9mr m0LYL X-Gm-Gg: Acq92OECEdtQKuDYl8ZeuoMgGJztkWZDxz6/OGqEpgJ9wSgtfbcyk/lhOYER4NOCLzq qCdECt2yb+lifY/R40lTEmhVwFUqt1q0Slso6CGruUZicwxg9xWsZNpYeDmuRk7XTVGIgrDVhIm hJhx+Vi34JQBbyBDk9tpDQBcfNLYnEm5P+G88TxAOao5sDeSoIAE9PwvK75QXI3BxGzZtnxdpy2 bJlpjLUlrDx9cFP1UiKcPAHNn1z2DrKtnWOyOML22VCh23jooVFTB7wvCC9S7hZU6qNb/+z54a3 NfF6/3/4LyhaC615+cAP3WyeDX8FZK8xSUhwtd/ls6no4dXnP7oomLdW3an3hNMXUEWxImQeb63 11/P1bD4UddinlokPQYN5UpLdXAQj2D2CmzzeqIbVisDUf9Sb3R+nUhOGUs1Mv0PMDy8M4XCPTh 0XvuD0uMXr3lt4qJrtXlRoeuhCHaXB X-Received: by 2002:a05:6a20:e212:b0:3aa:c93b:6266 with SMTP id adf61e73a8af0-3b22e738febmr10834416637.19.1778978025231; Sat, 16 May 2026 17:33:45 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 45/63] target/arm: Implement FMLALB, FMLALT for AdvSIMD Date: Sat, 16 May 2026 17:29:44 -0700 Message-ID: <20260517003002.321430-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.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: 1778978393983158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++ target/arm/tcg/helper-fp8-defs.h | 3 + target/arm/tcg/fp8_helper.c | 113 +++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 16 +++++ target/arm/tcg/a64.decode | 8 +++ 5 files changed, 145 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 007e656ed4..ee20d74164 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1590,6 +1590,11 @@ static inline bool isar_feature_aa64_f8cvt(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8CVT); } =20 +static inline bool isar_feature_aa64_f8fma(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8FMA); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 36ae977431..7aa8366d94 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -23,3 +23,6 @@ DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void,= ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sme2_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_fcvtn_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) + +DEF_HELPER_FLAGS_5(gvec_fmla_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fmla_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 931ea54cb6..c873de65cd 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -571,3 +571,116 @@ void HELPER(sme2_fcvtn_bs)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_finish(env, &ctx); } + +typedef struct FP8MulContext { + float_status stat; + fp8_input_fn *fmt1; + fp8_input_fn *fmt2; + int scale; +} FP8MulContext; + +static FP8MulContext fp8_mul_start(CPUARMState *env, int scale_mask) +{ + uint64_t fpmr =3D env->vfp.fpmr; + + FP8MulContext ret =3D { + .stat =3D env->vfp.fp_status[FPST_A64], + .fmt1 =3D fp8_input_fmt[FIELD_EX64(fpmr, FPMR, F8S1)], + .fmt2 =3D fp8_input_fmt[FIELD_EX64(fpmr, FPMR, F8S2)], + .scale =3D -(FIELD_EX64(fpmr, FPMR, LSCALE) & scale_mask), + }; + + set_flush_to_zero(0, &ret.stat); + set_flush_inputs_to_zero(0, &ret.stat); + set_default_nan_mode(true, &ret.stat); + set_float_rounding_mode(FIELD_EX64(fpmr, FPMR, OSM) + ? float_round_nearest_even_max + : float_round_nearest_even, &ret.stat); + + return ret; +} + +static void fp8_mul_finish(CPUARMState *env, FP8MulContext *c) +{ + /* + * FP8 multiplies don't update FPSR.{IDC,IOC,IXC,UFC}. + * Since this is multiply-add, DZC does not apply and only OFC remains. + */ + fp8_finish_fpst(&env->vfp.fp_status[FPST_A64], &c->stat, + float_flag_overflow); +} + +static FloatParts64 f8dot(uint64_t a, uint64_t b, int n, FP8MulContext *ct= x) +{ + /* + * Because of default_nan_mode, NaNs need no special handling. + * We'll simply get the default NaN out at the end of the sequence. + */ + FloatParts64 p0 =3D ctx->fmt1(a & 0xff, &ctx->stat); + FloatParts64 p1 =3D ctx->fmt2(b & 0xff, &ctx->stat); + FloatParts64 pr =3D parts64_mul(&p0, &p1, &ctx->stat); + + for (int i =3D 1; i < n; ++i) { + p0 =3D ctx->fmt1(extract64(a, i * 8, 8), &ctx->stat); + p1 =3D ctx->fmt2(extract64(b, i * 8, 8), &ctx->stat); + pr =3D parts64_muladd(&p0, &p1, &pr, 0, &ctx->stat); + } + return parts64_scalbn(&pr, ctx->scale, &ctx->stat); +} + +static float16 f8dotadd_h(uint64_t a, uint64_t b, int n, float16 c, + FP8MulContext *ctx) +{ + FloatParts64 p0 =3D f8dot(a, b, n, ctx); + FloatParts64 p1 =3D float16_unpack_canonical(c, &ctx->stat); + + p0 =3D parts64_addsub(&p0, &p1, &ctx->stat, false); + return float16_round_pack_canonical(&p0, &ctx->stat); +} + +void HELPER(gvec_fmla_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + bool high =3D extract32(desc, SIMD_DATA_SHIFT, 1); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float16 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + uint8_t e0 =3D n[H1(2 * i + high)]; + uint8_t e1 =3D m[H1(2 * i + high)]; + + d[H2(i)] =3D f8dotadd_h(e0, e1, 1, d[H2(i)], &ctx); + } + + fp8_mul_finish(env, &ctx); + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmla_idx_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + bool idx_n =3D extract32(desc, SIMD_DATA_SHIFT, 1); + size_t idx_m =3D extract32(desc, SIMD_DATA_SHIFT + 2, 4); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float16 *d =3D vd; + size_t i =3D 0; + + do { + uint8_t e1 =3D m[2 * i + H1(idx_m)]; + do { + uint8_t e0 =3D n[H1(2 * i + idx_n)]; + d[H2(i)] =3D f8dotadd_h(e0, e1, 1, d[H2(i)], &ctx); + } while (++i % 8 !=3D 0); + } while (i < nelem); + + fp8_mul_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 ee71c63116..1c1d4ad2f7 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7384,6 +7384,22 @@ TRANS_FEAT(FMLSL_vi, aa64_fhm, do_fmlal_idx, a, true= , false) TRANS_FEAT(FMLAL2_vi, aa64_fhm, do_fmlal_idx, a, false, true) TRANS_FEAT(FMLSL2_vi, aa64_fhm, do_fmlal_idx, a, true, true) =20 +static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, 16, vec_full_reg_size(s), + a->idxn | (a->idxm << 2), fn); + } + return true; +} + +TRANS_FEAT(FMLAL_hb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) +TRANS_FEAT(FMLAL_hb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_i= dx_hb) + static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 6aea3ce89f..b89e83ce76 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -25,6 +25,7 @@ %esz_hsd 22:2 !function=3Dxor_2 %hl 11:1 21:1 %hlm 11:1 20:2 +%hlm4 11:1 19:3 =20 &r rn &rrr rd rn rm @@ -38,6 +39,7 @@ &rri_e rd rn imm esz &rrr_e rd rn rm esz &rrx_e rd rn rm idx esz +&rxx rd rn rm idxn idxm &rrrr_e rd rn rm ra esz &qrr_e q rd rn esz &qrri_e q rd rn imm esz @@ -1204,6 +1206,9 @@ FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ...= .. @qrrr_sd FCVTN_bh 0.00 1110 010 ..... 11110 1 ..... ..... @qrrr_h FCVTN_bs 0.00 1110 000 ..... 11110 1 ..... ..... @qrrr_h =20 +FMLAL_hb_v 0 idxn:1 00 1110 110 rm:5 11111 1 rn:5 rd:5 \ + &rxx idxm=3D0 + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h @@ -1322,6 +1327,9 @@ SQDMLAL_vi 0.00 1111 10 . ..... 0011 . 0 ..... .= .... @qrrx_s SQDMLSL_vi 0.00 1111 01 .. .... 0111 . 0 ..... ..... @qrrx_h SQDMLSL_vi 0.00 1111 10 . ..... 0111 . 0 ..... ..... @qrrx_s =20 +FMLAL_hb_vi 0 idxn:1 00 1111 11 ... rm:3 0000 . 0 rn:5 rd:5 \ + &rxx idxm=3D%hlm4 + # Floating-point conditional select =20 FCSEL 0001 1110 .. 1 rm:5 cond:4 11 rn:5 rd:5 esz=3D%esz_hsd --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978117; cv=none; d=zohomail.com; s=zohoarc; b=iBXvC0apwUtzSrpNLcb8mEBZW5xKlgB6AuJlkUhSCjFuJdYEZqKf6xxworRUujrb12m2XTMvKJ/HbP/w8iC70DuACB6PMevewxceQ3OLXC39JmMtJA1/uYkY3HWs0+jA8qONFWulaaEc5vpUDQLOxAF1Vwzndu7tHAh3h3idMUA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978117; 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=6l26rPIuII3YImkqTasNjpDKWjPGdRXt+dWuq4seH0M=; b=l1s1ywQQGZ0PkGXq6c0c63D0ROv6SKW1UxVPE8SSgmwDfCkMoQy04BZBct0yXRmY5930w3fz9sVo7RnskTRpQ2SgrYjoERMUPxpsKjPZqTn/zh3hGtSp30KXjiwZzIwKd6kxbk18Fv8XKvHkqcv1k0rDZFkBi2npD/1CxCpriH4= 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 1778978117452390.46793049227654; Sat, 16 May 2026 17:35:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSk-00089h-Bu; Sat, 16 May 2026 20:34:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPS2-0006j3-93 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:50 -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 1wOPS0-0006oX-9B for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:49 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2bd80b3aa13so6602115ad.0 for ; Sat, 16 May 2026 17:33:47 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978027; x=1779582827; 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=6l26rPIuII3YImkqTasNjpDKWjPGdRXt+dWuq4seH0M=; b=X3jkfJRkLJ30Zkbtn3w8WHcaIPpiBrx7+ieJb3gadSfTzcj33X41BuSulhTDuY6v1F oMgS2fzZsdigVQ8TDAPqiaRR9Dpe+CWC9oajKBhdAsG4I8qBbPoUUaiT1+ZLLDifw3vT KJqN9U0rB5uGRDOo3aOcSaOSqGrZUgmEr/Ns5+jcwTFMCYOjuxjv7LBL/78gJDayU9xT ExBK1OacoHHXwGTluVQmJY3665+CyoSZDsDCNE3x6OcwyvVL3XV9vJDPFMxs9GBWJ/gj iTkWjN1+zQwwmqADr2RvRxXHiZK6tU8pTm4jX1G4DuSee7hP/lD84VdTjr+6lReVzsoK WXBw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978027; x=1779582827; 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=6l26rPIuII3YImkqTasNjpDKWjPGdRXt+dWuq4seH0M=; b=lYVkRt1y7Dfjr5LlnUFpCECxRWSiD2r5UuCiGO5lG+lSH7iyPGiRZBGg5soM+2Gu/3 NZngdtFIzWI2jsRr7XFj4XAGxAOQaJaDVq4D6jD3G4AK5LqkiUQhV7Dc3ksLhQc62I1F wX2rtL6DUxkysHO4RYSS7CB636vknGJhCXtZOOUofZZ8vf7CrB2+Fijfx5RXlnmXqauU 7UtkjYOrU2NqDH0PJORNseIFQpSYIuPTFaOLVUrVPL00LkKdDxqgq5qkkNz0+uTpgw4n szEIckQKTuTj5n6Go5VFxCEXf5ztVKjodhuKVx342uqE8jnhfmV0dnc/hAEyaQSCsNk8 JBJA== X-Gm-Message-State: AOJu0YxSsKNWm40JBvVMw3Z+80sdm7BbsCxqogb5xm210iffXeSi09qg g4MA6QTB4RdE2W5pmzeoYGaRHNH5smtsvtlU4L+n+a6TRFtEJHj1wcQwn7TUUwF/loIMdjVsJqK g4WT6 X-Gm-Gg: Acq92OFHqOqcPe345O6ubQwiSQqzmDeGyIEeDjKohZ1/1QyJEh26AEil/u2Ag+xcQfW vAuyITsSdp5YcnfUvviVi7mjf6retNMbA3GCP+2scs1srzkzdQ9OVNgb6xGaRk0MnBuArQQ3qXg 5hczT+s7Fs78M/CEOt3oU4deKnJ5rvafUFR9k52LWhX4M9uk/J4xfc0DlHOSh8CR9YV7+ELjACf DqvqreM8sCL/UsWxB/UjZUUGcBod/tfHgOQesFFX1Ei9h7AhzyRQNMF6PQYYic0BiohLF4hdDL3 QJN+jMbQCAN+jn7U1FpD8380duKuXrGi3ZM9WHB5g5rlHgaa2ZQhE2nca9YXt93TSPKsUDSaAM1 0VFR4cjrZrGDg5psR1XENA8OWFCOlJZJEQbqKL0unqrLvVYlrlDUo0TXURwS3gcR1lbTHYq8bOu skK/xVYX5mjrR/5LqY+bF615oCMG7berHpjtUcRsI= X-Received: by 2002:a17:903:440c:b0:2bd:9a27:70f1 with SMTP id d9443c01a7336-2bd9a277240mr66141525ad.30.1778978026638; Sat, 16 May 2026 17:33:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 46/63] target/arm: Implement FMLALB, FMLALT (FP8 to FP16) for SVE Date: Sat, 16 May 2026 17:29:45 -0700 Message-ID: <20260517003002.321430-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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: 1778978119083158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 33 +++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 7 +++++++ 3 files changed, 45 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index ee20d74164..c0b646415c 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1545,6 +1545,11 @@ static inline bool isar_feature_aa64_sve_b16b16(cons= t ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64ZFR0, B16B16); } =20 +static inline bool isar_feature_aa64_ssve_f8fma(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8FMA); +} + static inline bool isar_feature_aa64_sme_b16b16(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, B16B16); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index ea0d66178e..aa785fa0c3 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8336,3 +8336,36 @@ static bool trans_LUTI4_2h(DisasContext *s, arg_LUTI= 4_2h *a) } return true; } + +static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, gen_helper_gvec_3_ptr= *fn) +{ + bool fp8fma =3D dc_isar_feature(aa64_f8fma, s); + bool ssve_fp8fma =3D dc_isar_feature(aa64_ssve_f8fma, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8fma || (fp8fma && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8fma) { + s->is_nonstreaming =3D !ssve_fp8fma; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, vsz, vsz, + a->idxn | (a->idxm << 2), fn); + } + return true; +} + +TRANS(FMLAL_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) +TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_hb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index e2106fc7f5..71ec09393c 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -29,6 +29,7 @@ %imm9_16_10 16:s6 10:3 %size_23 23:2 %dtype_23_13 23:2 13:2 +%index4_19_10 19:2 10:2 %index3_22_19 22:1 19:2 %index3_22_17 22:1 17:2 %index3_22_12 22:2 12:1 @@ -73,6 +74,7 @@ &rri rd rn imm &rr_dbm rd rn dbm &rrri rd rn rm imm +&rxx rd rn rm idxn idxm &rri_esz rd rn imm esz &rrri_esz rd rn rm imm esz &rrr_esz rd rn rm esz @@ -1864,6 +1866,8 @@ BFMLALT_zzzw 01100100 11 1 ..... 10 0 00 1 ..... .= .... @rda_rn_rm_ex esz=3D2 BFMLSLB_zzzw 01100100 11 1 ..... 10 1 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFMLSLT_zzzw 01100100 11 1 ..... 10 1 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D2 =20 +FMLAL_hb 01100100 10 1 rm:5 100 idxn:1 10 rn:5 rd:5 &rxx idxm=3D0 + ### SVE2 floating-point dot-product FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 @@ -1880,6 +1884,9 @@ BFMLALT_zzxw 01100100 11 1 ..... 0100.1 ..... ....= . @rrxr_3a esz=3D2 BFMLSLB_zzxw 01100100 11 1 ..... 0110.0 ..... ..... @rrxr_3a esz=3D2 BFMLSLT_zzxw 01100100 11 1 ..... 0110.1 ..... ..... @rrxr_3a esz=3D2 =20 +FMLAL_idx_hb 01100100 idxn:1 01 .. rm:3 0101 .. rn:5 rd:5 \ + &rxx idxm=3D%index4_19_10 + ### SVE2 floating-point dot-product (indexed) =20 FDOT_zzxz 01100100 00 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 --=20 2.43.0 From nobody Sat May 30 18:37:42 2026 Delivered-To: importer@patchew.org Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=linaro.org Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1778978093257235.27562844910437; Sat, 16 May 2026 17:34:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSO-00077A-OM; Sat, 16 May 2026 20:34:16 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPS3-0006lq-Hq for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:51 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPS1-0006p1-AO for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:51 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-8354461da74so445557b3a.1 for ; Sat, 16 May 2026 17:33:48 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978028; x=1779582828; 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=q7WaWIKYy3emvF0VwlyQzMnR89eKObPqPn6UcKborl8=; b=PIuzys9nkIfUqCn8EWFwpHtC8D2bGm5G3K8lnKRbhPpcxARNEE21JNXV29lUcKfFb1 BfSWWG96JzSdKDVxSFpfc3EoydqG3qNAZ3O5Biwpgy0cDySw2U0dNQm2w/XqOZLEgbkQ 6s8yKkt/BgDTJulCj4j4oJWu+OQa1PTZddU4Ln+dGcDNpO+MEpLForHUQSBv1HVYqmwl tc5AeSUmCSb+oyGKN6F8nonOztYA/AE2eRqJmPXKv31DrhuA1lGLGnN5YHGuwIiUoc7k pJd6zc5lh9qvu7ISRwNbXXYppZUhDZswZPJgrrSrZMgD6yuzG+LjUFMUBBgMPfeKTXJS NhyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978028; x=1779582828; 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=q7WaWIKYy3emvF0VwlyQzMnR89eKObPqPn6UcKborl8=; b=UrBO8qLs2V2k5My6xxSphQWoG5PUCroBe1wSQo5NfczACkhOsRQvfoKnBn2A6ty7/y 15+GuVX72OVDUTa1N3la+STsBvtKZi0DeDJI7I4id9QZgLLPmoyj0DgECNkglrOHrw/I HNEwXhVxalGWrtAVziP60bfWXLndYW8rLqYYN+HMhSW1Wl30zgV89TUlSpiqpcYgBoyx GwhnnkNX5fXhga/UnVeGadp0C2SQ4xHuI5J2V4uWgIpp1PVuFyfqIymYAYExsaxwOJHm KxNaMOC1RAVbq03ZRfiEj3EzVeQwklyo2rwgjVwc5uXjKzhuIS1DBlIOaarFw+Pbf/8a 1Ezg== X-Gm-Message-State: AOJu0YzWU3OlLV9Lwi2pOo2dMrMBdJFg5uDnawi7eEwW1aax7XiBqv0U OHBgVPDflpwvAY1WRZpWPQS5qUCOIKyxGdaXIu68zj2Hxmu3c+Bq429pIQdnCrhbj4gmqYOCORx KLt5o X-Gm-Gg: Acq92OEV46PrxOsJfTxKgdtz8iCpeSC0uiY5Nxhnj6BHeut4DS2Ztm/1IfQUi3+SSb8 AyrvU8nmFdVqB7PyD9ADzm7jGBx6btrLEn9agChv9qLuquj6rcoP97jCeNLuhUeK0oqYpc1sI9j QTstEQ8ehnJgGRnHdaep/o8Tjzc81u3OA5u0f6VMrLq69rolWAi3cdIjiq8pzsSp8sxIF8uLgnR WrPIdv1+zP7KeS477E0Vk7XrOedZtqQdx8inbeN4fRYgxqvZ+VrL27ZCJP/7JdbaFWGgxiPK62Q obFKKhgT5GdP7wwZ1SpDe8ywqwJcsHZ/dIV/3hFjRuybhseKFPHaTdGTW5bUU+0cteKJOygimuF y/tzIViyiADWMfW4O8wZSSlNri7NMQgpHkPWm7Sp5LXsDUyypEGw7cX4sJsyCwmfGKfpmXv52a/ cOQlLhSRNoeOZ7lb4cayqthZqC7ZBh X-Received: by 2002:a05:6a20:3d8f:b0:3aa:c95f:f65 with SMTP id adf61e73a8af0-3b22ecfa3c2mr10955195637.32.1778978027619; Sat, 16 May 2026 17:33:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 47/63] target/arm: Implement FMLALL{BB, BT, TB, TT} for AdvSIMD Date: Sat, 16 May 2026 17:29:46 -0700 Message-ID: <20260517003002.321430-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::430; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x430.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1778978095006158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 3 ++ target/arm/tcg/fp8_helper.c | 57 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 3 ++ target/arm/tcg/a64.decode | 7 ++++ 4 files changed, 70 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 7aa8366d94..802a3b430e 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -26,3 +26,6 @@ DEF_HELPER_FLAGS_4(sme2_fcvtn_bs, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) =20 DEF_HELPER_FLAGS_5(gvec_fmla_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fmla_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fmla_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index c873de65cd..de31903129 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -638,6 +638,16 @@ static float16 f8dotadd_h(uint64_t a, uint64_t b, int = n, float16 c, return float16_round_pack_canonical(&p0, &ctx->stat); } =20 +static float32 f8dotadd_s(uint64_t a, uint64_t b, int n, float32 c, + FP8MulContext *ctx) +{ + FloatParts64 p0 =3D f8dot(a, b, n, ctx); + FloatParts64 p1 =3D float32_unpack_canonical(c, &ctx->stat); + + p0 =3D parts64_addsub(&p0, &p1, &ctx->stat, false); + return float32_round_pack_canonical(&p0, &ctx->stat); +} + void HELPER(gvec_fmla_hb)(void *vd, void *vn, void *vm, CPUARMState *env, uint32_t desc) { @@ -684,3 +694,50 @@ void HELPER(gvec_fmla_idx_hb)(void *vd, void *vn, void= *vm, fp8_mul_finish(env, &ctx); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmla_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx =3D extract32(desc, SIMD_DATA_SHIFT, 2); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float32 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + uint8_t e0 =3D n[H1(4 * i + idx)]; + uint8_t e1 =3D m[H1(4 * i + idx)]; + + d[H4(i)] =3D f8dotadd_s(e0, e1, 1, d[H4(i)], &ctx); + } + + fp8_mul_finish(env, &ctx); + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmla_idx_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx_n =3D extract32(desc, SIMD_DATA_SHIFT, 2); + size_t idx_m =3D extract32(desc, SIMD_DATA_SHIFT + 2, 4); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint8_t *n =3D vn; + uint8_t *m =3D vm; + float32 *d =3D vd; + size_t i =3D 0; + + do { + uint8_t e1 =3D m[4 * i + H1(idx_m)]; + do { + uint8_t e0 =3D n[H1(4 * i + idx_n)]; + d[H4(i)] =3D f8dotadd_s(e0, e1, 1, d[H4(i)], &ctx); + } while (++i % 4 !=3D 0); + } while (i < nelem); + + fp8_mul_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 1c1d4ad2f7..946c16d439 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7400,6 +7400,9 @@ static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, TRANS_FEAT(FMLAL_hb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) TRANS_FEAT(FMLAL_hb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_i= dx_hb) =20 +TRANS_FEAT(FMLALL_sb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_s= b) +TRANS_FEAT(FMLALL_sb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_= idx_sb) + static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index b89e83ce76..ef6d7dfeaa 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1209,6 +1209,10 @@ FCVTN_bs 0.00 1110 000 ..... 11110 1 ..... ..= ... @qrrr_h FMLAL_hb_v 0 idxn:1 00 1110 110 rm:5 11111 1 rn:5 rd:5 \ &rxx idxm=3D0 =20 +%fmlall_idxn 30:1 22:1 +FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ + &rxx idxm=3D0 idxn=3D%fmlall_idxn + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h @@ -1330,6 +1334,9 @@ SQDMLSL_vi 0.00 1111 10 . ..... 0111 . 0 ..... .= .... @qrrx_s FMLAL_hb_vi 0 idxn:1 00 1111 11 ... rm:3 0000 . 0 rn:5 rd:5 \ &rxx idxm=3D%hlm4 =20 +FMLALL_sb_vi 0 . 10 1111 0 . ... rm:3 1000 . 0 rn:5 rd:5 \ + &rxx idxm=3D%hlm4 idxn=3D%fmlall_idxn + # Floating-point conditional select =20 FCSEL 0001 1110 .. 1 rm:5 cond:4 11 rn:5 rd:5 esz=3D%esz_hsd --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978180; cv=none; d=zohomail.com; s=zohoarc; b=Du8WsrYZcoGX+Wws6QwFMg+npm92mrCjVFxXaz5kUHuO3iuIBj5BYSU5575p2o6G3bzXXL+ZE/V6WLyONrrm//BuNLFxkPDq47bGdcB2p2hKVxFyheMt2wdhXWK50jkC1lnfYVyTYJGVBp9f/95YtyLylk8idTVAPbpuoaNXeLA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978180; 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=AeHqaA4eUNZ/cnZls9YTWTYizcqfhEo9ShP2VlzzQbM=; b=jrj8P17s/z0y9g6asl89hBw9xWaFmaslCN0zG9G3slm8cRuRp7AJqpwXs2YoTR6ZL4v/llN4dc0BmjRHaGehEbvpPzT/8/bfcdSxEN93OFFlTeCFWrpsqCCu4KBjyu/xd7xKTjgoe8Ji0ndbTL6B8iVBprnU4WAUOcvRm9XpmyI= 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 1778978180410904.591050927869; Sat, 16 May 2026 17:36:20 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSy-0001Wu-AN; Sat, 16 May 2026 20:34: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 1wOPS6-0006wq-1c for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:55 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPS3-0006pO-5S for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:52 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-c736261ee8dso421672a12.1 for ; Sat, 16 May 2026 17:33:49 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978029; x=1779582829; 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=AeHqaA4eUNZ/cnZls9YTWTYizcqfhEo9ShP2VlzzQbM=; b=YGaBvQVz8ec3BVLT9ThJistVJyRKVGMDiGYrFg5fmSfo8qGBs8jqGPI+xfM8vOgCoB XsQ9oLEXZxZN5rHTkoU5VOA/FHkBjB7j+7fLcdqq2d5A7Bf93hwgGThM7YAEqw5B3eai PE07FiP7rMbxCoezHG9gVZAEHoBDBjC7CYb1180XreTsys/kkkbd2NuTmX9M3hwe3aec wmj1xjze2lq/dbovaDln7sC+Lleh4o2AHh99+831465xfqGnPRkTNbTeSA6/UNzZJQTt 6je92y8z6DPWcymAaVRNgFZp/ZkloZQHGA8mFDQhcJ/WjNoQa2mMP2EGY2q0CDaREwBo opFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978029; x=1779582829; 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=AeHqaA4eUNZ/cnZls9YTWTYizcqfhEo9ShP2VlzzQbM=; b=GH6EdDquXO72DR+yiShpBDXLClvu4HCfr+E0xLMlg2gSeO6J4Z11Y0tCqXT6H/IR1b vueRDptPfSHGztzr3EGNWgqW033H0BebkJ2t/dVVze/M32dKCMwArI+J7T0g+JtjtteE 6+HN2KoW42uRF4pyGVKCxg3FDOG5c6szkufoOMwBOhydr9HuuMBkg2tPHGTFJN9GTN5E VTPfHk/Hgc2/CQywSy194etqQvXh4OqOyAiqjE/cfRv9BKoUV3R1yellW6xulYp00XrK c+ON9Cw7lwmY1WIE6Z6lwdTh6Sim+DJTCdQwLNBQn/6Y2KnrUZ5hx5cYLHV+yFE4TsAK lE7w== X-Gm-Message-State: AOJu0YyYwC/JSZ1F3ICt6rsTTt5hjQoJMAwWr9KnYKDbC4ad9+D5fE68 vbRFUXPnKYRry2Bmy/SzTsimkj6optdN38yoGwCT5LSKl3hznlx+ZI4X5uOvJK8FuYjba9QE2kw fofZH X-Gm-Gg: Acq92OGRzNXhmcrbBWW4+6zbZ+KVu9mfSo+sVcQxMa0+yrb+1eG/8eTvpz5nt5UBbLK 5VUNxdyyG1zBx4+Q/xorTLpR7YtUDF0DkskZZnFR7Lv3ODEIMGfcOzDp5xEoFZsoN3iPDm/LNM5 gTcVfw0RT2rCUr/7sHfJsr6HpNxAFZMoVNGYpxnU5vSOwrUPlkBG7Whug1OGLWIRjM0NiCzpCPV Gs4eE0zc81IyazOO1jYabBiAfra9ofsw1Qc4CRoIYze5I8ILAKdnbo6H9VKsGcOB80U/CNvEmuL +qwhUEJV5fA/EAnhADnLmYeNi+vK9wOvsirRbVGr5qR5ZotSmp9cD26V0mfDt7mtImUh9k2yxry ckn+bk6d7M7vsCsWOK+yI2QOJcTlGWRBH4a2JlBnEugu4M/pvfFsrizBitxtVuqhVi/7Ms251+G vzsLaHGoa5e7fngdlU3PSveTkP79j97CNSs4IdtD0= X-Received: by 2002:a05:6a20:3ba9:b0:3a2:d79c:416c with SMTP id adf61e73a8af0-3b22ebcaf08mr8225101637.32.1778978028853; Sat, 16 May 2026 17:33:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 48/63] target/arm: Implement FMLALL{BB,BT,TB,TT} for SVE Date: Sat, 16 May 2026 17:29:47 -0700 Message-ID: <20260517003002.321430-49-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.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: 1778978181230158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sve.c | 3 +++ target/arm/tcg/sve.decode | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index aa785fa0c3..e23ca43f55 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8369,3 +8369,6 @@ static bool do_fmla_fp8(DisasContext *s, arg_rxx *a, = gen_helper_gvec_3_ptr *fn) =20 TRANS(FMLAL_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_hb) TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_hb) + +TRANS(FMLALL_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_sb) +TRANS(FMLALL_idx_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_sb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 71ec09393c..06bbd7fa63 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1868,6 +1868,8 @@ BFMLSLT_zzzw 01100100 11 1 ..... 10 1 00 1 ..... .= .... @rda_rn_rm_ex esz=3D2 =20 FMLAL_hb 01100100 10 1 rm:5 100 idxn:1 10 rn:5 rd:5 &rxx idxm=3D0 =20 +FMLALL_sb 01100100 00 1 rm:5 10 idxn:2 10 rn:5 rd:5 &rxx idxm=3D0 + ### SVE2 floating-point dot-product FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 @@ -1887,6 +1889,9 @@ BFMLSLT_zzxw 01100100 11 1 ..... 0110.1 ..... ....= . @rrxr_3a esz=3D2 FMLAL_idx_hb 01100100 idxn:1 01 .. rm:3 0101 .. rn:5 rd:5 \ &rxx idxm=3D%index4_19_10 =20 +FMLALL_idx_sb 01100100 idxn:2 1 .. rm:3 1100 .. rn:5 rd:5 \ + &rxx idxm=3D%index4_19_10 + ### SVE2 floating-point dot-product (indexed) =20 FDOT_zzxz 01100100 00 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978277; cv=none; d=zohomail.com; s=zohoarc; b=jpcxQG7kW9GWNGXvIotsD+EcqkBvQRxddnt4sngQtY5d9z+Vr6haYg3kR+HuKyLKzwJkYl0cShHEvyQIzJNp/AYEw9uaNh5ptocHYZ/anMn2UBfmb6zJ10WhxvTwCqssZ9xyOwRj0qWKaL7zYyU1n5jEdTv0MSnFWpInc7aJEeY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978277; 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=xnvL1dEdpYA1y9JJcxfkHku7n0bLCdQETh28Vu/3wxA=; b=cpdEFBoegfg0Auvyee6+O5yda9ttqNgTs1TXfwSB5tpPeSQrXJKQbmZR8LDWiGchqDMgKEBPwPHwVsbw6jd3mxQobMSAy5qmn2jvq6mPd0z5nlG1yGcOViHCfG+hVEc/iOJOazk4PoLq1xiCJlXDGSFoHqkD9R1ttCa8njyL0Es= 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 1778978277377745.8634033732177; Sat, 16 May 2026 17:37:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSr-0000f0-LK; Sat, 16 May 2026 20:34:41 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPS7-0006ze-T3 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:57 -0400 Received: from mail-pg1-x533.google.com ([2607:f8b0:4864:20::533]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPS3-0006pq-Gg for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:53 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-c828daf83e2so414305a12.2 for ; Sat, 16 May 2026 17:33:51 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978030; x=1779582830; 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=xnvL1dEdpYA1y9JJcxfkHku7n0bLCdQETh28Vu/3wxA=; b=QdPtkVlrc7puKAqTg3IkZIFyN3+GQ7HlZJNUuISC+jW2cGoIL12/BWm86FHOgDZKFD AzfJcpqLmryBchQVJhQvEXbAP1AGSitvhRU61p+egNF8tOEd5dIrC/ZQHva8EtyU5J3x PQa0Z9WCgV2eBWZf5cKq645hngOt6GjsAyeOQfZRD7KkMHsQchF6mwbf+LFkD+4AunmW G4Co7CbXKr1O0lyB3uIOPzjfdSJ+6hfFDo0u32ZXqQcgO0ZzJwwUNyBHwGxKnXsMOMlX T7kiDvrpA+fdgK1ze5jFelKyFqx1hKswN3E37qLYcaKE2vSKG/xzzVu8fck+ckS0bot9 tWHQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978030; x=1779582830; 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=xnvL1dEdpYA1y9JJcxfkHku7n0bLCdQETh28Vu/3wxA=; b=jOBPDkvly2HeAGwnpOQGeVbD5tHUPfvR/VxBBcAroDg8WXWIRXC4Hp2c1EHS3mIdEp qqW7iu7TMlTvWLH9C+/G8xt/z3a2916aVLHktcf519dxP97xounhpF94Z+4mZt5A/Ln+ g7Ww4LgQHJ0MrRrZw9PPphyyC1Lhp5/uZQegG1hd2qIUM1N+sKYBLRPM9to54SqHUecI t0nOP0y6H2jhAqi0rFvm1r1NqoQpqvS6HWLuogOWujK4oNsKvXLovPD9HPcp+tYP5szR 6SWDHpoWS515geoXKUwQYhKwwMho2tqtIA8zMoD9v2CwSmPYvSWDM7t3ap9juXzaGX3O OvMg== X-Gm-Message-State: AOJu0YzekhYNWDg6ye8fe3Rc+kfrBGDqtb07E2XdznytophTRHZ6SyGg i9h94xTqP9zKjreAHJEnCz0AUJU/EsdfdK4Nsl7SysvYlDqmx97JHqxEeFdGVx/I3AyODEjjcuE Ne5GU X-Gm-Gg: Acq92OGe3N3L3fwAB8Ihfj13DOKH1SmfxEUsAV0eNL8+LPzME9CGw1eBdCN8WHcnZuu xNCFowNlFtUKCIcGMDQlkZbQi2M7VqM/pqNgvHyigUNpxChMSDSRm6RxMUZDLsNz2W/AuIjDqKs u4xP79Pp22rRzO23Wfe02Z8QjW6srvrUNj5KEXFbvR+T4ZlyQzDvjtmHWPPtKS4DQ8BhRPSxFV9 vbtNStkQc3goRP5ApV7GZGH5qcmnevLyIdJP8T1WL3Fo80Sz8vR94QoaWux0lS/1ejnYO5+XDfp NOstbb3IOyqRVdsMwVJgWx5t4sJ7w5+bTGP+Ivtm7km9r4eaRqrNBDdTlT4yzrU2iOX+jZrRLwf 1Jpnv9ezEs6i/KDiuqDu1sLEMrsSO9pONqdSuSGPMF8js8lEDBCAbQZUhdfvCZLdMKpTs5zbAio oG8R62/xNO27slwWwqe1zfx17AzSQ3 X-Received: by 2002:a05:6a21:3294:b0:3a2:d79c:415d with SMTP id adf61e73a8af0-3b22ebbf030mr11725403637.30.1778978030092; Sat, 16 May 2026 17:33:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 49/63] target/arm: Enable FEAT_FP8FMA, FEAT_SSVE_FP8FMA for -cpu max Date: Sat, 16 May 2026 17:29:48 -0700 Message-ID: <20260517003002.321430-50-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::533; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x533.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: 1778978277665158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 2 ++ docs/system/arm/emulation.rst | 2 ++ 2 files changed, 4 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 90214a355a..93cd7ee1a6 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1377,6 +1377,7 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64DFR0, t); =20 t =3D GET_IDREG(isar, ID_AA64SMFR0); + t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8FMA, 1); /* FEAT_SSVE_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, F32F32, 1); /* FEAT_SME */ t =3D FIELD_DP64(t, ID_AA64SMFR0, BI32I32, 1); /* FEAT_SME2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, B16F32, 1); /* FEAT_SME */ @@ -1395,6 +1396,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ SET_IDREG(isar, ID_AA64FPFR0, t); =20 diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 0dd6b554a0..a6b48f9c60 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -75,6 +75,7 @@ the following architecture extensions: - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) - FEAT_FP8 (FP8 convert instructions) +- FEAT_FP8FMA (FP8 multiply-accumulate to half-precision and single-precis= ion instructions) - FEAT_FPAC (Faulting on AUT* instructions) - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) - FEAT_FPACC_SPEC (Speculative behavior of combined pointer authentication= instructions) @@ -159,6 +160,7 @@ the following architecture extensions: - FEAT_SME_F64F64 (Double-precision floating-point outer product instructi= ons) - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) - FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) +- FEAT_SSVE_FP8FMA (SVE2 FP8 multiply-accumulate to half-precision and sin= gle-precision instructions in Streaming SVE mode) - FEAT_SVE (Scalable Vector Extension) - FEAT_SVE_AES (Scalable Vector AES instructions) - FEAT_SVE_B16B16 (Non-widening BFloat16 arithmetic for SVE2) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978115; cv=none; d=zohomail.com; s=zohoarc; b=Yeezp5hq/IXk+yIaibL+SDlC61tvedugxxjNGcOFmt7F/JV7cw2st/FS6pUv0Y3CYKr9XtZ3Ufr+Upee3YwhtrPJJ+1FQqQXfH1J1dspZjxtz30Olqo52tYUmy+9a1Mp1M5bnS4mZv9d5Skt29uTlWhm8po2wQzv11Z3bAz5cfM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978115; 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=bmELwAnByQEeI439a0swSNo+NMpoZJldekz9EGGtYUs=; b=dbKcOjvZQLMQyEU8PVbkOAlXbU+HgSOQESH7X86PHtxuniTUB3ZEpNqRRiE9qpDtSClFVpCuDGDqWeGPK+JpgVW00QjcPF/kiPWuN+EV5EecNtP3i7wrXusO48kyrtKgv6tn8QqPXYzJBKr7LzTQdiF2z6xZDTUw34YPWd6GkWo= 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 177897811520176.66700293476731; Sat, 16 May 2026 17:35:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSu-0000yT-5Q; Sat, 16 May 2026 20:34: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 1wOPS9-00071g-N3 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:01 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPS5-0006qA-QF for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:57 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-c8016d642b2so868744a12.0 for ; Sat, 16 May 2026 17:33:52 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978031; x=1779582831; 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=bmELwAnByQEeI439a0swSNo+NMpoZJldekz9EGGtYUs=; b=Z2QOaMCaUeSHoloffNl6SENeNErKyAkf8bB81SdbTUchUrkvuBUWBtWOM1+XybmNeJ Il1q1OWLoAuztzyYUPaMR6H5z1JENzuNrY4MyiX3c08CincqsOT/uhFFvQ3rDKohOzSk dlq+sKaY5aKVRtizoHpRs2E0prtHYyGzzjzLdr0Gx4DlNzleHkBQWfq6BParqdnK0DH2 fKDEJuqBety6G+2UIqDjFe32TD7Dw2hoKSbfSnuA6LfhXbbix4gvHong/O3ycEU3GjFX MDgG+7HQ1UuaB5D9DTm6K3221qVc/QpTLxPxP2DIOTb/db4e04kjcCds+8r7LAlifmhQ sX9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978031; x=1779582831; 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=bmELwAnByQEeI439a0swSNo+NMpoZJldekz9EGGtYUs=; b=ZdV6506BNIpyHLrwDJ63OZXaYMYx+0r53tVNLg/afJZ44wKQ/Gx9+wmod8KMDMwnjI ifX08aqnJ7876S4HfRAk8p+ZULSOa9Yxuw+xTabZUtJz1OjTOS4CthbgvH1oaEw6gI/p 0ajzAnMv7xDBge0pdSq0LQ6Ebc+3T3xeuQ8+k4WUVEE/LMc/aIVq928qM64NNM8kBxlu noL6B8W3rihNw1kMzZI+BxOWzpY5FoxUuKU+k0bQYnmuetxmmPNr7vjlVQStX1HZiZBr xiQdlm3M8ELOUY9iYjCRYrLBd/Dh6z2mBoX9X8WGaO8ypfjU1DZkT0GdVq1BbaRzOrK7 LXIA== X-Gm-Message-State: AOJu0YyGy30Z5Av3mhRKkB5TA5Slx3x8RIcT1oQ8FaESb/O+q8+tl10E aotY7jACSCldbLr1+KaLhqZN2gv4DGzkfLYNzrkZVxQOkf3WDRZmAROHZ9nQUqwCNjbLz+NI5QZ 0r1PS X-Gm-Gg: Acq92OGKf1HGxGv8ztUahNQQKrAbdDYpf32BWi93CtovJ+CVZQrI6cCRrC+sknx5REM zWpyCaZLXZb2fbeSrKBWo0Wbwe7vJGrik0UDu+1HHdfJUYmz9KAZ5Et1+MDaNpYcv8foLqeN8xZ 7r35ouAsy5A493aTsWsnjF1u+wWsox3vkw3LZIl9P+Eevn+8wBsyLK4RugvGp4KgSCZUW2RcHAJ EZqFUc2se4CLravT6F9M0tQtyyPWrl31EgmY6UNhTJ9liGsxbPFrkzTxkMwZ1KNxcELKWuhZ7Dt LhFSKejEnOmxh+c+w56jZmBeczz2ZtIV6kX5T8/Qhc9bfedi+5XQygHsvjGVAC9Fq26fLGFLCma FJKQ6EJItC1klDKEVm6Nfie3WQQL+T5xTj21kOxN5iTWiJu9CxU33ZMQUveCB5Fo2MO12W/H2/W CLr+VAygtZine0XRlGCA+QBpzfuCa5 X-Received: by 2002:a17:90b:134b:b0:35f:bb17:39f with SMTP id 98e67ed59e1d1-36923318fc5mr11806647a91.1.1778978031087; Sat, 16 May 2026 17:33:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 50/63] target/arm: Implement FDOT (FP8 to FP32) for AdvSIMD Date: Sat, 16 May 2026 17:29:49 -0700 Message-ID: <20260517003002.321430-51-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.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: 1778978117076158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-fp8-defs.h | 3 +++ target/arm/tcg/fp8_helper.c | 41 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 30 +++++++++++++++++++++++ target/arm/tcg/a64.decode | 4 ++++ 5 files changed, 83 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index c0b646415c..fbce0386ef 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1600,6 +1600,11 @@ static inline bool isar_feature_aa64_f8fma(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8FMA); } =20 +static inline bool isar_feature_aa64_f8dp4(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP4); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 802a3b430e..ee6f2e9236 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -29,3 +29,6 @@ DEF_HELPER_FLAGS_5(gvec_fmla_idx_hb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_5(gvec_fmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fmla_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fdot_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fdot_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index de31903129..c54a066b30 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -741,3 +741,44 @@ void HELPER(gvec_fmla_idx_sb)(void *vd, void *vn, void= *vm, fp8_mul_finish(env, &ctx); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fdot_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float32 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + d[i] =3D f8dotadd_s(n[i], m[i], 4, d[i], &ctx); + } + + fp8_mul_finish(env, &ctx); + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fdot_idx_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t idx =3D simd_data(desc); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float32 *d =3D vd; + size_t i =3D 0; + + do { + uint32_t e1 =3D m[i + H4(idx)]; + do { + d[i] =3D f8dotadd_s(n[i], e1, 4, d[i], &ctx); + } while (++i % 4 !=3D 0); + } while (i < nelem); + + fp8_mul_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 946c16d439..8ea63e94fe 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7403,6 +7403,36 @@ TRANS_FEAT(FMLAL_hb_vi, aa64_f8fma, do_fmla_fp8, a, = gen_helper_gvec_fmla_idx_hb) TRANS_FEAT(FMLALL_sb_v, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_s= b) TRANS_FEAT(FMLALL_sb_vi, aa64_f8fma, do_fmla_fp8, a, gen_helper_gvec_fmla_= idx_sb) =20 +static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, a->q ? 16 : 8, vec_full_reg_size(s), + 0, fn); + } + return true; +} + +TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) + +static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && fp_access_check(s)) { + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, a->q ? 16 : 8, vec_full_reg_size(s), + a->idx, fn); + } + return true; +} + +TRANS_FEAT(FDOT_sb_vi, aa64_f8dp4, do_f8dot_idx, a, gen_helper_gvec_fdot_i= dx_sb) + static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) { diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index ef6d7dfeaa..d78a3d5486 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1213,6 +1213,8 @@ FMLAL_hb_v 0 idxn:1 00 1110 110 rm:5 11111 1 rn:= 5 rd:5 \ FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ &rxx idxm=3D0 idxn=3D%fmlall_idxn =20 +FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ..... @qrrr_s + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h @@ -1337,6 +1339,8 @@ FMLAL_hb_vi 0 idxn:1 00 1111 11 ... rm:3 0000 . 0= rn:5 rd:5 \ FMLALL_sb_vi 0 . 10 1111 0 . ... rm:3 1000 . 0 rn:5 rd:5 \ &rxx idxm=3D%hlm4 idxn=3D%fmlall_idxn =20 +FDOT_sb_vi 0.00 1111 00 . ..... 0000 . 0 ..... ..... @qrrx_s + # Floating-point conditional select =20 FCSEL 0001 1110 .. 1 rm:5 cond:4 11 rn:5 rd:5 esz=3D%esz_hsd --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978172; cv=none; d=zohomail.com; s=zohoarc; b=ZxRWMegY9Yg9MXPTwhaEs/fI6wjEEeEBrNMTlGKPZZW9NVZHZ9DWJtCc5vZOfYbjBFqxiVX0nUrtFMtAXWOEFtDwOlUAjtQe0qpCGpdSsBH9Z3J04+NA/+a6shZt6TQOkL7ZUr0xdJx9wJs5BYNPNsQJCZCB0GoI30I4TLv1SNo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978172; 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=7JulMb7JBgH2EgAoTHRzYHxSimKKsWGbaNst37ZkVAE=; b=P+je5qhjyY0T5280Lw1bc4X/fkB9I10/iLh6SWWrJWMlZA0l5Nx7YvWqaMyLZ798gL5M0SVv88zqfULrL14GyrZfv1+GwHyLzXaxWv9lFRbyLkOpsWEuoGMtcFgSRVAZRqrf0GJuT0gU7Fx6pZimQjD/opDCbBYhivnkZKIx6Ew= 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 1778978172346836.007645122082; Sat, 16 May 2026 17:36:12 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSy-0001Wf-5x; Sat, 16 May 2026 20:34: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 1wOPS9-00071f-NA for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:01 -0400 Received: from mail-pf1-x42f.google.com ([2607:f8b0:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPS5-0006qS-Qz for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:56 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-82748257f5fso1283658b3a.1 for ; Sat, 16 May 2026 17:33:53 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978032; x=1779582832; 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=7JulMb7JBgH2EgAoTHRzYHxSimKKsWGbaNst37ZkVAE=; b=MBveLbrIbXv50/ykQz0TdiuxzpO7NxPh3jOYbN2SGmRKJGJgV3OPu6z5KrtcB+OZxT qg3sJN8kOgkxbk0fU+MKYIgaxQjKyBTS3xHxZnI6kLrxf5jUO0prRaVyrYwXHCwFGWnj MEXVcvxTMTX8xjBjoKJfK2wSWrSO6RZzI4EGsQxVTQvTraVUoHkDuNZ8vRk8thKzRKVR O8IAYR/ZHOTksH1aPbJtdq765mn8DF2aftwAc488YfTyEzLWP8nB9Mj53zNBWUG8DQD1 ydJFtK8ZBysCKFTPeDhc3/6k3bZA3sKd33KbZJT/bt80qPvp6ZZ6A/AD77R7nEi+Crnb s13w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978032; x=1779582832; 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=7JulMb7JBgH2EgAoTHRzYHxSimKKsWGbaNst37ZkVAE=; b=oRjT9SX1PExGQ3NyTTedHM3TQBCMVlt4n02MHW80PFBopyQJeBNC8V5qiYNIcWDr0S 0sMmTabZAeSyQXTcUH9+m6bYNTLTDIDIKVHrdc/YFsb4SS4nLXBPBWQFHlIR28J8odaI k2ySMHXRTqm59kk2fPMXk4BZTGgKPuf99nKD5JtOdXZrYeVlfNaQvt23I9AbHNRGyh1D Dg9KlFhGxGDEimbeBy81DSLYKdvAimKYJL7u58UH+WZrJa1K4HLl/EhGuc2W2Z1e2tTY MBi1lQakfH1iPXEXN3G4mysoBGrGWJi7GFkOQLXoIjePvyLWBY2YC4LCj1E3S4C8Coa6 FFmA== X-Gm-Message-State: AOJu0YwWtLZC9k2csDrH21rVN3C19x9JR5uEfO8I1E4F6NhnqwVC10Ow J2xOHsyUscNBI1zu+YMLUkHk+Fx0/zjfu6TrljzbpRiZSucKcUe1006EzJLrMme2oNNddW5fRXi cxwGT X-Gm-Gg: Acq92OGt7CsljlrXULVPFfhEto+54xJwDfboYwCxscDtArQSsckdXq7AQKZnuMD6Np7 04OMieq0VdbUTcUhrZtntBAd0KpjchW4t+u32eDoDXgrU65NaAhAd+NL/wuo+7jF7nXN//NoxXj 8FyGQuVSDZ817r1xXXM2/dZb8q/kyiZpG6TQlRAvTU0wrTjQVWYXUJSRA/ujWJsFHF23aldoyJP 8iBt1Fdr4QaWeBSVBZUNSZZBVppbBXrS7QNyRNsPH6wgcwsYvNjSH4dS7eefohqEDZXi/1ogrd1 fxt8csGAt0z8qHRbIJDZKsKCf6g9Cq5Kg8OigEjK/TiJrGw80Y6SlhOkRrWjadwXT/olmA2jaTX kZiTo/RtALwfRbS+gB1qMxD9Z+yOPNusMZuqtUKGFrcsUjLtUQm4A7wSWJC33YrsGX4bwJI6LTI 1LA1G89Iml/MbxxybRlBtQJAckcOaK X-Received: by 2002:a05:6a20:7f92:b0:3a2:ce0a:a629 with SMTP id adf61e73a8af0-3b0be709b97mr13918809637.12.1778978032066; Sat, 16 May 2026 17:33:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 51/63] target/arm: Implement FDOT (FP8 to FP32) for SVE Date: Sat, 16 May 2026 17:29:50 -0700 Message-ID: <20260517003002.321430-52-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42f; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1778978173264158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 35 ++++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 4 ++++ 3 files changed, 44 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index fbce0386ef..17d6acc14d 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1550,6 +1550,11 @@ static inline bool isar_feature_aa64_ssve_f8fma(cons= t ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8FMA); } =20 +static inline bool isar_feature_aa64_ssve_f8dp4(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8DP4); +} + static inline bool isar_feature_aa64_sme_b16b16(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, B16B16); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index e23ca43f55..88e6148b83 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8372,3 +8372,38 @@ TRANS(FMLAL_idx_hb, do_fmla_fp8, a, gen_helper_gvec_= fmla_idx_hb) =20 TRANS(FMLALL_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_sb) TRANS(FMLALL_idx_sb, do_fmla_fp8, a, gen_helper_gvec_fmla_idx_sb) + +static bool do_f8dp4(DisasContext *s, gen_helper_gvec_3_ptr *fn, + int rd, int rn, int rm, int index) +{ + bool fp8dp4 =3D dc_isar_feature(aa64_f8dp4, s); + bool ssve_fp8dp4 =3D dc_isar_feature(aa64_ssve_f8dp4, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8dp4 || (fp8dp4 && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8dp4) { + s->is_nonstreaming =3D !ssve_fp8dp4; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), + tcg_env, vsz, vsz, + index, fn); + } + return true; +} + +TRANS(FDOT_sb, do_f8dp4, gen_helper_gvec_fdot_sb, a->rd, a->rn, a->rm, 0) +TRANS(FDOT_idx_sb, do_f8dp4, gen_helper_gvec_fdot_idx_sb, + a->rd, a->rn, a->rm, a->index) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 06bbd7fa63..c49e992f10 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1874,6 +1874,8 @@ FMLALL_sb 01100100 00 1 rm:5 10 idxn:2 10 rn:5= rd:5 &rxx idxm=3D0 FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 =20 +FDOT_sb 01100100 01 1 ..... 10 0 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D2 + ### SVE2 floating-point multiply-add long (indexed) =20 FMLALB_zzxw 01100100 10 1 ..... 0100.0 ..... ..... @rrxr_3a esz=3D2 @@ -1897,6 +1899,8 @@ FMLALL_idx_sb 01100100 idxn:2 1 .. rm:3 1100 .. rn= :5 rd:5 \ FDOT_zzxz 01100100 00 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 BFDOT_zzxz 01100100 01 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 =20 +FDOT_idx_sb 01100100 01 1 ..... 010001 ..... ..... @rrxr_2 esz=3D2 + ### SVE broadcast predicate element =20 &psel esz pd pn pm rv imm --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978147; cv=none; d=zohomail.com; s=zohoarc; b=FrIhz1v9vh97lUTGbCMLZFiEePtysYt5/n6PfAP3i9eFfhXM3kDwGRwTpyO6QQcEqV5s4n5HNHl/o00J+nKpbW0xiqwQHgN71PJuyWzVuXyRPhX7CC3r23uHK2eeyS1hiBasE8V2kVoQS9mUTd8BWsNl7XNvfzm0ZG6nWeuyvv8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978147; 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=WfvM4tnhG/6BVEOEoQSi0TAhQsUGcLPgZYrpPCn+HNY=; b=BYb+HS8OZofibkdIERjlfmWNgs1mK8JBH8u+JK62AszxS/hIP/eXH2O7sjdeXmgNPoiMpe64eSqvj4nEQrhjiJetSthWOl+WmAtKcfvfq0jQaOQu8XnF+wLdNBcoK73MCcHws9pVrh+iJXz5SJ2onSv2Tlggf3j67EK8kGfS/5M= 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 1778978147353735.5455113956889; Sat, 16 May 2026 17:35:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSy-0001cH-Kx; Sat, 16 May 2026 20:34: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 1wOPSD-00077N-Ih for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:10 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPS7-0006qb-Jy for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:58 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-c80227b1f6cso341341a12.1 for ; Sat, 16 May 2026 17:33:53 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978033; x=1779582833; 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=WfvM4tnhG/6BVEOEoQSi0TAhQsUGcLPgZYrpPCn+HNY=; b=I6SRxWouj1qVDUhi884po4nT6XBONZze0strDFJvCtvDeyHq7Q3NrCxxq6+tWhthkw KvQOy2NaXCWYnJvDh/O2mbIRwW7mhhmpkOw1j9VmufOC0/rVU8QJUN4+UlS5UmLlBkcW VN75RwvuxIB919yPNvX1/DidP1K80Ctnv7dBKNKQA18aAo9PXMDgULD1/uFhCKxiIXYt VQZ7xPvk7Vam1/RijlyqZAjYWauxJnGKPlKZYmiP1ndHOfKU+GLB3wUK1KsBuww2BmkL eWIwKmC93ObjlRMFWXSHFQcWRJQ1Ygn28Toch4Dq3W8EB07m51a0rRfHpRRsGSIfEtkB jGTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978033; x=1779582833; 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=WfvM4tnhG/6BVEOEoQSi0TAhQsUGcLPgZYrpPCn+HNY=; b=szD8a7zeBTN5HeGT3Xcl6kbPmyTvAgMsWFHL7a4dRXfA4U7xNHDqPmsDwPDEl4eCTU GL4X6aGgLKPb2tXRtB6/Js3+BnS2iSFsHJ0/9DFBVh8XDi2kYPo95UxUsgcsRxg4hFY8 akIv15ME5Za8GRjPdVFSGuLk+JroXy1u2SONT6hcw3IMnWX9LAOO6tXU2Vw3/IYN9eAB TcrbYUpTlmBF9pNiMmnBE177JEqn+EaJDAwQZE1edzY8WhYSpUHLrpVixhkxa3nNmNBm heT+JKsIPTrqZbCpB8azAkUgHISMAsTO4ucW0FMTzRPYEKNNkeMEN9T7TkmG+WFSWTRk 4nMw== X-Gm-Message-State: AOJu0YzskBwDDeTF3oLllzLk24BhquHLCxa2WsmZIyPn4RWpnU1sTCag VnT4dI2Diki/oCEM0eEI/KhNSuNlUmN5T5FUJrfNQL9VdhoS5tc9QoyuS/3+0IXireHOfXCDtuY mFroS X-Gm-Gg: Acq92OF1sHR9XFRP3URwUKhNVroUvt22rYiotIql9LS7wNLeprxMC/PNszf75hdFnAW tMejO0IyimV+D73wON4J/TTghaWorrXVKGfoxCPTYa+i68J2BlqOO+ghHF834U6WiAtGFOMhJJg EmGhBdd0P0zjUYzbJ0/qq/BRyDXftoxWi2KM21be98t0ny7witWojy0JX0bAGVqo3ursaJufcdL h1SDhlvzWCUpEmSpY4YQuDls/Do9itksIyGVwTor3aU6RNn6RI5W2alcfquO80ncJsWBPTHkX+d huq/3uaEKkwDqa33UsZ80ykNKJKi2s0eLhMWAvNCOXrpF0UBVW/q/9jpJ3GiaSQrXTQSrZYbfDE VPw+CXEoy16FH705R3MzGxa5R//4IjK7WqCFw6mgGoCSlGtUtHp1SQTDHVpqzP7Jkklhe1GT3TN 56qZ14Qw9qhWjuebqNG81RQMh2CPVz X-Received: by 2002:a05:6a20:e293:b0:39f:441:493c with SMTP id adf61e73a8af0-3b22ebed7f6mr10704778637.30.1778978032846; Sat, 16 May 2026 17:33:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 52/63] target/arm: Enable FEAT_FP8DOT4, FEAT_SSVE_FP8DOT4 for -cpu max Date: Sat, 16 May 2026 17:29:51 -0700 Message-ID: <20260517003002.321430-53-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.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: 1778978149183158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 2 ++ docs/system/arm/emulation.rst | 2 ++ 2 files changed, 4 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 93cd7ee1a6..6dec7e045d 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1377,6 +1377,7 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64DFR0, t); =20 t =3D GET_IDREG(isar, ID_AA64SMFR0); + t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP4, 1); /* FEAT_SSVE_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8FMA, 1); /* FEAT_SSVE_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, F32F32, 1); /* FEAT_SME */ t =3D FIELD_DP64(t, ID_AA64SMFR0, BI32I32, 1); /* FEAT_SME2 */ @@ -1396,6 +1397,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ SET_IDREG(isar, ID_AA64FPFR0, t); diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index a6b48f9c60..bee4e36dc6 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -75,6 +75,7 @@ the following architecture extensions: - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) - FEAT_FP8 (FP8 convert instructions) +- FEAT_FP8DOT4 (FP8 4-way dot product to single-precision instructions) - FEAT_FP8FMA (FP8 multiply-accumulate to half-precision and single-precis= ion instructions) - FEAT_FPAC (Faulting on AUT* instructions) - FEAT_FPACCOMBINE (Faulting on combined pointer authentication instructio= ns) @@ -160,6 +161,7 @@ the following architecture extensions: - FEAT_SME_F64F64 (Double-precision floating-point outer product instructi= ons) - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) - FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) +- FEAT_SSVE_FP8DOT4 (SVE2 FP8 4-way dot product to single-precision instru= ctions in Streaming SVE mode) - FEAT_SSVE_FP8FMA (SVE2 FP8 multiply-accumulate to half-precision and sin= gle-precision instructions in Streaming SVE mode) - FEAT_SVE (Scalable Vector Extension) - FEAT_SVE_AES (Scalable Vector AES instructions) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978092; cv=none; d=zohomail.com; s=zohoarc; b=isT2PUw6V4qOItOV/pXPKNNdAWMVppjESErTQMX5D2ltwTL8ASYic6QjYpRHcJgRYqFIo4aW1mQoSA50DPhgkAS5kPwHe6hpF+0kXanQjCwzAq4Isw5DpQPsHD6s+hkViEpbNWXeetROENUYMzl3L7y/S4I7koPvvcpLJ1jcvVc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978092; 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=ZmYcixsE9fFRDHnLmbIPkr+l+gClGb8ndXVyGs3CEgQ=; b=Nbv0tjxK+FoV1jV6XyGK32zjtXXsnkxeGdIEYy6zi1+Xz7xSX0MUMlA2owfWxBm9Scv7mP6N2sWuTHcO3XZJGt1KNBnFh7J+32OkNo0O4BaZNyjeqNtXXjlXx9XO34wDFaJR+xUksBXh+DWjKiVAJonAFW7GFWktW5I1xY0BzX0= 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 1778978092941670.3001839512473; Sat, 16 May 2026 17:34:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSk-00088D-75; Sat, 16 May 2026 20:34:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPSD-00077Q-Iz for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:10 -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 1wOPS7-0006qv-Kb for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:59 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-36974220e45so291486a91.0 for ; Sat, 16 May 2026 17:33:55 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978034; x=1779582834; 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=ZmYcixsE9fFRDHnLmbIPkr+l+gClGb8ndXVyGs3CEgQ=; b=mkOw2DDVs5ywgyZFcMKMWZz7KQl3TNnjfmFgGITyTtJYxMZN5pxVm8XyNyrIkZ8CLR KDZp10rskEdUkODd/v7i2wUmzdvgSax3juQr4PE1IZAaGLBJS6WOLiH9l05TqXZ2jPgk 9W6D1mNBiXzScUZkBfzFEphqsQK3CYv/st3Vtxgcmd5L7120SeRTULe7YSGInSOcykrB hTVIovh48WAHeY549OX+7L9r7Nt26PH44aDZRjxVuXFSuAplsu7P/P4WN4QKYtPV7poZ mL35VjGjPE0kXI5IJBtP9e7J/LVdYV7uTe8M6mac6wYks4FhpoEr2fUTBzM/AUaNl0mA It4w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978034; x=1779582834; 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=ZmYcixsE9fFRDHnLmbIPkr+l+gClGb8ndXVyGs3CEgQ=; b=DRvt+UW15AjKTKKdVXlhPDbdH0Fk4SuGIpy9p2+3UMrtkMKNFF21vLwz+e59j+7ow5 D6xNbdve26srj+ky+xs7Rj/6YJ2j/Suvkg9nqCSZRWswOab/f5aZoCVpq/yunUt1D9Z3 xa/x+h4EmtEiUeGvZAqPiFqg+JjCuhSFLuirNTxN3D0RZkSQ7FFDVsphzS3Z4uM13QUO loG6ob9eiJr0+Iylf3cIIj8nACPEQPgBDLtJAukdpMt7ECj2UMsKbjAKIxJZTbqwSEn1 O5rGOGRM4kpJ2gX2F73RfxNBxXxaOB+4ukOtJCFeBxQOq/xPe2OKkD90LscDyY00wmF4 kXQA== X-Gm-Message-State: AOJu0YysBy3x5WD+nLLcprbuRjfJRFPbmm5SB1gySms5PHyv94wXt/fF qym/rnsIIvCI5jccqOMKzidhCccmWSooLjeoS9k+TfJRsLWjDjXsT8iTMbCcg5T5PRM4+iDQiK8 Axeoz X-Gm-Gg: Acq92OH8IlIJP7lfXEs//RM9yH/dF8nhjw6PQDYsXGMlEbs1IyglnNjOEtZUQ9boDwk GUE4YbvVTWQGRqm/xPoaxWs5dra5ADRIh2gmjjAFS6TrU0eVumY55m29ngAsBsbWDVubudj6sjw 6iq+zDROd//K1hlZ4ATu3iHddY/VyAuqqofx9avrv3mgZiuoXjK1wsRyG/M4iX6frcWczOLjDAz wPz4/rI91NDfQ+naSi+fpZb+Pf1AaE/m/zoBcGT3e6aXJ3Er4ENUH/Yz8ESVKAvVchVY5nJg2MT jdBU4XebqLD4kuHTlVoe3xmOL6yIvxBJ9VxQpCFs4OOkpJon8Hh0BCOV70qhoIt7ATj1fUYQobc E6ah+rRdJomWYFqdBH8U0hkbiaRiKGYGwLVmr54NDX8WSVxzQJDO6D5gUoL/m1TNE1eU5Or5VXl AWyVYQAE3tw//I/fh/J7seiBhHQ19y X-Received: by 2002:a17:90a:d40b:b0:368:4942:50c4 with SMTP id 98e67ed59e1d1-3692363eecamr11943510a91.17.1778978033917; Sat, 16 May 2026 17:33:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 53/63] target/arm: Implement FDOT (FP8 to FP16) for AdvSIMD Date: Sat, 16 May 2026 17:29:52 -0700 Message-ID: <20260517003002.321430-54-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978094976158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-fp8-defs.h | 3 +++ target/arm/tcg/fp8_helper.c | 41 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 2 ++ target/arm/tcg/a64.decode | 2 ++ 5 files changed, 53 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 17d6acc14d..7bedc293fd 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1610,6 +1610,11 @@ static inline bool isar_feature_aa64_f8dp4(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP4); } =20 +static inline bool isar_feature_aa64_f8dp2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP2); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index ee6f2e9236..5995d77577 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -32,3 +32,6 @@ DEF_HELPER_FLAGS_5(gvec_fmla_idx_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_5(gvec_fdot_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fdot_idx_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fdot_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_5(gvec_fdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index c54a066b30..913c91fa06 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -782,3 +782,44 @@ void HELPER(gvec_fdot_idx_sb)(void *vd, void *vn, void= *vm, fp8_mul_finish(env, &ctx); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fdot_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint16_t *n =3D vn; + uint16_t *m =3D vm; + float16 *d =3D vd; + + for (size_t i =3D 0; i < nelem; i++) { + d[i] =3D f8dotadd_h(n[i], m[i], 2, d[i], &ctx); + } + + fp8_mul_finish(env, &ctx); + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fdot_idx_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + size_t idx =3D simd_data(desc); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + uint16_t *n =3D vn; + uint16_t *m =3D vm; + float16 *d =3D vd; + size_t i =3D 0; + + do { + uint16_t e1 =3D m[i + H2(idx)]; + do { + d[i] =3D f8dotadd_h(n[i], e1, 2, d[i], &ctx); + } while (++i % 8 !=3D 0); + } while (i < nelem); + + fp8_mul_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 8ea63e94fe..c5ea6b27a9 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7417,6 +7417,7 @@ static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, } =20 TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) +TRANS_FEAT(FDOT_hb_v, aa64_f8dp2, do_f8dot, a, gen_helper_gvec_fdot_hb) =20 static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3_ptr *fn) @@ -7432,6 +7433,7 @@ static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e = *a, } =20 TRANS_FEAT(FDOT_sb_vi, aa64_f8dp4, do_f8dot_idx, a, gen_helper_gvec_fdot_i= dx_sb) +TRANS_FEAT(FDOT_hb_vi, aa64_f8dp2, do_f8dot_idx, a, gen_helper_gvec_fdot_i= dx_hb) =20 static bool do_int3_vector_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3 * const fns[2]) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index d78a3d5486..d1254355b6 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1214,6 +1214,7 @@ FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ &rxx idxm=3D0 idxn=3D%fmlall_idxn =20 FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ..... @qrrr_s +FDOT_hb_v 0.00 1110 010 ..... 11111 1 ..... ..... @qrrr_h =20 ### Advanced SIMD scalar x indexed element =20 @@ -1340,6 +1341,7 @@ FMLALL_sb_vi 0 . 10 1111 0 . ... rm:3 1000 . 0 rn:= 5 rd:5 \ &rxx idxm=3D%hlm4 idxn=3D%fmlall_idxn =20 FDOT_sb_vi 0.00 1111 00 . ..... 0000 . 0 ..... ..... @qrrx_s +FDOT_hb_vi 0.00 1111 01 .. .... 0000 . 0 ..... ..... @qrrx_h =20 # Floating-point conditional select =20 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978151; cv=none; d=zohomail.com; s=zohoarc; b=ihqtzC6x+v5db2jNqN3nN6sFIwSLC4tI1Rz9iiY/IRLB8uihoDMd6mGZ45yIfpDhGXq+tsUoinsanPB6odn7VPPrRSKyPyV5DjkDnIhbOCarlac8yGm9e93njIx63CQK8RGEPq9KXiZbLak1HcEqcvnKxncLRB6739qs1EjC7BE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978151; 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=sODePEuBtD1IMu2N8xv9dK23f4fUAur2uaNFWSg4sSI=; b=RtRfqizMgtwXOw6/7kYOm252oj8Llxaw9vbNaTpfPS8vEd9v/XkL6hnUdsvuL9qpP99dWu7W4j27rjcnWQNbm8CT4tebKWj0PlNLMrgi2vGWA6F4GLFlrImq7v3v7/VznMsRj2523cGHqnKfjkiRxW9vj9xSbSbpxN3bOeielR8= 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 1778978151044159.08193964810857; Sat, 16 May 2026 17:35:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSz-0001m8-Q2; Sat, 16 May 2026 20:34: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 1wOPSD-00077O-J0 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:10 -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 1wOPS8-0006r5-Dg for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:59 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-c8025500cc7so780773a12.1 for ; Sat, 16 May 2026 17:33:56 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978035; x=1779582835; 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=sODePEuBtD1IMu2N8xv9dK23f4fUAur2uaNFWSg4sSI=; b=aqkOgbPB4WNquwMisISfwv0Wdx+wrMqlSeiMlV+T+vBD3H+e0Y4TwrlbB85WIUi+in QF+XlICVKaQIZcO1/nQZWYQjJQQXhTfar0dqz5TRjmulETPLqB9L0kctQs+59cWIrPoi nOTXvImtX6wZ/juEpJwTcp58lqJoHHo2JYFZAEwDQq8A5vltlxW7i+IfsCA6SmgwNqpG 8FTs/qaxifOBozpDMNjwIi9bAhF5bgnSpavIsjAlPJlJ2urtDmocq1mJdykqgCP1F3x9 jwhDzvUP6KIS6PyaAM3g7mIcFylW0xF6u/eQ6SFsAzvFAykwt/cMkP9SZUYpHIeDi65P 1p4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978035; x=1779582835; 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=sODePEuBtD1IMu2N8xv9dK23f4fUAur2uaNFWSg4sSI=; b=Xt8pALu9+l/X5uG/R51bQo1KdGJUJHKdkE5S0ZTI2uu/oNxfHuMeyRDwD1/7WZILO7 cSMrLVxfXV8B9vukjZJ4SGXo2Y8qi1R0zIH6tCFG+aV8eE54c2nXnIz1KCwv2Vz7kLxN W1BFLwz6EeH7rWgzO6/WPircQ2M/MmKBEiFCHZjvMtPaqcgA5rqHdSO+agCabAOBoRL9 ZEAcpB76pnXzw7Gnm3ivpAl+PoAZXzuR9UTfysz6T8k7I6hRvIIFWZ82GdrADc0tmid6 3FiPqH8nM/f0DcRt2E/0NEfF7gNpkPHCXT3hQ98lk7f4/DD9pYx1OXb9pyJBKwIHr0iN ZnDw== X-Gm-Message-State: AOJu0YyjrFuGQDuzQPdgRJSTuLm+tzzSP0XgpP73gGKgzYhMfcQsowXN i6yH7f60BQDEgw7MuQAgDXInQZ6okY46QVzcdqFvlOJD1rw4j9cKzQXZa45kFcL0gsdDBTqApY+ 58+yi X-Gm-Gg: Acq92OFAmekZ16UMpxH9uiifZHxhW97YW6J9RBA/dWoWIgwXut6rlZ8CrOXUlyo7Bn5 JBPnr9vgVK0NocGGcwFTdAess/5rXHu4PmWT2r0kxrN4R9WbcDNdloMqLqGkvvvI8AD7Fyhi3X8 untcXJYCc7rxnWwmaBjVxbSo6HxAIqqbabKw/iU5vwk1RF9gy15/gq9F6QYIoFdaZaHBkFRxotS U5a2rQnIV1LwwrRRCMUWR7jpgqFmbaD46JaGMspVrrLHPEOoik6D23nWN6qc2S+QNqsBFD8Wgty uxfRyHI1V0ovqWh8PYY4vwxqhcc9BTjpqXT5Q1wCecUENM0L8c1ZDzSVTI72dDkwMXM6vxJ3g9O PepXks1Wp5cyGaQpDxbvJROclx07PRhHC7iwFOVDyKxS9ckpxfQmib7gb42p21hH86cLx189izE DT0+TTyFqnVEXp87DGrsZUDrQN7zba X-Received: by 2002:a05:6a20:2451:b0:3a8:21e0:1ffa with SMTP id adf61e73a8af0-3b22ebde1a4mr10812784637.27.1778978035030; Sat, 16 May 2026 17:33:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 54/63] target/arm: Implement FDOT (FP8 to FP16) for SVE Date: Sat, 16 May 2026 17:29:53 -0700 Message-ID: <20260517003002.321430-55-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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: 1778978151204158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 35 ++++++++++++++++++++++++++++++++++ target/arm/tcg/sve.decode | 2 ++ 3 files changed, 42 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 7bedc293fd..90098c3cbe 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1555,6 +1555,11 @@ static inline bool isar_feature_aa64_ssve_f8dp4(cons= t ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8DP4); } =20 +static inline bool isar_feature_aa64_ssve_f8dp2(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SF8DP2); +} + static inline bool isar_feature_aa64_sme_b16b16(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, B16B16); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 88e6148b83..8d622f9a1c 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8407,3 +8407,38 @@ static bool do_f8dp4(DisasContext *s, gen_helper_gve= c_3_ptr *fn, TRANS(FDOT_sb, do_f8dp4, gen_helper_gvec_fdot_sb, a->rd, a->rn, a->rm, 0) TRANS(FDOT_idx_sb, do_f8dp4, gen_helper_gvec_fdot_idx_sb, a->rd, a->rn, a->rm, a->index) + +static bool do_f8dp2(DisasContext *s, gen_helper_gvec_3_ptr *fn, + int rd, int rn, int rm, int index) +{ + bool fp8dp2 =3D dc_isar_feature(aa64_f8dp2, s); + bool ssve_fp8dp2 =3D dc_isar_feature(aa64_ssve_f8dp2, s); + bool ok =3D false; + + /* Feature detection and enabling are complex here. */ + if (!(ssve_fp8dp2 || (fp8dp2 && dc_isar_feature(aa64_sve2, s)))) { + return false; + } + if (fpmr_access_check(s)) { + if (fp8dp2) { + s->is_nonstreaming =3D !ssve_fp8dp2; + ok =3D sve_access_check(s); + } else { + ok =3D sme_sm_enabled_check(s); + } + } + + if (ok) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, rd), + vec_full_reg_offset(s, rn), + vec_full_reg_offset(s, rm), + tcg_env, vsz, vsz, + index, fn); + } + return true; +} + +TRANS(FDOT_hb, do_f8dp2, gen_helper_gvec_fdot_hb, a->rd, a->rn, a->rm, 0) +TRANS(FDOT_idx_hb, do_f8dp2, gen_helper_gvec_fdot_idx_hb, + a->rd, a->rn, a->rm, a->index) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index c49e992f10..26b3c7697a 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1875,6 +1875,7 @@ FDOT_zzzz 01100100 00 1 ..... 10 0 00 0 ..... .= .... @rda_rn_rm_ex esz=3D2 BFDOT_zzzz 01100100 01 1 ..... 10 0 00 0 ..... ..... @rda_rn_rm_ex e= sz=3D2 =20 FDOT_sb 01100100 01 1 ..... 10 0 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D2 +FDOT_hb 01100100 00 1 ..... 10 0 00 1 ..... ..... @rda_rn_rm_ex e= sz=3D1 =20 ### SVE2 floating-point multiply-add long (indexed) =20 @@ -1900,6 +1901,7 @@ FDOT_zzxz 01100100 00 1 ..... 010000 ..... ....= . @rrxr_2 esz=3D2 BFDOT_zzxz 01100100 01 1 ..... 010000 ..... ..... @rrxr_2 esz=3D2 =20 FDOT_idx_sb 01100100 01 1 ..... 010001 ..... ..... @rrxr_2 esz=3D2 +FDOT_idx_hb 01100100 00 1 ..... 0100.1 ..... ..... @rrx_3a esz=3D1 =20 ### SVE broadcast predicate element =20 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978231; cv=none; d=zohomail.com; s=zohoarc; b=QO86hpx4yBkzgC/XuopWzRruvLl/aFZGizsVmUvC9IKolXeUMw9SwCOkR9AoYnd+drsQFzCeP8NHWkMRYOxz3Z7RgNoAhJEgIHHefwAsSbjrGxSQEzBnqAM55RdISO8W2AGEI8ArEHyZzJqKoRzrKr619Rjw+o1qo6LgfF0h8lM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978231; 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=mgEG0/OuigOMwClChXrRoaFDD6e1qpvZV0h5+lZSYqk=; b=QFs69a0OaDFYfWeYwh5mIgVpoRj2Y9S8UwU52Jo7G1KZidOyQPuK+3zmI786l8EWpfIPyI6BvsMOdJHxUfdA+woAfGJmRYKvy+deO+eu6yLUzjc1ebHFUN4CPA02YP6xUFiMvkOMk/jC1dHHZHKJ6BgE1HxSr5j7frVR94uCrTs= 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 1778978231352219.4601970738721; Sat, 16 May 2026 17:37:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSn-0008TS-EE; Sat, 16 May 2026 20:34:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPSD-00077P-JY for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:10 -0400 Received: from mail-pg1-x535.google.com ([2607:f8b0:4864:20::535]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPS9-0006rL-E0 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:33:59 -0400 Received: by mail-pg1-x535.google.com with SMTP id 41be03b00d2f7-c802803ac17so396125a12.1 for ; Sat, 16 May 2026 17:33:56 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978036; x=1779582836; 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=mgEG0/OuigOMwClChXrRoaFDD6e1qpvZV0h5+lZSYqk=; b=F143ZbtK8N41FeX/AFv2QiUYa1keMqblQk2X0ohapQs658zJuX7AB85sEA8em9VBxj 5wgwKzlH7WnlcsvhfDmey97xbP8SD3cGRuV9d5IZYXB/hP7Bll+7mfB9y2YdfYBnKZJe UHD9WXUXhQXfesL+Ijw1Dp8Fu0uFRbdX0TQpZC2WEz+6gmz3kow1/o34uZ40Gqw4fchK NZBe8fvfY61WwfG2vFTaGo661sTxnsOYA72KgLW/cFdPWdopETh5BDBsVSxWgbd39Oz+ jqT9ZVjsJJrHVb2phyvWxGuVgdhz+iJW5uPZOznN+kEyiVnSb2T70RDFPAgNeNRMHtTS gXVQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978036; x=1779582836; 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=mgEG0/OuigOMwClChXrRoaFDD6e1qpvZV0h5+lZSYqk=; b=LzWKsKZx8qw+JdR6UfEucC0lXnm0ss7GNkABDpsMaxRGfvH+8guN2TfWequnJGRsAS jy8F6dTeUYyF1EA6Cz/NG31ottNdW72B8nhU2YFXZGrwrQqQq4ZupwoziBrLQAnVOExL jhMOujauSGg0BLAz4lGVtLF4KZA/+mCBP2F5+CQYItIqIyCgsvBV13Itg+WGc1W874Oy mOh3UugDgPBgOsDjwDayOJvMlGT3CZ4ZnziDTooySwN0K/iDuQ/mJSp5+x4ETqRbO92m I8b1vzeMzqJn6JkcOYOFv4eipF/qcnj5U7psvnqnwcyL37pBcI5uIKba00ERzp6xF6V0 w0Jw== X-Gm-Message-State: AOJu0Yx6zfdo7/cVnd5IlBPSEiCc0+qxXGi407vBjjqiQk0M7lmu/RAC q5jCt8NWqj2A5Mjf6blFLVYvV3Fv2SMne8Iw3meG8qysOo7/KOgwYjYygbqp7/W31p6TlutqpHy o0oC4 X-Gm-Gg: Acq92OG/zrqYzes0x960XVV7VFF5ABVLTPAeqiWcj02YCuuh74lyq8XYLjdiiDbPuKs dQ8JNkY8R6bz1ag6dz9pWjiE4g/ygMWNvWodbnjnYvJHbKbvaMvvodieES1/eg6oYY3OYMDvPUq iwfsPx6oOWA75wu07+oKkEQW3BwEYnZFJk/UvWp2ZPBXRIU3NBVGTcueIaEiiWlAWSnQ3QC/G+z T8mLHP3Zq8fkBdXtJZIzBFHHZxYs9pVxlAPepPlTu/uAe27ikVcx3QM7hSgnlUeRAqFYtsmfYIv zDCgNpxuHWlBR52PVOVkW8NkkA9BLxWHd0aseKVS9iY2+PgX3DkND3m39INsMdGph9JTteayyTi GDQUrkxe8nH/4k7pnmuNfAxahlgmZjEF0xG8QHTzao3a2ZamVZ/nYMS/oZMM3L+9cqZt6cQ1ynD E+8lgOwjj3GKUvXQS2UdYwBUQ7jV5b X-Received: by 2002:a05:6a21:3291:b0:3a8:284c:fa3b with SMTP id adf61e73a8af0-3b22ee23dd0mr11102165637.48.1778978035740; Sat, 16 May 2026 17:33:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 55/63] target/arm: Enable FEAT_FP8DOT2, FEAT_SSVE_FP8DOT2 for -cpu max Date: Sat, 16 May 2026 17:29:54 -0700 Message-ID: <20260517003002.321430-56-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::535; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x535.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: 1778978233486158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 2 ++ docs/system/arm/emulation.rst | 2 ++ 2 files changed, 4 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 6dec7e045d..a43b6367a4 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1377,6 +1377,7 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64DFR0, t); =20 t =3D GET_IDREG(isar, ID_AA64SMFR0); + t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP2, 1); /* FEAT_SSVE_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP4, 1); /* FEAT_SSVE_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8FMA, 1); /* FEAT_SSVE_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, F32F32, 1); /* FEAT_SME */ @@ -1397,6 +1398,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP2, 1); /* FEAT_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8CVT, 1); /* FEAT_FP8 */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index bee4e36dc6..875716d18f 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -75,6 +75,7 @@ the following architecture extensions: - FEAT_FP (Floating Point extensions) - FEAT_FP16 (Half-precision floating-point data processing) - FEAT_FP8 (FP8 convert instructions) +- FEAT_FP8DOT2 (FP8 2-way dot product to half-precision instructions) - FEAT_FP8DOT4 (FP8 4-way dot product to single-precision instructions) - FEAT_FP8FMA (FP8 multiply-accumulate to half-precision and single-precis= ion instructions) - FEAT_FPAC (Faulting on AUT* instructions) @@ -161,6 +162,7 @@ the following architecture extensions: - FEAT_SME_F64F64 (Double-precision floating-point outer product instructi= ons) - FEAT_SME_I16I64 (16-bit to 64-bit integer widening outer product instruc= tions) - FEAT_SME_LUTv2 (Lookup table instructions with 4-bit indices and 8-bit e= lements) +- FEAT_SSVE_FP8DOT2 (SVE2 FP8 2-way dot product to half-precision instruct= ions in Streaming SVE mode) - FEAT_SSVE_FP8DOT4 (SVE2 FP8 4-way dot product to single-precision instru= ctions in Streaming SVE mode) - FEAT_SSVE_FP8FMA (SVE2 FP8 multiply-accumulate to half-precision and sin= gle-precision instructions in Streaming SVE mode) - FEAT_SVE (Scalable Vector Extension) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978275; cv=none; d=zohomail.com; s=zohoarc; b=AZisl89eIV0v8U1JbQGX8b0CbxOwCo0ayISLoJKQkxp/hpqWjdaB8KG4FJIqIx4NnQ5ytezvO1tAOT6Jwm6jN0vas1mrcj4JmfZSiZgUpjSzGn/N9pwXtMrMvjjAVMJ6xIny0/h8mjGXa5yLBzatl93/GeeFNAojM1G3O/YmCJk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978275; 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=bzT2KDZzhG3LXMrDA2qkHOOkx7LXkk0rS86HuhIOidw=; b=jo9Xr8cZndUa2gzy1+xpg49NglBYO1G+pk4ETADrdmxI7MflkB89p7t88HbHu9NGCIqjMWvc5tzdvnMe8kW5MtwXsPbGnEkMiIQzw5c3ZB79pMlU5EIjR7nf4iQhrUf5C92Seosh3gseYQnYWlIla0poH643MHJqQPh2yFQJ4mM= 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 177897827547268.50369536851701; Sat, 16 May 2026 17:37:55 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPSr-0000hL-Rx; Sat, 16 May 2026 20:34: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 1wOPSF-0007An-9A for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:10 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPSA-0006ra-2A for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:02 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-c80227c9572so381760a12.2 for ; Sat, 16 May 2026 17:33:57 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978037; x=1779582837; 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=bzT2KDZzhG3LXMrDA2qkHOOkx7LXkk0rS86HuhIOidw=; b=ED49BpSI30daHyraYsYtkj/gBvmqHNkG9vHYjIgfxzCt9Lom/3lsNtPDARVBPF3l/1 rY1NefoM6PYNQaH/mo0/gJ/686rDdp53KcpZDmi6hZBpmfSm0IYO5FhnzT4/cJk7+twu 8RFl9oP/JbmquitxoS/YEv3CZehf4mdZGt4LmBDHPVFtFBW1ubIgw4pG18bG7wEfAOqQ A/kKvxpCe9nlINT/yN1c0ZcQuRcgxtNBBHko2By3/U4DjbEyvGdK1n6POA0PRaGL8BEu OjNRDcrVUeJan7mJhORJMrBRlgNaHx3rX8ABthgM7BbLHDvq3KUXxm0c0DMQRTAKjPJW Ujwg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978037; x=1779582837; 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=bzT2KDZzhG3LXMrDA2qkHOOkx7LXkk0rS86HuhIOidw=; b=MYDmaAKNdLP6tienS74J5+7wiGgKedYQwwvq74sW6fruH/kLXjhuIrjzdGVQefTet2 0jlK3uXiQpxirO3RLQCOdmZxm+1rNCP97bTxabdVvOf0lysEZc4OZGK7GfFTCozqPtIq SXS5oOUCPT1TP56Af/Au6O8Wwjbb/8SwkQAWLxUKru2NgtAVvdvERtIlXRWE68lG8dqC 7iAAHVXe7pbxQaI3WjIv6bdwtBSSMPHNNVdGWx5oK9/UmBAFjLZZsOXlDjQvg+/dweJd 8WH+0lsJbQE79sFxf08GfGowmPWYvn5JTMXIb31BKcwO97D+lGSEh/+0SMHrpHKcbp27 twyQ== X-Gm-Message-State: AOJu0YyxtcitdVbD3hGUGNhJc6fzmg9tlJDATPnzHfToqYiFSKejJhag CsDYovbbyJMXpjaE1AtdAcatbgCJ02ZopDtp/65LI94R0qvmmyctBu3Lt2tB8orQT0xJjsEDmba dg7TQ X-Gm-Gg: Acq92OGm+WIYaqsYnSbyS9zJr0gIYcecBCzcQ0KuTpn8dz7Vy8HtEhdSWLeoThWzLS/ yQ+vkr54SRFdkTy47TeZ3DIAfFDw42P8gkR9BkNJqKVOIpDmSzqBCpss4igSwiRxw/Oe+4A+oAj zGSnNb3rC3FZGmE4WDN6fpI5MTwgoOzB6gO2j4jvoqBv38muycztGTft1tMCtIGcLdidKUmYRyG ZqMvPlF+1bsxFWPHs6hyblX4LiMvC9PXUsTrI2fWQImg7cPH5P8yXHVgoD5ookaJHmKb4MapxlM fbeAfyiim9EI42hFIg+/M3w+SZh2PnUbtjCfXLBc+KQoBpYGrLkdJDo+f9CuC5mz9k7CeQo6JOI 3v6JTZUzt6ujTxeJvgy1fc4ubpmCw/b1YzXIZMC9thRfzsrtLFij6+Lb5ZneNnDKL2HicMtelrY 29YrZOWoVzU3S7TFKSuBnYYrEeerKN X-Received: by 2002:a05:6a21:600d:b0:3b2:6988:a6f5 with SMTP id adf61e73a8af0-3b26988d373mr2480041637.4.1778978036623; Sat, 16 May 2026 17:33:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 56/63] target/arm: Implement FMMLA (FP8 to FP32) for AdvSIMD Date: Sat, 16 May 2026 17:29:55 -0700 Message-ID: <20260517003002.321430-57-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.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: 1778978277633158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 26 ++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 1 + target/arm/tcg/a64.decode | 2 ++ 5 files changed, 36 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 90098c3cbe..67b9d7e982 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1620,6 +1620,11 @@ static inline bool isar_feature_aa64_f8dp2(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8DP2); } =20 +static inline bool isar_feature_aa64_f8mm8(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8MM8); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 5995d77577..3c74f02022 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -35,3 +35,5 @@ DEF_HELPER_FLAGS_5(gvec_fdot_idx_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_5(gvec_fdot_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) DEF_HELPER_FLAGS_5(gvec_fdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) + +DEF_HELPER_FLAGS_5(gvec_fmmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 913c91fa06..bb1d48c3e0 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -823,3 +823,29 @@ void HELPER(gvec_fdot_idx_hb)(void *vd, void *vn, void= *vm, fp8_mul_finish(env, &ctx); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmmla_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t oprsz =3D simd_oprsz(desc); + size_t nseg =3D oprsz / 16; + uint64_t *n =3D vn; + uint64_t *m =3D vm; + float32 *d =3D vd; + + for (size_t seg =3D 0; seg < nseg; seg++, d +=3D 4, n +=3D 2, m +=3D 2= ) { + float32 d0 =3D f8dotadd_s(n[0], m[0], 8, d[H4(0)], &ctx); + float32 d1 =3D f8dotadd_s(n[0], m[1], 8, d[H4(1)], &ctx); + float32 d2 =3D f8dotadd_s(n[1], m[0], 8, d[H4(2)], &ctx); + float32 d3 =3D f8dotadd_s(n[1], m[1], 8, d[H4(3)], &ctx); + + d[H4(0)] =3D d0; + d[H4(1)] =3D d1; + d[H4(2)] =3D d2; + d[H4(3)] =3D d3; + } + + fp8_mul_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 c5ea6b27a9..02d5e007f9 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7418,6 +7418,7 @@ static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, =20 TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) TRANS_FEAT(FDOT_hb_v, aa64_f8dp2, do_f8dot, a, gen_helper_gvec_fdot_hb) +TRANS_FEAT(FMMLA_sb, aa64_f8mm8, do_f8dot, a, gen_helper_gvec_fmmla_sb) =20 static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3_ptr *fn) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index d1254355b6..6404c26540 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1216,6 +1216,8 @@ FMLALL_sb_v 0.00 1110 0.0 rm:5 110001 rn:5 rd:5 \ FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ..... @qrrr_s FDOT_hb_v 0.00 1110 010 ..... 11111 1 ..... ..... @qrrr_h =20 +FMMLA_sb 0110 1110 100 ..... 11101 1 ..... ..... @rrr_q1e0 + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978098; cv=none; d=zohomail.com; s=zohoarc; b=gYzPzzkvbnsJC6BFLEZ2U0yhmMYSqnRthgf2n84ezBRb8I5Xo7xiRpT2ztPmrcL9r0/iK+5etBf075EAlq0J8J0ykdXCOwGYoRs3OSnY9H0AcYsSVq+teQLEKRFB8MLZDn2a+8blTdVkG33m1+9m8eQ0poxFuaZrxq4sjFZBLQA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978098; 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=pZ3I4CizPNDr7l3Qj3+qL13Yx8GTzrnhQalZXWGErYg=; b=X+ARemTRCqe3RAeFL3S6eWTc3uRHpC0+8a0RWhVU0k1Sh0gdbrt4kv//LrqgPBTk2sQLeY7IkDG+IrjulLl4skhMmi3i54M54muE9Af5UJ4FfOG7QbLYrKiwzH4064XaaxGQ48iqSsMk8ESI7QmCwAr23iOoO+MxpSyUDbXGio4= 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 1778978098898471.12348559815484; Sat, 16 May 2026 17:34:58 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPT3-0002Ei-20; Sat, 16 May 2026 20:34: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 1wOPSJ-0007B6-UB for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:12 -0400 Received: from mail-pg1-x52a.google.com ([2607:f8b0:4864:20::52a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPSD-0006rq-5M for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:05 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-c80167f56cdso351210a12.3 for ; Sat, 16 May 2026 17:33:58 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978037; x=1779582837; 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=pZ3I4CizPNDr7l3Qj3+qL13Yx8GTzrnhQalZXWGErYg=; b=TOyfU4X6eWdnObyjYzZ/n/IYmENslCcLf9CYS+u71YGnU2YA7eKdrlSiFbPQ/zL3i2 DwmDYl7Ra2dzJ0/opEq4iMUOrjg+OMZmIN41wgxWLlbrVWBqgqo18H3I58jeuRj50O64 o/lG0rd3k7KZLnBYuW5NniJsyORmV0jc3q8UUL0pG8pZlTfMbQzvFVJzyJl9mWrjbseH AA2MAGdW/3wMyqWHh5kjQi/lF3h+Fi2MkSaGRNsQwW19Z9Ae5DRurXDKG7+/NtKy2qSc 9YDyidDuEadfRjurJILQ7HPTumDpi31BUPtZ5uh1p1JP6ty7ESDz3mSwu1551X9tKbEf hxqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978037; x=1779582837; 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=pZ3I4CizPNDr7l3Qj3+qL13Yx8GTzrnhQalZXWGErYg=; b=B04y5UbJXgNLf00dnwttZWmwkLDqep7ba1xtUVjUhAj88yqn4oParLM5C4QeSiqkpJ erJ8gI9YPrQj4gdBZ212y8R01myYucZRRaS6Ms35gvJobDIyXSl0hyLMQYGPG1GMsVBn CVLw4k9ICo6nZF/BXVpVly1egq35MasxTDAPOwlsxwO6oEWuvCx4cl/dLPrgUEBhJwpD pVk52w6sWV4JB7zsrHhamqVgHU6z6tS8uozlLO55cx72qoD46xsrqtojqsxlk1AvEunn 1UHCQsQrplTvzugVpONYDulmV8GDVbNn7uXLFp8dy4IdU11UB9yUfc9UEo8E+dnMzwag HscQ== X-Gm-Message-State: AOJu0Yzf9jNhEAh5IQ77m6W4A9ARNIkO69TgDZUpsnwxjjrsXxVdHiM8 edzaj1+pk9iSxpTZvUgMK3/n7scwjLylmdUGtSWiuyFTA3rvRKUwqQefQ4H/aSHZEOoWfxF5nLX FJd8v X-Gm-Gg: Acq92OFRbpocWv7yvxUmZnRUrRzInbj/j+fyrd7slo+yHhDIk9mrPFfu6KzhbicsGC4 Fo2r3UrvQbLuJYXXb/35UlDN3Cj/fkzq3Jr1QE9wH8+Bl2aQVioeIa+q+sTULNrFVc0JLn3x+fM +tWAjtQphPwueYcGIaHmgqFv3bdrSb1KAu1J1327RR/SC/qyk7EDFLZc4wxhUWaRZ7rot8oT6aI 7dZiQZa8Pjd3LXfPU+G+gpI1BWvbHXul5fDU9jClQMyaNexuE8jbAj+aqyNlqxYbtnpD1OVDZit M74nm0XfW25SDpVZTKe2Lf37kn6iWE1Zqs5wLIpMTVzkJI6B8OtFBAAQR0KP3M18ekUckJ2OSCM tRoP4jHcXyzxVcLhiriInqVU5HKJ7fMsbWW9dsWkbLK4+AuZ8qPF1LuGSc70qjiLorIHw2ZkHza rNz2bk06CMqtLVzpqZO8s8c1mLTafkHcw5d8PBSwU= X-Received: by 2002:a05:6a20:939d:b0:3a2:d68d:9e83 with SMTP id adf61e73a8af0-3b22e6682e1mr11230586637.5.1778978037506; Sat, 16 May 2026 17:33:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 57/63] target/arm: Implement FMMLA (FP8 to FP32) for SVE Date: Sat, 16 May 2026 17:29:56 -0700 Message-ID: <20260517003002.321430-58-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52a; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978101103158502 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 16 ++++++++++++++++ target/arm/tcg/sve.decode | 2 ++ 3 files changed, 23 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 67b9d7e982..8f6cc2974f 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1693,6 +1693,11 @@ static inline bool isar_feature_aa64_sve_bf16(const = ARMISARegisters *id) return isar_feature_aa64_sve(id) && isar_feature_aa64_sme_sve_bf16(id); } =20 +static inline bool isar_feature_aa64_sve2_f8mm8(const ARMISARegisters *id) +{ + return isar_feature_aa64_sve2(id) && isar_feature_aa64_f8mm8(id); +} + static inline bool isar_feature_aa64_sme2_or_sve2_faminmax(const ARMISARegisters *id) { diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 8d622f9a1c..5bda5f6c01 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8442,3 +8442,19 @@ static bool do_f8dp2(DisasContext *s, gen_helper_gve= c_3_ptr *fn, TRANS(FDOT_hb, do_f8dp2, gen_helper_gvec_fdot_hb, a->rd, a->rn, a->rm, 0) TRANS(FDOT_idx_hb, do_f8dp2, gen_helper_gvec_fdot_idx_hb, a->rd, a->rn, a->rm, a->index) + +static bool do_fmmla_fp8(DisasContext *s, arg_rrrr_esz *a, + gen_helper_gvec_3_ptr *fn) +{ + if (fpmr_access_check(s) && sve_access_check(s)) { + unsigned vsz =3D vec_full_reg_size(s); + tcg_gen_gvec_3_ptr(vec_full_reg_offset(s, a->rd), + vec_full_reg_offset(s, a->rn), + vec_full_reg_offset(s, a->rm), + tcg_env, vsz, vsz, 0, fn); + } + return true; +} + +TRANS_FEAT_NONSTREAMING(FMMLA_sb, aa64_sve2_f8mm8, do_fmmla_fp8, a, + gen_helper_gvec_fmmla_sb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 26b3c7697a..6610432528 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1808,6 +1808,8 @@ BFMMLA 01100100 01 1 ..... 111 001 ..... ...= .. @rda_rn_rm_ex esz=3D1 FMMLA_s 01100100 10 1 ..... 111 001 ..... ..... @rda_rn_rm_ex esz= =3D2 FMMLA_d 01100100 11 1 ..... 111 001 ..... ..... @rda_rn_rm_ex esz= =3D3 =20 +FMMLA_sb 01100100 00 1 ..... 111 000 ..... ..... @rda_rn_rm_ex esz= =3D2 + ### SVE2 Memory Gather Load Group =20 # SVE2 64-bit gather non-temporal load (scalar plus 64-bit unscaled offset= s) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978185; cv=none; d=zohomail.com; s=zohoarc; b=HIK7BK8YrPm5oWzhwZO0H8tL+Nb1tUArJFQ/fcDv9+JFPasAGel+q/ScbDlpcSpOnKoFpOoZ2RJEsiqjEmRgd8MOBWRizcsDNALwwSeZj3dGgynQfVALim2FherW0lBAWqonJrtszJfuA8oUsk+e7ItZN2Bfvgw4zaAnX1BAmzs= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978185; 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=PuGasVrTDp5bV7ix67mPvlZpXL4SBKk180Og/sZBgEE=; b=URhi8Sfu5FDW0IMykNLCeVheez3WNYeuf2/uB8nskalZC3zFdmyPWeu3jv/mnVUFWSUWunRusYtle4tOUorTVcjdh4z013njXfA3QBN1LXEkfTNFvKlmFEQRHRgrpgzM6jlB+fxRaN/FxRVcA4U51dtkux4NJYXJsC6ySGx0WJ4= 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 1778978185604382.7698819810156; Sat, 16 May 2026 17:36:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPT8-0002wU-1b; Sat, 16 May 2026 20:34: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 1wOPSJ-0007B8-TR for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:12 -0400 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPSD-0006s8-Q0 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:05 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-8383fb7143aso436162b3a.3 for ; Sat, 16 May 2026 17:33:59 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978038; x=1779582838; 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=PuGasVrTDp5bV7ix67mPvlZpXL4SBKk180Og/sZBgEE=; b=a9humv7LESoOpXIl5z2qIw0PtYod8EAfulMqGU0XD7LxjPdB5sQ8y8LRilrQ2ebWyt cTYsLZRQyaSUtsfoKLt3pykwfENp0PiNwBg596C1fy9JMxNIzseVb4jPixxjlKr11wuq e8SOUJSXXVi80gf5OIhM//uqzXF5hWY1jEKo1GzY9yXL/o8ESx9xehIj7dgKkh6jtCPE y/BSq/i3ZIkixmq6fwXg8KTX5bJCLACHtSDDu69ppC7ept72iVH4GgcV8r7/lfwUvsf7 43Rn2ozz0k56knSnVt2ZbLXTi6wgwktz7ie/1KYnD2pJzGQk0qI8SGteiIHOdqd9eulM eBFg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978038; x=1779582838; 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=PuGasVrTDp5bV7ix67mPvlZpXL4SBKk180Og/sZBgEE=; b=gnnbto7ONuHhclNihpO7aOE3oosnXZTAvRlIbytADBQZg7l6++HEJm3kqTELaWITBo YS03OPZWBmBE5DlrMio/pm/nBxPuRUVDHGGP0OiEDlCwO4cfHEP8z1yghuyznPmfAU58 ysv3IYZ2KwzgH19tK2mHDz4xj3s0hmR/zMI7Juwf6ooHOC8K9DXS+dN1psIhZ0tFDhhr uEh/CjQ8zK0CgW5uxHjH5JZugqfeFIpCfKvHCsNc3RiugrIVZsjpQpAm4y5hoFkr8C5i IuMDESZP3Hw1/2jzyD0KFJKKR/C4Zptv/5rHQIsexlqAmmLzZh4rvyP49gKunyJu2Ptk 5pdw== X-Gm-Message-State: AOJu0YxRpR2zzJ+3871jwbNvNf0MGc17/W5lSny0kS/zVPCVxKM/+PJn Xyf7uUCsDucQYJhtYYrg8ErX0CMQ+H1YDp9SaofGBN8ZZHWhEyt3C08MEXGBcdRUV67N3Zascqd IYkCB X-Gm-Gg: Acq92OGnPVOuAciaayreTbCp6A1zrxBz1zKs7dqCFdB9IXyhPuei42XKCfBvJJFL35J 5+ctbiavzLvruacCRnhTujhhiAIr7YNkBfUfF+9/16+6E7OaYF1wHIT6TeeurvDjx+tB+I9nln0 mVeO3m7tHOIUryDs7gE5Kqh4z6ajDNuDIo4Cjz7XUWtxJchRHY4Uixa7VXk8+NJKVfk6hFvCM37 XyqgQ4+x26mAYKWuJXsI3xQI055MCQHIh62vyS2OXRM28x0zxbHGTdlgI9N7QRy4rNfRE2UKpOe 9CSSyl8QN5JA8r3NP5rwefS77o+yn3epkuKUd5+Sn3rlCIXEVR9ZE5YQPDqb7kS+QcGmHgPWyCH 0cfAwWy9oScK4TNMuK/itAKjjELx1ruwUgzjBFWm6D+rl1bAhcxI5+ojm6N4awg0fOu2mNbRf9e HQcX1ui1coOX0CT2JNpmAPeUFWSYQZ X-Received: by 2002:a05:6a20:158b:b0:3a2:dc51:458 with SMTP id adf61e73a8af0-3b22ee25589mr10906165637.41.1778978038493; Sat, 16 May 2026 17:33:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 58/63] target/arm: Enable FEAT_F8F32MM for -cpu max Date: Sat, 16 May 2026 17:29:57 -0700 Message-ID: <20260517003002.321430-59-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::431; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x431.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1778978187288158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 2 files changed, 2 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index a43b6367a4..7a47af9f5a 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1398,6 +1398,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8MM8, 1); /* FEAT_F8F32MM */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP2, 1); /* FEAT_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8FMA, 1); /* FEAT_FP8FMA */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 875716d18f..83967da12d 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -66,6 +66,7 @@ the following architecture extensions: - FEAT_EPAC (Enhanced pointer authentication) - FEAT_ETS2 (Enhanced Translation Synchronization) - FEAT_EVT (Enhanced Virtualization Traps) +- FEAT_F8F32MM (8-bit floating-point matrix multiply-accumulate to single-= precision) - FEAT_F32MM (Single-precision Matrix Multiplication) - FEAT_F64MM (Double-precision Matrix Multiplication) - FEAT_FAMINMAX (Floating-point maximum and minimum absolute value instruc= tions) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978229; cv=none; d=zohomail.com; s=zohoarc; b=RZlDntSeYEN1sbuB4U4t2AWa7g+r9TKbuTFlTme0Hbdis0PfQ704iudlecdoDItSF2UKWi6guALnFMXAYP0H6icbCVjYn/H8c7SArJy+O1fC8+ZNRjAk2nsXDj4r8jC97h+Vz0LyALSSko4jIXu5eJhRDgTADXCMJ7wo70qM95c= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978229; 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=EqM0kwivlcqgiKDIp6aI8NDlZBpv/udHWgNE0+iVW9I=; b=PcgnBdsaNpBP3CQxMWjdzfDj+uk5yeSbqKIESphp7opsN43c2R8AJusm8Sf3tWVZifiKWPukyf1pkYwXbM06YtbDFVtsYMPLoxqKKDbvVDGkzymKimVKo6ly742h/bzuXKOIEufbxDbnpnry9dysZO8sN4wAar1YcJPHFd3imiA= 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 177897822899433.874992400615156; Sat, 16 May 2026 17:37:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPT6-0002la-Hp; Sat, 16 May 2026 20:34: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 1wOPSJ-0007BA-UD for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:12 -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 1wOPSD-0006sN-Q5 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:05 -0400 Received: by mail-pj1-x1033.google.com with SMTP id 98e67ed59e1d1-36974217d4eso443910a91.2 for ; Sat, 16 May 2026 17:34:00 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:33:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978039; x=1779582839; 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=EqM0kwivlcqgiKDIp6aI8NDlZBpv/udHWgNE0+iVW9I=; b=IW9JYn6/n+HBDcdu86xKKyZsde3ErwEBp7H8FHnogceKLeOX/XaY6TiekW3yfPjOYU 0092xrErWUcwH8tN2Szt5EbzG/wQZ0ktSYzdXZ0LpyrKQLnkd9KEBOOfZhUDHe0Hnr/O gtCMMbwRavdRIEd7dTOk4uOehvSi1oF5ovUUPwmnzB1I+tb3H8a/JJ8Jd8eMhQDD/+VT m9VaAhZxRh6X5YG2BuXkV6Mr0uCBHGsdk2XkXUPK/eLlvvCXpfSj1Hxs6QZU9dBC4BAO GF2GRn83sSalpBmWAwEIE4TUlGJYqOjanOtq8yP4Fg8+VhXUM9rTG1LFA7qhd9W0od3w JFQg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978039; x=1779582839; 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=EqM0kwivlcqgiKDIp6aI8NDlZBpv/udHWgNE0+iVW9I=; b=hZsu/sPA32GDtYYgt1RwrABsVfb8W+R0mQTZAaqyoPgir9ZyjFUl2flyATZSwxQpV8 gB5Zy7s2cfHkO77tWMI1n8fOaIRw9mv+LLJv1hKW5RdpJb7D4tBN1StzUTlnbnH/UAfG 01whfj6Yqi0CiDt5/AFkQvflXzTfLdbmxIayLYBDDx+5XULoOUu2lw+CdeD42POw7BJT dbDmrgQleUuSv3tfLnV8uAgb7gkcteq/BOuzjUlUbln3bvstZflkcwvxp8pTS/D8AM2E qAjsoZDXIOhKrHoywjGmfedVn8v98pQNQqjk/Hcfo89pOYgY1hFu8grk372NG9z80dYZ 9Xvw== X-Gm-Message-State: AOJu0YxXg0OwBC81sq7KUiRefN+pgdZV56JZAm1Wg5ReFzAfu+lhAi3Y 3g7AezVyCaUPXrrbgWuNQu+TA8ln9+G4ciX0aYLY2s99aUo54YATFsFScNdDSILfUsx5uah3pyR cQCdx X-Gm-Gg: Acq92OF2c2QHKLiN/O+VmETVrr/vcfrdrKRkoJHtPuoXoCaCI+ezZL2r4k8EXTTiThT C55GgCIdyvsDopGiW+X/ZBUelzQ0XZfO6mc3L41zXkukDsJRyFlDmCZw3KsuLx7voQuQwI7jzBu RosSFm+Isq0pxacjxE62tL0Wrj1jN3lloHVkylrR6f2urvJK9eZeTDzLykiv5AADZRqErV8PA/k dwtg7es6s2MsxVFSlh41qa6Giy+W1/JRjXngZWlg0NnHW9VM/doenoYUjPDa5sgARJ6GofZY1wm kOd23SbZzsMJmBdyMK9F/yWeUlNmui6dS4Z2K5ZtEp2/7DK1xzQJlMbzBuW7NZAt34pCfewUOVY 3nmijL0ee9jjhZH7LDA9n8Sxl+8uUb8yTuxniIecZV1yQQtj8ntHMzKr7KFv6DNn/UGE0NiHH9s MXqiPtWaaR1z+Lz/mKb+SWxI5W60t9 X-Received: by 2002:a17:90b:33cd:b0:368:7536:b5b7 with SMTP id 98e67ed59e1d1-36951b71e46mr9674376a91.16.1778978039240; Sat, 16 May 2026 17:33:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 59/63] target/arm: Implement FMMLA (FP8 to FP16) for AdvSIMD Date: Sat, 16 May 2026 17:29:58 -0700 Message-ID: <20260517003002.321430-60-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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=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: 1778978229419158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 26 ++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 1 + target/arm/tcg/a64.decode | 1 + 5 files changed, 34 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 8f6cc2974f..fce38dfbb0 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1625,6 +1625,11 @@ static inline bool isar_feature_aa64_f8mm8(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8MM8); } =20 +static inline bool isar_feature_aa64_f8mm4(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8MM4); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 3c74f02022..e942308af4 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -37,3 +37,4 @@ DEF_HELPER_FLAGS_5(gvec_fdot_hb, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, env, i32) DEF_HELPER_FLAGS_5(gvec_fdot_idx_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr,= env, i32) =20 DEF_HELPER_FLAGS_5(gvec_fmmla_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) +DEF_HELPER_FLAGS_5(gvec_fmmla_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index bb1d48c3e0..d5d1fe71c5 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -849,3 +849,29 @@ void HELPER(gvec_fmmla_sb)(void *vd, void *vn, void *v= m, fp8_mul_finish(env, &ctx); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmmla_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, -1); + size_t oprsz =3D simd_oprsz(desc); + size_t nseg =3D oprsz / 16; + uint32_t *n =3D vn; + uint32_t *m =3D vm; + float16 *d =3D vd; + + for (size_t seg =3D 0; seg < nseg; seg++, d +=3D 4, n +=3D 2, m +=3D 2= ) { + float16 d0 =3D f8dotadd_h(n[0], m[0], 4, d[H4(0)], &ctx); + float16 d1 =3D f8dotadd_h(n[0], m[1], 4, d[H4(1)], &ctx); + float16 d2 =3D f8dotadd_h(n[1], m[0], 4, d[H4(2)], &ctx); + float16 d3 =3D f8dotadd_h(n[1], m[1], 4, d[H4(3)], &ctx); + + d[H4(0)] =3D d0; + d[H4(1)] =3D d1; + d[H4(2)] =3D d2; + d[H4(3)] =3D d3; + } + + fp8_mul_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 02d5e007f9..aff0f332ac 100644 --- a/target/arm/tcg/translate-a64.c +++ b/target/arm/tcg/translate-a64.c @@ -7419,6 +7419,7 @@ static bool do_f8dot(DisasContext *s, arg_qrrr_e *a, TRANS_FEAT(FDOT_sb_v, aa64_f8dp4, do_f8dot, a, gen_helper_gvec_fdot_sb) TRANS_FEAT(FDOT_hb_v, aa64_f8dp2, do_f8dot, a, gen_helper_gvec_fdot_hb) TRANS_FEAT(FMMLA_sb, aa64_f8mm8, do_f8dot, a, gen_helper_gvec_fmmla_sb) +TRANS_FEAT(FMMLA_hb, aa64_f8mm4, do_f8dot, a, gen_helper_gvec_fmmla_hb) =20 static bool do_f8dot_idx(DisasContext *s, arg_qrrx_e *a, gen_helper_gvec_3_ptr *fn) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 6404c26540..e7f2f30abb 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1217,6 +1217,7 @@ FDOT_sb_v 0.00 1110 000 ..... 11111 1 ..... ...= .. @qrrr_s FDOT_hb_v 0.00 1110 010 ..... 11111 1 ..... ..... @qrrr_h =20 FMMLA_sb 0110 1110 100 ..... 11101 1 ..... ..... @rrr_q1e0 +FMMLA_hb 0110 1110 000 ..... 11101 1 ..... ..... @rrr_q1e0 =20 ### Advanced SIMD scalar x indexed element =20 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978204; cv=none; d=zohomail.com; s=zohoarc; b=mxNQlGYM1y4qvMtGhFtnIb++OKdt9JK7CgNiYco/lTKbzMjUBFsUTgvQmFfFnd/7pXgVc+PeaJxA5NcPLKaJvyGtenkBtauAieSg6LMNaU4pom7GcyxTQNtChPgOt39WUpM6L4lQDXBJBN3lzTgjWT3N4ckxTb/kkMTgn6+9KIg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978204; 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=W2+saFtU6sDCDywdiaR0c/2CKQQH+n8UBNRc/yHjQxk=; b=mqYTiLH0mPlPpdeXZbmHJvf7KSTyO8ZdgotHlZu0e80+Z86UvwqU4yeoebRdacPtW4cbN5C/nPcGSd2hiTL3Yi/QXElHpGZShJhhBYXMyJozprO9U8Lg71/gpJdMczAkMNSPNWm+GYMcVUwy+DRNZn161Myc/rAH/LlBdASkawM= 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 1778978204788178.94040041013739; Sat, 16 May 2026 17:36:44 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPT5-0002PB-An; Sat, 16 May 2026 20:34:55 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPSJ-0007B5-T9 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:12 -0400 Received: from mail-pj1-x102d.google.com ([2607:f8b0:4864:20::102d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPSD-0006sX-Vz for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:05 -0400 Received: by mail-pj1-x102d.google.com with SMTP id 98e67ed59e1d1-36900945df5so470433a91.0 for ; Sat, 16 May 2026 17:34:01 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.33.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:34:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978040; x=1779582840; 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=W2+saFtU6sDCDywdiaR0c/2CKQQH+n8UBNRc/yHjQxk=; b=IWxDM+xo4QFzN4L2Dj6ARYXzei3ACqnT8YzQel1jtecOuFmEnrG7TiRQSIO+1lV08Q N1b8DrovYPDh79oIErRwF6rvLuOTWXNN9heZQbn3JThFVe472TKAIoecxUoBJ8sE04/L Emyl9ij7OYR5drKhapUA/7SRdatC7WaVZUYBJ7Gcwj+jk7Q3gWPRRBmUr3UcoZAMueco INL4zNK4b5t+OjmtBtc5Jbeh9wyMVh/yaUHIdzdYWtalAXbkI2QEvbXqAqohAwJpYk0q g9VW3BbjaWwtj9uVGq2KjvU/adzOGlvQzrATGu9sLNF5hSZgBN3c8eeOumdgeCqcz9IZ Q7FQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978040; x=1779582840; 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=W2+saFtU6sDCDywdiaR0c/2CKQQH+n8UBNRc/yHjQxk=; b=XnSPoj/Hno8scTpIqs5mGs9Yw3ae7nGHPmBlCZQ6DegdM2jTeAJBdNhcUuQz4QbRk/ CKyO0q2ccf8s02Xy/pSP0oFDNs7cBC1Bol/9C2CLYlf+4pMODay1UYqs/NAHQMRiDOgV I5ldMg0OipjjTl0tjIKnZ7QhVLnhr1AlXMnMjq6FCBhQhk+nCvDJZDNzm+GagGXfkneA bznfWsT1rGhoxSp2K5YyU+qP0Laj3EO2pKBCy0tBrCfyIALzV/2EkKivz6LGEmp2uVMj oOgNNf8oZkb5znO8mKB2cNn4SGahvkyxovEqq8jSUGx/eHHXJN+Gc0t7RPsAtt92Aqin Yj1A== X-Gm-Message-State: AOJu0Yw6ZvKa75l49/zgKe1n39zwkajGray2XdPmmqRxS3mKjjoYloc/ ax5spT/EH54W2hvPghs3ljyxT+4L2I3AUId4t6o3OosGGGOFOlzmNdETXXaGMszlrOk3hJ/sgfi yRDnw X-Gm-Gg: Acq92OE05TpL7o9rWvRGjppXyYzFsQsv+LTJ0Gokjc17NUoKkMsBPcH4m5DtHv/p+3p L6UgJdu36ZQhpmSFZqcYMzlYtNA8yWcuxjtYxDX1AXD4tKLBzmUAVSmRdTNRNz7jxx3OhRY0OV+ I+d2Lgocm9J8UblVy3KWdN5AW1p8wStk4GqkAg/qhW01M9jLI5MsxpduTGvqNm2xTV5IVkk9TLN /k1EvLiyJjELKqp8PgdfXduaMWUBVMbKUi4u9kbo81iU0zi9+x5zyl3M/rosVLeOuRhi07sID3t YqAw0Gw/htx0bML1KTTMdIpb6NryRWekERS4+xZNzyqDn/S7wed3OyH/sZGMjx17MJCf0FKIlrR 4EwVc2q5AOegqQFZkeZXU7JvI/KP2SbqiE/4ewbpL20B0ma39VSU7rwne1xSG1E5E6V9u8VmD9b O0JVVI1xnoBbM+pCiLTVH4utc9C7qI X-Received: by 2002:a17:90b:35c8:b0:356:22ef:57ba with SMTP id 98e67ed59e1d1-369518b669amr9859171a91.7.1778978040474; Sat, 16 May 2026 17:34:00 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 60/63] target/arm: Implement FMMLA (FP8 to FP16) for SVE Date: Sat, 16 May 2026 17:29:59 -0700 Message-ID: <20260517003002.321430-61-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::102d; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102d.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: 1778978205355158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/translate-sve.c | 2 ++ target/arm/tcg/sve.decode | 1 + 3 files changed, 8 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index fce38dfbb0..3eb08da6df 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1703,6 +1703,11 @@ static inline bool isar_feature_aa64_sve2_f8mm8(cons= t ARMISARegisters *id) return isar_feature_aa64_sve2(id) && isar_feature_aa64_f8mm8(id); } =20 +static inline bool isar_feature_aa64_sve2_f8mm4(const ARMISARegisters *id) +{ + return isar_feature_aa64_sve2(id) && isar_feature_aa64_f8mm4(id); +} + static inline bool isar_feature_aa64_sme2_or_sve2_faminmax(const ARMISARegisters *id) { diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 5bda5f6c01..2bce6a38a2 100644 --- a/target/arm/tcg/translate-sve.c +++ b/target/arm/tcg/translate-sve.c @@ -8458,3 +8458,5 @@ static bool do_fmmla_fp8(DisasContext *s, arg_rrrr_es= z *a, =20 TRANS_FEAT_NONSTREAMING(FMMLA_sb, aa64_sve2_f8mm8, do_fmmla_fp8, a, gen_helper_gvec_fmmla_sb) +TRANS_FEAT_NONSTREAMING(FMMLA_hb, aa64_sve2_f8mm4, do_fmmla_fp8, a, + gen_helper_gvec_fmmla_hb) diff --git a/target/arm/tcg/sve.decode b/target/arm/tcg/sve.decode index 6610432528..b53fe6a58f 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1809,6 +1809,7 @@ FMMLA_s 01100100 10 1 ..... 111 001 ..... ...= .. @rda_rn_rm_ex esz=3D2 FMMLA_d 01100100 11 1 ..... 111 001 ..... ..... @rda_rn_rm_ex esz= =3D3 =20 FMMLA_sb 01100100 00 1 ..... 111 000 ..... ..... @rda_rn_rm_ex esz= =3D2 +FMMLA_hb 01100100 01 1 ..... 111 000 ..... ..... @rda_rn_rm_ex esz= =3D1 =20 ### SVE2 Memory Gather Load Group =20 --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978211; cv=none; d=zohomail.com; s=zohoarc; b=jQ/0LWU4sQo/10z0q3W4HczQXmeJvgmE8K+aQXCE9Y/EKtCkIP19NpJnSc25el+7sLGtt6f/ZM7KnWQMqA8Xh2Wvk/rnL0Drn+66Kgu7Uq2cJM/844pMSSz36fZiT2MxGAW2yrPRSgDmFWbvqAMXNv6A3EEliqMKc4QdPIvasEg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978211; 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=Oa3HEHnmujGMzO7KfPn4oNwAR87TmXmXSZa7aCzJKgA=; b=DoGGDDBR/o/GtMAZrbBBu6Y+SYFqqvMd6FCyDOdxVbuQO7Yhdm/fnPks90lh/8We93gP7wGh7RGC++KYaIeMW7QAGjteu8Amw5v1fjA63W58jHJ8AQhKdp5u00qO1OWstQq5b8zcS4rCm0BXJXaXGSxXQdyMRdndcnv6bUt/O7s= 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 177897821154618.31898254845123; Sat, 16 May 2026 17:36:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPT9-00036b-A3; Sat, 16 May 2026 20:34:59 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wOPSJ-0007B7-TH for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:12 -0400 Received: from mail-pg1-x534.google.com ([2607:f8b0:4864:20::534]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPSF-0006tO-26 for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:06 -0400 Received: by mail-pg1-x534.google.com with SMTP id 41be03b00d2f7-c795f441ff7so795629a12.2 for ; Sat, 16 May 2026 17:34:02 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.34.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:34:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978042; x=1779582842; 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=Oa3HEHnmujGMzO7KfPn4oNwAR87TmXmXSZa7aCzJKgA=; b=W1/tAeE4c5y4HzheFwKIJwayffdMWPWLD5C3cybF0cINmIYnZWewXQHMNKfv+7s6qM 7cT+U7cKLC3aus3yRrKqrujFYogdshMbQBXERNOweqDDn3tlIc4iaPNLsbqfiFM2O1HI 55tkKtgm8ZS+65PkRrLsvMP3WG4QJeie34dh+upDgvI6v3NhASQ6jzsraH13XFczlcW0 na99JEbkGT920ub+GZwOlUgobcHZT9IVfjA9DNJxZNzv/59VUZbdNYO9730XiAxwHKsF 2MvadSicZ9Cdfl8hH8zpH+5QU2GwnEJhnfDpOga3P8GhKULWfw1QoOYXmwCp51PiZFSu JiFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978042; x=1779582842; 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=Oa3HEHnmujGMzO7KfPn4oNwAR87TmXmXSZa7aCzJKgA=; b=jMh4bZQsFFO76AE8vuaX5s2vl9rEpG7rV/7u/dnsCDojzHRpXlVi4vYy03S5lCuATX aJMM+EljlXRjESoBYqu8+fKPC3Aceh5MFKVImP6lG/f8ceowAIyJ4PkYvV8nebcXAQjy I2niJBXh+z+j5Q2AkhAKoRW+5/c6pj7rw0rBsvdVINsd1CMg4gvRLkfMFqCpW/88HBQK cx3KzclOvbB2dWThssGmwegT9EdcQ3dWMA0w7QMXcMQbBToBuFRL2baQAw7u3gfuCe22 yg5XQv2b41mXTCxMZdI2DaZhrpjBLwCZOddpGESTECBmfCCmOcP1umJFM3hD/jFlp9Wy gCVw== X-Gm-Message-State: AOJu0Yz6DCaOQZHBe0RyODW++JsoCcH7mon9mxznVQobUwsRFYplNmmW jRWcco4tw/kNm+v0mUo+v2GRexl8G5cmaLJtgnYIARHWL9fP5PItqifXZxRg4DeQRPIY8g840Z8 BZCUY X-Gm-Gg: Acq92OE/FJBt3mW8tFO5JG+GWBjnmffFue1vwl+sBmr2/fMAe0dZsgbL4Zlhjby91kG G7TwkZ8FPma68927gdfuK+8/eI1s5grZlr4BmNzs5nKUXh9bI9M2WLpOnQljmfrtj6xinkOL0ps Y15CS/cfx/kVDQRRfXmEVLWvzZ826ZRyL42GBF9GDCfmpZhk3VqrOtQsxh9q2tdMx8gAnEgYZP5 liXia2WUnAjapJLNflfgp2NapgxCqvZKSQ5gwNYPu0fTw0GBSrGfz7ZTXWbcM3wHeWovu1bBevd vMOLyjMq4uqE4uOIDHnZ9x/N3d03C8jEDGpp2dXQqKEDIRcyCwGfuOctz2KGfl0deHdjaNLahvR UOspzP0+dB1kdkxzKtVlmft82lAoG1r5mB5NNMaxCiFC0ncMppaKFNnt1arDPVZ/vQHjjAiGz4E gzBGLyWDNY/XuktLOXtEqqQwLNs3KxTpcSB69A99o= X-Received: by 2002:a05:6a20:7294:b0:398:9d5f:e093 with SMTP id adf61e73a8af0-3b22e75954bmr10779513637.19.1778978041677; Sat, 16 May 2026 17:34:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 61/63] target/arm: Enable FEAT_F8F16MM for -cpu max Date: Sat, 16 May 2026 17:30:00 -0700 Message-ID: <20260517003002.321430-62-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::534; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x534.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: 1778978213379158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/cpu64.c | 1 + docs/system/arm/emulation.rst | 1 + 2 files changed, 2 insertions(+) diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 7a47af9f5a..492f70fc8d 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1398,6 +1398,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D GET_IDREG(isar, ID_AA64FPFR0); t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E5M2, 1); /* FEAT_FP8 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8E4M3, 1); /* FEAT_FP8 */ + t =3D FIELD_DP64(t, ID_AA64FPFR0, F8MM4, 1); /* FEAT_F8F16MM */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8MM8, 1); /* FEAT_F8F32MM */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP2, 1); /* FEAT_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64FPFR0, F8DP4, 1); /* FEAT_FP8DOT4 */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 83967da12d..2580246a1d 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -66,6 +66,7 @@ the following architecture extensions: - FEAT_EPAC (Enhanced pointer authentication) - FEAT_ETS2 (Enhanced Translation Synchronization) - FEAT_EVT (Enhanced Virtualization Traps) +- FEAT_F8F16MM (8-bit floating-point matrix multiply-accumulate to half-pr= ecision) - FEAT_F8F32MM (8-bit floating-point matrix multiply-accumulate to single-= precision) - FEAT_F32MM (Single-precision Matrix Multiplication) - FEAT_F64MM (Double-precision Matrix Multiplication) --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978135; cv=none; d=zohomail.com; s=zohoarc; b=lzpdvdy8pHFFnuBplqwaWx+lSbS8BoiGY+fUWbGYatUC9+hOXWqZDlEVSyHYM6Y/NGteTaKNbgqRNVIjYfXryM9jzE2NolPt4pUQi1DoUVjVVv08e2h0FrOFWQ+eX35KpK4EBcfMW0eQzTLH0kzHu56BSTMkMnqVpavBARQiG/0= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978135; 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=WUXVONoe8IwMkgOU4fg5iX+I5AZGpysKKoOGKzNezec=; b=TODyzmjgwVjN4sDnyfR56PDidW6e146DiwjfSxMx7iNKKKoCg9VhqOQR+rXknO6j40q50a6EKVkZit7ofnfFOI2C7p/vn8KpA1qHsnzhbd8AUw4oQEWD74tIgYpeTRpqwjjQ3uBnj86Cf+IHVcUtjWuUri3iunS1TNwnjITohps= 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 1778978135273729.2081596049724; Sat, 16 May 2026 17:35:35 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPT3-0002K1-RN; Sat, 16 May 2026 20:34: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 1wOPSN-0007Gg-Ck for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:12 -0400 Received: from mail-pg1-x52f.google.com ([2607:f8b0:4864:20::52f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wOPSJ-0006tk-KB for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:09 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-c802803ac17so396153a12.1 for ; Sat, 16 May 2026 17:34:04 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.34.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:34:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978044; x=1779582844; 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=WUXVONoe8IwMkgOU4fg5iX+I5AZGpysKKoOGKzNezec=; b=y1SO3mJUTs0mu+RDBko69CxJ1FeSdr43g1UOqVouXSqRqnBCnkqCgUCWmZ9nkgj3Ru ksVh/Z3Dgrg5Bev3pEfd2uEeP8r2cBPylsu8lrDNrVLhtjgaFEAlpQ20ZhsUU42wSsqr 37G/a9fgosxkVIurnwcPzirZU4sJxYLoE4tli4hStV0c6ycU30Q9M9q+Q/+Y3Y7CryL4 7cYgRFf8hbwU64jI935w0twHqgLyqy3ZO0Ipua9ULD6XtEvFLa4yQCOGEtFDKTsj42QO 62yr5tDSJ2yqCIGmLU872DWG6/bQ2s8Mj80r25fB8Zx55ljEbupnPHM/ph6tPZwo5hvT vomg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978044; x=1779582844; 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=WUXVONoe8IwMkgOU4fg5iX+I5AZGpysKKoOGKzNezec=; b=aWhCSdvL4fNJJKDo/+rFYfMcGhpGTGnV5f0FV9lYnrRULk0XcrWu5lQS+1Cl03ZymP wEfgA2fVNyeXQ13TkYvPzrqE/EWPhxtbUrQse9jV5+ANFku8qb+qeBnNa7h9gj6jAhXO wEAKprDA/bbzaC+8bkfid+aSmJ7CUCdIYxt7HHVSRuxVwHHvOclIS7Ew7U7seqhySQ7f Mpe/WUnCgvFM/y+A1TW3ahPZ1gaij1ZFCO8NeUU+pa9MlkcIPA+epIgrX1TKlFkwIBAl TFecQw9ARvDWf25pLka4nByEQhZyR/4MjWoRXUg9sS0MIjbFZhjb0o9qT5aaBZQ4TyJt NWTg== X-Gm-Message-State: AOJu0YxezT4B9NTc2e4bGk2ZxlGoEoVYHeVTe0dKwr5lnmt55NPPyaRe FfbyHQNjdHlbmD44qroJakLotMYT4MrZgLQ3Mp1cOVm1XxOu54MBjZNT/SIk56sf/9DDg0/9pN5 AFXr9 X-Gm-Gg: Acq92OEy+deZCB5/JsX0qyyIJ9F65aOuBUX+HCjvJdR5cG8ARfs2EYDcfYyQ+e6l9Nf TC1VBO9Tldwzm42/qznBrPq8Quxlia14HUHLANfamE4MO2RBwqsr1PsrY+1g6gdmPOl6I+UuRAT Uj51ePM1Cl7A0NyqA7kbdu2c4/oIogx7/v7dZ3/YyWfs3yxzWBUHsXs2/U3aHywkskaeUmG/R/E dmRaKurCb8//i53BDTIaBGqyvSYiZ8oMRJrTff7PtQItVmBwTvbar2qtIrGY2+R7ZkN52kUjj+s tuPXnHdtHRavJpko7VawI1nB99KtdC/CT/14aICiu37QS4R6UPxH7hlTl7omy1olwJ6CQ/sieBk 1Pgmw1Q/RS4P/Wyxmw+DCLvM/vGJWiW+v4voQtNXSahooEEstGwfA4/DvHVRrJpapHp2onv6rrO wctd3K+n8HIIYSp4Kyz9f64rTicb8G X-Received: by 2002:a05:6a20:3c8f:b0:3aa:c99b:5c63 with SMTP id adf61e73a8af0-3b22ea51afcmr10867039637.18.1778978043482; Sat, 16 May 2026 17:34:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 62/63] linux-user/aarch64: Implement hwcap bits for fp8 features Date: Sat, 16 May 2026 17:30:01 -0700 Message-ID: <20260517003002.321430-63-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-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::52f; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52f.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: 1778978137111158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 3af5a37776..0934524be2 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -218,6 +218,20 @@ abi_ulong get_elf_hwcap2(CPUState *cs) GET_FEATURE_ID(aa64_sve_b16b16, ARM_HWCAP2_A64_SVE_B16B16); GET_FEATURE_ID(aa64_cssc, ARM_HWCAP2_A64_CSSC); GET_FEATURE_ID(aa64_lse128, ARM_HWCAP2_A64_LSE128); + GET_FEATURE_ID(aa64_fpmr, ARM_HWCAP2_A64_FPMR); + GET_FEATURE_ID(aa64_lut, ARM_HWCAP2_A64_LUT); + GET_FEATURE_ID(aa64_faminmax, ARM_HWCAP2_A64_FAMINMAX); + GET_FEATURE_ID(aa64_f8cvt, ARM_HWCAP2_A64_F8CVT | + ARM_HWCAP2_A64_F8E4M3 | + ARM_HWCAP2_A64_F8E5M2); + GET_FEATURE_ID(aa64_f8fma, ARM_HWCAP2_A64_F8FMA); + GET_FEATURE_ID(aa64_f8dp4, ARM_HWCAP2_A64_F8DP4); + GET_FEATURE_ID(aa64_f8dp2, ARM_HWCAP2_A64_F8DP2); + GET_FEATURE_ID(aa64_sme2p1_lutv2, ARM_HWCAP2_A64_SME_LUTV2); + GET_FEATURE_ID(aa64_sme2p1_lutv2, ARM_HWCAP2_A64_SME_LUTV2); + GET_FEATURE_ID(aa64_ssve_f8fma, ARM_HWCAP2_A64_SME_SF8FMA); + GET_FEATURE_ID(aa64_ssve_f8dp4, ARM_HWCAP2_A64_SME_SF8DP4); + GET_FEATURE_ID(aa64_ssve_f8dp2, ARM_HWCAP2_A64_SME_SF8DP2); =20 return hwcaps; } --=20 2.43.0 From nobody Sat May 30 18:37:42 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=1778978238; cv=none; d=zohomail.com; s=zohoarc; b=MyJH0/QmiwGWL4peayeXjItHQlhR6B6hFRBwwEgnGIhVNXZNkXtZBcBkZEq57Rfx8991L17IzntBs6L3ENEyQSHaZDaZ0n6r3kclZd706CNk2bLP4dAe4Uhsm/AL/7p/yGKRimJbyL7D34wk36KAYjz7EUjZByKLXwUPrkcyCr4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1778978238; 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=Ke6jInMIcSbZvQJLAez0XGyYiEeJ5p5eH1CrpDu09no=; b=dH+fRacWp2cKYWLy8mTxdxJJvuXJ7zynVBCP1kqlHk/o0blw6I0ceFROx6p29/FZfVJVQY1Pblegws8HTZ1A4WAJDbdyW0dFf3lXARDEtviq4MBn1DWOJbxbxdEWh5ObVlk+a5gYAAQP7sDopGiB9esKYJxMVjkBcpKODdfruaM= 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 1778978238464658.4942893697081; Sat, 16 May 2026 17:37:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wOPT6-0002mQ-T8; Sat, 16 May 2026 20:34: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 1wOPSQ-0007Jh-5f for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:18 -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 1wOPSJ-0006uG-KR for qemu-devel@nongnu.org; Sat, 16 May 2026 20:34:13 -0400 Received: by mail-pj1-x1030.google.com with SMTP id 98e67ed59e1d1-366087480d8so824671a91.3 for ; Sat, 16 May 2026 17:34:05 -0700 (PDT) Received: from stoup.. ([71.212.142.33]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c82da93df0dsm3010559a12.19.2026.05.16.17.34.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 May 2026 17:34:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1778978045; x=1779582845; 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=Ke6jInMIcSbZvQJLAez0XGyYiEeJ5p5eH1CrpDu09no=; b=bOaYbuPi5DiyG1tLRjgdSrImfJgjS9cv6vhtfJH3jWxR0vmMHFOYRfP90C4gx0ELO2 TIzyw/bQNTGAmGLKfiFBtAlXdbCFVJwYIH6Hu82EhIHxTOqGxSX61Hl6aUP97LlKP8wF n2KKkoTjtwtdz6PqvzAwh2nSWivb1VDKWepBkLQG+VloyPvdW6/a5RniaLVSCntPYWes 40El1uwontw3gNFn8DvrdHlRl/ve+jhzfDMhJQp+040v0QFgOzrraxncMV0pIMYFzIYQ Ou3ZrklznqOAdd5EYgeCrB5IrPbFsu5RD+Ayn3BPmS2T5fwGWTs0K6bQBxp4xnqCQo/N 6qPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1778978045; x=1779582845; 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=Ke6jInMIcSbZvQJLAez0XGyYiEeJ5p5eH1CrpDu09no=; b=QpLiMlo5YQPeI/I8bqv3cGqWFrA+w71vsz1icqIAmS38YvQEi8co3WNcgh6SLiBTgR 7p59PXvokQpmgvMBlEO3u5m+X41run22fooArhpkdTip4TbGS0H09aEf8MZyFv/CsaKk kDhhJZj05cO+Q9oZbnJaow2Bum4ZtHAlhsutZ8xWeOVHS3QQvbe+f67hcS4flv0wxbE8 78n/6PcEAmInA170hsi9J2wjmsXwZH0IvLUom/7CCXjHMDgPqoOxUEUebcIxDojRNieU Xme/Eh5GQHrkiVo7V5h/RxqyteTgSBShS8V6lAKyVJAA05uE0YwamIUkF90+0jIqpEL7 5QQQ== X-Gm-Message-State: AOJu0Yy6SAzKOxan2ysBoUbaLq3gAbQz97UE2PGaRE8dmtxhwSnNfZI+ aai/tixJcM/qOPTu/L00h6fZAiQ1dQv1+EYrHg5K5fOK1oDcFp/dsJegXhS3pRCHp0TjMcXNORZ 0RLaL X-Gm-Gg: Acq92OGd7XbiNd0sBUp+giCi2y0ZthO/h7wYFmtbXMEqpDSKovWVj5rsyQGo9/hBz3B BXMcoUs7qtVk8EUKYjBAuBJPhiBFMFmLUxDuM/Wh13VMrtHjDt0p2rTGbNe5ACirBOCrK3vJZXQ DWqXfx+3Ppw5/wjNVwmCHiJjSAFHtaDuKA4+5w91MCIupTpFlZwuNp7DIS7ZqgK0tp0THraIYG4 T/DwmUkSCVU2eDY5AKQsnPawQ40E1ObspL6YXosQootjYGn6cLzVdxTIZtoumHYnR8hjYCOe8v6 n1zE7nkgJU1/ZEZSB9AdzwOnVoDGQo3AGAdzzSZXR8HAQSR7bUSx4WghcwOHwPqHknOENhEalyQ AkzWvo+OPypTCt0JWbg/8W/gbjT4EqR12JIgvfoHWIGnDJnZGIArzrFPRpqdzaZslm2s1BqgPq8 mXOQ5q/g//eR3gbntzQyo46dmmaJO2 X-Received: by 2002:a05:6a20:7294:b0:39b:ce34:f7df with SMTP id adf61e73a8af0-3b22e7ac6efmr10964896637.5.1778978044603; Sat, 16 May 2026 17:34:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v5 63/63] linux-user/aarch64: Implement FPMR signal frames Date: Sat, 16 May 2026 17:30:02 -0700 Message-ID: <20260517003002.321430-64-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260517003002.321430-1-richard.henderson@linaro.org> References: <20260517003002.321430-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::1030; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x1030.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1778978239480158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/signal.c | 44 ++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/linux-user/aarch64/signal.c b/linux-user/aarch64/signal.c index f7edfa249e..899fce7643 100644 --- a/linux-user/aarch64/signal.c +++ b/linux-user/aarch64/signal.c @@ -73,6 +73,13 @@ struct target_esr_context { uint64_t esr; }; =20 +#define TARGET_FPMR_MAGIC 0x46504d52 + +struct target_fpmr_context { + struct target_aarch64_ctx head; + uint64_t fpmr; +}; + #define TARGET_EXTRA_MAGIC 0x45585401 =20 struct target_extra_context { @@ -362,6 +369,14 @@ static bool target_setup_gcs_record(struct target_gcs_= context *ctx, return true; } =20 +static void target_setup_fpmr_record(struct target_fpmr_context *ctx, + CPUARMState *env) +{ + __put_user(TARGET_FPMR_MAGIC, &ctx->head.magic); + __put_user(sizeof(*ctx), &ctx->head.size); + __put_user(env->vfp.fpmr, &ctx->fpmr); +} + static void target_restore_general_frame(CPUARMState *env, struct target_rt_sigframe *sf) { @@ -518,6 +533,12 @@ static void target_restore_tpidr2_record(CPUARMState *= env, __get_user(env->cp15.tpidr2_el0, &tpidr2->tpidr2); } =20 +static void target_restore_fpmr_record(CPUARMState *env, + struct target_fpmr_context *fpmr) +{ + __get_user(env->vfp.fpmr, &fpmr->fpmr); +} + static bool target_restore_zt_record(CPUARMState *env, struct target_zt_context *zt, int siz= e, int svcr) @@ -610,6 +631,7 @@ static int target_restore_sigframe(CPUARMState *env, struct target_tpidr2_context *tpidr2 =3D NULL; struct target_zt_context *zt =3D NULL; struct target_gcs_context *gcs =3D NULL; + struct target_fpmr_context *fpmr =3D NULL; uint64_t extra_datap =3D 0; bool used_extra =3D false; bool rebuild_hflags =3D false; @@ -691,6 +713,15 @@ static int target_restore_sigframe(CPUARMState *env, gcs =3D (struct target_gcs_context *)ctx; break; =20 + case TARGET_FPMR_MAGIC: + if (fpmr + || size !=3D sizeof(struct target_fpmr_context) + || !cpu_isar_feature(aa64_fpmr, env_archcpu(env))) { + goto err; + } + fpmr =3D (struct target_fpmr_context *)ctx; + break; + case TARGET_EXTRA_MAGIC: if (extra || size !=3D sizeof(struct target_extra_context)) { goto err; @@ -735,6 +766,9 @@ static int target_restore_sigframe(CPUARMState *env, if (tpidr2) { target_restore_tpidr2_record(env, tpidr2); } + if (fpmr) { + target_restore_fpmr_record(env, fpmr); + } /* * NB that we must restore ZT after ZA so the check that there's * no ZT record if SVCR.ZA is 0 gets the right value of SVCR. @@ -817,7 +851,7 @@ static void target_setup_frame(int usig, struct target_= sigaction *ka, uc.tuc_mcontext.__reserved), }; int fpsimd_ofs, fr_ofs, sve_ofs =3D 0, za_ofs =3D 0, tpidr2_ofs =3D 0; - int zt_ofs =3D 0, esr_ofs =3D 0, gcs_ofs =3D 0; + int zt_ofs =3D 0, esr_ofs =3D 0, gcs_ofs =3D 0, fpmr_ofs =3D 0; int sve_size =3D 0, za_size =3D 0, tpidr2_size =3D 0, zt_size =3D 0; struct target_rt_sigframe *frame; struct target_rt_frame_record *fr; @@ -841,6 +875,11 @@ static void target_setup_frame(int usig, struct target= _sigaction *ka, &layout); } =20 + if (cpu_isar_feature(aa64_fpmr, env_archcpu(env))) { + fpmr_ofs =3D alloc_sigframe_space(sizeof(struct target_fpmr_contex= t), + &layout); + } + /* SVE state needs saving only if it exists. */ if (cpu_isar_feature(aa64_sve, env_archcpu(env)) || cpu_isar_feature(aa64_sme, env_archcpu(env))) { @@ -917,6 +956,9 @@ static void target_setup_frame(int usig, struct target_= sigaction *ka, !target_setup_gcs_record((void *)frame + gcs_ofs, env, return_addr= )) { goto give_sigsegv; } + if (fpmr_ofs) { + target_setup_fpmr_record((void *)frame + fpmr_ofs, env); + } target_setup_end_record((void *)frame + layout.std_end_ofs); if (layout.extra_ofs) { target_setup_extra_record((void *)frame + layout.extra_ofs, --=20 2.43.0