From nobody Sat May 30 19:23:37 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=1777508533; cv=none; d=zohomail.com; s=zohoarc; b=G7PyqyhCa+gzRajsoaQPsTmrNaA/Gd1qfTHoqsuMq/Djs52rdXmYABryyWfP2hAlgt3xNGFaw6E7mjZpJymLDbCCcbiY5YxzwGx3DFsf/rynuXydHspcZzTOmBaHiwfkqk7DdU92QJ2VWbmSTua3ul1XdOa0sWAA9JDkS7NfOgo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508533; 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=0RTwfNj95QqHLZW0aC4WBqaPiLkBNy0HzcOhZ7iUdX0=; b=jD1ZUoGN/BGx51mHejG/BzQiWGJH3zYqCKfPBA635Ri2/O7PsRnHgezUZ2VOP3BuYhtdwiy+8W3YbuesoklylNVGi/n2ud7trj9kAVZyJ9hyavEHNfEoJSC7+nFwXFydqIltXpGNYCsADGSeOqX04tanh5lskrWCHBdfsboUChk= 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 1777508533037490.9385748531247; Wed, 29 Apr 2026 17:22:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9K-0006IC-6B; Wed, 29 Apr 2026 20:21:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9G-0006GQ-JR for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:20:59 -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 1wIF9F-00064p-1v for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:20:58 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c79662bbd2eso180541a12.3 for ; Wed, 29 Apr 2026 17:20:56 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.20.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:20:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508454; x=1778113254; 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=0RTwfNj95QqHLZW0aC4WBqaPiLkBNy0HzcOhZ7iUdX0=; b=FCdK4akv2qoju3VjqkGQKs+uPvPsX6Cal+i7U/9e3c9XSLHQW6S7O9b3yMJffeRNm1 xA02O1DS21AnXtk7bRSH4nfN4fSAVq5Hk+ASm5L9nss4wArVq673LrLcwgrz9+3C6v5b 835v1HpYjtPPQoONxlJf0phzll2n4tiFO3hcOCG94tAps2bm96khB26J+MbqW+LCMjCa cN6N2qhLeGzADulxCwstKyY35PPN1wSL/iiNCX9gFG6MNZE8GlfRc30IabfX0gITUmHf BUD/IhXJMIpcaUm/kHdLvF+UERJtjCwWYvFQbPDBTuL8X4ZUgofuQz89NVEjM45mTbhd UBNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508454; x=1778113254; 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=0RTwfNj95QqHLZW0aC4WBqaPiLkBNy0HzcOhZ7iUdX0=; b=SsSZi9ViamNw4VaPLpX2H6hQ0cDZA0u3CECdN7T9M0shEexKr3r1dJ2GWptZ42NvoD UvIFXhnjVMwOVfdqAX6X9mxotqN2TKTmpST7KSW4C8iwNEML2xBdD77zulDWDquOKt87 udVkpi/8ARRauPy5CAvfsq/XxLLem26A/elQAe6ApNwEBFh3bYV60MLCPZiZVAs9TtNq anAkviDBWPfQoiObq9Fh60JDJ9HFwf8yFUcR+hKno9f7DGIaJByNJx6YoiEbvmaxeSxU YETXp2F6Q+3EOY0KBEgnwh+TKM2zjUcM6Qd4TE1rhT4DOlaZf6RCbtWdbCkVAzrf/EWl duSg== X-Gm-Message-State: AOJu0YxmRfKzaSHQ+GbldSakkAacTvLq6Pxh04OBr44O+EgCydg95aIo oxLR71WNQc+Z1c7zVXhTbx1bmBe/uMy7ebpT8wh6xTlpg3WyY3s4hit8WHTXjcyg5GZNFRhLSHp phfapnIQ= X-Gm-Gg: AeBDietkYGa0QPTF5bbACE9hstHJQUzZg1rfA/1NrJtS9rQ6HA93XVBYAS4XdsnyQF+ +DGn/PTddHSTMHYqLhTBYq3ufeP2a+jIF6LXotZCGREhhHSA51X9lGIWFeix7XFrSXvmUgq0C7K /FO0YHljBonNI1C4o5mIIENuf1DD6WJeZ+ARV6vqSdhA1z9kBrIac5HVzDe9mXI463XikI5v3jF EEXyfUysP8NyTaBYPpgOj4U/kq+OiqLmPn4FsoMwlXZUG9UhzfdVKBgh2ijVFjFxq26F1nv1fAK PgFAbzmF0c/y9dp8xrier5OQTQtm9kdz0vnyvGfMrGFkah4kTTf1oVXK5kBafNpBxHGHPucsAx4 xSXVXQcwbqHNGsEcy5dFD8mFchSnI5Qq2QgmY1boyf/rd9gBDPHpyTlIn4AFzedaH+il6ifw3Zv q/hIVGxAATe6TRVzBRxDC5yiPtPkpAO1nUde7Pl5d6 X-Received: by 2002:a05:6a00:4b4f:b0:82f:193f:807c with SMTP id d2e1a72fcca58-834fdb0a867mr880684b3a.2.1777508454460; Wed, 29 Apr 2026 17:20:54 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 01/47] target/arm: Implement ID_AA64ISAR3 Date: Thu, 30 Apr 2026 10:20:00 +1000 Message-ID: <20260430002046.59739-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508535211158500 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 6e5212ff6c..d442bb98eb 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 7e7677a584..66813bb298 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6498,11 +6498,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, @@ -6731,6 +6731,10 @@ void register_cp_regs_for_features(ARMCPU *cpu) R_ID_AA64ISAR2_BC_MASK | R_ID_AA64ISAR2_RPRFM_MASK | R_ID_AA64ISAR2_CSSC_MASK }, + { .name =3D "ID_AA64ISAR3_EL1", + .exported_bits =3D R_ID_AA64ISAR3_FAMINMAX_MASK | + R_ID_AA64ISAR3_LSFE_MASK | + R_ID_AA64ISAR3_FPRCVT_MASK }, { .name =3D "ID_AA64ISAR*_EL1_RESERVED", .is_glob =3D true }, }; diff --git a/target/arm/cpu-sysregs.h.inc b/target/arm/cpu-sysregs.h.inc index 3d1ed40f04..b99579f773 100644 --- a/target/arm/cpu-sysregs.h.inc +++ b/target/arm/cpu-sysregs.h.inc @@ -10,6 +10,7 @@ DEF(ID_AA64AFR1_EL1, 3, 0, 0, 5, 5) DEF(ID_AA64ISAR0_EL1, 3, 0, 0, 6, 0) DEF(ID_AA64ISAR1_EL1, 3, 0, 0, 6, 1) DEF(ID_AA64ISAR2_EL1, 3, 0, 0, 6, 2) +DEF(ID_AA64ISAR3_EL1, 3, 0, 0, 6, 3) DEF(ID_AA64MMFR0_EL1, 3, 0, 0, 7, 0) DEF(ID_AA64MMFR1_EL1, 3, 0, 0, 7, 1) DEF(ID_AA64MMFR2_EL1, 3, 0, 0, 7, 2) --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508752; cv=none; d=zohomail.com; s=zohoarc; b=J8TVrHCiHRsqE56YnvZma6vfWLreYPD2hwumJT/EA/bJ9WEmAfGWTizM9LN/XtmbgoigtLbZ6Hg4MNMCHQOnMvqJpDLuxBtz9MZjIHExnDuBIgDQWXt50tH2exGLKXNMgYDDBLU5jURXf7CSR8cm2LdAGnM9eHp1/jQIB1K2ZtQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508752; 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=oWIPSgFXM14xagFSaM0RuKbNAbnPwaHok4JiUn9LCMU=; b=R+PnmG0RftLc3o3FSd0kFsl6R2K9cjTaTdy9QAikLRLp9GcocfW8HtXbqkQ7YYA15o7URQt304RyrfP30CvVmGdt9EW7D55PBrulJ7ZW5AOR8SPcVBd4irRW0s4P6dVqW6dV+1or97o8J/YNl5Ebykb62XTOZ8S6PoVkWif6W4w= 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 1777508752805578.327010564385; Wed, 29 Apr 2026 17:25:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9M-0006JP-8P; Wed, 29 Apr 2026 20:21:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9I-0006Gk-3M for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:00 -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 1wIF9G-00065w-05 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:20:59 -0400 Received: by mail-pf1-x429.google.com with SMTP id d2e1a72fcca58-827270d50d4so333660b3a.3 for ; Wed, 29 Apr 2026 17:20:57 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.20.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:20:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508457; x=1778113257; 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=oWIPSgFXM14xagFSaM0RuKbNAbnPwaHok4JiUn9LCMU=; b=kmmuXFG0ec6o9J+h+62LPzy5jCqsT5eBYG7ClZkBPGpoamCQ6pGKMNwjZsZ/kCu2Nu +Ad+FOxY/2QqujwoGTHPEozfa0qXErGMAYjF1+7f701GLhZEYM+vyoZYDp5m2PO+pMjS GxajvhH11yBuWQ2XYVgTCyPvXGs1lyCrvv5qGIf1N6DgeZTSJ9uq8gB/gaWkbv1GtY74 4M3ZyU2r3dK9H+roqjFis6q0CgoGYjhvZjKGriLBGEJHXB3ezZ8KLqDdnERWf0e5qnBb PKWRVZlQ7AQR/cTKAd5oD7LLl6HehsolmOL/L0QS6HseBrIX6ElIc4pRQm1XX8sB1h+9 Dx0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508457; x=1778113257; 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=oWIPSgFXM14xagFSaM0RuKbNAbnPwaHok4JiUn9LCMU=; b=IOi0QWkkwQetcMNtUybfW6Fz8kvLYcqZYQ1sTf6slDdO5bfsNQOzMllIUGNaPY/gda Wlv3CTuL3f87HQzjQSe9eoclYuao/maVk/kTndn3HSD3Kaf4P7Atlf+YRcxHcvcq/5V6 Ysr0fen+4RpV2CeCvPwu4Vp+KGpcUE0H1gvlX7xid9kEcUJPwYlvjllXdnhGL8bYnE0Q CC7SEOAbCFAAjWFJ6pRUg/uue7Xd2T9nrmPZj3TW6HaYWQwnw9udyxZkmhL++/31L6oK XxHOVP2xnw+6hL2jPPLP99VxgmvnLf8VCweJi4il+LTWD1mktK8fn4o0NosOMyAGRqhG HGlQ== X-Gm-Message-State: AOJu0Yyh1rWSpjAFGOme5IvS5io9lfqNWNvmud7LSEfBUnlZKcseonC7 C6brkWmW4w6S40iMJ8Xdz9aPVvLQEl1yhvp8BCaV752JSvfH65QKNm4pXYCpH46QcOC5QgVuSvT mNMHx0TE= X-Gm-Gg: AeBDieun0GhKlJGiVfzp9NhTWnxIUSPjKPt+YQO09qPbD1dumu6dL5HHBDLIBZFd/R/ dppv9ZObzCjQEs/5qIN9Y8fqQbdkJftwLa0yV7Oa/QUxP3c3W5kK6pht7vjluny3nhvxYCuO7ML mt8h7d7GMs8wYgWtKjvJ0KLMh5d2HwMS2pfhTTxU3vtt4Z1bl0j3TYNQwyiOnGywjq0VLSLPFV8 YTqGQMOUq8++PkKvcdmHHaoMOUYu0XvaZgWwkCwRWO8JtDDe6LBH2wuU3EmAoKyVYOGl1UadAnx /aeAW1ihu1Xe7ZxT4WtLMlicMcWu85a3TVW/pAtf+f7vjTuDAtZH76DEtNIKG09PuW04Ulb150h BnnEbciRx/ATBmcTlbmZ6AgQAIzlCMMgkk6hil8nhZlYSFxMbV12wdDVoJriddL6vnv/25oTkmy 8HBqAlK7esY4D3DKTK58KR+q2pnBLApk/+404Df7m/ X-Received: by 2002:a05:6a00:230b:b0:82f:7076:cf2b with SMTP id d2e1a72fcca58-834fdc49aabmr831549b3a.40.1777508456568; Wed, 29 Apr 2026 17:20:56 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 02/47] target/arm: Implement FEAT_FAMINMAX for AdvSIMD Date: Thu, 30 Apr 2026 10:20:01 +1000 Message-ID: <20260430002046.59739-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::429; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x429.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508755074154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-a64-defs.h | 7 +++++++ target/arm/tcg/vec_internal.h | 7 +++++++ target/arm/tcg/translate-a64.c | 14 +++++++++++++ target/arm/tcg/vec_helper64.c | 35 ++++++++++++++++++++++++++++++++ target/arm/tcg/a64.decode | 5 +++++ 6 files changed, 73 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index d442bb98eb..f84b451626 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1053,6 +1053,11 @@ static inline bool isar_feature_aa64_ats1a(const ARM= ISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64ISAR2, ATS1A); } =20 +static inline bool isar_feature_aa64_faminmax(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64ISAR3, FAMINMAX) !=3D 0; +} + static inline bool isar_feature_aa64_fp_simd(const ARMISARegisters *id) { /* We always set the AdvSIMD and FP fields identically. */ diff --git a/target/arm/tcg/helper-a64-defs.h b/target/arm/tcg/helper-a64-d= efs.h index 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..b5ad67b5e0 100644 --- a/target/arm/tcg/vec_helper64.c +++ b/target/arm/tcg/vec_helper64.c @@ -140,3 +140,38 @@ void HELPER(simd_tblx)(void *vd, void *vm, CPUARMState= *env, uint32_t desc) memcpy(vd, &result, 16); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +#define DO_FAMINMAX(NAME, TYPE, FN) \ +TYPE TYPE##_##NAME(TYPE a, TYPE b, float_status *s) \ +{ \ + bool save_fz =3D get_flush_to_zero(s); \ + bool save_fiz =3D get_flush_inputs_to_zero(s); \ + int new_flags, save_flags =3D get_float_exception_flags(s); \ + \ + set_flush_to_zero(0, s); \ + set_flush_inputs_to_zero(0, s); \ + TYPE r =3D TYPE##_##FN(TYPE##_abs(a), TYPE##_abs(b), s); \ + \ + set_flush_to_zero(save_fz, s); \ + set_flush_inputs_to_zero(save_fiz, s); \ + new_flags =3D get_float_exception_flags(s); \ + new_flags =3D (save_flags & float_flag_input_denormal_used) \ + | (new_flags & ~float_flag_input_denormal_used); \ + set_float_exception_flags(new_flags, s); \ + \ + return r; \ +} + +DO_FAMINMAX(famax, float16, max) +DO_FAMINMAX(famin, float16, min) +DO_FAMINMAX(famax, float32, max) +DO_FAMINMAX(famin, float32, min) +DO_FAMINMAX(famax, float64, max) +DO_FAMINMAX(famin, float64, min) + +DO_3OP(gvec_famax_h, float16_famax, float16) +DO_3OP(gvec_famin_h, float16_famin, float16) +DO_3OP(gvec_famax_s, float32_famax, float32) +DO_3OP(gvec_famin_s, float32_famin, float32) +DO_3OP(gvec_famax_d, float64_famax, float64) +DO_3OP(gvec_famin_d, float64_famin, float64) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 01b1b3e38b..666a293540 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1193,6 +1193,11 @@ RSUBHN 0.10 1110 ..1 ..... 01100 0 ..... ..= ... @qrrr_e PMULL_p8 0.00 1110 001 ..... 11100 0 ..... ..... @qrrr_b PMULL_p64 0.00 1110 111 ..... 11100 0 ..... ..... @qrrr_b =20 +FAMAX 0.00 1110 110 ..... 00011 1 ..... ..... @qrrr_h +FAMAX 0.00 1110 1.1 ..... 11011 1 ..... ..... @qrrr_sd +FAMIN 0.10 1110 110 ..... 00011 1 ..... ..... @qrrr_h +FAMIN 0.10 1110 1.1 ..... 11011 1 ..... ..... @qrrr_sd + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508494; cv=none; d=zohomail.com; s=zohoarc; b=nOCg1+QgU00cw2xepTN99EjWw1Vo5cmTlYbamyB4msGvtIhpZRqJpcOHgfBPdDpq7uo8W9/qb+6Im+HKk+1EzB9Mpk+uiNu7bELjAmgY/tzYz8VAIEwfDmJu10KFrLuW+B7rxOKnqnUecOW/VlHJy06aSrOfFQ+CBGZXSTG5WCw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508494; 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=4YvroQ+OX1f6mxsnmADZcQbu7faHJd4ipBsXfUGJ1g8=; b=igvxfzlbUYpN/29cPQJYnIO0ulqA9MwJuGexol45fLdb8fIyp//PSQ+e8YccTigDQURj6tZHWRjkYbNpGSodPX+spKRgUrYOrIrRrM5UvDxLlH3tufIESpqn4a9ep51W9IMsyHqJPdGpJr3M96iXyJOTqJOFfera2siFBsvFV/k= 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 1777508494136751.93526546016; Wed, 29 Apr 2026 17:21:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9N-0006KP-UP; Wed, 29 Apr 2026 20:21:05 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9K-0006IN-4s for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:02 -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 1wIF9I-00068V-84 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:01 -0400 Received: by mail-pf1-x435.google.com with SMTP id d2e1a72fcca58-82f943870baso170485b3a.1 for ; Wed, 29 Apr 2026 17:20:59 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.20.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:20:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508459; x=1778113259; 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=4YvroQ+OX1f6mxsnmADZcQbu7faHJd4ipBsXfUGJ1g8=; b=Y5UEW88NcsolbicbcZDAnZFOMJM9E5Mu080yZeALGdVa/9mq14vsKBRSh48KxrtF7n J8hhmtZIQnInLvocs+sPVpUNWDiS45PjwWsJh2rSTmEcrziInujSEAb0hN8mWGtMIXRJ mutpaNtk+62FeqH11IrqPl56gJcaTaDBNnkrHHUT2vN81V/OibxDO1z6jZ0HWW91o6x4 IYKlh7gS7v79F/5mbo09fCPN+PdDRHMWCS7OlzhXNMf3xenVXoi8AbHHvsIcdqwrpSiR tsLpaL2CP4J2VGqxCqKP9JKMteY/dEK4su69n2lgpL2GJ19FBX3CDRlaQ8kIpZFFQ5BT yIEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508459; x=1778113259; 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=4YvroQ+OX1f6mxsnmADZcQbu7faHJd4ipBsXfUGJ1g8=; b=J/SBHg6mCNONTB/dKliMbq7kx/W1UeLPXf3KeZM0JYbo80s1Bt5TqsablFmkN4qj8E Wy+1E+u+YTa53P/S2J8ezPs5cK0W1O5RX1a1pWREkyprY9hl2Hmq0/AJZnQv430AbKyc wM9QruC2onxR6wPOHw59c+wDLpKWED5Hn2ExRVGcE20MXnvOG9DbZKAWP6df06GTc6F0 YfYtODTc8ph2ut8bfzNpxHGbZHg+Lke9giMIIgF1iwqFXoFG0+n/H9a05YabzKDWBX6z H8SEGVjITxcVfDXewz9SN/rsb8cXt4q4TJirpJm2Qbyty6Pb/KHmV6UPRMiFrtQ7EpbD A/MA== X-Gm-Message-State: AOJu0YwBwFsHWlv4hAYff4CXjrB9WvQAuFq39xsm78DS37XYpG0uylDu IOb3227JAbyrvMyWdu7ShGijG6JRP1eLoCOYWDlhmhZd9SMnagWA9MmlvzLdSu221PDzxy+AaUD GAkYzwIM= X-Gm-Gg: AeBDietZEwT9sUBGBU+074vWkhXAYPjyAbfsV5ng6ptUKKPYuksB/gwvMt72Ni1V2u6 pMH9jc9Rsrmr/SLnGdY6j0EF60ltsoNkUQ9Fq4H7Bu+nQnVyWaj83w/De+goc+szj5amIwGkFU6 Kk4IPeHvnRI4oH4NoWqiudRS2Wy4tD17NdHnBsPl/TSl4nZ2SLKDGjTFayICTcYz03lsptjZ+Gi jdaX+U3zYlqh4Bwy+1E3+NR/HjTtCXBlIv7FwyCqJnSGVVUP7rjf+52xoGvk9ZoNiKzo4MVr0HL t9bxmxanBlOws6XN32IAl0B3cbF3orsGHvZQixDmHrWiycLyH5I6tUc6vBUoB0jW0DgiGhfgc/3 QfpUmbAmtQjm7C2+bm1Bpk9IDAueqeIGIjwhyRUYuHJK9S0iofb6eB3/HwpFAvWGbWwchg9JDdc Ao3RzdYx6g+sNYD420uhEqdxwnbIOox74pg3XGyG2D X-Received: by 2002:a05:6a00:2d85:b0:829:8c23:f70e with SMTP id d2e1a72fcca58-834fdd5e0cdmr845409b3a.45.1777508458781; Wed, 29 Apr 2026 17:20:58 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 03/47] target/arm: Implement FEAT_FAMINMAX for SME Date: Thu, 30 Apr 2026 10:20:02 +1000 Message-ID: <20260430002046.59739-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::435; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x435.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508495029158500 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 f84b451626..e297bc0a0e 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1579,6 +1579,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 19:23:37 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=1777508911; cv=none; d=zohomail.com; s=zohoarc; b=W9EMA/+E605g0wM4DKvGOmZvp14d+NJqzTz/fj5ckq8+VhOJrqpHB5u/ESLfJuNBO88NcY2FDxlAGUQ3flFgTkA5LzNFEiLX9UfUuntft3Hu93tMM3NJIIunRmhjCX5iyqlBSYvRXhcA4cYz2KNtWxfaLwFRXIlmt5rmIVNaANg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508911; 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=wllAHlGwaIQlP9pI20eE0rr4YhNHleMV0TuJBC6g7Wc=; b=lqI5Zd2e16xH5KCSXKsKo1EjKkZA0MvAlDFEpHX8YupGQmvClLkT42bNpBi6PlGxnENlt01kHdvct/dqgOgMsYKBMgvjjKRU+DrKqnqEzU27zGd54i79qpmbZ2y7zKgq0UIWrXLvJLgldLN5NwbOYT8kth23IcaR1tIJCKF+nk4= 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 177750891126877.60971829226605; Wed, 29 Apr 2026 17:28:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9O-0006KX-Er; Wed, 29 Apr 2026 20:21:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9M-0006Jx-KN for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:04 -0400 Received: from mail-pf1-x430.google.com ([2607:f8b0:4864:20::430]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIF9K-000696-SR for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:04 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-82f8bf96b46so152261b3a.2 for ; Wed, 29 Apr 2026 17:21:02 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.20.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508461; x=1778113261; 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=wllAHlGwaIQlP9pI20eE0rr4YhNHleMV0TuJBC6g7Wc=; b=MSZIPpoeJqKhlmVoB3q5RG5D7LXMGQkpIkVn1ywtaIV+jFaVwNUhuxMUllNx369sij 3d4XNcgssaVKxuArHgH2AuxTrBb02pEZH6yZ+6PGXJLn96Q2PkxnSWYtvm8JX+PNlrXz r87nBV2uYKz5dY0+2qMhWIB3nWpqi+K2FX/w9arPHabRtnaY5Z75WLcLncns25fPEHl5 GEhVC50K2Mt49q1DhMB1iiwnHb9H5DMOSN3a/gMH51K+3dultWMJfySfACFX2/g5ny+t GZvHbtcbc9JKcwWl7pCAIpjNp0q6F0bBvzNpYs2QbVyPWAmjxSGWVBPCw7LTHm0xJZ4s S0xg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508461; x=1778113261; 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=wllAHlGwaIQlP9pI20eE0rr4YhNHleMV0TuJBC6g7Wc=; b=PmmsKZ4JZT3qKIneNnvgYsmtyP0aVuK47gmMCONbi5NFEZGMls1kDJJmg2fzECzfFS b2OE91OH+VJJ41Y9iptA8ElpO43E29+vxgOx/PdwTLty17Eyrvt7lPl+giWMKo4knWBN Bfe5VVboZY8ePq3hDDK+f+h1sJMy6dNVBoSqNXhQXKg9cunreH2CIlVnbLfywlFrXojr LfV0nf63KSpXq/SXGu8AMljd0ublyaf2IqsZ/rWlfWqiLt6Y9OSC+s1biCnhBbmdiom7 4RN4gpRXttVrMu3OpO8M6dZTqg75WsCHHoaiygaaxRND9/Qzx3wG96goSYAzFcMvwWoT fJNQ== X-Gm-Message-State: AOJu0Yzo74eqhWMSmkiPkVcbb1d34LRwoJhQyNzrUx7zhjZHlqiPT/mK aUtIDEGeWTXFw6PdOLgxTpOk+olpS7ZCDO5rx7lZZEwTRtbCrFvgVBIBB3qJsZ/N/T+6X74U6YA 07WENL/I= X-Gm-Gg: AeBDievQZaHJEQpW3c0twbFNx7CiFf1TwHuN0H5l5LpEpGteYng0ZE77/bbXi8vVEtG e3IgRrc9rcCPlM94jc3Q8ekUEJhODyUzp+Etf57r4iBHwlHnU3BCYLgqM4DW8ZMw6JrMqYBc/5j pHLDTzJicIbbuj0Iel8ioprW+aIvKZa7Cm7BJNnyqCXhCt21MUCmLw2pR+456ssaFzmKPlIda0N dyKcenYeuqXmPjHhVVi2XFwi61cXMrE94PBuX4DCUwXdPzG4byoQ2zlY794/z1tCI+IM2nxfbJ3 V8M7ugQrPVCmtcAgE1Qbpt0Kle7LVwyfSwXSimJe0oPZQoStuXGMQPLqdKvZ3Tq31b/lIXwDr7u NhtFJmQIeE1GThSn0DNuWf0jBdwfrxQL9jWaCghSS/8Vt0W1Sw1dVGifbTyXQU59NT7mC3EMtSc l78tkeAj/7ipMqQ+FGnr2oFcK2XAB0baQen97JVkQ9+80VKx0Y/OM= X-Received: by 2002:a05:6a00:391c:b0:82a:6461:6d1e with SMTP id d2e1a72fcca58-834fdcc4b03mr751712b3a.46.1777508461244; Wed, 29 Apr 2026 17:21:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 04/47] target/arm: Implement FEAT_FAMINMAX for SVE Date: Thu, 30 Apr 2026 10:20:03 +1000 Message-ID: <20260430002046.59739-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508913073154100 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 e297bc0a0e..5b1c0cf76d 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1554,6 +1554,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); @@ -1594,6 +1599,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 19:23:37 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=1777508496; cv=none; d=zohomail.com; s=zohoarc; b=Ot+6ht0aBOOT55d1dXq0wUOq6PD0n6AGQ6cdxroDcndSewSA5E6BWRVWeIu7yusRyXvQS9xrQS9PN2nMU/jaZllBHfjl9ZC1WpzkyCVA/1bnLgDesQQSFADdACNmR02o1fCx1CydNe8FfY/utJ5lliuuY9xOB0ow0BnxwCRNRAY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508496; 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=EEoaha2dMRsLJKCNoN1AeAyAERIvgcfwdwlQM+tR3fRgo+fr2ByeC/Kf1yKR8MKRySeiqU/6SeIB+CYH795Rjx4vKwnfp4hgYiMzqJS4Kd4vCPpC8qYZtYs4b740K0U0fMcgqbUGi+8/iNtSy/jPigx7ZPZdYo0kAo5jaNpdmps= 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 1777508496724291.28170193753897; Wed, 29 Apr 2026 17:21:36 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9Q-0006Lb-Uk; Wed, 29 Apr 2026 20:21:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9O-0006Kd-J1 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:06 -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 1wIF9M-00069c-Vu for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:06 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-8296dabef74so325532b3a.1 for ; Wed, 29 Apr 2026 17:21:04 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508463; x=1778113263; 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=dSOQ1kJakcn2euojOxZ6/dR3B66VkHEX+lYBTWMLKwiOYh2FjpBFslzVzEam934Za8 3rRzXHb/UEvv3wTJZyOW8CQ2DXBV60qKjxOdD4i/RN/Jv4OGjQhEaIzKc5pG9ZH1EbU8 ulZiVBDreHAYt8VLRe2qJ6Ev5vdJUO8KvDMVZK+L6OveVCoHuDVcmRFWqZgoyNKYF1nE mK+zgnyZf6YgSPov5ULuSBWGljT1o8+Cs/sNpQGDZu1pyT3e+PYr/tGqsnucKjnBmVtX 0p2grxkX1ZeVZQg/1cjRGDqz7Ox0cqVEfsDHdVio/VZgNPGaUzr6qSQYe3Xnzk7g2n6p teuw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508463; x=1778113263; 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=R+xuTA/iOmaX6bvzIGyS7wSOpfpc6fL5tjHKGrVbhLCmYJ9rZtKtwbgXKefsh4yOF5 CQGe0KERqoQTefpEjLvCw5D+Pu0nTvHJl7bVQL9ZNrwVp/oeuaZdajfsP2tno9XR/thv d1DSQCLkSiALZkPCHAC4zr9gjOyepb5yhj27wChE3GomZfGDGv2LtnhkC7z/QkQsOzmv ncjRTGUAf48jdg0qktYg1JM/OZFv+4vnYL7mIpNaS0tuDr87x4locPis/F8nR811oJdT Yp3t9SZqoKGlnY3cUs0ZRHgWjq/61abLiTkuydf54B6nqneczfhPIGWU3B3obRUIAXMA yWpw== X-Gm-Message-State: AOJu0Yz/IhJi37wyCvvQddOEY3dHEdVmUXDynhNdEmChUPcnQfY02F1v nyA+irjOofQNv0l9e9qzpi7OTc1j8YXhT6Ei4bz2PC3ysBvlkhbAy1v/MDQPGYqcEjk8Y4pm4/1 +b/yxN8A= X-Gm-Gg: AeBDievWzct8293w4ggS6NJHcqG4tuQEmghiDsnm2shvH4Lb0oRm54maNkHcJsUSJLs fnLiAO2AVOWaNSeBaJiS8xhpL4nSmQdsYvBmIKer+3LFWO0+ba3PE3PGjlSIAByZKYisR694YpP qODwFDy3LQZoVwNj7B56dkhVFidenbyUmfcCUIL9QExzzGVgHoR82kJoxEVemzB9gZ1p9mxYpp7 1tFf6TetKPcVarMikR7+VnraAzEeIkRUsIV3A+t5NseSccex5vgufWAyQ3/BZvl+XUMzpjNN4t2 9XK/kZPQE4IbnMgejkjKyAZh1rTjaJWDcABxvVkANycFAugdx9UnGGPH19rXbXrAFtwxuJKOY1k 3P4esB0kjBX7WFtxutySTZY4QBkCkxCpFY9zFKgcbZnuoUuxDA10kCAXyQf85SsXx5ufe0pnnZ8 07RqmvfuR3dDSeUeDcmaLj9NLAEjRagobUtQBwAnN3 X-Received: by 2002:a05:6a00:399b:b0:82d:5da9:adc9 with SMTP id d2e1a72fcca58-834fdb0f112mr895384b3a.12.1777508463456; Wed, 29 Apr 2026 17:21:03 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 05/47] target/arm: Enable FEAT_FAMINMAX for -cpu max Date: Thu, 30 Apr 2026 10:20:04 +1000 Message-ID: <20260430002046.59739-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508499339154100 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 19:23:37 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=1777508571; cv=none; d=zohomail.com; s=zohoarc; b=OGHT2fxR85EntCdMANerzrfN25KrW7/HhcaqHuuWk6e1R0qHLYZDyck7xDFDaTazxV6+QfTtdC7A9ijNekF6bgAPuSUtJnXD+uHYkJ9IIue0zHyoj6bGuWaZ7RfPFNKNhUAbc41ucV6RPDExzRKBJUs3nm7mU3MX60tnT+HP4xM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508571; 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=2/G6a8pFSVWZ7UbYRPC/FgRTYLt4qcDCTU3OgJbrV8A=; b=RTxHNn1BdInMokSyiAbK7WkPGD6ypKqCuXNI2rfNnI51vYprD2Wz8YKCOqV0RPPzlRnZ44QUvvytyq5oAE8qpsVOyFJWPY6NM8a7lB4nn8j89BXCZ/c3wyaPIN0q8Qi1YKIR7tklKjspZ1CfvC6r871t/sarWMLyCq5ogOJgEF8= 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 1777508571550330.8795689189218; Wed, 29 Apr 2026 17:22:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9S-0006Mn-Sf; Wed, 29 Apr 2026 20:21:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9Q-0006Ld-Pi for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:08 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIF9P-0006BQ-2i for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:08 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-827270d50d4so333706b3a.3 for ; Wed, 29 Apr 2026 17:21:06 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508466; x=1778113266; 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=2/G6a8pFSVWZ7UbYRPC/FgRTYLt4qcDCTU3OgJbrV8A=; b=enrx8kAhVmRqf8pWcKAJYDl/cOTrNzGHS6xl0qMqmJ6uoRi7lUr1ldfYfVsxdlEDee NE90bkSQ19wjeNu33AmoiM3iH2VC2MJFvl3zsf5Sqe+GErowxuA2TNSglGByJ9ohFqAo 7T9EtUasBpkc90FRKPgMXG1vQt4+oATeYNiwCn5/8c+QNZBUv2PzYUXj4+nvyjbKGVWP +tsTeRDhqQjocGECTzba16d8MUckvo4pMq8C7ThzLmFHFC6M6R06tH1uwp1PGnwFKdtn Vhni5GAFOLrhH85868ZgdciTeYNfMpP59cYtDrMoCqiu4/mOQ6rRWoik95dIvzynvaT6 pACA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508466; x=1778113266; 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=2/G6a8pFSVWZ7UbYRPC/FgRTYLt4qcDCTU3OgJbrV8A=; b=gZ78AHUWXfdFCHqSntY4DCAwPT6m+6OQgFwyzEkfN/XkItrFV9+1TQG+pY0RVgzLMK 4zSy3Q7cU/L61egYWeM7cCIXsBfswK1bfh5OT27d5fj51qeIg5N/uHo71OPJWK0vBXgL 0rdMXBQNMd+IyOF0WxTjLW012ob1Kf4nmk2K9uBM3QujdgMU48ysJcCxT7NrxabkSZf9 GpnTe9Bb5X/0N12KB9FRe2YfjH6w7KRkReI5FJy53ieLA98OK1YvYDSkGbzQHJDtm/zR 967Dn3Dl394Li9zDxs4x1R+S+QNtkYgz8LpIU5x4JgrQaW9r1hFVjL292MvMxVJpQR+e vjRg== X-Gm-Message-State: AOJu0Yzy93fM7hXjCnXr4h1rcO/U6oMS6rnEQfF30b23I37MHSh/ICL3 OsaB6sIQhnwCjLTu3djGeVFOopSp+H9FES8RCKgV1nx/hzGNo/QgkYgaAAAIJ7dQW1iJdMB0YHE D//KYyGo= X-Gm-Gg: AeBDievYQGYCekFPCP3rmxL22nSNIYhFJqcXVWY7zTR37ycsJr+bJe8VFso7ATD3kTA xsSPT2JS8bsult9u/tE4oDK4sp119zceRtRV5lfLYUV4RfBR32iJ97jVdWUe0jgvDmywBskHfah sWVgVURcaMRLBxXYm7a5xon++P4Duz0rQxJmqg2mNxKmML3r2FNEOX0RLtX+fYAtadRG8nTeo2V K7gPCVQrImTWL10X7tGmRLGC/ibTZI6ZmMjAZzRNuWCk9ISVh+hxToHG6tHEjuasNL411NUTQCQ X8YbgxcFafuS2ipnev/aD4E+dQUPrL3YsJd9KDGF0cSZTonc8VCHg2TPkaYjIiQxBj5wdRUiLIl kn2mD7H4zWtUI2/FgPFOEm4/dUoVLZBwy63jhmK9NbV31BEQLpJb9IYOboqItU3GDPdBSacdS6a x8zs3v+LTVi+vlH6TQCncsFEx6wIobjyEHnn2kuWu+Mdkcp/9KCKc= X-Received: by 2002:a05:6a00:13a9:b0:834:e880:7a21 with SMTP id d2e1a72fcca58-834fdb4bc01mr887105b3a.18.1777508465629; Wed, 29 Apr 2026 17:21:05 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 06/47] target/arm: Update SCR bits for Arm ARM M.a.a Date: Thu, 30 Apr 2026 10:20:05 +1000 Message-ID: <20260430002046.59739-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508573271158500 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 be14a47c35..da1b7fde1d 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1796,6 +1796,17 @@ static inline void xpsr_write(CPUARMState *env, uint= 32_t val, uint32_t mask) #define SCR_AIEN (1ULL << 46) #define SCR_GPF (1ULL << 48) #define SCR_MECEN (1ULL << 49) +#define SCR_ENFPM (1ULL << 50) +#define SCR_TMEA (1ULL << 51) +#define SCR_TWERR (1ULL << 52) +#define SCR_PFAREN (1ULL << 53) +#define SCR_SRMASKEN (1ULL << 54) +#define SCR_ENIDCP128 (1ULL << 55) +#define SCR_DSE (1ULL << 57) +#define SCR_ENDSE (1ULL << 58) +#define SCR_FGTEN2 (1ULL << 59) +#define SCR_HDBSSEN (1ULL << 60) +#define SCR_HACEBSEN (1ULL << 61) #define SCR_NSE (1ULL << 62) =20 /* GCSCR_ELx fields */ --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508493; cv=none; d=zohomail.com; s=zohoarc; b=TFKBqB72CKefqXYKpzUiBIQJR0eud+g1dHDaoNQQIWiR66tPuEbEBB9jZ3/78Yr1BdY8CyBIXRhOTtxohRq2yjhi4xR7d2I9xD0rvrG60cRRtZefx0KPZn+JuhvnheCrjDmHH0I9Wn9u4hr3EBKKXspshDcU+hwfs4B4k2bcGiI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508493; 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=7xQFL5qnJbTCMuaEBPieq6VTwctzd/ZwaJ3ywMslF2Q=; b=Zlho+d6zCsx6WJEH2W+4MhlD1muGm0LqdKk6czlR6NhVNZskJZDb2AEWa68BYQllt3GRchSJ7Btmlyp+ouUYlfHHerigFzpSx7Cb13ESq1Bk4cIy9snk0xwtI0KM96GO31VWFEjskmNxr4BNEk9R1xJEpuhI5kqEafTojYtROGQ= 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 1777508493505765.0346662390998; Wed, 29 Apr 2026 17:21:33 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9U-0006NY-RD; Wed, 29 Apr 2026 20:21:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9T-0006NA-Mp for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:11 -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 1wIF9R-0006Dx-8R for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:11 -0400 Received: by mail-pg1-x531.google.com with SMTP id 41be03b00d2f7-c70e27e2b74so101312a12.0 for ; Wed, 29 Apr 2026 17:21:08 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508468; x=1778113268; 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=7xQFL5qnJbTCMuaEBPieq6VTwctzd/ZwaJ3ywMslF2Q=; b=GhUeO3Cn8ik0sid1v+YmDoiHXRvQARtDMOl3UK0Es8C9a5WY27n+BASq7ngj3OCVYU tNMwlul821iLuJchvhGllNzKI1GQ7z890A/27HUGNf1Z78QLXWyy/WED0+265gGr9lNd YIMUEBM6g1DIhjY5O6IJ/DDyuFWne9gyYGUbXQqCYV2EYD8AMxk9/InENXEE3yA1tZUq i4cWXdl7izP1ioic0NZK3xNmvGp8VU81PTutI5e2bEOR6X7Gc3S8Z1lMm4Unk1zYSUGt 5KZFtKjTr5sN4FNsv44eFd99h4IFOrTp1eZ3cspdAMtYDXMUkZkaul4OdztcGElXwWOa 9ERQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508468; x=1778113268; 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=7xQFL5qnJbTCMuaEBPieq6VTwctzd/ZwaJ3ywMslF2Q=; b=tR+zthEpKYNVPJ1JIllElcmbzfD3JotEp+NRolNIjhx7LS3uYOboW/CF7IDiTCxdet 1zl+aniZ8lTv6IBemG7uqSnKeelZSpiDl7PkQhoUsQbUM+WCdExu3Xn/YOC9F4NN3VR1 Cn9GKWu7Nkr+fUTOAjqKAIDJuoFfhwLQKPERVSwSlj2O8ASJ8N39IIIy78+0m4cO7n4c KtzP8rMjIhhD6BlZ01byYRGe8ZIsl6IM8JWQMXV3qlZ4aqQ+Qdo3xrfRfpmvdXg9WGyJ zg0lhtwIdd8KW6IIdoTjd+wNf+OtqedzphXJDXQkNQErMZefn13F4QQ20MTJ8GYaOMjP ENjw== X-Gm-Message-State: AOJu0Yxvf72gfv/dgSqgZQN+YjuP1vzYZg1VcpYzcoTWhaZkAn2iaoKR T2cqiZhI4/FLe28S3nc5GA8KYVrC/TiraaACX9VjySF/2tiPOlkydCcRf45OTEAWsUbIRRjAy0o 1fjUpmyg= X-Gm-Gg: AeBDieuJzuP8xlnaywsmN7+FXgC8EGwxo0IMsjsuA7Dor/E1Ab/ZcY2A7zGKY+9ki7C SHmUvRuB9b6I2MtubwQDMS3/fNpO1OQdWbKCpd2Ao6Di5f3NiI3xj6HVDD52z5ZVeJnlszz3/IE ayi/dvk9KfgGrhSq6MwBLTQC8DRcG5i/uxHaxdLgXfSFDFOb0Ea4MbHhtQ91etm7yUTthw+EdKu DfvJutZwZ6p6sGTU6WPVSb/C/XxCGauOFt2GPfbzkbHSuk/ZCoJkHR4R0D8L84V5aRYPcdOIt3k ihzYD2ZqbT/nUw03R09BIPtFnvuWz3OwS5LQT7Kuxze3rZL9fuK1lrN8tMxTF2ha7nQ5VfBZ8nj DobbScxykxWVEwzyiG2jl1jaCUMSltErL4MuBm333iceKs1xfd2zYk8aZ2KzIshlqu8M0Ski2/k b+cVd9aAQsTbGc7lBU5CPYtSLayJS6RW8hZLr1LXlA X-Received: by 2002:a05:6a00:2d26:b0:823:9b7:9c0e with SMTP id d2e1a72fcca58-834fe201dbbmr659945b3a.34.1777508467763; Wed, 29 Apr 2026 17:21:07 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 07/47] target/arm: Update HCRX bits for Arm ARM M.a.a Date: Thu, 30 Apr 2026 10:20:06 +1000 Message-ID: <20260430002046.59739-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508495485154100 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 a632584a4e..6376ae1ca3 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 19:23:37 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=1777508752; cv=none; d=zohomail.com; s=zohoarc; b=Td7PQVlZWi7A9Y9osEnCaQEH49DYRjOU/bI5aiIfZTHdylt7k68HNUlu9lvs8dc+jWUF9LePZVBgD3Pa7OTcsyVvk5GwyQOeG9J/a7H3tWZ0zYDjmyET1eRV3akN++h05vM/qgIXEogGYbkHaW5qAQrdENSkIPZfThXqO+vRqD4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508752; 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=73otMSm/BuymaPP3YE3sIV7Wl7PcxvDt8khsJ+zToKU=; b=AJhnJsT43slbsySxAlUDkTQUjm6Zf1lQescVv8w4+xftWjIoGUWZI55wAXorunBZmoYvAX7UAZRrrV0ZphwRWz6smAoSeSLbBu+ZIcZv4DTDAduKQ7SqR3rEPmWsrgNkJzLHdM+Glep5Y1Xmtn2LgxwwvY0u3aEGN9b7sY71Igs= 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 177750875211829.519746721421257; Wed, 29 Apr 2026 17:25:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9q-0006YM-9Y; Wed, 29 Apr 2026 20:21:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9V-0006Nc-3F for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:16 -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 1wIF9T-0006G4-ED for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:12 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-83177129e28so162057b3a.1 for ; Wed, 29 Apr 2026 17:21:11 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508470; x=1778113270; 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=73otMSm/BuymaPP3YE3sIV7Wl7PcxvDt8khsJ+zToKU=; b=Tu7VGxMXw83S2Iu4tUFkFXu9MorQ7OxPXFZf2LUfKgtN6kgLoZj8TnBda880tdDsv3 EksPOz3Bv/le7XNWm4Angpi/pmxs1VheF70T6jafruXV3xlzcRc5htR6utF4m8JnRhWS mUPQwEcWUdoX7axPZ7Nl4/bgIe/nZ1DAmWClDMO2Qc5DYKPSP/dfQYAdvLhaaqsyYT90 5hXnnYZjHvvxtcpGoUBJ+hBu9mfUEI0Hc34upzIgrodVahCRisV6vWVNbo4ggGbDyNBa bfoa6N7fUlsjwLT+TrnFQmtZfmiCCkf9CC39NYn8wN6jsft+fFA3QwFXnxQrKvZFR0J7 afgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508470; x=1778113270; 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=73otMSm/BuymaPP3YE3sIV7Wl7PcxvDt8khsJ+zToKU=; b=hR3GGgVa05YQvTgcuJ1U8kBQ+5SImny4P3H7QKTb3vvWsc64LWWvlL+ZQhc96pIhK7 TgKnXtAb5lFxc5ZkoRDhZZPaHyxIXOmunLuAH5ourYEfH0iXrYB+7wOvNQak1ZzsT8yt NvF+yRulaZSl5Eenw79/+9ax+lCvM6UWGc2gn3BIJYLnMJ8cSgQQJEVf+j4xaJa5w4aL jDG1Hij4KWar2apvC/bX2xaPJNbPEZhNdfQjcfO+Wl1PNAi6waJWl9h6TzVQq/cGobGy v4ifnR+Lk7PfWx9rEouqK2yuqmYGj/tXc5o3C16vFcI+TiSnY65W1v4gLKXdmVQQSoZ2 xpug== X-Gm-Message-State: AOJu0YxV/DVWrfvDxfTdqRuKj3NvWgUjToql7k0QAxeTyScnMhuE69rW UjmWSNKPg/0LDDQ/2tO3hZidnhyscVX+StF1TwvuwSyAyS68bS8IxEOWpav/uvqRlSGAX2KSvck mU+XDfO4= X-Gm-Gg: AeBDies87KRTcvV8zOdd9yf5GyIyX+y4tAZW+R32NgTulZxxON4qzHJ1pV/QjgYlNwQ 4yagZ52RMp3RTXgGE9Dj86TPZsGcRcVJHKsCLfVJpfnLkgRGeUX4eOYGTTMDacVV5Y7uwkuNBI8 9Br6lh/0eervmfg5Vsia4iR3OG8g4wSdIiDFZBLITtd/EPHdZ8eXWlpUPFPWz5+SJYaqvleQADr WIhwXyia9IZ6d4YewCKsMS+F5dl9B59ylyMlIydcD6Duqha4rcubUdd0/Rc25ndZdQzo8MLnRA7 rum1fTN+/MPbgkIUQ32KdLmlGtUKgV2a9S+gAjmN80YqZvEjMEF7qgmRZpID1V/p+sS4TO2edYc 7bg7ucfuDzjJjqfM/4WuACvhr0WmeW985h1iEAvyzyJcNSLR1M1ORJS86ebT1o/hx3LVikgwqPJ iQtI4yBG68QmNnwtRDuxYxnrOF+TH41Br6niSTt67BujzNjJUCQxU= X-Received: by 2002:a05:6a00:a256:b0:82a:6de8:fa50 with SMTP id d2e1a72fcca58-834fdb87d67mr842175b3a.18.1777508469869; Wed, 29 Apr 2026 17:21:09 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 08/47] target/arm: Introduce FPMR Date: Thu, 30 Apr 2026 10:20:07 +1000 Message-ID: <20260430002046.59739-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508754095158500 Content-Type: text/plain; charset="utf-8" Introduce the special register FPMR and its fields. Migrate it when present. Signed-off-by: Richard Henderson --- target/arm/cpregs.h | 5 +++++ target/arm/cpu-features.h | 5 +++++ target/arm/cpu.h | 1 + target/arm/internals.h | 9 +++++++++ target/arm/helper.c | 12 +++++++++++- target/arm/machine.c | 20 ++++++++++++++++++++ 6 files changed, 51 insertions(+), 1 deletion(-) diff --git a/target/arm/cpregs.h b/target/arm/cpregs.h index f5ec7484c1..391c0e322b 100644 --- a/target/arm/cpregs.h +++ b/target/arm/cpregs.h @@ -149,6 +149,11 @@ enum { * should not trap to EL2 when HCR_EL2.NV is set. */ ARM_CP_NV_NO_TRAP =3D 1 << 22, + /* + * Flag: Access check for this sysreg is constrained by the + * ARM pseudocode function CheckFPMREnabled(). + */ + ARM_CP_FPMR =3D 1 << 23, }; =20 /* diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 5b1c0cf76d..35e281699c 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1178,6 +1178,11 @@ static inline bool isar_feature_aa64_gcs(const ARMIS= ARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64PFR1, GCS) !=3D 0; } =20 +static inline bool isar_feature_aa64_fpmr(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64PFR2, FPMR) !=3D 0; +} + static inline bool isar_feature_aa64_tgran4_lpa2(const ARMISARegisters *id) { return FIELD_SEX64_IDREG(id, ID_AA64MMFR0, TGRAN4) >=3D 1; diff --git a/target/arm/cpu.h b/target/arm/cpu.h index da1b7fde1d..1a55275e80 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -692,6 +692,7 @@ typedef struct CPUArchState { */ uint64_t fpsr; uint64_t fpcr; + uint64_t fpmr; =20 uint32_t xregs[16]; =20 diff --git a/target/arm/internals.h b/target/arm/internals.h index 6376ae1ca3..08024943c3 100644 --- a/target/arm/internals.h +++ b/target/arm/internals.h @@ -292,6 +292,15 @@ FIELD(CNTHCTL, EVNTIS, 17, 1) FIELD(CNTHCTL, CNTVMASK, 18, 1) FIELD(CNTHCTL, CNTPMASK, 19, 1) =20 +FIELD(FPMR, F8S1, 0, 3) +FIELD(FPMR, F8S2, 3, 3) +FIELD(FPMR, F8D, 6, 3) +FIELD(FPMR, OSM, 14, 1) +FIELD(FPMR, OSC, 15, 1) +FIELD(FPMR, LSCALE, 16, 7) +FIELD(FPMR, NSCALE, 24, 8) +FIELD(FPMR, LSCALE2, 32, 6) + /* We use a few fake FSR values for internal purposes in M profile. * M profile cores don't have A/R format FSRs, but currently our * get_phys_addr() code assumes A/R profile and reports failures via diff --git a/target/arm/helper.c b/target/arm/helper.c index 66813bb298..304db1a479 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6209,6 +6209,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 */ @@ -7481,10 +7489,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 19:23:37 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=1777508607; cv=none; d=zohomail.com; s=zohoarc; b=hC+4Bh4MsZGcbYsflnyO3SG+oSv/hZJi/B1I/ctf9Of7Nv5kBfJVAX+CEKaYHcN2NlJXfOLyRuuiHsOUZfcLemzez3sapP+XP6s3uElQQ7vEykyVmHhqCaZ633UEWIoK9uAeyaRS7fWEdRGC2l4KCB+zd9ig/c+XPKL/ygvoxmU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508607; 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=e0cgKbjERVeOkuhp8HI+EMvkfqkw4Lr29AuXT6VGnEc=; b=e95zfU2+m/DHPq+DG83ZQ+aaFUxhzHEalMCuPExZZo3tBYzmAW3z5NTBl8YJogmDuwP3inhAAuCtEH7ZnZTDmBW/l5ifWlcuDy1jxF/AG+miUmSez4ZXxHHgePNCUHuJ4eYaAFeH43JQPEsAD29GDeCZYZc0OcLPRjSvOQ1/1WI= 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 1777508607417470.7446626152564; Wed, 29 Apr 2026 17:23:27 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9m-0006V4-0q; Wed, 29 Apr 2026 20:21: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 1wIF9X-0006Ni-6e for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:18 -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 1wIF9V-0006GU-Mz for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:14 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-83177129e28so162064b3a.1 for ; Wed, 29 Apr 2026 17:21:13 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508472; x=1778113272; 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=e0cgKbjERVeOkuhp8HI+EMvkfqkw4Lr29AuXT6VGnEc=; b=QEz8GXYDdgp1IuaJwORM5NG/vMpjKZxYI31hros+zeerOdRYf7ApJPhxIFm6T8sNl+ eAuyPOZifX0xGBba3DRqp/GyMQBRFwpMj3rhO4Cex+mIiJD+8gSkwCTv21z5V5rSXGT8 crXmklM8tL+p/d5dbToRwslYXPE0vluGUJFJQ1e5NQNQiPo3HcZ3oeI6iowiiBb7mavs hynlYtk7B7FoKruBEkGnG0jyAjkk6yO106BtN+dJ+LhEzxCnd1ElciphbtL5zHCCk8uk OaxQdmVrxYFNxhKCcMgcStY7eVcgLUe4qOojLHT+Qm1exT3fx5pAdgJEXdOaX6qccI6E yZ/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508472; x=1778113272; 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=e0cgKbjERVeOkuhp8HI+EMvkfqkw4Lr29AuXT6VGnEc=; b=rAyNJpwNlMsNWm+XfE/tCd18XqRLyPs3+G2IQo7a36DyaZXebp6uYCMI0tINjlfVyk EBMgmB0fuwBVCp+ktiyByTkeJIRRyQdiwgwnewjBgFF7gH2Ihkl87iM6r3Qgv4zgsR7E kMaPhc9f1eVRJT+1t34zrDbkga3VSeNcoQzf9olnUqWy2Oi2/L8u0Mxm1qAoVJlkxa7B P19O759TsLXmOK6x4CvfxltPh48aV0pSXMNV4m0N5uJezmEum/fPoaCCRU6oWFLMkGeP hMaLHZfFtQtSVdqlg3ZLobPDZpwKgU33+icMTnOwPxDGXPIahItFmiz1kcK+q0Rjw679 mAqA== X-Gm-Message-State: AOJu0YxJy1ZUYsUusW1PSShm45ZGLuApX02y3JUohOwcggU3Al66x3/9 MPiVzN5eHFDFCaqM2qgwIPw+HHae40YciFlmpPxTBeS7uLxq84ja9KHZRT3Bjw20O1/QjkVUOrK 3DrQr5wI= X-Gm-Gg: AeBDievY+5dAQSKSe8/cJwmAXaZtcVnUfNVdadANA+mT9mw6CUx65/Yheqztygv3xMQ VQLcWZ//0pRcop4TlzBxp1IEDrPlF2ftMNkC6GVqisqH+Ot5AcmRv/0WDHawgbvvNOJn7h8DqL3 1KJ1Q/7b7t1QqEP2oWwYkNS65X4niKq2Hcfm/bm9R5RIw/yGY28xEbotQ1HQjaSDpqVDmsnYt6n pJqlRUYSYO6Q/z4ZutvqFt6i/FgbXqJjqU34k2ptiy80tlBf8wqLKObUv9VU49SbB0E9cOf62b7 2IcWVpKu9ZEb2Lp40xMphkfrD/7Rn+Cb72q1+NBkiEjdlzzcTa2EgllqJ55WzhxEXJmVIrYxwiw akwBmYgcF7JIpfMYu2BAclETNQMFKN9FO3UGje/UL3MtymgZumsWFJP5Z9bSRtA0g2Mpf6EP1/g z+UVhs07oaTpxbZH+Y+k9rUS2kz3zMKiVGR/Xmr68B X-Received: by 2002:a05:6a00:1c85:b0:82f:74dc:5f48 with SMTP id d2e1a72fcca58-834fdb58909mr844546b3a.2.1777508472103; Wed, 29 Apr 2026 17:21:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 09/47] target/arm: Update SCTLR bits for FEAT_FPMR Date: Thu, 30 Apr 2026 10:20:08 +1000 Message-ID: <20260430002046.59739-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508609355158500 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 1a55275e80..25cae59878 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1461,6 +1461,7 @@ void pmu_init(ARMCPU *cpu); #define SCTLR_DSSBS_32 (1U << 31) /* v8.5, AArch32 only */ #define SCTLR_CMOW (1ULL << 32) /* FEAT_CMOW */ #define SCTLR_MSCEN (1ULL << 33) /* FEAT_MOPS */ +#define SCTLR_EnFPM (1ULL << 34) /* FEAT_FPMR */ #define SCTLR_BT0 (1ULL << 35) /* v8.5-BTI */ #define SCTLR_BT1 (1ULL << 36) /* v8.5-BTI */ #define SCTLR_ITFSB (1ULL << 37) /* v8.5-MemTag */ --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508776; cv=none; d=zohomail.com; s=zohoarc; b=nCePi7TrOZQJ4Ctsveqss4KoAs+ipg0DDVprZZ/x2ETbK78oqREdlOsA6DCNsDiGBJi4hDyCGgn95y31YdFcmavmGLsYGrgOPQxnhx/qn903YSL/w8qQUgsws7EkExGwsRAvjeepQOzDcoPAr32Vfg311MVDePgJ14SiGlGeS9o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508776; 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=6A2mgR71x2gRQlZNLDb+phH7Gxy6pN9ynlj49DFnFXE=; b=KBMczGJ7vT2AVwx/UdpvejIi3VmuiG2ubH9F5I1cUiu6jP4sSqybyNAgeiF7zJAci3AFRRYN4MWZ4l9Z4uR3qEL6rV/wJFSQhYa0NmiXJKYlhO8x0uuMPuOXetAy50cH/CJGIWpl7+N26lND5uv1k/1yUmTx1/6S7w4h4Oj2FKc= 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 1777508775998553.5137383556599; Wed, 29 Apr 2026 17:26:15 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9q-0006YV-94; Wed, 29 Apr 2026 20:21:35 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9b-0006O9-3q for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:20 -0400 Received: from mail-pf1-x434.google.com ([2607:f8b0:4864:20::434]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIF9X-0006Gs-M2 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:18 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-834f1075805so248784b3a.2 for ; Wed, 29 Apr 2026 17:21:15 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508474; x=1778113274; 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=6A2mgR71x2gRQlZNLDb+phH7Gxy6pN9ynlj49DFnFXE=; b=gYTeefYMQ7kD+JynVQ12l0g27Q+9Zrr7/wY+dSH0RymeIfm1+wJr7f/r2Ccf25anrQ NtrPerAAV2jN7wGtJWDxAw+2X2OIfNeQAy3uBglsMbuNFMdVeO6JEd1iHqyDlE0Y/yY2 zyXYjuErgBs97Zb9DWaf3ql2zH7Q95yI8KI4U66+22FYxKZl+kLM6dzxfeEZyDWosIz4 JxpF9BM8doY9SpOoOBY9RZPQ67ofIqaRykvbH60IRPyZq+FKV2A1j1qxUmVnKWImBYMA IbJ2hQPieFn25FLD/Sbc9bruElrLmcwjixLj/rHN9oNTPUuRqCj+gSimi8pB5nsOgV6A mvpw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508474; x=1778113274; 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=6A2mgR71x2gRQlZNLDb+phH7Gxy6pN9ynlj49DFnFXE=; b=nVmbwjtwhUyh0Zg6bTf+nLwBc5AOwBSkSuBnul8YgJCiPaV9vEYkd1HtEwywwcPyU2 oHzzJIW5LjI64RKhsSV0R0O1N+477FmGSdLDTOqApdXR1wwxEGzjPjE1NPFf4XPABGhX ED501wzKCJwJS7DpB2udpQedlzTSvK/o2kxeUbEiFk1WzDZTqm/v+CS99GmIYNKrQcIF oRgotbwVeNU0RTKouZnc9tmH+DqA6ClzaNlPJOrb0t1POrQOTTZP5X8XqmDrF9n0/na9 DwpTZ0gAy9X1g1a+LGbAa0IObG1WaNXXOOUvwXfigDT91BHzS7dEo7nZsnvNqMOnQZjJ lGwA== X-Gm-Message-State: AOJu0YxumXyZjHKFOu1MYJneDCTpgkVUYD7MtnTOWMieCxKwk3zpAR5Y IDPf0K9VzUkBQEe4zyk0PBImtmvWD879BJoNdr7gUmeCOO5Z4Lzd13YrF8RJ1+MJEWSigMwqe67 byeaTHo8= X-Gm-Gg: AeBDieviCXkp8OqFFb7/f6LQEvNacbuWvaOytJi09jdVZVsYwjhER91EHkNaz5L88Rx xfN0XYEuOqNHvACC/vl2nrAmIO7EazCxH8+KM5IR9PdzKZoRnHRF+mxh8ywLJQ8YFsCTJ3nQU1m +xgke8x+6N8HN9rlYVEZ28AVaMmipDYJWpa7kw6D8p5D3I0slJZuv9uF4ycM0xHpaBRYxP+T9uU QaZCnwGYgBQj0vMmxtGXsAgLYcQmQZx1853wDjiaUS2+xcV11e+LTwxrYV3eKuY5sc6QXqqrNJa 1NbmnhvNdrg4SWxEsf7CANMFCBOELbvZbrf4W3cUEl8LV6WMKeitJ42uRuM9LFoR9cQh0dQ5BAB NGfvb1/YYFqaCLF6kroc2rdxRyH30C87auicjEO1Kpk7lwxDCl1ceQvIvUxNUxGliLRwwIWgX8Y v+D6cOrLhBe0L0XDGeWKNm0UWtiuKJVSBHqlPbr5eVCyty2AJ2Ars= X-Received: by 2002:a05:6a00:4b13:b0:82c:dfea:9e2a with SMTP id d2e1a72fcca58-834fdb0a1fbmr910795b3a.2.1777508474364; Wed, 29 Apr 2026 17:21:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 10/47] target/arm: Enable EnFPM bits for FEAT_FPMR Date: Thu, 30 Apr 2026 10:20:09 +1000 Message-ID: <20260430002046.59739-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508777296154100 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 304db1a479..7a17fd39e5 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)) { @@ -3953,6 +3956,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; @@ -4026,6 +4032,9 @@ uint64_t arm_hcrx_el2_eff(CPUARMState *env) if (cpu_isar_feature(aa64_gcs, cpu)) { hcrx |=3D HCRX_GCSEN; } + if (cpu_isar_feature(aa64_fpmr, cpu)) { + hcrx |=3D HCRX_ENFPM; + } return hcrx; } if (arm_feature(env, ARM_FEATURE_EL3) && !(env->cp15.scr_el3 & SCR_HXE= N)) { --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508639; cv=none; d=zohomail.com; s=zohoarc; b=UoHReIpLTodX0npdUWHyd0lnmoflwS7Ty4nFsVXOdyjim+2ndtnwKBL+6MGJ8Xd3fwZOxrrv4wVjxVaHLuEvHvRLd8NE157x52UwAiZqy7ckxzBylAGDJ71Jyrl6bdxoq8yKmV4Rny6Oe6+nYrrSQGrh5Zgfr1zolcuV7/AfyYY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508639; 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=l1WOBWWcejd4Njf8YCai59IybtK3LPcoz1EYaWphZqM=; b=YVNvdsA2wht4wUT+S6tRf4pI5koISbqT7S3mqreOK2NZ+nsIAXUJKt9hgT21sN4voBPmuF0Ns7ozozpejcQJE1YSFYxEoHxlEbFgM00Lg5Yl9KW2x0GFhr0OnMJISXFXG+2Dj+ijpW+fUpJF9Hpmac5cu3p9hxroasPkzjn2Ph8= 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 1777508639185827.5943170204616; Wed, 29 Apr 2026 17:23:59 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9n-0006Xb-RC; Wed, 29 Apr 2026 20:21: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 1wIF9d-0006Re-8v for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:23 -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 1wIF9a-0006HK-Nb for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:20 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-82f0884bcfaso257042b3a.1 for ; Wed, 29 Apr 2026 17:21:17 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.14 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508476; x=1778113276; 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=l1WOBWWcejd4Njf8YCai59IybtK3LPcoz1EYaWphZqM=; b=bh8jZectGnzuw6SYS2izxM3PLcfC6dztcO+y3NBxd8c80vjg2fI+n40lBiriFUz+a+ 1tP5jfSfDucxKBrRn2zt9ULPHiTQAFN3yk1sT92cYC0+IyDO/QSAuMlw+a2BgUc1SppX ZBD1G0ivXCDRHnfmM6SPWJobFtRsc11JpmSxa1u2NTDjy/34zpNE398aELWN0pPtD8jd Y8+K4ol/SINLWShXE1YHucU+2fZhi3i+FVDSVNDiXtHnv0kVUxKUO6PzCYBfgB7/0Vdi gWdh7gz1s467jcwI+FT6ZyLCOHqd657M8Yr/IL1OGXrb0iocQfTqVXPOsBnt7KSLyGhb SNMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508476; x=1778113276; 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=l1WOBWWcejd4Njf8YCai59IybtK3LPcoz1EYaWphZqM=; b=ib4ZlIbl8GLNjjN1Jnrhpli8uJr3eDDeZt7XrXQ0K7pbKnrNAJqSkjjR9PdWcPK9q3 +OBxR8jKd01fDb8Uq5Lc4H3ZVhz11i0WQsrhiXTQm+/yV+qc0EE/7Bt5y2fLnUSTKQFU aSZ+md3Am4mkjeczyIR1Gq9J/1k6dMxd0ZnNG0DDA+NOWouiiAPQXZiN+/jAsGW0gnMv g+R1w1ye0WAurj2BzHcjMIH91Qov1Kq11SJQnDP+jYcNzi+y2pdLNjnisBheZmmpvuxy Qe0Sgih0o4pZNtqhFdWXTU8624fFS0d6c+SJD5KA9I1zkFhFPXXk7DBCIRnCNXpkqF7d qpRA== X-Gm-Message-State: AOJu0Yx8+CUQVRWYy8AfJWhWfHYG3OkcmwXKmuxkQKibW8Ch3z5V/pg3 Xfu63+a8iPN5mPb0QPd/MU0D9DOPQK3f7FHads+Wn0rOsZJSOxsSBkk+BbQEiSpr0A+pabcAL6/ gEaBhNNc= X-Gm-Gg: AeBDiesXTd2qwMeVm2isirQhr3HS47JqKrlkXGlHDZjE8bIA82cjDzeHnB4Qvplv21D 7+wnQVhQRCkSHyEQRlV7t76U3iGkLGbPD7JlXimYAZADPWRIkiloMJk6Q8kMSf/yITRza6RcP6k 0EaD1ANHEKG5XHNGiQoERioHtkBrPG6wSVwwHKEwd14JaR9+HUS+Y4dJHaYtyayZhnKbc+OTT3i SCe7jij+RJlpayikCHI9V3zs71h5rwMkRtFVDlQiG5+anmrenQ0F7rSt8c6txv5Xk7s8w56D1wO 4X0wwB4nQP46TayR3BDmGky+twaN5qrfcHI4sZYe1tvew8GIPKHPp2vlm+jo+yRiTBIJDd7GTu3 TaZiLEd3PF3zIjzeec/46bP15iDL547AlUR2hUS8v49b8ny/w+nOJf3jdDXX2KYkoi5nf2lxH3m 1jShvoBugfe1bjE20zXF2jjdUIyR1QJ3KRe69lLlwF X-Received: by 2002:a05:6a00:22cc:b0:82f:280a:d888 with SMTP id d2e1a72fcca58-834fdb2b63dmr913671b3a.12.1777508476492; Wed, 29 Apr 2026 17:21:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 11/47] target/arm: Clear FPMR on ResetSVEState Date: Thu, 30 Apr 2026 10:20:10 +1000 Message-ID: <20260430002046.59739-12-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508639487158500 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 7a17fd39e5..6263a3cb3b 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -4836,6 +4836,7 @@ static void arm_reset_sve_state(CPUARMState *env) /* Recall that FFR is stored as pregs[16]. */ memset(env->vfp.pregs, 0, sizeof(env->vfp.pregs)); vfp_set_fpsr(env, 0x0800009f); + env->vfp.fpmr =3D 0; } =20 void aarch64_set_svcr(CPUARMState *env, uint64_t new, uint64_t mask) --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508590; cv=none; d=zohomail.com; s=zohoarc; b=aV8n7OoLG9xj5gK6bYzS74s8mCNVeUcVRl74eChCbIKrUYNgq8JkWacPa9pgJIcDukLA/WCEXINLKtDl0W82IuUfCzvCw4du566duwpAoriyp5d3mk5rjZN3zbxR1Dv/DwOzh4Qw3sD+4SX25pPd1uef3yP8LSn/ofIwh3JZL8Y= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508590; 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=8iu7JU2SThPHsUv1CtXawL6MiBuo03vVN4iwnvdls48=; b=KfqbHUvlAJZZvrzptcp4jmzpSIw9KoYHqyWINbUMbb6dcYks7hMVcmu9Q9MbZ9OXuyfg9U1IwrRFfGN1Hz+5fs7YEK9p8y5xdA6KTZZHEImNeTnlfb7D+i4S9yXiBPrdoheIxBOlCmFDrVM5MH7l0vFS7FyViFRVxwoH31LMdyk= 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 177750859024232.602109403459735; Wed, 29 Apr 2026 17:23:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9y-0006nv-11; Wed, 29 Apr 2026 20:21: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 1wIF9e-0006Ro-JF for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:25 -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 1wIF9c-0006Hs-Rv for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:22 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-82f33d28c1dso205785b3a.3 for ; Wed, 29 Apr 2026 17:21:19 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508479; x=1778113279; 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=8iu7JU2SThPHsUv1CtXawL6MiBuo03vVN4iwnvdls48=; b=esPxlzjxaN1NJGQiObugRchq8Oa3NQuG7b84nAc2QTvp0kBtgOPAx8J1uiTeD7TrFW MUozp9EjZ2z/1Y+tOM1jBO91hPE9e/J9feuHQqmsqHpD8gRdPsBHLCABEhMnmDfgsW1y /CYUA/8bdbADO0kK7DpjpSdVAuVTPFN1ZtFmo0cbc50e1rhrcmX0eRbBplwkkoyki27T DhMG1f4WiNb145+fjdU4oiDMgAAlvXEWCPRjGJCGa23VSwwi3N3hmEHRMV12548VOJLk UjG6CTBGWlNoVSIDBIF8vPFMq3Ojps5iWiThNNO4daxeeyseWYZtfbi6b71tPjgX8r/J 9OCw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508479; x=1778113279; 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=8iu7JU2SThPHsUv1CtXawL6MiBuo03vVN4iwnvdls48=; b=fEhueR/8WAsFpUvsLpnv/MLEGTez5K3Rxt2Kr1DmnWpe/dQ3oEweXFvmVnHfIaK1fs r8SNdY204sWgnUgKGqFpsu9Pq8h0PZHGXu5pMcRfxrqOgTf1G398tTu+gCGMQlcGIkE+ 5wdB1jiyXsO3Rqx2lvp1az7mDFdXnseEV4q1H2QKY3heP38lCL5bw5ycCj5LDhzpL5i7 yWsg8+WV4/cchc0W4k0EalGV82jxJHW4se/fmm6xE33Rdpj9rHR4DYDhiXfiGBRxHUd1 BU3gTZ1DMiJgdNbw+fCU3dUjILQKMIHL3DAlZW0jph/fr9nxGSNsDjQTH6ExWHH3sqgc MSng== X-Gm-Message-State: AOJu0YyV04IM/H8j4Cm2YIAoKuOmzgG3O6V9ORydQ4C7lkmTO3nv1DTi zAhRNP2UeW96jm0c9QWO1j8HtYitHAhCGJlus/ScNqsw+tdbu8R5oP7yLXkTcyx3/6rciyb/Vcr 8sbrYOdc= X-Gm-Gg: AeBDiet+0WnVT5d/MJv4+WpCCA9EOGuXHYDK4I96ayvKZDHnZFBCBXJfXWj8401LL6F QqtIe2t09cZwMdUo6MUYL4ujFONf3qKaQEkKAGADgAtC7L+pcotrgN1KeAgH2LTHIcSEMQH8cID fEf/2Veh7MIh9vtr1WhPUXsnmY7It2V2aiLEi93pS+jFUvxaVYckqtps63OFczChOX7643nBiqf mpGGZIlcEnL5Mo4nmKIiK7Ks5ghx/BrGh3MMksF7nFg2WB5kZEQqGS/xsXkTnYdhVNx39J2P8Xm n0PLLrBTgX6UdsVa7TDgFnFJr82NQalzmXziobqHbrP3eLDfJOhnnaVwL2toF8AyrTgTSjwhlQQ a6CV05Pfeq97WazVWtNp0S9Nxr+dZp8VfoH/FNguh3nAbir3IxeMD4++rhWY9/FhbgbZmXrOmoT 1dKiIZwF1OG07pn3V9YexJrm6E7pIzXRgSI+fa4LID X-Received: by 2002:a05:6a00:301f:b0:827:2ee0:411f with SMTP id d2e1a72fcca58-834fdb93775mr810864b3a.4.1777508478509; Wed, 29 Apr 2026 17:21:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 12/47] target/arm: Add FPMR_EL to TBFLAGS Date: Thu, 30 Apr 2026 10:20:11 +1000 Message-ID: <20260430002046.59739-13-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508592677154100 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 25cae59878..5d051e1d2d 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -2538,6 +2538,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 19:23:37 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=1777508644; cv=none; d=zohomail.com; s=zohoarc; b=H7B6vrWTiMe+PsxG0P9UKtLJdNrAXlsV16OcXvwNRJv9RRd4HRx4l36NPawUXuN6Ey3BbTaSclM9cloSR2ZHrP49r7kZOspA2HCZA6Luuh3tyDvGFw0vw2ja9fQOaGynBZIp9+sBFH/aO6FGJ17BrGjIkZhUXqVD5UtFp5T5H+k= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508644; 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=f8Zedm+56ypMK+Sj8YZ+Mn4UXBoz1OaamJPfqsxprO0Qo5iIo99R4HO6vOWyQtUt4hDGUt0rE23X7SvqWhn0VrkdRqyXNRRnk9iUzV3ILwm1eJTl9YYWsGIyL8eweog6HTNk+gYL8JZmuO4J8onrk1AXkEN7Kvr5j5QNOBufQic= 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 17775086442111015.8596796179614; Wed, 29 Apr 2026 17:24:04 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9t-0006hj-8D; Wed, 29 Apr 2026 20:21: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 1wIF9f-0006TZ-QS for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:26 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIF9e-0006IO-4E for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:23 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-82f8892d4d6so155637b3a.0 for ; Wed, 29 Apr 2026 17:21:21 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508481; x=1778113281; 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=z8ZT14b/nfD7ezr/N2e8M1ZXaOLlC9hc09nfLZS8rOh7K6qRj8jeJWmbbCbSkKBR9Z h3aWFYj+IypQlIbZkFQMjkcghEpKHz4dGQKS3uBjPIp8IK1iWzw13OLURupbSF8we/83 AG9oXRH5ci+WgNCWfwjE/ImchqyrE8Q5AuN1Uo7O7U1Z6yTjbSlLeyudW+LEQIISbhKE +UZ2PCb0g2yUw/RAFNb/QYQPkPQOQPvR4iq9aZfan9PcBGR3wfV+GzMEJfYK7AVb0jXD nXV8rOOxjv2s96wtIr2Gid8YXnNFiQubJU3Ge5/60TMXGDJ1HEwK/re6jEFJi89nGPHZ mRjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508481; x=1778113281; 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=s25FgzZ53Nmer039jvd6bqahLdukq5jaE1R+3guYtbFEiN1YOPp+/OyYt4qAxAKMDD DH9x4MmyIqWEGLYn5cZUAv0+64R7QL/XGeFAJLj24nZpWrp44EqPRnlUTu8HxB5Vd/ck SLbDrZbzVZGH7Spr1GzBSczaVEmTYO7M1rpH6wrMU1zkx8zE4WuUlIfuV16evWhVHdkL b1xbRqYz10Z4w+w8o42EcgumMQjykKojkBh3fTND/03am1LR1JEv1slVSzwoDxF03JX0 g0QWE9dikRo1NBxFhXIfsg0TVh7RcFZtIeipQ05HEkVRvgGL/HjSxD0IOYbOhCVT71Re pDBw== X-Gm-Message-State: AOJu0YxgPiioJ4Ra8nHvyobTpEO2PdfiZGLeHciqMU0/mlbBIAoGWJz1 CSrzZ+SxvXHisynD0cbBTJpCsVqNcwQrHoV8jbN9B3s18Yqdsga0bfqv30SESWhDLKaf1K5MDmL stUrh4FM= X-Gm-Gg: AeBDievkFG1LGZ82BYN92bQ35ViQAeYeUOq7apYInnZVlw0vA7B+/VdJPVJYkY9RBL8 pz4yE429Z3X8UUKnz2fcBb+SLuPKNTus3LgS6wNdv9AZh8+zXJdq4I/Iasl0Amqgwf2DPMDCOnd uYz92GsPTEtLfn8s/4VpdiXsdhqWryYMllpFK21637iQZBWvkTfRj9o/rUVjYNx/jmV8bA5Vkq8 YtTC42PQniEzq2RGsAt6wBKEhQapk/W2/ylky0OrGyoRUWqwG5VQB3DFks10mG2y/7bXtixojrs yXfhc5RNG4uE/prXvZ+SkXOc1V96juLpl8KzSuo0i7h0ZTWx4RS9iqgzRaK6NCyckX/GRIrxUAS Zf4erqoOh9pn5RsGMoYf+tpAXLlQp6kWMcDInuhTWJALA9X8jlf6h2WhXa/hIMe9FxpBbMUQiaF rF13ITiuLr6f4EDCx8itLWv2Z5dGXoCUBHMh+USxv92pEM72meJXY= X-Received: by 2002:aa7:88d6:0:b0:82f:316:31f6 with SMTP id d2e1a72fcca58-834fdc153f8mr791775b3a.26.1777508480705; Wed, 29 Apr 2026 17:21:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 13/47] target/arm: Trap direct acceses to FPMR Date: Thu, 30 Apr 2026 10:20:12 +1000 Message-ID: <20260430002046.59739-14-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508645542158500 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 19:23:37 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=1777508650; cv=none; d=zohomail.com; s=zohoarc; b=Zt0V40ngQtJA7sdJdUjc9H/QJz87LK/Lnw3AKBpUrkj7mtVlvY8+9L12Q3MtycnylbWopMreD5PwZOCwnkiTFK4nnJe+Cz6KeQ7yv1i1UETflKSbqnENclS4TVr6Tihwb5LTCaRuH26Q9WI3mpZmzIeUkejLDNbS+2mU+AiZOBg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508650; 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=PahCEE7eAX4tEH7JTzlbgHK9C0UnvJ0ExexzC6iRhisnBZEVfhh39Rfy3rYtMIg7zzpQ9dbESLaBn1Q0+Q6UPLcY2pBEotSIpxVTkHVaxe1MmjqbouuL+iu/TkHt2xxGayDN7+yO4szbXhbIJhxBa6sQBvhzX/7BqMtYxwEyuIU= 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 1777508650284188.93512030078296; Wed, 29 Apr 2026 17:24:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9t-0006iZ-O5; Wed, 29 Apr 2026 20:21: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 1wIF9h-0006Tg-PK for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:26 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIF9g-0006Iv-BB for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:25 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-82f8b60e485so152401b3a.0 for ; Wed, 29 Apr 2026 17:21:23 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508483; x=1778113283; 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=octsh+kqrJ9joC7wGzbRHBUr0MnOBZeyL5V+ybJ+t3gmwX/G//KUUhrNJBxvPYsUgC qz8LdWmWauccSMrwnKA411l8fVCOq2VSaIvIHApnjk0Z8cJmSxqeTESLz0CZhKowDpY+ 6xADpApvC13Bbb0yFdVsr9PNSjWFzDOeyCgOAdlVpL0Fyz23qD1Kz7LttKogYFvaxOmD ggimenjslft5vzkViKw40y2h1/wAe4VyJWOMGOAKj3s+diTmknFX7kXWLQyZqCDZPV8A X4454WF+GBrkFx2ZDnWe8tRiWFWIrstKT3GjOe9qOV1PBJTBSyT2hUfXsS0XBnjuxaTx iXyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508483; x=1778113283; 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=URJ5ieVRb3pqDeASJM4KLqT9vBTNcwNe95L/cgAe3HMkgYzNyb2SeVz7rYJTtqheLo xUt8qJ5RTyFd/RtZfiEW8R1KqhLJA29eQ5EtDMJX801aXChEZEGaIJ5CLEEXsDzoloMq cN4yzZf8PR5wIzPBTz38auOx2ZRZjn1SET1vMFKI6swCq/sQfCG8p68hVy6bx3sec7a0 QJkG+dK5OKBn1YAW1ahsVgPASr8KOVpUwA3/g9I4IbO9DKlRJ6Fuo6hUWhQN5ZLMzzSO eSoZDXAhetS+T8YnK3QbE/hJ884yH67JkPc75pdESZ036Py9Ew6QD30+61QP1iwiY8eM Lfvg== X-Gm-Message-State: AOJu0YwvNVVOssa2hLjLgbuPsildl6La/yz8Qs3mVoluZEh2pBGTpySd HmTwekvSjFRS+k0RcIA+TvCFVdGYXNAlUC6sDOnvv1FSoPqbYm3yIYOHNkzz5WyK+PZYVx3OPKy d8NAIjxY= X-Gm-Gg: AeBDiesBo3G7JD7NcjDQQL+GaezXvexp4FtOrNhWc3gR2RPH1hWhztHJI4jHrM8SDpH yW2whDKcHiDU8qEx2x9vege9aHct9iiCLPTrwQJkllkShJyC9gQh7kZu/jf/0vlynEsj6rBOg+p 5ACiqvhVmmiPIvBQKrsjcPGM7QyPafOo4newkP7k60warJnuwu4ITiQllBg8OqKdXvYYPx0P+Se vYlmn2nS4v96TmslOuv7gV02HP926cj1FJhI/nAdQ/YOHMrB/3aPWxhaEQ5C+UnQRPmbUQEveV0 gicvV8yiJl0//Bk4aba9FqFazvHrlrMuSZlzWbtucl0Cm95rT5nklfrwCAgBc1uk+JpUaka9H/A Us0zp1Mj7NNAJt5UcZ8vCuoPm3y5Mg8jNXLIlbeSoeowPJ/Ar/hyf4fRlHfXoOlf5paWmoEFKGP pZKv3H6XtW6bKiyP2NkmonQxNFgRpK+A7+HXCGlDhb X-Received: by 2002:a05:6a00:3492:b0:829:8a84:b9fc with SMTP id d2e1a72fcca58-834fe0612a8mr696552b3a.8.1777508482940; Wed, 29 Apr 2026 17:21:22 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 14/47] target/arm: Enable FEAT_FPMR for -cpu max Date: Thu, 30 Apr 2026 10:20:13 +1000 Message-ID: <20260430002046.59739-15-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508651447154100 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 19:23:37 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=1777508525; cv=none; d=zohomail.com; s=zohoarc; b=jryShKfpiJDL5HNAzs4TBKXy3ZchdEpHgiKUY2Is1SHmyCljjcGRtCuZEqrVWXbikSv+Ak4cZNg98S0AUNa+KjV35dul6z8iR1MNCf0bCZX5QEJS9j9zzgxlDPp+XsZV6bxw7mgYVTdEKmSLbmP52lA88OkA0B4tZ44hkqss3L4= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508525; 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=y5SZ2AUA7BYXKc3EOO2JfsbSox2Kf5n1BI6zKR3SCrI=; b=aZ7EZvZn3SR68lHfyDuqmqdDU7pmyAKPfzD6FWaBtHoBz8LQELHfGauxlsylD7B3JT+sfUD5TPDWWIYf7PwV1+T0zGOSmFCzUENYUBO0JlnxkdEnuKnZGHcdHNj/BsY6cueleMKZXV7ww30jZsmBCTepYB4npfT246B6gSrhqh0= 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 1777508525057247.36741012635923; Wed, 29 Apr 2026 17:22:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9u-0006kV-PY; Wed, 29 Apr 2026 20:21:38 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9m-0006Vw-04 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:30 -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 1wIF9k-0006JP-6c for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:29 -0400 Received: by mail-pf1-x432.google.com with SMTP id d2e1a72fcca58-82f4a53ae20so246613b3a.3 for ; Wed, 29 Apr 2026 17:21:26 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508485; x=1778113285; 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=y5SZ2AUA7BYXKc3EOO2JfsbSox2Kf5n1BI6zKR3SCrI=; b=glwGKjGgicHtHgrifnx5Bvg7syHA2+ixbhkFwbLq6Py8Y6Bpr6Bzra8M8aPRwZ0ZPV L1PGAsDKdZEZh1OglREV0BmoBH6weItGpRsyIz2/LmjiIAX1SVbS28J3etH57stTYS6I 5TMCuWZbgg/7wFzHiuv3HyY7jVbqQxs0e5VLsMQGRZLANeTf6PBYdfGRnB5oUihg9CxY bRTgv2v7ZQMVOdw/z3IYYOMuIhJRZRQSneOuTUwJH7hq8LzfP6KHfD5cxs0eLvycNORF S8sWjCMHVQYN7HACTT8C6SDsrduYDW8jElbp/rqRN2EDRUx6CjnmJv0psmbnb5Fc8f6t M1rg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508485; x=1778113285; 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=y5SZ2AUA7BYXKc3EOO2JfsbSox2Kf5n1BI6zKR3SCrI=; b=T9HWvea4yvSc9xvfWKBIE7KYfiELEuJA0lxiZpj0iCTak8OPSMNYPlo9U0/oxrzxtf aVsIi9QdORKWIp6ZD/DKXqXMVac8KXwnAaVaWGdz5nBZfaPUEdu4qoTuvTjFgK08Rsgz BAO2jLYrE2jZqpYvc9VpI0/Dh/6zw5BQxvMcXWeQkxhaz/7e8ugbn7XZ7CWd75FN258l qYlU+UTXFL6/1BS4GTC26eHrs2hRLfQODk8rHKORFGDBMUw3gaASozWtoyByxVWrWJ0a 0M1hzo9LocO2Cn37PBWHhd6iWUTUioBC20Yv/pEvNEs2JSAgCNU9gqjJeatGm1kybRnu Iw2A== X-Gm-Message-State: AOJu0YyhId7OB3lXQzytZhVz1xNXPt1JfWv+SD86DdVx4lXz4dnfs70R D+R8kcKmAWuwLYiTsh1dsIEy2HhTarQtmyEo4UwNGo+wV25U53cNmYgMbSeB6+9I/c1WWrjRbtC ItgwX0LQ= X-Gm-Gg: AeBDieuRwS3PSJg9Vbt1T835zF7L4qqyB/+5lwiZF284Hx6m8hydmaJ+5rVlkVQpqPU 8t/WsLcy/DxhlnUT1SdApbgF7DSd/heCvvZCoaZfXALV07b5rlN87SJEldaV12mF4f0blLH1RxG ifqVzApLk6hHYQIqLaftWhpeJlBobBRSrHGJO+lLj4xwwMxSDXRZZopkCOpcAzOskWjTTmUnxyE V11jU2sOx2ygsfMf107qPE6SyYIvmfcloXNv1r91yiIkac9lkO7M96CiBTKBtp2TwcPOc//pj/r 57EiVH2mYBla6Op52mmd6wFqVGrnr3nOnUJuvPfI4HnrEvGOe7JcBaK6AxHmchGbgaHdKl7ts3g sRfORY5zS+dTsLte49ap2GAGrgscIKbb82P/KY6+anFmGh24gZJwDwBs+6FgDDvznMeTZHvbgZP Cifh6K83dY5jyqJVhA6FvGQXI9BGvOtEcTEPPvvBLf X-Received: by 2002:a05:6a00:a15:b0:82c:21b8:4a1f with SMTP id d2e1a72fcca58-834fdb0ab80mr848113b3a.5.1777508485040; Wed, 29 Apr 2026 17:21:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 15/47] target/arm: Implement ID_AA64FPFR0 Date: Thu, 30 Apr 2026 10:20:14 +1000 Message-ID: <20260430002046.59739-16-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508527325158500 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 35e281699c..60a16ef398 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -401,6 +401,15 @@ FIELD(ID_AA64SMFR0, I16I64, 52, 4) FIELD(ID_AA64SMFR0, SMEVER, 56, 4) FIELD(ID_AA64SMFR0, FA64, 63, 1) =20 +FIELD(ID_AA64FPFR0, F8E5M2, 0, 1) +FIELD(ID_AA64FPFR0, F8E4M3, 1, 1) +FIELD(ID_AA64FPFR0, F8MM4, 26, 1) +FIELD(ID_AA64FPFR0, F8MM8, 27, 1) +FIELD(ID_AA64FPFR0, F8DP2, 28, 1) +FIELD(ID_AA64FPFR0, F8DP4, 29, 1) +FIELD(ID_AA64FPFR0, F8FMA, 30, 1) +FIELD(ID_AA64FPFR0, F8CVT, 31, 1) + FIELD(ID_DFR0, COPDBG, 0, 4) FIELD(ID_DFR0, COPSDBG, 4, 4) FIELD(ID_DFR0, MMAPDBG, 8, 4) diff --git a/target/arm/helper.c b/target/arm/helper.c index 6263a3cb3b..ec027ed00c 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -6456,11 +6456,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, @@ -6691,6 +6691,15 @@ void register_cp_regs_for_features(ARMCPU *cpu) R_ID_AA64SMFR0_I16I64_MASK | R_ID_AA64SMFR0_SMEVER_MASK | R_ID_AA64SMFR0_FA64_MASK }, + { .name =3D "ID_AA64FPFR0_EL1", + .exported_bits =3D R_ID_AA64FPFR0_F8E5M2_MASK | + R_ID_AA64FPFR0_F8E4M3_MASK | + R_ID_AA64FPFR0_F8MM4_MASK | + R_ID_AA64FPFR0_F8MM8_MASK | + R_ID_AA64FPFR0_F8DP2_MASK | + R_ID_AA64FPFR0_F8DP4_MASK | + R_ID_AA64FPFR0_F8FMA_MASK | + R_ID_AA64FPFR0_F8CVT_MASK }, { .name =3D "ID_AA64MMFR0_EL1", .exported_bits =3D R_ID_AA64MMFR0_ECV_MASK, .fixed_bits =3D (0xfu << R_ID_AA64MMFR0_TGRAN64_SHIFT) | diff --git a/target/arm/cpu-sysregs.h.inc b/target/arm/cpu-sysregs.h.inc index b99579f773..6e8b335b8f 100644 --- a/target/arm/cpu-sysregs.h.inc +++ b/target/arm/cpu-sysregs.h.inc @@ -3,6 +3,7 @@ DEF(ID_AA64PFR0_EL1, 3, 0, 0, 4, 0) DEF(ID_AA64PFR1_EL1, 3, 0, 0, 4, 1) DEF(ID_AA64PFR2_EL1, 3, 0, 0, 4, 2) DEF(ID_AA64SMFR0_EL1, 3, 0, 0, 4, 5) +DEF(ID_AA64FPFR0_EL1, 3, 0, 0, 4, 7) DEF(ID_AA64DFR0_EL1, 3, 0, 0, 5, 0) DEF(ID_AA64DFR1_EL1, 3, 0, 0, 5, 1) DEF(ID_AA64AFR0_EL1, 3, 0, 0, 5, 4) --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508611; cv=none; d=zohomail.com; s=zohoarc; b=jfitx0WuqAvGB6lepQRQLpd59QU5HcFkF812xvXNkx75u76RY6TAT13E7P7YXmMYlK4plg1NAwc6dDPhiJCpTdtGAUJ4qNURUdC+k2N4e/089o/o2JCzalWXMJvUZUZ5qBBBWUvXt3ETsiDdSiKMYCOhLk6XVKY7izoIyod7mwE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508611; 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=PSIqyu6kWdNMcAAky/pBc9Ndq11vsOCHdvA3yGktP2I=; b=A+NMg0cp7mUudRuaqH48DOtYYgSie1GlF2ey9IBZt4YR6eFc9PCrxil+zpHRcIQrU5yFNY7ZYXtxNH22HaPP58kWaOeYnJfTpYmCd0eiY7YbyEEFOygpLfTNFL/+zyzhLSNvby4h1XFYl1BK8Nzkvv+dOyxNZ8Vo8U+4x7PwdEM= 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 1777508611048268.4496717539249; Wed, 29 Apr 2026 17:23:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9v-0006ms-Is; Wed, 29 Apr 2026 20:21:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9n-0006Xc-7f for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:31 -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 1wIF9k-0006Jp-F3 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:30 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-82f9fdfc965so174006b3a.1 for ; Wed, 29 Apr 2026 17:21:28 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:26 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508487; x=1778113287; 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=PSIqyu6kWdNMcAAky/pBc9Ndq11vsOCHdvA3yGktP2I=; b=VGdJqjC/fRTTSWqKswA0FXFHVps1S5M/SHdK6SDk1iGWCFnl681tzQM+m4f/jWkRXD vyLTrEc1DL5Pbo7b69pCh9DefdNnH/I8ZCh8fqQefkjBKtcjJhfPNm9uxgIjJKSjL2T5 ddnSmVrXQM7UkxMEQbyg+ult6eCVTdVIWGm5QUmpNOv8yFYwwHp6FpOEhZOvPd3dA8K5 6HyblTRZ6PSdPbFA5jjEk8OBWBCiMUzuvs/Ew05BroaXIpjC4/fN33pzkahp/wicFSiP BJjc2DhMl+cDFPsGL7CgXBnkOTeXaZMXyBf6ZqRiXtDJgfVGckW33cnSHyvHN3N2uCbU ImPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508487; x=1778113287; 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=PSIqyu6kWdNMcAAky/pBc9Ndq11vsOCHdvA3yGktP2I=; b=NFlIQlQ4dQX8RI8EeWCGbGJT5OAhdtfutQ0yEknXBma8vXZcLUYF2FR4AXWcq7bjwg tZvgW7fxupBBY59xm1ZI3BJkmuWru2HePYz4wnOStk7mrIlps++ZjEvHiXAEnz+d0i1x kyI4+dCLeZJFrI3wY4twJBmesVwxmJRL5/sLlk2W4DQTNQbZHKymGKIsDAvO9D1JuE43 wYXLB+OQnUOEcAlBezPjejOgMAppadDryzoPLFSw4SH/aqannqyGGQhhAWXiqwgzUFS4 +mcgzq3Oh82u5kDc/EqG4xQOzeCis143ykyLlLfk54ay4hANaAlzRGVZivm6EFY+n0iK pHoA== X-Gm-Message-State: AOJu0Yz/AX5Rpo0NHRUrR9rmXNkLoItniYvErASfQS8+nWSTBrg4bHCm BkX8TBaq/in8aWfB5oiLlApiHm0lcaGE7GhCFbYXsZhRtQ1pZwAD2in3luIIyqxUbcRhIRA9KFR BZo4tPt0= X-Gm-Gg: AeBDieuyZ3wsNwPcTOg7ksPkD0OSOc0zKeW685L0k/gm57pqNDl/IslcgSWPAmSt0Of xUZA/8BrW/MqzFEwMDgt9P3ck7jmYQdPmNPN5PfGQIsqfKEc7dXrb4WsYZY7nWm3u7uoiXfxSFE q71SbO/kjueaz8GfIrII7yvum6hQ9FAwRx7p6/QrsjOdULSOzDUMDGIOLNPtBZMWohEgWJRSVJe dC7Q1Fj+cMFpRU1WGSQAD0ECBBYnspl6RSEl/0oT7vAy6fl3/2uDD3rEPNj2sbFM+vNaiErYNFQ zeRJ0XXhIOgtVDIPV21esgNZezv/v0rd0lVoT5Dw/TI5ZQ4mct7v25XNTPrHwHU6QT+vxF/E4Wk oSx0NlRrZoDj7TsllJsfB1DfxFjo4fGVOVH3UP3huhxGYhSn7C4eni9RY5vxucQa4y7lZGSO0HS JSQluLdUF4KMUcH6cLStxpQC7h2CSr7bj3ZtaYO/SG X-Received: by 2002:a05:6a00:1885:b0:82f:2384:212a with SMTP id d2e1a72fcca58-834fe1bec01mr733931b3a.26.1777508487119; Wed, 29 Apr 2026 17:21:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 16/47] target/arm: Add isar_feature_aa64_f8cvt Date: Thu, 30 Apr 2026 10:20:15 +1000 Message-ID: <20260430002046.59739-17-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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=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: 1777508611371158500 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 60a16ef398..590a7f6cf7 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1555,6 +1555,11 @@ static inline bool isar_feature_aa64_sme2p1(const AR= MISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMEVER) >=3D 2; } =20 +static inline bool isar_feature_aa64_f8cvt(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64FPFR0, F8CVT); +} + /* * Combinations of feature tests, for ease of use with TRANS_FEAT. */ --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508602; cv=none; d=zohomail.com; s=zohoarc; b=kZA7k/VPhJsKeSl9+IPb+G4LvGrfxAMLr3gxkFmZXU1Vzi966N/qpKVNdCRcXtN+NeLrDsswQxzqp+x9zmUPuFfXkEH2XHkIRMIjfbE0ARVX6DYHX6nEKcd+nDe0ups1f3M/Omp1ualFKqjRAhhbnepr9xCrrq8LtKPkPURvXq8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508602; 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=iofCuUxrv6R6S77RADDQbkOhUsY0jTM8gW3WKAb19LM=; b=RvgwDrxrz/XvbXHk9nWfHi/Obx8z2p5MhgsZM6ioDnusTaySlo0ZAhBNgGf8J2EoXs1JTdsV695Io7Pl4+TsYB6ysNi29P2gGMutZXsweqYhAhV7thcnvbPSJRR2FEEm/DYVa14nsyn5i3sycfONyd8Ae6oeB2t8wR4YoMyNIkg= 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 177750860222311.05688009064852; Wed, 29 Apr 2026 17:23:22 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9v-0006lc-2r; Wed, 29 Apr 2026 20:21:39 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9o-0006YW-Tc for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:33 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIF9m-0006KP-T3 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:32 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-82418b0178cso197076b3a.1 for ; Wed, 29 Apr 2026 17:21:30 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508489; x=1778113289; 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=iofCuUxrv6R6S77RADDQbkOhUsY0jTM8gW3WKAb19LM=; b=tUG9Hh7xjNXeDm46hoC4bZdZjkiNZdLeAQBmRiYHkQH6aLxENlatSCIkA0ifTOp1KX 2lIC6qzHT2xF0VYylxWNYOiWpGiqriKPUnMA+Ch1F0mOyk8gn8BU/ua/mX1lPsslVisO FUaXgrB6bUWtu9dJjPFro9LjG/yxv7kbv1YkCA0epEcyXYqR3KHoBmphokt2PvGyxZR/ m05tBYdqcL5+e/3JiR3APPrEyhDAJgJznkMtODL4aLzR7a6ZCQrmy0ei/9ShvoHdvutk QaDKd5PllnDwzkgWtblQKTXhJ0rgPXPPlhYqAlXmLHxHItITK+tISSsEQ6JVf5IP1HYs gFNA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508489; x=1778113289; 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=iofCuUxrv6R6S77RADDQbkOhUsY0jTM8gW3WKAb19LM=; b=eEUfYmn42Etahks4Au+TNk+COY+CoujzosJIwL4Q5uiazxqgNWvvulEMMpis9epmlQ dde39ew10S/OtsCYApuZXMBz9MemNBNwEKyoiL/0mZ/1Z/NplPKvdukwBHNVRean1g2B 8Gj6d0aFEpO0cke/qU2iZ8iNSfQnRGDDaBoztVaZfH6a8UHqDqfXIoMwWh99mZBbiNPq UWfYyLvEU3t8vZKXlK/HUf+CZFCzmi7PUDRwCZYSjlz/C3+Osy4B4xxTxLflvp8519rO clmablRlG8vBQ78C8RFcXeswBHvu/4c6WraK8OoG9IGvBVfmH7zuh1MDx/1Cu+ntRKEX oNEw== X-Gm-Message-State: AOJu0YyUO3ZHUn9mR/55BcfD67X3joxuuXOUcVNFyqY9XZg2m8/1DJ9/ B0BAbYaSarIN0Hv5xmJisWlM/dKiFTVdTB263nd1cj2PPeaa/Ca0EQFXfKYjLeC1hHra+aNzSoV Nk8D9D7o= X-Gm-Gg: AeBDieslUN8XszoTxhUshiPeO66XQzcUCFWoPv5qPH5IsqNBuSWgiOYoWrQ8e7KIMNz WqS9KFZChVq+EqKyK4nxc39QZWlGwl63oZU1Cjkv8iMzdhH0012zvtmup3ItSO+bYjPd6f+Lb73 9ceZyy2kUV1lDlGR/e7asNRu2cLI6vrDTZnjR4ul5iD/cbwgFYAqc0Z8VagqQDGZvV0WWRSySQ6 FAeKWGOfxJglpLjELy6jOiGyMx0CU8p8keTk0toYJGlDXnYSqYZpihYz2SwPROypSF2JNjEmGiS UDlGg28JZY5rlNBtxDEdSRM5HKBxV1a55jdVsGRxxmKftnaQ14S+k15mXbyIibWD//mzODfC/jq dtXg2qxwSScfg2mWql7wpd6Ufb7zfU65Km+iU8r4GjHj7x6OfZGKtcTE/mz6mc9oDEL0+bk7E5U p+TA+fgIjALUzoxikMMnsJHt8CeDXnHmBcmiW6AGyc X-Received: by 2002:a05:6a00:3cce:b0:82c:24d5:63e6 with SMTP id d2e1a72fcca58-834fdb5ff74mr789548b3a.15.1777508489310; Wed, 29 Apr 2026 17:21:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 17/47] target/arm: Implement FSCALE for AdvSIMD Date: Thu, 30 Apr 2026 10:20:16 +1000 Message-ID: <20260430002046.59739-18-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508604856154100 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 b5ad67b5e0..5479d98daf 100644 --- a/target/arm/tcg/vec_helper64.c +++ b/target/arm/tcg/vec_helper64.c @@ -175,3 +175,19 @@ DO_3OP(gvec_famax_s, float32_famax, float32) DO_3OP(gvec_famin_s, float32_famin, float32) DO_3OP(gvec_famax_d, float64_famax, float64) DO_3OP(gvec_famin_d, float64_famin, float64) + +float64 float64_fscale(float64 n, int64_t m, float_status *s) +{ + /* + * Given the 'int' parameter of float64_scalbn, we have to saturate + * the 'int64_t' parameter of the operation to some value. Since + * float64 has an 11-bit exponent, saturating to 12 bits is sufficient + * to ensure that DBL_TRUE_MIN can be made to overflow. + */ + int sat_m =3D MIN(MAX(m, -0xfff), 0xfff); + return float64_scalbn(n, sat_m, s); +} + +DO_3OP(gvec_fscale_h, float16_fscale, int16_t) +DO_3OP(gvec_fscale_s, float32_fscale, int32_t) +DO_3OP(gvec_fscale_d, float64_fscale, int64_t) diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index 666a293540..02c7264cb9 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1198,6 +1198,9 @@ FAMAX 0.00 1110 1.1 ..... 11011 1 ..... ...= .. @qrrr_sd FAMIN 0.10 1110 110 ..... 00011 1 ..... ..... @qrrr_h FAMIN 0.10 1110 1.1 ..... 11011 1 ..... ..... @qrrr_sd =20 +FSCALE 0.10 1110 110 ..... 00111 1 ..... ..... @qrrr_h +FSCALE 0.10 1110 1.1 ..... 11111 1 ..... ..... @qrrr_sd + ### Advanced SIMD scalar x indexed element =20 FMUL_si 0101 1111 00 .. .... 1001 . 0 ..... ..... @rrx_h --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508659; cv=none; d=zohomail.com; s=zohoarc; b=ICYrC4u30GwFIYonlcu0tdtisCdQVOHZR2+T/XPpWRtaAfnTv/LzLzd933ECqljkzZRIrz4hRG9w0QoDZZk8X0zj0Q6ea+oBPvWTRyoEXFUE4U2DGB/4Q3F7gNzC73e/U1dIWr0e5c97ZL+Q5eUxdTIBwgjGF/NtDkAkF1EqyTE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508659; 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=Y4y3ds3PSya04tloOheNtG2Ax9QruENgFVm/k1Dpe8E=; b=X4+7Wu5h9vRlioL06oKFLmse/PoY+GgTnaVtmsnInlT6l+K+1/kuJtOgl+ZistDpG0vtuMImWkrL2jQcywiwtKko8lh2Y+yXuqlMYaoM/8lwv5tCFIosMz7qz09R7qySB7kuTt4M5rLqe43XcPOBuh+rUlrh6p0rozuoij6s/GI= 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 1777508659310871.4679528460482; Wed, 29 Apr 2026 17:24:19 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9z-0006on-1h; Wed, 29 Apr 2026 20:21: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 1wIF9q-0006c6-LH for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:35 -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 1wIF9o-0006Kp-VW for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:34 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-83177129e28so162111b3a.1 for ; Wed, 29 Apr 2026 17:21:32 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508492; x=1778113292; 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=Y4y3ds3PSya04tloOheNtG2Ax9QruENgFVm/k1Dpe8E=; b=uJdcHmPu57QnSl+tMFX6VtmXVpxlgx2VUMh6UapB9OvvU+vsiI2wi2uYcoxsRx2+ib HsNR4gedU2bfkSz+ScnRHJlFvRqPwRv+0ji0TI0bCTofh+Ot4Jlw7/ak+FHH0FA1AXdB /nidrPfMkieoRl2P0PYzYFuTZVX6tSpiZzCyvrmKMQ2ypqaSGASOYhPwjU4t3mOFmF/m z2zKJw3b5AmZJkao6sUX8RlirymGEhqUGHY2ZcSa+w3gZVRd1Em//2tcZtw6bv+17/Mu jZGZx6psw4NyrEWjlgx9mgDw/GTTRwPJKrL405KBfScBLwkLKmfoOfvpoexZQbXhLT1Y VAsQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508492; x=1778113292; 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=Y4y3ds3PSya04tloOheNtG2Ax9QruENgFVm/k1Dpe8E=; b=SDxvra+F0Zn5G263fesXQJ4pnzPk2MNLfpmRsLcWe68LeUwt0PV5hMFCSxjpd5aBkN r81FNVBWBK6Le1qYNWJXHxoSRkWDQal+Iy0gEDF69Lhk4FnFbG83ao7Wmi+e48blvNZH oiNmXl2TZBzCajED/+IkAv0EuYqkDnoyiQackFigtPmJV/A8sfDx/8fA1vqWjovdjtIw cWvhJWifMGmKwFBfw5uwvtufkan9awQGvYG2PhnrRAyt7BdGnUp1ZTQAgNQH4TGF1vHf vOD3pXEOZ+7yp1OQIHklQg9mjx7UPRjsmx0gbBkJ5JJDwA62u1DZO71XiWCOKRpMn3Y8 uFwQ== X-Gm-Message-State: AOJu0Yxl/i9dJaSBM3QL83Ch9nYxfgvb5u4r7O1fuJiAxPIl4Z4e4qbr KBXXY+P2CqBdQ/6kZ78n0VzdfnMZfQuxtZhRnZcyK7gNbAkUIAQtbV7fJgsbrD4fc/LhM36VgJc cCdCRJIg= X-Gm-Gg: AeBDievUbe8Eb3mriKnNULNWQqjrKnxrT83YV8VCUAM9AgeGHhhYnJfql39S4lp6yND kHUpdaOOg6YHTLtXBLcoIuNsV33xUCpV3teEmWs8qvHsLQs1hfv0PuG4AZVdBHHS26TgWhGk2iB JWCLCqZMeaYQfreK/B7gN8DCPcjZ2YWJiUo/pkPw+WKsezf5SacDokyQdBzZbz38mDZaFkLl7U5 S1nxMW39D8WQeJugCGnnLB16nskqOlGS8YQOlnFsSkHshGWYfgVdbDZrBLufYSLHuDjjrJrTaAb eIMg6/+CrFORieae9v6oq3sGSka4HkvWLKgYwjwKcxIT9UgMXUewUTE/7kWnT0w2HgCpEoEDI/V ZmYG/d7qVW27ueWhw8bYw2ye1m3iA6be1Q2QmdDTJqrSqxvsFpprxX20iZKawB0sGDhYjvkQqIM Xdpuu8FaDP9eWAoFVZXee8sCxgRTbOL1hmRtr776wI X-Received: by 2002:a05:6a00:290e:b0:82f:8696:5a75 with SMTP id d2e1a72fcca58-834fdc5bf05mr823467b3a.28.1777508491535; Wed, 29 Apr 2026 17:21:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 18/47] target/arm: Implement FSCALE for SME Date: Thu, 30 Apr 2026 10:20:17 +1000 Message-ID: <20260430002046.59739-19-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508659607158500 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 590a7f6cf7..104e36b3ae 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1608,6 +1608,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 19:23:37 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=1777508649; cv=none; d=zohomail.com; s=zohoarc; b=bmKFdBynk1dIj8NdkzEWIYbR/Ksmyu0/z0WbfYzHKuv7UvfzkmUDtdzC33xuNZ2QFM/JNaXYc1C/cOtzqyWegdMsLYcrIImNHZsvKVM7vD9lhLV8dVrzVoVkMpAg1JjzRPsomf7ZtveouxqRGfp+uw+dRHvN0YReVd4wS3jUmMY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508649; 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=rrSHe2pSUEldMpAJy/2lSu6qSshUDn+eo1q5ZmiBL48=; b=QJfhECKSgEAgbXixctAS+B0TkkiZrlQuqh9z4z/uxIfNj+eEPE5sxeHypoAqwVlfohLYy4WAq5sXZrD8vNLEL6u5lDgjPWoZ8tw9F1Cilc1Qz3ZSDyoegbpewntx8k7oq/ooXty5dVmZq/h4BR7evuDIfG2WjRekOVxZZI/9viA= 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 1777508649921318.1403014152089; Wed, 29 Apr 2026 17:24:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIF9z-0006ol-0n; Wed, 29 Apr 2026 20:21: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 1wIF9t-0006ic-Et for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:37 -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 1wIF9r-0006LO-HM for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:37 -0400 Received: by mail-pg1-x533.google.com with SMTP id 41be03b00d2f7-c736261ee8dso93022a12.1 for ; Wed, 29 Apr 2026 17:21:35 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.31 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508494; x=1778113294; 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=rrSHe2pSUEldMpAJy/2lSu6qSshUDn+eo1q5ZmiBL48=; b=S4YdfPe2C7I6+Zx8Ho4paYXoUP1tVt2MNps+KqQZR0K/yxEOV1KeNUYOnddk9oYowZ uayswb6MFgZtdeuKzycnkvFL7Z3t2/xrK+tWPZlFLXRUnknT6Bc078gPoidIOWBow3RT oJNIwCh9nMMYL/Q8xJ2hK3HmMhaLsdHQr3NlG6ngqhdr/AGFcSl+Ne2f/YHS42UjPXmG 2YFdgVT+zm37kEgBZ63ipJk4Gp1Gpgd6TCdyQ5xBO9A+t/avAvAVF0EWcn3A8O2pdICl 84Pkjiv/XkrxFdVoF+Le2gS8SbJP1BogN2rxfcAvBV6b73FamQ/m+CGOt+fCRmmxpSL5 Obsw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508494; x=1778113294; 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=rrSHe2pSUEldMpAJy/2lSu6qSshUDn+eo1q5ZmiBL48=; b=LVM21pxEeQ8PhIjg/tDCwSDo30bXRqw7ztgkGJLnEM5SVMZS7OuhwJ+nDUubz+TbIz mrU2huw/uTWIJ3fo/gKfhSlsAYHSxGwOo6Y2gOmpvx6lbyLTj995EcN2lXAOUMSbx6aM 7vJwRkAnvE08KsnK1RyKa78obuXzKIATgtWW00xM79+6zepUq1HABJrCH9eoyJt8tpvE qHnPXUegGFnIZn3/KyK4ietPZYYE+J+DptLXkQqPhnqHJ1OVnU649eBLVj55Qq3H2jZy 65s7ytYJsWk290nq6udPfK16yW/spugBbRQcXXvfOGziWDxJfa/xYeIabnI3M84Cb+NG eEXg== X-Gm-Message-State: AOJu0Yyj/jnl3kJa8b6FaMkQC5o3LV103DXdGobn/dWWcJrQKKBzCp8C Fw8HH44vWuWcYJ586yJLU6hG9U4Lo5Aja0Ym6fn3JqfLRvmvUsAsaoSeC+t/EppIMSXt+cosHFV KC9o77ho= X-Gm-Gg: AeBDievJ8vSMIAGmiLNKSnnF/rEHYGpm8odOcbOcnMqP5drZoDCY3ZNtTmKJanPp0Nt hei4T1hnu+pXAoRTKWxfQfen2G4G1tJU/3+jbvZJSmq7/PE/on9Thg6CrLla09MtDRm4DWpBBIN 0GlLrHzGq5bgpV34HpMcsaiNOmfEd+toYjBPQAhVIRmLELkO9FPb8CaP7mzQq92sokBvbSi2cCN 25sgLH8UYZAmfZOBRZUyrBW3f6RA1/bdpAsJJYNPHqLYjem3DpoRewW64jYQZv8dL+N5413L2Mg t3OPHp5yl6uBmzsY0pStjpXpfXAvktEKE8MbqtOjSVnSiE0Pv05+8b0iaTFcOW7A/ivrl205tsI 4M9fQU3K0Xxix5AG7Zs19MJLBzn1CSMvMLmJEif1EW4YLo1XLsTJ/fh3J98SKOk2efQTw5la1t7 4HZ9/Zuc7RAjN+X/K2kuCpBhliMvEpydceykvX1cag8YUtc3Nfp6o= X-Received: by 2002:a05:6a20:7291:b0:3a2:dabf:fef7 with SMTP id adf61e73a8af0-3a3cf77f633mr640317637.26.1777508493994; Wed, 29 Apr 2026 17:21:33 -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 v3 19/47] target/arm: Split vector-type.h from cpu.h Date: Thu, 30 Apr 2026 10:20:18 +1000 Message-ID: <20260430002046.59739-20-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508651680158500 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 5d051e1d2d..f986602722 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -35,6 +35,7 @@ #include "target/arm/gtimer.h" #include "target/arm/cpu-sysregs.h" #include "target/arm/mmuidx.h" +#include "target/arm/vector-type.h" =20 #define EXCP_UDEF 1 /* undefined instruction */ #define EXCP_SWI 2 /* software interrupt */ @@ -140,43 +141,6 @@ typedef struct ARMGenericTimer { uint64_t ctl; /* Timer Control register */ } ARMGenericTimer; =20 -/* Define a maximum sized vector register. - * For 32-bit, this is a 128-bit NEON/AdvSIMD register. - * For 64-bit, this is a 2048-bit SVE register. - * - * Note that the mapping between S, D, and Q views of the register bank - * differs between AArch64 and AArch32. - * In AArch32: - * Qn =3D regs[n].d[1]:regs[n].d[0] - * Dn =3D regs[n / 2].d[n & 1] - * Sn =3D regs[n / 4].d[n % 4 / 2], - * bits 31..0 for even n, and bits 63..32 for odd n - * (and regs[16] to regs[31] are inaccessible) - * In AArch64: - * Zn =3D regs[n].d[*] - * Qn =3D regs[n].d[1]:regs[n].d[0] - * Dn =3D regs[n].d[0] - * Sn =3D regs[n].d[0] bits 31..0 - * Hn =3D regs[n].d[0] bits 15..0 - * - * This corresponds to the architecturally defined mapping between - * the two execution states, and means we do not need to explicitly - * map these registers when changing states. - * - * Align the data for use with TCG host vector operations. - */ - -#define ARM_MAX_VQ 16 - -typedef struct ARMVectorReg { - uint64_t d[2 * ARM_MAX_VQ] QEMU_ALIGNED(16); -} ARMVectorReg; - -/* In AArch32 mode, predicate registers do not exist at all. */ -typedef struct ARMPredicateReg { - uint64_t p[DIV_ROUND_UP(2 * ARM_MAX_VQ, 8)] QEMU_ALIGNED(16); -} ARMPredicateReg; - /* In AArch32 mode, PAC keys do not exist at all. */ typedef struct ARMPACKey { uint64_t lo, hi; diff --git a/target/arm/vector-type.h b/target/arm/vector-type.h new file mode 100644 index 0000000000..d94c0d986e --- /dev/null +++ b/target/arm/vector-type.h @@ -0,0 +1,44 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ + +#ifndef TARGET_ARM_VECTOR_TYPE_H +#define TARGET_ARM_VECTOR_TYPE_H + +/* + * Define a maximum sized vector register. + * For 32-bit, this is a 128-bit NEON/AdvSIMD register. + * For 64-bit, this is a 2048-bit SVE register. + * + * Note that the mapping between S, D, and Q views of the register bank + * differs between AArch64 and AArch32. + * In AArch32: + * Qn =3D regs[n].d[1]:regs[n].d[0] + * Dn =3D regs[n / 2].d[n & 1] + * Sn =3D regs[n / 4].d[n % 4 / 2], + * bits 31..0 for even n, and bits 63..32 for odd n + * (and regs[16] to regs[31] are inaccessible) + * In AArch64: + * Zn =3D regs[n].d[*] + * Qn =3D regs[n].d[1]:regs[n].d[0] + * Dn =3D regs[n].d[0] + * Sn =3D regs[n].d[0] bits 31..0 + * Hn =3D regs[n].d[0] bits 15..0 + * + * This corresponds to the architecturally defined mapping between + * the two execution states, and means we do not need to explicitly + * map these registers when changing states. + * + * Align the data for use with TCG host vector operations. + */ + +#define ARM_MAX_VQ 16 + +typedef struct ARMVectorReg { + uint64_t d[2 * ARM_MAX_VQ] QEMU_ALIGNED(16); +} ARMVectorReg; + +/* In AArch32 mode, predicate registers do not exist at all. */ +typedef struct ARMPredicateReg { + uint64_t p[DIV_ROUND_UP(2 * ARM_MAX_VQ, 8)] QEMU_ALIGNED(16); +} ARMPredicateReg; + +#endif --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508576; cv=none; d=zohomail.com; s=zohoarc; b=ZRvE7h0qVQEkyh2kBitoCSdpCTh2cWq3D73SK7XCJ298gJROHiImfGR96uTRUVqXcPYank6EbtWdwF+QllZ+CwNJ09rjn94aZkX3nOGUrLg2/LI0vCwl7K/l08853jXMku/D9P6TdOp+cFVm1URux18bMMb2srQ08p05TLVHvMg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508576; 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=BYhkh8wtuC7FVsqu8cmLmrJXOwOd8zRw+EIarakRZf3BAHPWBnQfIRZBoKe98LGUu6R++WgOyARAefVFMT63OW1RB1vpJbb7cJyGjlMxjWJc/HxQdvPlhdQs10hdDcupKuLyXBUz3z1by2lhERNSZocf/hvSgFjbWg7Ny4QHL80= 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 1777508576915656.3768433019844; Wed, 29 Apr 2026 17:22:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAB-0006tN-0t; Wed, 29 Apr 2026 20:21: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 1wIF9v-0006nI-NT for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:39 -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 1wIF9u-0006Ls-1F for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:39 -0400 Received: by mail-pf1-x42c.google.com with SMTP id d2e1a72fcca58-82f431c0ab6so189541b3a.0 for ; Wed, 29 Apr 2026 17:21:37 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508496; x=1778113296; 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=PO+VjProXmd4LEkzPinzT5kScRz3RgqsEuTGNk+2rlfb0voYr/NawWV05+AMDVd52l bPRibzsbPlURP7QyAWLfEz2JdLpJx/+MdZRfd3hKHYciBlSoMaufpbUneVl9Mq/+tlRG 76IL2vcLp/SgeJyyJhHYwi/4fZfqnXUJ3y7w7qwThADRDHgP0UoJ2W6jhToYdAXgMlJU 1VJpjZC2EMPavneiuT/2lKfVWfbpuOAQlB171p5Hz/61PsTbSG5NSecTkR7g4HBfi5aJ nBThL+jqz9TmiiOpEz0gBzU9o3pahALEVdmbB4f+g+dmoR/kZGiJHZ3tB1PwxHO6D2pT 2+Vw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508496; x=1778113296; 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=oauxTIxi5d8GURGc4dD5vRejCX+PRLlhg8RZeJCwFQu5LXxXpU03cUAQiG/PMZVl2g M2djGn3tPF6BZ3P6nkgEjZC/g33axJsg8U1U0P1ldjaPTyE6DpSR6HGZhz7uda5OnsQa gvOCknOmIcTttDd12IocFADalFSAs37VJhzAGvS32miwq84ZTFffyPE69Fu+C41XULi2 kr0Uq/wgCKi1XiPaNkGgc5/hl5FSlOzxgudVOXphP/i4tzXvr0OlFmgZM5pTchVfyqF9 60a5utIqRUbqm2CF7FXX0Bzb9BYxH8HyrCfORd0HkP95Rx0x7zwZ4N7se1NjNsb2j/Dc gxvw== X-Gm-Message-State: AOJu0Yy7/ELyKFAr5Pmk3zVE9WTJl4TEMpW0mh3Kop0Qbts5PST90RYR PqV5FXXNcsRZwgSBHw6hpXQiZC2y/G/1V3EMlyNeIN9Ge8yVNQreLVSdMacQtAw3DdJzG8dUiXN 9DkUdgw0= X-Gm-Gg: AeBDieufS1/KVXkUVvQWuwHFqFEDWrLtaelOQP2LpAIS6gHPkVQCi+RZnZUCa1jD4LK TEMAf2c3+prEkBsqLLEHLgcAqKgL2Snhv4pvFWYV8uLdoAOyNy9PzWW0p+RZ1m1ooStq8CnyEXn Q8GF4aG2HBTP4FWH6lTBWvFclgCMkLrdUoj1CRj15kf34Ki/WqcAjJeS2GGfdmgluLwVRECAtFK cc9bZF8NzB6u2jZ4us8fDrJGSa89K9ooOLPp8R1Yjz8nNAUSZ3S1S8u2KYDbxBayCDNrn4aAhr/ xxoYhn+o6bg5/Z4cLLJES9gtknQO/kUeBYChkXtPHja5r4dDNh8L/lRoOyvTGY6y5Mu07Vk5+Df JMjBpXiFxdZdL3hzvW2ux+ubwedd+yjLaCUP6pv1xUYfjbJujahG7HPnL++L+tGtF7taBahDwGK tGu6LJi02toa8vH239ZPTMnI2120yvomixd0zr8lVs X-Received: by 2002:a05:6a00:27a4:b0:82c:7767:5bb2 with SMTP id d2e1a72fcca58-834fdc40e50mr749879b3a.21.1777508496409; Wed, 29 Apr 2026 17:21:36 -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 v3 20/47] target/arm: Move vectors_overlap to vec_internal.h Date: Thu, 30 Apr 2026 10:20:19 +1000 Message-ID: <20260430002046.59739-21-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42c; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508578454154100 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 19:23:37 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=1777508831; cv=none; d=zohomail.com; s=zohoarc; b=DAuEhvWbFA2XjWkrLrWI43TSfSysg/irP32ff4zXnNQgUJVjdA2xhS+aCogzZnAnwaD2Ut6rWpVEAwSJPHMOKoTUPSFOo/P216I3eIy/Gz+Hguf8VRkqsBlnnyQnjgBTBr0zQddgqT13SFpG09ZNnOeKUoUU0WJ7LblDIXn4BuM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508831; 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=LHbcnnin4MK7f8Hthy49rChr+1IMITnIhpn+z5yiLjI=; b=kV+QaHO9SdNVyIHa9XtLBJUDegL5vaGF3ckzxoQRj/jKW2fbrvDiTv+G6O4MEBgjZ4dRTJbyiVKzNC3UcEHUQ9tOV8VnOeFj+phaRQ+LycoafVzcb4fTtpUMC7+ucq1RiIZKCJ9i2661edUNrfgauzvo1wEmcsC+Qrn2A7LJ5H8= 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 1777508831097935.1734818196594; Wed, 29 Apr 2026 17:27:11 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAI-00077S-39; Wed, 29 Apr 2026 20:22:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIF9y-0006oR-9Z for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:42 -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 1wIF9w-0006MO-1V for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:41 -0400 Received: by mail-pf1-x42e.google.com with SMTP id d2e1a72fcca58-8296dabef74so325770b3a.1 for ; Wed, 29 Apr 2026 17:21:39 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:38 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508499; x=1778113299; 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=LHbcnnin4MK7f8Hthy49rChr+1IMITnIhpn+z5yiLjI=; b=IfYLS5qgyTjoYXUD3k6pIrIrJXeVsnQ0C3RcwuuDIhOwCIfhiiLqOyd5OQX28y5eBX PWhnarq27qA917JENGohq92qYMb8HLj0AhmoOsE6niNrXkG5HluTNp22qvwCyBvpTsmX mo29JjftX/XrVyBNnvCrPCSgIWaXa4HEwJ8pilSnl6s7dHa/8Fn7pX2e2tPE8oJ2+V7V /R0G1LNFLk4hAuPTOrHCS+p0NFLn4rD0K9OIPIAp/Q8LAzJsfPG5O0fCC9tLWNMiKcox +oOTkuB6TY5XNamYUgWDL/5xN3MRYK9Z7yUEPnYLgUQMAmVEGg1bBSFI0QjRf0wkw7xN oFag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508499; x=1778113299; 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=LHbcnnin4MK7f8Hthy49rChr+1IMITnIhpn+z5yiLjI=; b=WFB7xpFp3x2qIV/Yel1Vn02nN8MBdapOS8gJYtFWa7Q/8Jp6DS4+w8f3z9gKg9j8YM ifttaV7eKNwWcXcKX5yLn7AfEX4NH6z1NLCTlIGZhQcZm4csuvNvwofTKeB/ciHOFmvE WA6OtKE79V7f5GdLdE38F/XrNP+CmHwWuh49ok5Rq/tDd2qxMyPxCFgU7AL/pNoa78P1 fNjgyc93atiwKkLEQbLOCcBDGUJT9PH1ARBg1CPj8vHlf2Qf1n86rId/GHVt1Q35vSl1 12SIzpaRk38kFuUf8Ps+xqsR2JRg1+O3Jijpvhq4MBOhlrolGBrG1SEBYE36heyrjEQr yDbQ== X-Gm-Message-State: AOJu0Yw7H3LXhrBe5unmqKcGvmZl8hGt3bt9iBiMnZEjHOqhFuZx/i2g 3ul4S2Kehacgl4N6vgm6yEQ8STRo6N9bObGaqnGiI9LbJ/KqSS9e+HmePFV6sYtQ19UV2FBQcQW Vzpl+HiI= X-Gm-Gg: AeBDiesiguLffinJu//N81Cd5K4nItA9zzTbgHfu7+HA1oTcfFaDlYxo5AY+yxNU+aw JcRi88laUNbfaGG1Ga+lgiiaWAtKE7es4BJBDGnZqAtLnPl/6WydIKfHxR9GBmNOnQYJIlbvw39 7KX4o96qMux2lvgXQtfAJIXJ2bza8tunihD45CGgz1jO7yC8maw7dW3M40rYNMfxwif+aOD3kud Z+/iM2Fjri4X+hm1Nl+STJhTdQYHXcriy/NemPc0TC4I6N6v5vY3FdcqenijtZK+7siBeNWtgVK syzBBTNauqjnCts0ItdLuRvP/50cXg8tqPFYMclZItTluOHqEFqFSrfFtWQEWXAM33x3TMCimFY ajUp8H6usFFYp6O9c6i4f5b9HOYb/oBrsQfesfwpp9dzPLI7bqYCSuxD3Ck+46TWLxII0NygPDP 6SFGqJusZMBG1wbE7V9l6xYiaeLlB83Jk/+Zrp8wDt X-Received: by 2002:a05:6a00:3e09:b0:82f:2a78:6302 with SMTP id d2e1a72fcca58-834fdbabe8amr930785b3a.26.1777508498633; Wed, 29 Apr 2026 17:21:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 21/47] target/arm: Implement BF1CVTL, BF1CVTL2, BF2CVTL, BF2CVTL2 for AdvSIMD Date: Thu, 30 Apr 2026 10:20:20 +1000 Message-ID: <20260430002046.59739-22-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508834104154100 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 | 138 +++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 34 ++++++++ target/arm/tcg/a64.decode | 3 + target/arm/tcg/meson.build | 1 + 7 files changed, 197 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..5566550205 --- /dev/null +++ b/target/arm/tcg/fp8_helper.c @@ -0,0 +1,138 @@ +/* + * 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(CPUARMState *env, FP8Context *c) +{ + int new_flags =3D get_float_exception_flags(&c->stat); + + new_flags &=3D ~float_flag_input_denormal_used; + float_raise(new_flags, &env->vfp.fp_status[c->fpst]); +} + +static FP8Context fp8_src_start(CPUARMState *env, uint32_t desc, int scale= _mask) +{ + bool issrc2 =3D extract32(desc, SIMD_DATA_SHIFT, 1); + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType f8fmt =3D (issrc2 + ? FIELD_EX64(fpmr, FPMR, F8S2) + : FIELD_EX64(fpmr, FPMR, F8S1)); + int scale; + + scale =3D fpmr >> (issrc2 ? R_FPMR_LSCALE2_SHIFT : R_FPMR_LSCALE_SHIFT= ); + scale =3D -(scale & scale_mask); + + return fp8_start(env, desc, f8fmt, scale); +} + +/* + * Invalid input format is treated as snan, then the conversion operation + * converts to default nan and raises invalid. + */ +static void bfloat16_invalid_input(bfloat16 *d, size_t nelem, float_status= *s) +{ + bfloat16 dnan =3D bfloat16_default_nan(s); + + for (size_t i =3D 0; i < nelem; ++i) { + d[i] =3D dnan; + } + float_raise(float_flag_invalid | float_flag_invalid_snan, s); +} + +static bfloat16 fcvt_fp8e4m3_to_b16(float8_e4m3 x, int scale, float_status= *s) +{ + FloatParts64 p =3D float8_e4m3_unpack_canonical(x, s); + p =3D parts64_scalbn(&p, scale, s); + return bfloat16_round_pack_canonical(&p, s); +} + +static bfloat16 fcvt_fp8e5m2_to_b16(float8_e5m2 x, int scale, float_status= *s) +{ + FloatParts64 p =3D float8_e5m2_unpack_canonical(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); + uint8_t *n =3D vn, scratch[16]; + bfloat16 *d =3D vd; + + if (vd =3D=3D vn) { + n =3D memcpy(scratch, vn, 16); + } + n +=3D ctx.high * 8; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (int i =3D 0; i < 8; ++i) { + d[H2(i)] =3D fcvt_fp8e5m2_to_b16(n[H1(i)], ctx.scale, &ctx.sta= t); + } + break; + case OFP8_E4M3: + for (int i =3D 0; i < 8; ++i) { + d[H2(i)] =3D fcvt_fp8e4m3_to_b16(n[H1(i)], ctx.scale, &ctx.sta= t); + } + break; + default: + bfloat16_invalid_input(d, 8, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); + clear_tail(vd, 16, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 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 02774409e5..f344222202 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 19:23:37 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=1777508810; cv=none; d=zohomail.com; s=zohoarc; b=ikW9pYZ+r0nCqW6dwsEcp1fo1PnnO0sFy4f77ibHoqYV81fcc8ol5hwkHbCn+1jm8cFdQ2AmCSSa5N+2baa10/eDN5pt9jBOz+3KXSGPqtP4Ss+cuyxtfO1oG70CRl7YGYznZuGSXL/9YkBuvjJdfCyNoiknVKPf8n1nu2yim4g= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508810; 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=WO6c7Ev0QOAz+gpCM4MJrP6PDuccGS4481ICnmoGQSI=; b=oD55V88GWG72uYq9i/rNiGfmAyhzqkW4FeVllCJObggAgvNwwv0EXcAPj2n8ql5KfinQ62H2CQU7+Dz+FAu0+LLVWqyrw3O6KPsoDbeTUxmquaR1L0m04aWJ+R3PZ+bIcZOWtFgMgRZgFE7IrIJOsF33srt+qp4ryCW8Ltqq0bI= 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 1777508810802168.42802327427194; Wed, 29 Apr 2026 17:26:50 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAH-00074M-4C; Wed, 29 Apr 2026 20:22: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 1wIFA0-0006pB-44 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:49 -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 1wIF9y-0006Mn-CC for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:43 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-82418b0178cso197124b3a.1 for ; Wed, 29 Apr 2026 17:21:41 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508501; x=1778113301; 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=WO6c7Ev0QOAz+gpCM4MJrP6PDuccGS4481ICnmoGQSI=; b=CRDscYEuPCs5vyevU3yrv6imb5VGsZxhKDXlwdKNJ8u2oN/9UjibgnDGd2QQm0SLA4 OS5OFEuupoJD9TR5bq/iyV9mG0Go2MIEz7EeSNx6/oinZsbkl9+X8bNY2kgunPpnXqXq 0+kpA7QacmE8OwhhslF8/aS/hbTcWhiX/3t7ns5POrjk2wY95EjnCtDLW82OSoxa4VZ6 Cr2iqmntknew/1jcFv5bA3gEvu7yqUymnm+UzEvaD3R6zLHb+egPJyG7/Oq7NPSJqBfl vEo5JzuxvKqdnwXYOqpbIHsEYN3qglPukJUnQouRMivATGu0iLmBk2ljvnKp3a29T/rI f5dQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508501; x=1778113301; 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=WO6c7Ev0QOAz+gpCM4MJrP6PDuccGS4481ICnmoGQSI=; b=KA3ODTiYUha8N/T7ucyfxPUa3vMazifIjQUvDihpkmtjat3gQnW4cHZge6Dv9EDFgo /0meeJpO8vafXu6cfEPyNMlm6+j6ng/aZQ0GwKfhtoMRd16HpEa07j2VDgSltE+2RIwz kT0MCQqdSeUErEZ3gLtQkYqncSFLcW4Y7JzOR2otG6BIp2UlTUp8saVcOAT8bZILyB88 4iAtK5/xNEdShBEjtmdqwqx6xCvpIotVCSOp2Ox9BfnG0Wj1BbHwsJcVHuZrkbWAhiuR qBthyRLUrwXQ7ULRRpW2MUfk0r7xcawnzbH8hPk12ZZfsdRqqLo3ZEFJ2s/WlWlDRdH0 SACA== X-Gm-Message-State: AOJu0YxZqgQbOTdqglMQzswrvbwF7qLWeywfMKJ8H+7dNSfkgqJHSzVF cMquAQmgbZIHlKNZwB7qa7ZzqJwuJnM2I5JBOaOSpj/xtXyPOi53IjsH2zU7Y/NY0dqvdObbQKU TDfHwmrU= X-Gm-Gg: AeBDieuTAb1Xo88Lo2lQqNhct6DwQalNsjdW+1utqqyTYIcf/fzxqtW8SC13wObifxb nCvy5tumy498F/H9QBgx6ceiW0pYeUIEvzl6hFSpv4iVUMnqeb8qbTwVm8d+8lHbZqtuQiz4jHE lXGvgrsNfN9mxZhaoR2l5ZO/17+UQltxvem3x1KAxd+3e7bA5FW4YT+PWyFvQWfF7h0AcLfyA5E GSHcELKZUHLrigXqqKrVMnIhSWWjm+LKs0evnhvL1NhzV++hCjiVsqI2Z1APrUF7MGv3uM4orEK 6RDCnn4JNU45W5AIMIF705KNZu89HxUsX1W4iJfdbStoHaKuEYUW5KIg+EAVHzEeR9osJB02cIF 3WExQTbwcgb7NJ/xkSy1wAVybo3/jtLpB8D46QXoKOU5UQUU0I1AbW/mlJmbpkzeBpjk59qopQB C++y9qitb7HP3fP8omPaiY9esPX9qCF9fUN8jbXyW/ X-Received: by 2002:a05:6a00:1f19:b0:82f:6e7:152d with SMTP id d2e1a72fcca58-834fdb6d5f3mr771581b3a.21.1777508500689; Wed, 29 Apr 2026 17:21:40 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 22/47] target/arm: Implement BF1CVT, BF1CVTLT, BF2CVT, BF2CVTLT for SVE Date: Thu, 30 Apr 2026 10:20:21 +1000 Message-ID: <20260430002046.59739-23-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508813755154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 6 ++++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 28 ++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 23 +++++++++++++++++++++++ target/arm/tcg/sve.decode | 6 ++++++ 5 files changed, 64 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 104e36b3ae..334ff480bc 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1629,6 +1629,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 5566550205..a4c7c44e6f 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -136,3 +136,31 @@ void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) fp8_finish(env, &ctx); clear_tail(vd, 16, simd_maxsz(desc)); } + +void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMState *env, uint32_t des= c) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + uint8_t *n =3D vn; + uint16_t *d =3D vd; + size_t nelem =3D simd_oprsz(desc) / 2; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(2 * i + ctx.high)]; + d[H2(i)] =3D fcvt_fp8e5m2_to_b16(e, ctx.scale, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(2 * i + ctx.high)]; + d[H2(i)] =3D fcvt_fp8e4m3_to_b16(e, ctx.scale, &ctx.stat); + } + break; + default: + bfloat16_invalid_input(d, nelem, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 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 19:23:37 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=1777508683; cv=none; d=zohomail.com; s=zohoarc; b=fQiJyuF/74D/cD8RgqQPrbLmXcCNgV1PS3sk8jss5uxTMvwuF5YExx5Bt/xjDe2Rw3YFVaV0ZeOfCoci64I9Tl/THwSIoF/ZgXjEwxru9jml3TkVauDeL+t5aJTzYATiY4aYXinl5Y2EYeEkfjo8H8iBt4VeAGoecW3NjRbHFoE= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508683; 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=nfAsrojFL8WDZN6G2S1rIvCVUOmPfPlZHlvw/2VH+R+o5ekwgR+Sm5ibIe4Nf8Zs7sQT0RxOe37t4VC+qHfxYya/yrlHjXGxYQWsVDj7t58xNShhWAlw51+tmAemioTceShDdkSwwDT/qIQRB/LlSagJ1/Hqv1FsirDnXHG4ttg= 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 1777508683346810.7040217741536; Wed, 29 Apr 2026 17:24:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAG-00070M-Lh; Wed, 29 Apr 2026 20:22:00 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFA2-0006pU-Vo for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:51 -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 1wIFA0-0006ND-RX for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:46 -0400 Received: by mail-pg1-x52a.google.com with SMTP id 41be03b00d2f7-c76d797b180so171812a12.2 for ; Wed, 29 Apr 2026 17:21:44 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508503; x=1778113303; 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=jmrGTSoVtJBULaHSZUD9ljsbMxs2LMcmbQdWfUS9oennm/yW7mpSi2HdksgVwGMbZ2 RGwD61pOvV9+pZNg3XVqGV32XJwNt/JQDBCTtsZVyf6tWUiiyjaU4DePVjTqZGhEBb/V AegIbArEchZuGWS7pDeCG1D3V+FO63nrDBaSi3QnDFGWiZVQcJvjR/wGvg9Qc90gymoV VDkrg8Tn0tAaSiWBX50VPV6F6+O8zcmNuca9k8HleijfPapPUNTdE1qkSBsY3fOo5nXp mbpYCKpI5kzoAsiimy88qseGYrxRyRzJ/pS7MdDYQLBYe0TaGqPxX8GPSrVxJrePnmQi tj3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508503; x=1778113303; 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=gWGCyfguT5l9qxlChkEVKPZOiZ9hNoFCIYGzYc3hHNgyn2bsQbk1xoiMfoUaNMq06w l8COZf1/Gn+4rrmmHaK+sZME8Vb/2yxAVbDPRRWIT5Vd2V2jWFkLAKPwn6c84zxNdlIT dfhJX4LfpkQ21o3l8PCtfM6BWbzxzkopS3TyBP7GynX5kLF5473HSjJG5qdbYw8a9o6u bjqywH8wvizda6y3dK8A8lplP6FOQ3fUiQWAAZE8Bw0jn5UTYcU3WgpD+S3FRD58duDz BjzmxL8NzTjmwb4sbyiW6iS833XWEJuwlFJFgHtdK+VLlRFwT1OrnObdAugrUhT/1QEk e5Bg== X-Gm-Message-State: AOJu0YwshhTmfwCjhjjH8GQyLI8Sl8h7fgh1iltpM37/QUPw507SXSFz xrnZHF8JL/hKohCmsofiPLrwH7rqWYCq5fW/meSZRuJSrp2iMnAuSEG3U9ZqJ5VMMk74gtK0xT6 QxOtbyMg= X-Gm-Gg: AeBDiet/FOy/i9FPg8A0t5QVlLne0vK7jVnJJ2gO4NDww0hYERV9PrPQuEzMP0pFMWY tnunre2nBA7Kh3NnYvErSW2S56H3dhd6VbXDkfNOgsIT+eeZcq3e5GWbjo5Cdg5vhlhE76CD0jK Vdu/jsY/nKoTqMBfmAC9y6nFL2i0VC9sraicccxM6K4Ak+iYG98ZK+2+rYa5G4A+K2+c6p9AoCy 17BPD4cJyD8X1H/RN88ko9kZXu4pHKDHo7Erz+SNoY/Nk6pBQCSryVAGqX8WeUuISwID6CouQG8 4V5BHiLJH0yDaDg/0x7IGR0jWu+fvixn8n3/4LOTT1a4sQKLJOG9Wove4fxavQ/hYek1PGja5o8 CFcWlB2XHyPjwUcwA/8GFuktvUYNLquDDXeotyYluspmhPllh+ikvmatEy4Gsm6IVUiXpLNn5Pw 5/JrPldTkz2WmaQVMrX/GHuibNX93CkMNCBlkAcxms X-Received: by 2002:a05:6a00:a111:b0:82f:4f63:31e1 with SMTP id d2e1a72fcca58-834fdb0971fmr866254b3a.8.1777508502736; Wed, 29 Apr 2026 17:21:42 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 23/47] target/arm: Rename SME BFCVT patterns to BFCVT_hs Date: Thu, 30 Apr 2026 10:20:22 +1000 Message-ID: <20260430002046.59739-24-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508683635158500 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 19:23:37 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=1777508773; cv=none; d=zohomail.com; s=zohoarc; b=oK/J77cOd4pEb/BhuX56pm32HCa1vUdVsVggOwwdUBBxpUfF0NfjAo7rVaqCnSG47rrFtruE9GPSsX+j125k3dugXeMDVrO2Z9WdA0OafMHz6y65GlNINopJQOdDjpQXR+zBZJHTdXC0nYMVS8qLRDdJSoCp4hG2sgrYDzZYkvo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508773; 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=BOfkYu9xRyUGvcHcCTU6Jy0Z7oGzIMpohmpmqr8Pmng=; b=BpP0SziyeP4MLp++cU26akze3pqai1v+tcDJN2UUePThHw38DfQ4GCySDl2zhRl695XmQIx7CnnwLyezvJuOPxrrxQEKhRTL2R/go1xxlMaXP+isry8709sLtwKrdjWH0hcvMPI+jCRtL5Mtm8dlyFKEPoTzBmYDYNPdxC8TOIQ= 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 177750877333339.3580628210143; Wed, 29 Apr 2026 17:26:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAK-0007JB-Ms; Wed, 29 Apr 2026 20:22:04 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFA5-0006pf-RD for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:51 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFA2-0006Ns-N1 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:48 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-82d0b68837aso190803b3a.2 for ; Wed, 29 Apr 2026 17:21:45 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508505; x=1778113305; 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=BOfkYu9xRyUGvcHcCTU6Jy0Z7oGzIMpohmpmqr8Pmng=; b=bkutybNX1ZxIJGx/FBn3Tzx0JAPPciA8DOgmcgX+YeCeo0hzO2SiFTuSHOLpeEPJ96 vPxqSfz9VvC2jNXfHM0AiuVTJFpmJjM05cnXzxB/97cvNUSw2je97cnsjV6QIJ5sybId frurZDmDRMYSdgAJrwe3lJAjiUMWa5FRKS8aGDc6a+nRqGiYe/PDMA37WNmpstCbhDow qmDchyPMnfonKjvgZC9E/iaIodnlwOM97F4i4hBBDlKtAo/dw2GkfX4u7ZGRZiKy5TYX E1Bb0Q2GPCBU3PEMUqcRSgqVxAw4wvTBSgPsOX86WIMRZ7PobWzgl6jGS2DsJWjYs0WH CE7w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508505; x=1778113305; 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=BOfkYu9xRyUGvcHcCTU6Jy0Z7oGzIMpohmpmqr8Pmng=; b=UuuVvGkIlptwZrhv7YzpTi9O1xdWZSYsYi8uXco51+6++2DLcDaTWDBDB2zDiiwacY Ja63lAdNi0Wd5Gxjr5bpP47Z5BxrfJabSz+Um6FF/PvfQcPzXdtc+XtvmXERD34Jtwgl t2J9/hlMscaOywRgZ175e2fOLg81bj3fGgVymyf6DdNfK3jKyIU4qlIG2iTwmpA61BRd vEUw1/8bf4n4huE3C31cpJQDfhMUWKz0f2LSCaCVZmx6HhOBTPn0de+rMm+2qrq7nF0w 1QWOLQka++wiHi5koAVFcjIKUmoj8AQZrYejgEPSOQ6KPHShS6i00vl1Lg8nLaavR9qW 8C+Q== X-Gm-Message-State: AOJu0YwgfHmlNRzS13BxsmaVl9whQWXWvVXBQlSRxt2VgSr3t32RiGqj zKFE51LMOIcYk9KZNvANbVXnJHI1CztmCG1w6G57eqwv1psfBTQyf6q8hm03V9Gy85DAIHr5ptb GSxS7SgQ= X-Gm-Gg: AeBDievZCQgVwjXpg+OV4Bbrzfmv3+Iw+gP4S/1CVCcuwXdiC293gZkT5c9ljYNhJSq 64/xUdFxiyOxBLRRyZB1M5Hg03L80iU8p2aNxi7wGOGi+vAmn1TF3Gn/Ju4KdeGBpCchGsRSQEA wuyTm/i8/UhRQpa+QFFWZe/+BfiMPS6iQn/ZJXEfbakCaLk/SkjE6+GzKdyklKikYvPiWj1lvNQ 65ENTGAU8t9VJUy9ouLRUjD1yuBgZXHf0ra97EeRujmmQuG0QsfBFuXaQD7DcsmXZj7AYyV4q0M 52Ps9+G8ywEBjuLhzm+PShZj+I3AiXrHp2qvSdhFBSGUwe/GVaKFpi6wuG6tCe7LKuAmwLNFihP D1xQRR6DJfiD+puR7NZB82cnG2LkTTOFpt9whzKbg6PhL04ZW9vWshNoWLl05R6fL+nQo57YlWz I/zaa1fgXLDdE/mV9Q8xar+7xNv1HjVDtEbpp389ft X-Received: by 2002:a05:6a00:1749:b0:82a:1529:2b4f with SMTP id d2e1a72fcca58-834fdc82311mr861513b3a.44.1777508504760; Wed, 29 Apr 2026 17:21:44 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 24/47] target/arm: Implement BF1CVT, BF1CVTL, BF2CVT, BF2CVTL for SME Date: Thu, 30 Apr 2026 10:20:23 +1000 Message-ID: <20260430002046.59739-25-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508775245154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 + target/arm/tcg/fp8_helper.c | 79 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 19 ++++++++ target/arm/tcg/sme.decode | 5 ++ 4 files changed, 105 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 18ff483bb0..966f83d796 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -5,3 +5,5 @@ =20 DEF_HELPER_FLAGS_4(advsimd_bfcvtl, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sve2_bfcvt, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) +DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index a4c7c44e6f..7598871f87 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -164,3 +164,82 @@ void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMStat= e *env, uint32_t desc) =20 fp8_finish(env, &ctx); } + +void HELPER(sme2_bfcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vectors_overlap(vd, 2, vn, 1)) { + n =3D memcpy(&scratch, vn, oprsz); + } + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(i)]; + d0[H2(i)] =3D fcvt_fp8e5m2_to_b16(e, ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(i) + nelem]; + d1[H2(i)] =3D fcvt_fp8e5m2_to_b16(e, ctx.scale, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(i)]; + d0[H2(i)] =3D fcvt_fp8e4m3_to_b16(e, ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(i) + nelem]; + d1[H2(i)] =3D fcvt_fp8e4m3_to_b16(e, ctx.scale, &ctx.stat); + } + break; + default: + bfloat16_invalid_input(d0, nelem, &ctx.stat); + memcpy(d1, d0, oprsz); + break; + } + + fp8_finish(env, &ctx); +} + +void HELPER(sme2_bfcvtl_hb)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e0 =3D n[H1(2 * i + 0)]; + float8_e5m2 e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D fcvt_fp8e5m2_to_b16(e0, ctx.scale, &ctx.stat); + d1[H2(i)] =3D fcvt_fp8e5m2_to_b16(e1, ctx.scale, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e0 =3D n[H1(2 * i + 0)]; + float8_e4m3 e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D fcvt_fp8e4m3_to_b16(e0, ctx.scale, &ctx.stat); + d1[H2(i)] =3D fcvt_fp8e4m3_to_b16(e1, ctx.scale, &ctx.stat); + } + break; + default: + bfloat16_invalid_input(d0, nelem, &ctx.stat); + memcpy(d1, d0, oprsz); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 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 19:23:37 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=1777508814; cv=none; d=zohomail.com; s=zohoarc; b=TEw5CcBycfYZIpppP96T1jQyI3Fxh/k0DmOg6VPshy9hYrWMZReIAbdgBIvQVdFBuepidePPLczCqZozRQURRbqeBTv/UbXDGnTuNY0gsWfOHvo8VTaPtUpjhMD/0Rk8lPf52PH5WTConsI5mT0U6q3uBE03cshuPjJw/wcBsAk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508814; 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=iMoYzuRPqODpMRORB+9R841nOiCKW8bvTvK/FcN9j6k=; b=aiwSakr3Ee5m/drX6flh6/zdCF9dTQs1db2ZqaSck9RISFOtNQWH1ADapxOlcqxSAGpY4he1oJY1EL3BLjjcqrb00zEIEZah8a9UacKHvak+AIZeCOBaq8ATQPKIQywDtvjc8Lg2zSHYKvFqn1fhOs/GdwfZY3SXrTSI83hHkjU= 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 1777508814124560.5289399139701; Wed, 29 Apr 2026 17:26:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAI-00078j-IO; Wed, 29 Apr 2026 20:22:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFA7-0006qm-H9 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:51 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFA5-0006P4-3g for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:50 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-82748257f5fso1063852b3a.1 for ; Wed, 29 Apr 2026 17:21:47 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508507; x=1778113307; 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=iMoYzuRPqODpMRORB+9R841nOiCKW8bvTvK/FcN9j6k=; b=LHfY87dpU0jXl4dMPpMQ5zL41/skKnxDwPTwDLiYqINzUKXfSST3vZJH1VpUqpjFe2 nCApUhjpysLZrKIyk/m4bXy/HnCSDQWkkDHU90RV2LD9Fo1hTeAQJeuZKEvqD6PAWE97 JBpRz2qLpZHEDjUfkY+GKwne/L7fATdP+OVuCTk75MvCFmMDkar7h8dPjVHwlCTB3sN5 n/XLo5EMWUWeM8dMM58sec0MjuWEemTKdCQI0fmBBrq3cvqVe3E+jDVloEol4srV63JH uj1hxjhjCrWUeJPSnWTDO0gcRfGiUqLQqztbjtFvdqEwjhjLxzS42nzdzeYn/Z16hlty D2kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508507; x=1778113307; 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=iMoYzuRPqODpMRORB+9R841nOiCKW8bvTvK/FcN9j6k=; b=GqTlpATfRT69zaoWX1SwJ7lU5VmQd3azhkkdDIZLmyEMJnIs36aWa0tf2Y82yyg+Xa BYHbGUpGyS9kUZHrU3ZPtj0ejKawt+bnXcWiLbfsePeivs2A9qmK3PMZ3vDx5Eam8EHS yoFVzOyn9M/xgjpjZw+W/yxa9hWM10EJyORHWc6KD/G5ubHO1aoBljjinKDZYA35Fgnn uWwauERxHbcvnrw3Z6m15UGuvsrqsxCGiPTqRQQpslUVyyVBNcB1edOLLuRvBN71eytB T9HM65r1kz2s6770cNQ8FoLkJ2Jxd63q2a7KdzUaNRIKntWXX7AMXKrhGnUYrWebPU8V AewQ== X-Gm-Message-State: AOJu0YyP4olxYRHUcu0U2mF361th84MdIYamBppuMjr6i1BbtEozNK3O JJgU3fbme271xbHvQhM4SXNGSp9+buwm0MQg/+IYr5/rafZ6fEZSozQdJVt17R0Czf23F0IeTea otvKopHk= X-Gm-Gg: AeBDiesjMSzErVnkIv3PnDgWMQyi0wgf02aTIbbPkcC9AOTjtK1XIo/9ljKwIld7Q/O KU2bY4pzA2fid6DNI7JxSSMbETa/XKAPPMpeUMnx5gnzGaOGe9+CDREvwFXKVyZWZe+qJxfhce/ wqL9GnZ4jfLjAnvjah+LOa3l9R1JdzGg1Lxs/yDtw/L6u7MwYlrwuB7o9jRmBTK/BzZY7wERLEe 0bH/yvoRfSDCy6j84jHs82q6Doeh99KPGaOT8kqaZCeWuWT4t4o8iNve143XcCefTCtKzuPsfQe vFgh8waQL1tqhm8htGUJOLhD0OkZIafG5qxCYdzHAYyTZzD3jxLwKQsc6kin58MJnymrOqFHqFW iUZHM6YcvBK0kjv7Ko2YZs+LZBeRJv+22XShVZTxFFh+lZXn6hJKebYeqiI43Y2ApS7VTBLsMXR X8p1Tm/073/XsSFsBPb35zyftuKgfx5/l2kORdJKO3lHqvwtuR7/U= X-Received: by 2002:a05:6a00:14ca:b0:82f:51e8:b38e with SMTP id d2e1a72fcca58-8350014e5c9mr266346b3a.24.1777508506908; Wed, 29 Apr 2026 17:21:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 25/47] target/arm: Implement F1CVTL, F1CVTL2, F2CVTL, F2CVTL2 for AdvSIMD Date: Thu, 30 Apr 2026 10:20:24 +1000 Message-ID: <20260430002046.59739-26-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508816115158500 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 | 56 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 3 ++ target/arm/tcg/a64.decode | 3 ++ 4 files changed, 64 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 7598871f87..2739cdb343 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -92,6 +92,16 @@ static void bfloat16_invalid_input(bfloat16 *d, size_t n= elem, float_status *s) float_raise(float_flag_invalid | float_flag_invalid_snan, s); } =20 +static void float16_invalid_input(float16 *d, size_t nelem, float_status *= s) +{ + float16 dnan =3D float16_default_nan(s); + + for (size_t i =3D 0; i < nelem; ++i) { + d[i] =3D dnan; + } + float_raise(float_flag_invalid | float_flag_invalid_snan, s); +} + static bfloat16 fcvt_fp8e4m3_to_b16(float8_e4m3 x, int scale, float_status= *s) { FloatParts64 p =3D float8_e4m3_unpack_canonical(x, s); @@ -106,6 +116,20 @@ static bfloat16 fcvt_fp8e5m2_to_b16(float8_e5m2 x, int= scale, float_status *s) return bfloat16_round_pack_canonical(&p, s); } =20 +static float16 fcvt_fp8e4m3_to_f16(float8_e4m3 x, int scale, float_status = *s) +{ + FloatParts64 p =3D float8_e4m3_unpack_canonical(x, s); + p =3D parts64_scalbn(&p, scale, s); + return float16_round_pack_canonical(&p, s); +} + +static float16 fcvt_fp8e5m2_to_f16(float8_e5m2 x, int scale, float_status = *s) +{ + FloatParts64 p =3D float8_e5m2_unpack_canonical(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); @@ -137,6 +161,38 @@ void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) clear_tail(vd, 16, simd_maxsz(desc)); } =20 +void HELPER(advsimd_fcvtl_hb)(void *vd, void *vn, + CPUARMState *env, uint32_t desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + uint8_t *n =3D vn, scratch[16]; + float16 *d =3D vd; + + if (vd =3D=3D vn) { + n =3D memcpy(scratch, vn, 16); + } + n +=3D ctx.high * 8; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (int i =3D 0; i < 8; ++i) { + d[H2(i)] =3D fcvt_fp8e5m2_to_f16(n[H1(i)], ctx.scale, &ctx.sta= t); + } + break; + case OFP8_E4M3: + for (int i =3D 0; i < 8; ++i) { + d[H2(i)] =3D fcvt_fp8e4m3_to_f16(n[H1(i)], ctx.scale, &ctx.sta= t); + } + break; + default: + float16_invalid_input(d, 8, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); + clear_tail(vd, 16, simd_maxsz(desc)); +} + void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMState *env, uint32_t des= c) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 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 19:23:37 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=1777508821; cv=none; d=zohomail.com; s=zohoarc; b=NDx2bfrWtxYC2zaumeWP+uclWsWp45liR47uY5N6Qrx3VVeU+6zNmATof2FCU3exNose1BQV5zVtRZ2MkoWlLmiSxInlieMgninr7qXPqurXiZIXBWPPmrzzn1pTv1Qpjz/38VXY6KVeaeDOrogxEXqpA4vMowpgeCUi046SGyk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508821; 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=L+v0OenRaeZRU5sqopMR+9IMg3L8wsZpGoK3Peg+SMo=; b=GnFGK7WiuKohrrKQi/k+YPx56AoGKqaMf1HMLlkjJBL9MFFDQKmG6Nj89XZp0hWYTA9GfV/DRXME0m2LmzOfGPJuhem4yqNaCccJCVm7QJQ+OmI4/5jhnoKy8lAP+GgqG0gMLKe7fXIqaPpyuYoRqDG9mk5//sY/YSuZ07ATUEU= 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 1777508821035874.597135592736; Wed, 29 Apr 2026 17:27:01 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAI-00078J-Dx; Wed, 29 Apr 2026 20:22:02 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFA8-0006sh-MN for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:53 -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 1wIFA6-0006Q5-KD for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:52 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-82418b0178cso197148b3a.1 for ; Wed, 29 Apr 2026 17:21:50 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508509; x=1778113309; 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=L+v0OenRaeZRU5sqopMR+9IMg3L8wsZpGoK3Peg+SMo=; b=t0lkkA+X4qES9DwlwcrvEg4xg1J/OrZv51cCjbaohM5bclyR+ez7uyi8aifOfaiDpi tPhtYEqjk/K3a9bUH+xzrg6rNC+XhJI/lfe5t8j4QVw1rihBzfXTMj6/n/z3kEg2/izY Vi5Jt0EICHBQRDFoSdtPLdaAmE9IDCTt9uzBBz7r+PKtGFmBEl21+u21r1iR9oZsibVV GR256pVZYsdlWuS/Bmn2DeKgpvRzXD+oC1LzHNNA7BpJNjjePwQdNJ1OSw/5YKZREdih owVg72RpXgBapL+2DI/KEm3m+j49A/aByCeinWTRTtUOTkdN3i/W7e7OjQq1hAMCuCuh tzTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508509; x=1778113309; 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=L+v0OenRaeZRU5sqopMR+9IMg3L8wsZpGoK3Peg+SMo=; b=sgerSyHC0fAuPUFUbzKtD89jgh/iScrlJWq23j5pTh2agV3+oiCd9Xj0YhMtpC4kN6 7PtDf60hV68eRTqM62xxNxg0RevPydwLRulAmsPbFs6NeB3z4l2SksogNbKIY7aSi1V2 Y42ubig5bs27HQ+Ffzad2akBSLvXjT2S4e6PZdkpzXNPZzXBpXcUXdH57PKRrP+0t6Mp ZTmFOocgsjeU2ftfBGsUDUVDElH2FOuJjWYgHyskgQ1XxrHt9Y8rlNdHozJDLypKp0pE QIfTX2982pfH2a7fHHenBwkssWXv2qKAmwGrhaeKc40Io1vP/1XtvDf5o1Rlzf6KLz7j Vc5A== X-Gm-Message-State: AOJu0Yz81NfJlU0TR4H7rcmpTgVFOhloqR/iuOU0fMOeQ8JAVF41TGdJ VBiVWtxV72BHJivWYRAD/aFr63baPw20UzQhYygywIA4eyA/NALO4iJ+rAXFtqc6uWT6sdfiAEV l25Wu910= X-Gm-Gg: AeBDiettPOaoLK9XFKtw9pLQvxO9Lm3+ubsq48zpXbdlVOSXFOBQnYB32OaSB/EGtm/ 291SYjpH+jWuymQC6GeK9Ewd7lfoTbzVjXlCWKCzY1B73BCuvRkN1pI0qcCxjbYzkqnkRVswkKX TqoenhG9rPw1JasOsFuEqqa9u7y+rVYW/ZDTB/9gfbEzgdJjcsazIasb+A4Fy5ae4TBRP8wDheS MHXb87zpM9VWCyMXGF+HOfvhGnYblaMZvcTxcXrkXDdBQ6u7NEHbauPuN2N0AUxiKwnRuRXRRNA k1R37JIQqMtyoVvJOdL6WJUsz2gIeq7QRLvBu2hl/M1rouCn2i07gvNuot8ShxiCDCHYzzYZZAm hne5cBCkGmv5ephMGKiW1S7QDIbK2I/E54SD4sd4iQyuwJlq8aAmgfAk20pTagjaJhm3PH6DrrR VUe6Z4z/4EIHvw852170jIMPBw76ff8L9aCiHI39Lx X-Received: by 2002:a05:6a00:90a7:b0:82d:29f:d003 with SMTP id d2e1a72fcca58-834fdb44ed0mr903822b3a.12.1777508509164; Wed, 29 Apr 2026 17:21:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 26/47] target/arm: Implement F1CVT, F1CVTLT, F2CVT, F2CVTLT for SVE Date: Thu, 30 Apr 2026 10:20:25 +1000 Message-ID: <20260430002046.59739-27-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508823864154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 28 ++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 9 +++++++++ target/arm/tcg/sve.decode | 5 +++++ 4 files changed, 43 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 718463422b..3021dafd44 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -9,3 +9,4 @@ DEF_HELPER_FLAGS_4(sme2_bfcvt_hb, TCG_CALL_NO_RWG, void, pt= r, ptr, env, i32) DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) +DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 2739cdb343..2d5fd688cc 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -221,6 +221,34 @@ void HELPER(sve2_bfcvt)(void *vd, void *vn, CPUARMStat= e *env, uint32_t desc) fp8_finish(env, &ctx); } =20 +void HELPER(sve2_fcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t d= esc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + uint8_t *n =3D vn; + uint16_t *d =3D vd; + size_t nelem =3D simd_oprsz(desc) / 2; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(2 * i + ctx.high)]; + d[H2(i)] =3D fcvt_fp8e5m2_to_f16(e, ctx.scale, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(2 * i + ctx.high)]; + d[H2(i)] =3D fcvt_fp8e4m3_to_f16(e, ctx.scale, &ctx.stat); + } + break; + default: + float16_invalid_input(d, nelem, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} + void HELPER(sme2_bfcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 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 19:23:37 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=1777508538; cv=none; d=zohomail.com; s=zohoarc; b=bCMR9XYT2Fo/I1NvEDImih9SUu64M4znBCSEfeoI82xj1/qm53kHqi2EcxqEO5MGGpSjvteBbu/bn/pqupjKEW4iXXyZ4dt//ErIf9O67OXMJfOVcOs8x6ckjiSQNm0cbp4rhDMsUdcjAblKbZoPADmazkdKLeNDUn9MdNrl3WY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508538; 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=OJh6SPn6v/ro/u6awaGk53eLJVnkM7way/QNPRp/1SE=; b=eqesq+/yQUV8p9FxwE6/hCZpkyrSRWd4QgduHq59D73GVhXJxEtui9AC7Gj4UBzkFZUFSZa/b3is3r76xc3RnO++FPqN2rcvgl2ILFRn0R1rJn9P98wLRunSZmbcC148xmFZDGQtjsLd5eRUGgwDmMkC3G10z+/HcXJaukiFOqc= 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 1777508538230464.13863745080926; Wed, 29 Apr 2026 17:22:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAM-0007QO-As; Wed, 29 Apr 2026 20:22:06 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAA-0006tT-IV for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:54 -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 1wIFA8-0006RI-ND for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:54 -0400 Received: by mail-pf1-x42b.google.com with SMTP id d2e1a72fcca58-827270d50d4so334025b3a.3 for ; Wed, 29 Apr 2026 17:21:52 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508511; x=1778113311; 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=OJh6SPn6v/ro/u6awaGk53eLJVnkM7way/QNPRp/1SE=; b=Mbq4SBmUJVXGJPCZjX5AQNQN6+qj8zMKkic4/NMjvVxBKjeP0RLHeOulqzgB/ZC6FN atuqXOnqN7FRH7xWG7hG2a/jAR2TUiGe50MjMcCdYERllX5CSyHFy6OEq95ZxHENni2D J1dz2tFSijPua6gqUe8tWij6cGWC95PU4HMHNYve+C2Mt3NQ4wQZJo7NVdQRBR3XRz4Z TFb30+8g1UyPL8eZ+LlR1hGZ82ftFfNNMkFdgRa8oCzqKVusjD2pl5BTe+Fe0wN2Qq06 yGNZqE/L05KertGeiGbpQjCHFTAqNVGs343nr7B+H0men4YBPXsisRn8QnMSmFOglZuA Ic/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508511; x=1778113311; 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=OJh6SPn6v/ro/u6awaGk53eLJVnkM7way/QNPRp/1SE=; b=WsTCCPmRdINYD3zCstsUDZXDgoWAQvGLVRUyERNlNjHsUbEyUR7b0FsWOs9dPmZog9 j3xngtJgAWUy3cFLldpt7rwqZQ/JPa6iDaRubJC++PoALPy4sdqVWBcd3D50jo3Ye0gL hz5tPZNH+Ig2VHmx8K1a+1q0hvSAegE5jeBfCf++EstCLgUzOIYWQFW//RwMaakb2XVh usyCqCiPJbm7G8FAd5vAtYS6CvJ0eSI6A3roi2+f/swSkOcyN5wyiLmCMw8sDAedx41d M3FLoGiGERq6iyyDCvtlKr8JJFjCUtwdaNsSKEnqI+ENnzGC2hPGA7ib9WzULHDr2NHs 8JGA== X-Gm-Message-State: AOJu0Yxust6OojkBoqtNAJcLL/Q3hbu9uBuFgvGUdNlzXXeFYi5Fl78H A7R15YqZV0kVT/gqfQfHgrdS2wXzzRzTGU4R1fHbSh2G2rW+Q8i2q/HTz0+8Fa2ZjdOhgmQ8jf3 qa4F7XCQ= X-Gm-Gg: AeBDievd/2TGYYI3Cd8fEsWsji8vKVWD7JJ5ilj2Oi7nx7k670fCYoen8tFMMZZRYcW LXhhuh7+xfgYPSdzZGfh8fpW7CTd4wY5L6wqk/Hfm9gSbnC8/o+jd0UDxn2fbY8mKzcPeSx2KYt OaO1qBO4yP6pSGxZbqlmUhBvOfCTSSQ8s42TRoZY3FvRIjQRvC0TZSe1W47zW8WONJdiim2JSkH 3Uw/4HsUuqn+Q5IUpc+tqAfcpa1Ievux22Ydrq7pm0NiiVuCZ58UeN+JIqWPNvo2d522MGBijHc 0rou3aBGWov0sWSuUaymm1Fpqgsj+UiPTOhDZhRnoD/W7lCu06IOEV1QCOKH69e8zGTFQxI6eM7 CTMcCdLz4FOl2oPUsdlIXihyCzIab1gTRtD3PEKGM1PBMc9pnymAqsVxn0fDwk1qm5vC3+w584m jz/lrqCFnOrlziwx+jNpRpgAGm29szyi54dusPMKXg X-Received: by 2002:a05:6a00:1a8b:b0:82f:6e9:d1ba with SMTP id d2e1a72fcca58-834fdc480bcmr807041b3a.37.1777508511268; Wed, 29 Apr 2026 17:21:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 27/47] target/arm: Implement F1CVT, F1CVTL, F2CVT, F2CVTL for SME Date: Thu, 30 Apr 2026 10:20:26 +1000 Message-ID: <20260430002046.59739-28-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508539143158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 + target/arm/tcg/fp8_helper.c | 79 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 5 ++ target/arm/tcg/sme.decode | 5 ++ 4 files changed, 91 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 3021dafd44..b5dc2b7064 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -10,3 +10,5 @@ DEF_HELPER_FLAGS_4(sme2_bfcvtl_hb, TCG_CALL_NO_RWG, void,= ptr, ptr, env, i32) =20 DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env,= i32) DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 2d5fd688cc..3e1ce24bd0 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -293,6 +293,50 @@ void HELPER(sme2_bfcvt_hb)(void *vd, void *vn, CPUARMS= tate *env, uint32_t desc) fp8_finish(env, &ctx); } =20 +void HELPER(sme2_fcvt_hb)(void *vd, void *vn, CPUARMState *env, uint32_t d= esc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vectors_overlap(vd, 2, vn, 1)) { + n =3D memcpy(&scratch, vn, oprsz); + } + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(i)]; + d0[H2(i)] =3D fcvt_fp8e5m2_to_f16(e, ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e =3D n[H1(i) + nelem]; + d1[H2(i)] =3D fcvt_fp8e5m2_to_f16(e, ctx.scale, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(i)]; + d0[H2(i)] =3D fcvt_fp8e4m3_to_f16(e, ctx.scale, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e =3D n[H1(i) + nelem]; + d1[H2(i)] =3D fcvt_fp8e4m3_to_f16(e, ctx.scale, &ctx.stat); + } + break; + default: + float16_invalid_input(d0, nelem, &ctx.stat); + memcpy(d1, d0, oprsz); + break; + } + + fp8_finish(env, &ctx); +} + void HELPER(sme2_bfcvtl_hb)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -327,3 +371,38 @@ void HELPER(sme2_bfcvtl_hb)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_finish(env, &ctx); } + +void HELPER(sme2_fcvtl_hb)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_src_start(env, desc, 0xf); + uint8_t *n =3D vn; + uint16_t *d0 =3D vd; + uint16_t *d1 =3D vd + sizeof(ARMVectorReg); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e5m2 e0 =3D n[H1(2 * i + 0)]; + float8_e5m2 e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D fcvt_fp8e5m2_to_f16(e0, ctx.scale, &ctx.stat); + d1[H2(i)] =3D fcvt_fp8e5m2_to_f16(e1, ctx.scale, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float8_e4m3 e0 =3D n[H1(2 * i + 0)]; + float8_e4m3 e1 =3D n[H1(2 * i + 1)]; + d0[H2(i)] =3D fcvt_fp8e4m3_to_f16(e0, ctx.scale, &ctx.stat); + d1[H2(i)] =3D fcvt_fp8e4m3_to_f16(e1, ctx.scale, &ctx.stat); + } + break; + default: + float16_invalid_input(d0, nelem, &ctx.stat); + memcpy(d1, d0, oprsz); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 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 19:23:37 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=1777508876; cv=none; d=zohomail.com; s=zohoarc; b=X1j3LDWv42d97VvzVvtZqbGWMsAhCl899h9oI0FKIDSBA/FiRcDtIDxiinPBtnOmHtg2W78cVBr2pQmm4Trs+m8tzZQtBOzvM4a7KtcH50arqFjDg4oL5R8GUaz7803Z877Vi4X7Ar4oQ7TC8UjeOvb3u2R6c/gknwTfiRK5TUA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508876; 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=UhCKVShMlJBi8gRbysM65ZJCFTfwAaPCS1vV8AfHK4I=; b=RNa+IKXi6hqqwqmtoJSSvUsP48gL7HzaxQODblx/iLYGcL8CFLVREPs9x7TuX+LMELxrN8ufVuLps5ZgEG5t4oFAdwptoxVneZ7NbLax/S05VRzQKSIzhYysFKmSvMW9J8eq4jocfp3uhiHq5VuLla6hycuElr5yMtZucVIJ7tM= 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 1777508876097647.4608051878008; Wed, 29 Apr 2026 17:27:56 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAP-0007Xi-6A; Wed, 29 Apr 2026 20:22:09 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAD-00070d-A1 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:00 -0400 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFAB-0006Ry-52 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:56 -0400 Received: by mail-pl1-x62c.google.com with SMTP id d9443c01a7336-2b9705613ddso2086175ad.1 for ; Wed, 29 Apr 2026 17:21:54 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508513; x=1778113313; 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=UhCKVShMlJBi8gRbysM65ZJCFTfwAaPCS1vV8AfHK4I=; b=rBoi4C98AK06kx0Y7lWT5XK7RLL3fD9kksI4tR0d1KvegP0tdPbFbREA2H6wbyCzFk M35xmCTEuQWvE36iNwzZTM6R2I4cA7DrnmLdNvu1/keoWC7UyMwuX9m+iNPpP64Bm8Rr 5Manh97oy1yTVpGkvmJawNHi23Du5UfzjkpV/70M6kN4reHGtO/FeVRvBshYKW10KTfz xyaVLAUPrh7+GQiUUc95ouwWqbCbXhVCB2dLqlbwYHL6AT4qyvAMHHKmJCZD73GRcPVc w0bobRHMIhATe5ZAd6PvXnhG864VcepEFQPhBNadvgVN9Vt6LFKkrtZNuOw9l9+7xoyY IZOw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508513; x=1778113313; 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=UhCKVShMlJBi8gRbysM65ZJCFTfwAaPCS1vV8AfHK4I=; b=g7hhw4WAEy+NSMagV7xVxaaCm/8CZn21YPsCBpjD2b1YniFDNqJpG1VdqSTU6eKXOM 294DVwETMsivRQfPq2EwV7Up7amYZkTq8z7gd/4Zp9BHManaLtS4vbxEPEmgDNajQaUf lA355nzIIm7WG9pUkoa3NjmkkTJCYKAn8yaeq6jM0glrqEQyvq+f8lhQbQDpEoyvXQcQ 2VNuIfhUK/h+9br4GuLmk6C70bK1bfaehhhJB+qX4e9hx1aNFO5791o/FD4L81PuKWsZ jgCeUTfWPeSWD1RQJV2QmCuixODQePk/PIR7y6wsKWPWqJb/6JoC1BwJP8rSbMFXKmEx Kf1A== X-Gm-Message-State: AOJu0Yz+ugoRdmPBmOAuePrrntLbQwQ+XegpIv3/f4NgLhXTdhdETkBC pXCkgAVNR5+2ei7h/n62tqL23FuojMqFks/r7380TueBGiGmFui+Chdp43scnkBWlNGvyFcb+lK LAgF9PkY= X-Gm-Gg: AeBDiesdNzujuK8PEhNb68yVEGAWbSBCZd1qAjx6Ay6JCoy+Eo7E6XX8w77T4LS+U16 9t94AQil7ZhIRqmj7UyPsm3UUgNxNZ/1ytsqIPq9OhstrN6GfyKPEtpJZgUhOjgqqc+5mLNLPr4 EoiK4czgWOysdyjS8uNEw7x19Vfgktw5VMfJH4FGJ+rTB3jYtXIW7l9KoaFNSuS/x/n/kv1U4l4 5R1jHvcnkZWpw1KrUJcTCfLDX27LL1Bvh5KdnqKtSfNulxa13dB5t9O4qiA6TlshaxWm32GBvgZ OTFPN/ygNrBZoJcMka/JNsUNQ6ulW3BrmWzo1tOL+x0VD+msvPdiNL7SYlgpqrxOah/HFWZEAKp ahdvRRKin+KLhXJr8YtSIIv1gQkm3D+SU9EnAf7JQlaUY9VYePterhHh2rXkgL6KUf48Ms1L9At rqXn9D66rCOU+Q61xoKZop9T/in5caVlSuluWl77cK X-Received: by 2002:a05:6a20:430f:b0:398:71e4:6282 with SMTP id adf61e73a8af0-3a3cf521bd0mr684281637.4.1777508513362; Wed, 29 Apr 2026 17:21:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 28/47] target/arm: Implement BFCVTN for SVE Date: Thu, 30 Apr 2026 10:20:27 +1000 Message-ID: <20260430002046.59739-29-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62c; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62c.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508876424158500 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 | 96 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 3 + target/arm/tcg/sve.decode | 2 + 4 files changed, 103 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 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 3e1ce24bd0..4270e13a8e 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -78,6 +78,15 @@ static FP8Context fp8_src_start(CPUARMState *env, uint32= _t desc, int scale_mask) return fp8_start(env, desc, f8fmt, scale); } =20 +static FP8Context fp8_dst_start(CPUARMState *env, uint32_t desc) +{ + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType f8fmt =3D FIELD_EX64(fpmr, FPMR, F8D); + int scale =3D FIELD_SEX64(fpmr, FPMR, NSCALE); + + return fp8_start(env, desc, f8fmt, scale); +} + /* * Invalid input format is treated as snan, then the conversion operation * converts to default nan and raises invalid. @@ -102,6 +111,13 @@ static void float16_invalid_input(float16 *d, size_t n= elem, float_status *s) float_raise(float_flag_invalid | float_flag_invalid_snan, s); } =20 +/* Invalid output format writes -1 and raises invalid. */ +static void float8_invalid_output(uint8_t *d, size_t nelem, float_status *= s) +{ + memset(d, -1, nelem); + float_raise(float_flag_invalid, s); +} + static bfloat16 fcvt_fp8e4m3_to_b16(float8_e4m3 x, int scale, float_status= *s) { FloatParts64 p =3D float8_e4m3_unpack_canonical(x, s); @@ -130,6 +146,47 @@ static float16 fcvt_fp8e5m2_to_f16(float8_e5m2 x, int = scale, float_status *s) return float16_round_pack_canonical(&p, s); } =20 +static float8_e4m3 fcvt_b16_to_fp8e4m3(bfloat16 x, int scale, + bool saturate, float_status *s) +{ + FloatParts64 p =3D bfloat16_unpack_canonical(x, 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); +} + +/* + * 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. + */ +static void scalbn_to_fp8e5m2(FloatParts64 *p, int scale, + bool saturate, float_status *s) +{ + 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); + } +} + +static float8_e5m2 fcvt_b16_to_fp8e5m2(bfloat16 x, int scale, + bool saturate, float_status *s) +{ + FloatParts64 p =3D bfloat16_unpack_canonical(x, s); + + scalbn_to_fp8e5m2(&p, scale, saturate, s); + return float8_e5m2_round_pack_canonical(&p, s, saturate); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -406,3 +463,42 @@ void HELPER(sme2_fcvtl_hb)(void *vd, void *vn, CPUARMS= tate *env, uint32_t desc) =20 fp8_finish(env, &ctx); } + +void HELPER(sve2_bfcvtn_bh)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc); + uint16_t *n0 =3D vn; + uint16_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + bfloat16 e0 =3D n0[H2(i)]; + bfloat16 e1 =3D n1[H2(i)]; + d[H1(2 * i + 0)] =3D + fcvt_b16_to_fp8e5m2(e0, ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D + fcvt_b16_to_fp8e5m2(e1, ctx.scale, osc, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + bfloat16 e0 =3D n0[H2(i)]; + bfloat16 e1 =3D n1[H2(i)]; + d[H1(2 * i + 0)] =3D + fcvt_b16_to_fp8e4m3(e0, ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D + fcvt_b16_to_fp8e4m3(e1, ctx.scale, osc, &ctx.stat); + } + break; + default: + float8_invalid_output(d, oprsz, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 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 19:23:37 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=1777508893; cv=none; d=zohomail.com; s=zohoarc; b=RLrHC3e4EK5iv/wdSiRP5824XXEvLhVp0m8KbJQPSB9a+bZWlVJgtPGthlfQWEXNXRUUZSeI0/Nk7NmBtNvajRoXyQKwe19+yJi7TwP3YICwmlf1Jnxo5l/0l7OZKk6cq9gOGBTKGwU7FYzUc5TxgxjuQVv/Y00HEbsHqSnrUwg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508893; 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=3WDr3PayIu/5R0rkFaPoO898PHb8bgqDCx/yK/Nmp/A=; b=bmh0On+lU8xRm2Rw3wxGM0HGEbPHO5gZ7e6CUvL5sMZnST1OTtszWDmEJyqIEHeiZYy9S1UX9HUCAc46pSuKVOBNpwFQcU26AmOKSXJRam8StYvospzF74mDt1CP3s3dgx3niZ3AUxtRcIUCY5Ih3VUdeJ54z+OEysqwSVeUPsk= 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 1777508893575287.87108850526295; Wed, 29 Apr 2026 17:28:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAO-0007Vd-5L; Wed, 29 Apr 2026 20:22:08 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAG-00070m-2I for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:00 -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 1wIFAD-0006Sf-1X for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:21:58 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-82d0b68837aso190861b3a.2 for ; Wed, 29 Apr 2026 17:21:56 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508516; x=1778113316; 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=3WDr3PayIu/5R0rkFaPoO898PHb8bgqDCx/yK/Nmp/A=; b=VF4vbaEFHCi2X0ZP332Ta2iHX/6R4MJB7xC+5ZoT6LdYs0SgM1RHnBCf3KfNkg02NB +T1iuRgOyzDz9joHIK08hWeLptoCKzZbym/0Dd/BJBwIy9u7hTcpkfYhKGSyzxULMZAx VUX5XJzaW40+m6VcA5Cy6NIAGH/D/s3UuisE2KILJm9sQRYTPIK4SvMWvB0HCzHi2xQI 1p9QwM38dCVIGOMag2sz8m9SJBJTvs5mYEKvx+95BvXYUXKmi10kFDxVR9A9nA4DlE+/ ofGvH+pC1xp8T6RU5opQGJwzTH7NWtg+AQH6V2x85iz7UCyKUuYrWqgSsYGMY/iw/iZI DlIg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508516; x=1778113316; 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=3WDr3PayIu/5R0rkFaPoO898PHb8bgqDCx/yK/Nmp/A=; b=QqZOuDVxNxSDNnkv5aadShzYgnajSh67UbIQKCV9Z89/o5YqajE2R6Zg/IbmgerKYK 5mL5ygg9Pt4ovJV6SqQC0edgbzBacqK12JQKL4V5q2pfo2MGc1rNh7OydmoU/ax/l7vQ nSyVpFUmOyWcIToqjbrmlxBKkJBHspG/0KRxf2lztZd2WsqzpIr8XeCyfphBPSRHF1/A foXMBnb1znf0EqrgvO22JaQ+9ZqD5TROlFlFfTaojlq2Wce2d9nak8xhCeyrHudx6rfP DeMsPN9tWT1heBedTFdYCTQP3QTQzm6o50OPz72dwkw9ANIWgi2Dw0qu1l2x/eFxM3Av GCcQ== X-Gm-Message-State: AOJu0YzOB80wdZkY2mW0y8zmlMhR86ePnGB8UaS98L6BZaN1njOpHD6u 8ODU/AWb//aTe1oi4Klg8uDEOOv5l70YivbU+/wQZ7wOG1zCvJ3/ot9k8PoorzL+KvR0kDIOv0G aDW1ZhIo= X-Gm-Gg: AeBDievyMlNU0bk485qFW539+d7CHGMfzAX8ejgPXwUXAwhhFtttSuF6JuuPK90WbbL AlTH+7B6YuLulkSyUXpnZ0jdTVE+R/wf8I3Yn/OeuUFlUjaQR93urKS1T8A7hllBYJtI5pekmzA vF4hTX8STfpIM7heHgmkcQNJrAnbiouUXBedPdA7BR1fBN4lzZaaD2hDIb/1ITXMlNLV3Ih04fR YfsOS5moWIxTP6lJ4IkMT0+dTQpKxSFXnih8RkZ6xHmgHkfAUo5RdXrEXiK9c+xFtPws+039Kpp azxfHBNRwOf3iYEJEZagTscVUppi683mIN71uJwU0C6M6JwhTMg/OcQIOKgZSNr97SowwoJhP2L HkdkraRT47Zi2XLMbUysIb/rjD821NFQE2125/rnU+G2C+mwEePEaSU/FITcXNk8ARHSMU3hP9W LNSl6CdJeYGXZjwJ3as+TICTz/JQPIVi9j0wIOw/nF X-Received: by 2002:a05:6a00:22cc:b0:82a:6852:559e with SMTP id d2e1a72fcca58-834fdb29691mr934488b3a.12.1777508515534; Wed, 29 Apr 2026 17:21:55 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 29/47] target/arm: Implement FCVTN (16- to 8-bit fp) for AdvSIMD Date: Thu, 30 Apr 2026 10:20:28 +1000 Message-ID: <20260430002046.59739-30-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508894806154100 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 | 66 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 15 ++++++++ target/arm/tcg/a64.decode | 2 + 4 files changed, 85 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 4270e13a8e..9658eeac8d 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -187,6 +187,24 @@ static float8_e5m2 fcvt_b16_to_fp8e5m2(bfloat16 x, int= scale, return float8_e5m2_round_pack_canonical(&p, s, saturate); } =20 +static float8_e4m3 fcvt_f16_to_fp8e4m3(float16 x, int scale, + bool saturate, float_status *s) +{ + FloatParts64 p =3D float16_unpack_canonical(x, s); + + p =3D parts64_scalbn(&p, scale, s); + return float8_e4m3_round_pack_canonical(&p, s, saturate); +} + +static float8_e5m2 fcvt_f16_to_fp8e5m2(float16 x, int scale, + bool saturate, float_status *s) +{ + FloatParts64 p =3D float16_unpack_canonical(x, s); + + scalbn_to_fp8e5m2(&p, scale, saturate, s); + return float8_e5m2_round_pack_canonical(&p, s, saturate); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -502,3 +520,51 @@ void HELPER(sve2_bfcvtn_bh)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_finish(env, &ctx); } + +void HELPER(gvec_fcvt_bh)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc); + uint16_t *n =3D vn; + uint16_t *m =3D vm; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + ARMVectorReg scratch; + + if (vd =3D=3D vm) { + m =3D memcpy(&scratch, vm, oprsz); + } + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float16 e =3D n[H2(i)]; + d[H1(i)] =3D fcvt_f16_to_fp8e5m2(e, ctx.scale, osc, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + float16 e =3D m[H2(i)]; + d[H1(i) + nelem] =3D + fcvt_f16_to_fp8e5m2(e, ctx.scale, osc, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float16 e =3D n[H2(i)]; + d[H1(i)] =3D fcvt_f16_to_fp8e4m3(e, ctx.scale, osc, &ctx.stat); + } + for (size_t i =3D 0; i < nelem; ++i) { + float16 e =3D m[H2(i)]; + d[H1(i) + nelem] =3D + fcvt_f16_to_fp8e4m3(e, ctx.scale, osc, &ctx.stat); + } + break; + default: + float8_invalid_output(d, oprsz, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); + clear_tail(vd, oprsz, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 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 19:23:37 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=1777508757; cv=none; d=zohomail.com; s=zohoarc; b=lR7ogvUkLrP/3tXLap5J8z7cQ9ELNs+iW4V4KfWMR1MLyTZhi/mS3W5Tv7duhesxBWWyG4sw10ZOXBCFfPQie8QA80R0d2HNnULuHra74obpvsCNpRSWkBRc4guqvx6sPcAabNODpFqJpEqjRMwe64XqKBCLP4VbxVIEss6LmpI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508757; 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=r77LULBA40W+/K4GrZLQrDZvSQ+2dumyW18cQ2IB7o8=; b=Cmx0ps3cnqxKExK87Kt2GUvZQO/ilo2+8c88HHRNR3reTU6JjUiTehzWwGQautQDV12DXywCvPcnH7EdUrVxaQ6IEMq7nyZcJ0ipuU+KKZg5xWCuXxKPq4gOB9UAVBl9vk+km61WLyHs74/Kk3J3KpovdNqgeaWy9syOhgBK4aY= 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 177750875766534.58103600011657; Wed, 29 Apr 2026 17:25:57 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAN-0007Tg-6J; Wed, 29 Apr 2026 20:22:07 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAI-00079t-CM for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:02 -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 1wIFAF-0006U6-Pw for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:02 -0400 Received: by mail-pf1-x434.google.com with SMTP id d2e1a72fcca58-82f0884bcfaso257309b3a.1 for ; Wed, 29 Apr 2026 17:21:58 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508518; x=1778113318; 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=r77LULBA40W+/K4GrZLQrDZvSQ+2dumyW18cQ2IB7o8=; b=CZMcM1P9xx/iIgC98GUK/R99pnoiTORLymV7YUHMH6l2WDaZCAYSC+KfELzQztEhO6 hMa9C1L2ZPyoL5LFBGNMVaLDVNeBrElF56qsKoi+nwJ7Q1sZHE9o4bOSoL8QVC5o6lIo ivUfGVWgIBwkLLPtxG5lVrsh+hSQWPxu23tLiXruECJlfJYV5E1gQcENNzP65xRjmnn3 RKZdz4z6DparS8Gr0SbdbuFrP0MSONC5aFq/HoXpMVBL+LAzGL5EdJFp/uU8gK3Egz4e sBBuDuLrOr6+lD+LQ3PGfYap16eyMVzNp54RvpknhFR8+EYQ+lS7ElF+foplGu2uwbZ+ vHaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508518; x=1778113318; 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=r77LULBA40W+/K4GrZLQrDZvSQ+2dumyW18cQ2IB7o8=; b=Qoazzy3/935VD3tvJa8rHwFcWtqUeNv8t5oUl6RdisWUnnbkJTY+JTCLUuQ/me9h+Y LxjaQf0uXIlvW5w64UpdJIRwf+unghmNt6hfWJUtP/H6pQhpYnRapRw1ctI5wuq6H8gK 3HWz8RfnOL2Dv1TOBWPXdYYN6vPIuBs+Z07JA4BfnbJ2/9yKYJpRxUzUoCdJNmZdhKFu C7OAw5RV+jWMjktodK0CkDNBzKKxCWViSg0u63dEPgydEIs/P+UNRq5072IEwoBjJJFh x/mE520OUUcZ3IpSwsCvw3Skk0H0UTHekJVC+Yv1xIRELA4rYHuWyx+C9xXgwxa7liyx 0mKg== X-Gm-Message-State: AOJu0YxT1vrACuzF5HichH4fZC2dNk2GtDCFvE6H1C4bBV3se3ax54VQ 2J84oz9C8OtblswxCiV/3PO/1X0V0BRfwAIu3RLLqlhm54lB6iwIxenuQ3BN/BXbHLInFLGRAyT CZK9pbUw= X-Gm-Gg: AeBDiesBN+08duyK9SMhcc5/FY5hH16F0cCJ0sK0EM5vODd2nCyKzTBl1v8iYNu6fzT vrK9FHQ9qAAOjaZvmrdaV8o9PhKcXt4Bvu/PKV0nXWGj5Uqr30zGTpyTFtu0LvUa6HBJrzGFIoQ a+QI0xgsZdHCRSIr6mz0XRgPOB+JDO5+QFHVUEcdOf4wCaZ111l4XHe6lfwXCJFgRKZOirg6a/+ 69BJL7ao10jC+SaTbUKAm4dmY38fKrDnZhK4fL3mxr8KDBbSt3ZMIEvR8/HUwCuMu3M+TngoV/9 Gg4T1jeGsRCGPGIZJ1JsPxlbiyQpQBjuoD0xZfdmq5XCyKRfRV0MzG6xVDhPgkZO7dIai2bll/L kNVV48pz204xnvnoryYfYF9urcW70ANQhbUkq9Fcxq6TxLD2OV7w0S21FEa9E9SzSFc2mIay3j8 5XK4R/L8nnjC7/VKaR71jHk3z9g07wKY167hUEySgyXK1VhOspk/4= X-Received: by 2002:a05:6a00:2d0b:b0:824:a635:4181 with SMTP id d2e1a72fcca58-834fdb32c70mr892220b3a.15.1777508517800; Wed, 29 Apr 2026 17:21:57 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 30/47] target/arm: Implement FCVTN, FCVTN2 (32- to 8-bit fp) for AdvSIMD Date: Thu, 30 Apr 2026 10:20:29 +1000 Message-ID: <20260430002046.59739-31-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508757967158500 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 | 60 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 16 +++++++++ target/arm/tcg/a64.decode | 1 + 4 files changed, 79 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 9658eeac8d..facbf4f6c6 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -205,6 +205,24 @@ static float8_e5m2 fcvt_f16_to_fp8e5m2(float16 x, int = scale, return float8_e5m2_round_pack_canonical(&p, s, saturate); } =20 +static float8_e4m3 fcvt_f32_to_fp8e4m3(float32 x, int scale, + bool saturate, float_status *s) +{ + FloatParts64 p =3D float32_unpack_canonical(x, s); + + p =3D parts64_scalbn(&p, scale, s); + return float8_e4m3_round_pack_canonical(&p, s, saturate); +} + +static float8_e5m2 fcvt_f32_to_fp8e5m2(float32 x, int scale, + bool saturate, float_status *s) +{ + FloatParts64 p =3D float32_unpack_canonical(x, s); + + scalbn_to_fp8e5m2(&p, scale, saturate, s); + return float8_e5m2_round_pack_canonical(&p, s, saturate); +} + void HELPER(advsimd_bfcvtl)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) { FP8Context ctx =3D fp8_src_start(env, desc, 0x3f); @@ -568,3 +586,45 @@ void HELPER(gvec_fcvt_bh)(void *vd, void *vn, void *vm, fp8_finish(env, &ctx); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc); + uint32_t *n =3D vn, *m =3D vm, scratch[4]; + uint8_t *d =3D vd + 8 * ctx.high; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + + if (vd =3D=3D vm) { + m =3D memcpy(scratch, vm, 16); + } + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < 4; ++i) { + float32 e =3D n[H4(i)]; + d[H1(i + 0)] =3D fcvt_f32_to_fp8e5m2(e, ctx.scale, osc, &ctx.s= tat); + } + for (size_t i =3D 0; i < 4; ++i) { + float32 e =3D m[H4(i)]; + d[H1(i + 4)] =3D fcvt_f32_to_fp8e5m2(e, ctx.scale, osc, &ctx.s= tat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < 4; ++i) { + float32 e =3D n[H4(i)]; + d[H1(i + 0)] =3D fcvt_f32_to_fp8e4m3(e, ctx.scale, osc, &ctx.s= tat); + } + for (size_t i =3D 0; i < 4; ++i) { + float32 e =3D m[H4(i)]; + d[H1(i + 4)] =3D fcvt_f32_to_fp8e4m3(e, ctx.scale, osc, &ctx.s= tat); + } + break; + default: + float8_invalid_output(d, 8, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); + clear_tail(vd, ctx.high ? 16 : 8, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/translate-a64.c b/target/arm/tcg/translate-a64.c index 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 19:23:37 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=1777508573; cv=none; d=zohomail.com; s=zohoarc; b=UIPSN/VrGIMTy4bPzPlIctrWrdQ1Jf76rn/u7/kW9RtnU7IpP9C7z5Abl6VYi/mh7KUU5vs2UDyUZ7KRRPqPxRDTAri3pq70dSKh/Wrbi3bbfQMWQ527B3Ea8DShMafXLn7k7mxp/ErpP0sLh5AoGw5BAmPCEHgQWy0MAkB2aJg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508573; 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=ZhH6fH6MOP8Z89o00i5zrQUQaeh5fKT9d43JWep2BsU=; b=CK0RLkFwyfgkCVd3rT4IOYcJgQMIkYJEsiiHHop/KHwddXD68kQSFHfK1ri7IvhhUmlfqdcT6q98o1RUywuKX7yFqyfMnM/KiI8wC1vRUGi73r3vxWKM086TEyAwFHwU7UfETCb5Bl7iBQyD0ykRLRv4WcPmNi1gHXw0So6y+mc= 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 1777508573695272.3903756248361; Wed, 29 Apr 2026 17:22:53 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAQ-0007YQ-3V; Wed, 29 Apr 2026 20:22:10 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAJ-0007Gc-Tx for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:03 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFAH-0006V0-Qe for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:03 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-c648bc907ebso180032a12.3 for ; Wed, 29 Apr 2026 17:22:01 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.21.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:21:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508520; x=1778113320; 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=ZhH6fH6MOP8Z89o00i5zrQUQaeh5fKT9d43JWep2BsU=; b=whe3PftmloT5rXlcRVwgiujsUqg8qvyPBlgPwPa3L8Dcp2CNNywjTAVxv9VgKCvu80 TEHXT/8Cl9+t2YoCtvgLWTuZRvC7Q4J1wRLQfMD4jY19nkI9GIYOM/GRvZwm7hFcwTay rgV+vDqzzVnEvh3Pc1bm6JwpsC5YCHAxtFD/lvKHfNuHV8OeDBlJqnKEvmhKAU58+EbX uOo8rcFUyqHu4KNNErHVUsSD42jB/HU5gyk4DtN6y06X0S38tj6nX5TxmJ5qafZWsKu9 7NmEp5rZ4O1evRLTzMGYwhBjqi7jehb4lXlrRC5qx1mvcf/xwc55867KgauPgLuh0SES PRIA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508520; x=1778113320; 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=ZhH6fH6MOP8Z89o00i5zrQUQaeh5fKT9d43JWep2BsU=; b=GIUJyyN/tpUJ00Y0VayvdrXH0qAv8U7mrGYDRVvh+vgadQjha3dM/bikzO4c1uHQhF taW4BuhPSCCo5KEEzkd2WOZpDh1DTK0OXxpUrOV+eIPC3LtiX6baXiiECucoi8kcZbYw IyIqjVpIJ57Vyc/rXgjA79NT8BxMGDehU4cqrO01mzfjlXlOduzEZLibaoeU8H6rz294 BGOfGOYlLY1puQCYyC+isUC+3UqIJWRFVvYb/TEjXjo4swIvLqXCZ92QjNvzPprEcclU gyLmdh6yS0h/G3CXKCQiLjZcE0V862SUyYlEli+ybhFH1YhMLjv5QaHVKHmiV0hB7lAR L0Rg== X-Gm-Message-State: AOJu0YweWVUa/0sxDZ4XOXobYGEDNWZF2LSe566ozsFLFwuBw+d6XZX+ v1BNs+9meXOfQg6z0Fpv9kziqt0eG8Sp+3JU62I/2ZyXC0cBd7Ceu/vJ1hEmUXqStthvjRoA2KY 9i+GadLI= X-Gm-Gg: AeBDieu6VbQ550okeoEyXGGL32D3XBji4zPPkPt4vkEGRjDaUnsy1Ax68EVGe1dEqqf S7Ky8LzvxwV25GksghGONDTDLOZCaX7kLqpvUMvFLL6lfHkvEkm+4u3E9uCSMVlll7bBijlawxf szpLKPmDxGlV7ZtZeXDvQz88Xzr+MN0LLx/5elJ0C0SWqtfabKtRHGa2sgQvLVhQ/llBrDKw5c1 xJKt8Up9yULvm0r1nRmTawtfT4Y1z7tDPmIepCJguFQBqnGUYFq2UPKEEEwpbZds6fK1n6KeAjC V5Hy8S7YpcL/VaURlSR34pZWQrnfcKQGjAXGJ3joR2TuuWYAl/zzbzcNZecYThpb8+6KNZuOmUd xVbbtr6KwMcXcTgtx86PxXJCKcLOu4SqDmCQXpG1UaeRVvtdHZSLbuqf2J7X8TRlCgeAh/UQA+C ax67/JrPINjrlBXlp4EUBQV6dV885acFKY2m7sPBBW X-Received: by 2002:a05:6a00:a256:b0:834:df57:9d31 with SMTP id d2e1a72fcca58-834fdba7411mr841606b3a.28.1777508519901; Wed, 29 Apr 2026 17:21:59 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 31/47] target/arm: Implement FCVTN (16- to 8-bit fp) for SVE Date: Thu, 30 Apr 2026 10:20:30 +1000 Message-ID: <20260430002046.59739-32-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.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: 1777508575337158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/fp8_helper.c | 40 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sve.c | 2 ++ target/arm/tcg/sve.decode | 1 + 4 files changed, 44 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 023a49e12f..e67fb191c2 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -16,5 +16,6 @@ DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) =20 DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, env= , i32) +DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index facbf4f6c6..9c89964721 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -587,6 +587,46 @@ void HELPER(gvec_fcvt_bh)(void *vd, void *vn, void *vm, clear_tail(vd, oprsz, simd_maxsz(desc)); } =20 +void HELPER(sve2_fcvtn_bh)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc); + uint16_t *n0 =3D vn; + uint16_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 2; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float16 e0 =3D n0[H2(i)]; + float16 e1 =3D n1[H2(i)]; + d[H1(2 * i + 0)] =3D + fcvt_f16_to_fp8e5m2(e0, ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D + fcvt_f16_to_fp8e5m2(e1, ctx.scale, osc, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float16 e0 =3D n0[H2(i)]; + float16 e1 =3D n1[H2(i)]; + d[H1(2 * i + 0)] =3D + fcvt_f16_to_fp8e4m3(e0, ctx.scale, osc, &ctx.stat); + d[H1(2 * i + 1)] =3D + fcvt_f16_to_fp8e4m3(e1, ctx.scale, osc, &ctx.stat); + } + break; + default: + float8_invalid_output(d, oprsz, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} + + void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void *vm, CPUARMState *env, uint32_t desc) { diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 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 19:23:37 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=1777508612; cv=none; d=zohomail.com; s=zohoarc; b=cHSHVTmhocE5RgVIhUWeHAF83CBz55iPEY74XvI47KREtLioPCXxvLAq9eSzLJF2UuYrNQyxPRfXZxNZdi71qFgLYcJCOr4W5t/fFCFWy8OZj/IGgtCvqanJizycUK6+bWCytZyEDjVeRqwdznIpkJN1zc66wP7Ke6dUaUTX9TI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508612; 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=4qYbU7+TPTFqGiBQwxxMXvd6dGbNUHDSbf7XY1Mn5Rg=; b=GRmcYKbGb9jTEeWa+AvgzdPuvFJxCYU+vjme8C/c/tYQnodVSFzp7DC99whWk8DVkyqytKogQIJRrzOVhz+cXiG2OjVCVlRFJ6JK3jXJ5y8UrYIqC6BLeJdPhMTO47inwRVL2iYNG+PrPEqI4/Z6o2wMYKr5gH9J05d2PwqKvsI= 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 1777508612483256.3474162236415; Wed, 29 Apr 2026 17:23:32 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAS-0007hF-EA; Wed, 29 Apr 2026 20:22:12 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAL-0007NB-GY for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:05 -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 1wIFAJ-0006YN-Gd for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:05 -0400 Received: by mail-pf1-x42d.google.com with SMTP id d2e1a72fcca58-82f431c0ab6so189668b3a.0 for ; Wed, 29 Apr 2026 17:22:03 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.22.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:22:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508522; x=1778113322; 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=4qYbU7+TPTFqGiBQwxxMXvd6dGbNUHDSbf7XY1Mn5Rg=; b=Z/YhzmDPMlJpWRvx2e9RPmDIY0ss9CjSC/PFSI/RPlvw78BUm2mE+q6A9727aCXFRU NXWojAvbp2OFWJtjAp5/7Emj4Klf4bP6MjW+8tctXKkNPAWtFftVc3lkcHK7TXUcCpU/ MExAtGT3GrwU9uYI5mzLZQ4VpnR63yIvHVObNU3lnPZgzJtZxLTfRLKsrZOTSkAd3n0i wJ91fMd96bOstUh3iSbEON9Arl3C+6W7dHo7TJUPM+cPEIq3AX6ycW2GYhXnX37WMHDj TF0GgxRgvd1+nIPdlrHj+JLGMMxwE740JUNdMXwslSjHARd5AAEq4xli9Gmh+pb60bw3 xUGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508522; x=1778113322; 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=4qYbU7+TPTFqGiBQwxxMXvd6dGbNUHDSbf7XY1Mn5Rg=; b=Eb4/jiqGPB3ENKQcW5nUJm7I6FgXIcsFeA6jujKnjdhKBAmv1HZEyCdCi96h6HoAcT qHojEut0VDMwZqxfPzxfJpIe9YXSODLXEscaGVIUmKD/oXG2n+o4RZKnm/SkV409B6Wc cPkLB3MiELrK9TyUoH6X3pV1aiy5hLoWHp+9FkJRHG1acs0W85LKM52LnOzF338kJKmo LbGZz0vZJvSLNSntf/Od06scw0d/g8VBjXvbzFWPpake6zyIy6X4eawtXSvOQFGKTIoV tkf0egr72RQzSWLO9OrAchMxUgndEH7aO1CWtfVCPY2ANRLvVIgQgfYBWNBcPj9aKs/6 6xZw== X-Gm-Message-State: AOJu0YwjmGeccVU8kmeAc3Yz7+PmiLAABL/7FOsMpKj3PU1uGAzh4Qax fn3lad77GRDdIEUoyCDPaSSjcx1prpzxNPPxuQS0Ej1YDir/vr0CmgCwRoDsXjl6uU0EedTCS+g WbslnfMs= X-Gm-Gg: AeBDievRQ06YkLwfJ0oTGf1DTXs5sRu3+DUUon5PIiTk0rjyQpSBUvPEd0nrqwnYCO8 Y/IgxPv0Zza2+YXrSvY8EfmqRyfA8sKHu2EQtYZR0Jy7Ap/VU7RJUh8QSI/P04Moc77AgccjCPp JFuH2HhNEyUDA14jEqbC9h6d2dIVQ2XtCke4VGfV+Hq8tjElWIFNEqFk1Cqlw8i/j10KI9EU1m5 Gjc+AKFUOxijC2SaOqeSafk+5i8jTe54XL/RbnmMAFTqlzc13QuUO8x9oGx+MAimkOj6jB/Rupd BCFooYan8PCIxFozTmFf/ds4pp3DFRPB3pJNpLdnJP3KBmmiVgHOazHOqU8AfbqchF5ruUqjq6e VYkYu6pfJn2/92rlhisl9wvj7HVBYuQ+DHATc9ZGgNKKw6VHO2UXoiDDyQi/e0xlnV5g4yheN2Q /ChGuN+YtVZ/xfvL421q1TCp7yhra36spgJZr1Jqv9 X-Received: by 2002:a05:6a00:2e0d:b0:82f:5c3f:94c6 with SMTP id d2e1a72fcca58-834fdcdeaafmr835948b3a.28.1777508521985; Wed, 29 Apr 2026 17:22:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 32/47] target/arm: Implement FCVTNB, FCVTNT for SVE Date: Thu, 30 Apr 2026 10:20:31 +1000 Message-ID: <20260430002046.59739-33-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::42d; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x42d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508615003154100 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 | 4 ++ target/arm/tcg/sve.decode | 2 + 4 files changed, 94 insertions(+), 1 deletion(-) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index e67fb191c2..5863a6dbb8 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -19,3 +19,5 @@ DEF_HELPER_FLAGS_5(gvec_fcvt_bh, TCG_CALL_NO_RWG, void, p= tr, ptr, ptr, env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) =20 DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) +DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 9c89964721..f92ffe68e3 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -626,7 +626,6 @@ void HELPER(sve2_fcvtn_bh)(void *vd, void *vn, CPUARMSt= ate *env, uint32_t desc) fp8_finish(env, &ctx); } =20 - void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void *vm, CPUARMState *env, uint32_t desc) { @@ -668,3 +667,89 @@ void HELPER(advsimd_fcvt_bs)(void *vd, void *vn, void = *vm, fp8_finish(env, &ctx); clear_tail(vd, ctx.high ? 16 : 8, simd_maxsz(desc)); } + +void HELPER(sve2_fcvtnb_bs)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc); + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint16_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + d[H2(2 * i + 0)] =3D + fcvt_f32_to_fp8e5m2(e0, ctx.scale, osc, &ctx.stat); + d[H2(2 * i + 1)] =3D + fcvt_f32_to_fp8e5m2(e1, ctx.scale, osc, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + d[H2(2 * i + 0)] =3D + fcvt_f32_to_fp8e4m3(e0, ctx.scale, osc, &ctx.stat); + d[H2(2 * i + 1)] =3D + fcvt_f32_to_fp8e4m3(e1, ctx.scale, osc, &ctx.stat); + } + break; + default: + /* -1 in each even field, 0 in each odd field. */ + for (size_t i =3D 0; i < oprsz; i +=3D 8) { + *(uint64_t *)(vd + i) =3D 0x00ff00ff00ff00ffull; + } + float_raise(float_flag_invalid, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} + +void HELPER(sve2_fcvtnt_bs)(void *vd, void *vn, CPUARMState *env, uint32_t= desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc); + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + d[H1(4 * i + 1)] =3D + fcvt_f32_to_fp8e5m2(e0, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D + fcvt_f32_to_fp8e5m2(e1, ctx.scale, osc, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + d[H1(4 * i + 1)] =3D + fcvt_f32_to_fp8e4m3(e0, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D + fcvt_f32_to_fp8e4m3(e1, ctx.scale, osc, &ctx.stat); + } + break; + default: + /* -1 in each odd field, even fields unchanged. */ + for (size_t i =3D 0; i < oprsz; i +=3D 8) { + *(uint64_t *)(vd + i) |=3D 0xff00ff00ff00ff00ull; + } + float_raise(float_flag_invalid, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sve.c b/target/arm/tcg/translate-sve.c index 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..7fce189b36 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -1103,6 +1103,8 @@ BF2CVTLT 01100101 00 001 001 001111 ..... ....= . @rd_rn_e0 =20 FCVTN 01100101 00 001 010 001100 ....0 ..... @rd_rnx2 e= sz=3D1 BFCVTN 01100101 00 001 010 001110 ....0 ..... @rd_rnx2 e= sz=3D1 +FCVTNB 01100101 00 001 010 001101 ....0 ..... @rd_rnx2 e= sz=3D1 +FCVTNT 01100101 00 001 010 001111 ....0 ..... @rd_rnx2 e= sz=3D1 =20 ### SVE FP Compare with Zero Group =20 --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508777; cv=none; d=zohomail.com; s=zohoarc; b=lzVeDFd4BiXPozl3qN+qFlr/h9TuG4iHGo2msCkscaYORHf53/kS2B/xKlcu+UwXlX+eSXyw/x8euT1eyf/f4gfv8W8aWOItdFwubcqIik3l9ofGXGrwqhGagzaFVk17tZcteVtTWDyFxkKWejxWhfTIRtet7vsuDmI0Je1z49M= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508777; 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=gfNUn5MxAWh91VRS8CxMQTFkbpJ18oinLncL1Ju1hCU7ZEjiskIpuQ4OfV2/aIG9gDEGU8F9Y80JotB/7xYgf4Igr7fq4W1JPcSTroMyewu8Hjf/Iswl8SBu02NdXQx/soQdytyWQC8ztKKsiK0kEJU7Kvr7C+AnYPlsILTWB78= 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 1777508777258572.6774593126407; Wed, 29 Apr 2026 17:26:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAR-0007bs-5V; Wed, 29 Apr 2026 20:22:11 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAN-0007Th-4F for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:07 -0400 Received: from mail-pf1-x436.google.com ([2607:f8b0:4864:20::436]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFAL-0006Zx-J5 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:06 -0400 Received: by mail-pf1-x436.google.com with SMTP id d2e1a72fcca58-82f69a286dbso248741b3a.2 for ; Wed, 29 Apr 2026 17:22:05 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.22.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:22:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508524; x=1778113324; 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=l/SwTU0hKKhiUIYh7GKhmAlR2Z3CM9S9EmKsNWWzXodLDfgDRmGKgRTvZLe0ZVtLlV bq+LhmRReziu0aDsLA2H6bOnhgCiDwBsGdE3Nfn0Uftn/WZEXDG5PJ0fZnVMRQVFtcoh wGHm4JMaR8aYOVScKmGR24q3q1EZHTs8kf9HJ1v+J26HAwEWmt3/k8cBjHk9eUF75eVK WqS0mCvz3hqsH9LzhK0AA7FO27+WQcFuCmOjbSUKbKBYRqjZWx5xfZNSuBMh5AWT3Bdr hHp364JT51tXaAmKfUOyd0lsbtipShu98C9bkOdQAOjDo5c8cllnhjmPRJH8xmiL0uGi xcyA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508524; x=1778113324; 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=bavdlqqpf7z0SZf9fNGIFpaCkkkWrfQGgV/5ywp3061duJBpHeb3OaQc/DI7fbsEli YacJJpP6WKyJeMAN6L3pw6q1UK3m4BenB3YGb5mBM4aAHAcN+QmDbzk9LCU9IBciuteq Ae3V+HAAepR3mn1Cl94B0R4FgjqPZk6QpNJYHMpls593A6Hq/Yx9GzNCFyPFtH2cTAP/ Hp2msKKnb/r2Rj8XQOc03IyuIYBsqOQCw+rI1iPePA7AvDFTKXqxeXKNlAC6c7YhLzrN q9L2ap4rqeYA8DGG0als8qDkNnAi8wl3NXqg/f2azpF6kE69OPdcdkz6zqz5mQppFl7Y 8LKg== X-Gm-Message-State: AOJu0YwyDuv44R978qPdb5jbWl0Vre+nk79rzMl/M1GptOzIksHb5UAb npZRSZxwGm3RchkzHWEIT+hbKTpY+tOyxefQ0eUva2UkMdUs2+EwjwcK72VsDfEXl41dm79IMdV hUZlmDlU= X-Gm-Gg: AeBDievS50ZfKFolJB7mKzEGSr3x4/pvcx5s0cfWn7Axd6ZttJsXNEe8DP4yK8uXXeo UrE5sz/vpdSoVOnyFojeSCj3SIuw3Fr9yQJO6iLv4FD7Sr91GmYRGRGX4ARJD2t+dOIfLR133gr bwNeUR1w6UOmn2N73C3zLv5aqEeq1t4By5edrGTVqWkldlLqIvbgTaHJn9UwOM/HchdeiOZsFX2 k3bxr7n0hz5kzOpRrsEbeJJM7uPq/WM+ytTWbLNJ17AdFB44+lqOjML0Q5E++/UifLjVqiGDYzc ViRB482tjxXATb8hAjCUQseeV7c8wuDaddFXByr5J1P0uGvu+gbVvj7Fs+3sGzfXtkyezm4dyBm GRnuJOGraFUYuTThzA2D8SxVCDsizZSyrq6iwUkS5my08qUBnLuFOHpMtxFZrtqfwlcjpz/UCHo vOeuZppHkokHzfbCrlprZJ8jqUOUkrbRc24e7KpTCz X-Received: by 2002:a05:6a00:90a3:b0:82a:65fa:cecf with SMTP id d2e1a72fcca58-834fdb0dfcemr862664b3a.4.1777508524072; Wed, 29 Apr 2026 17:22:04 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 33/47] target/arm: Implement FCVT (FP16 to FP8) for SME Date: Thu, 30 Apr 2026 10:20:32 +1000 Message-ID: <20260430002046.59739-34-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::436; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x436.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508778052158500 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 19:23:37 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=1777508776; cv=none; d=zohomail.com; s=zohoarc; b=G/FPJzDk7TO5mKEu3kWXZJGvZwIYqvzDbCKo0pAUuYZJSs7xx9210qF1IUFd+x8DmK3PUVrI7Wcx0R02cRUBZcVbHjkBZbuUAPuEWoAKyHkx3BSAR2D8WlBT+SFUpmDiTuY/QfRaOGQba0JsV3SB79P/7twEs4R6wmLk+GiV+p8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508776; 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=GiTDWBFvFfWsIlgU7QlGePW8lBNeuuWLOhvxSB1tt1M=; b=JuY1pDpyhIKtwblA555J0OOD60ggIfOhsJuJZjiJztKHr9LD6Rzk7VFkkHFTedm+RpTwNjTfTykTt0T0A+S97a258HxSMVqsw0SccQmNYz1xM7ox4yqocYawGJxapFflkBSBaNkbTQ6otkJ+xiyS+bk44QLKAXeBnJ2nmHbaS1A= 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 1777508776097655.2011516203877; Wed, 29 Apr 2026 17:26:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAX-0007uU-9N; Wed, 29 Apr 2026 20:22:17 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAP-0007YO-HG for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:09 -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 1wIFAN-0006aV-NJ for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:09 -0400 Received: by mail-pf1-x430.google.com with SMTP id d2e1a72fcca58-82f33d28c1dso206047b3a.3 for ; Wed, 29 Apr 2026 17:22:07 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.22.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:22:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508526; x=1778113326; 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=GiTDWBFvFfWsIlgU7QlGePW8lBNeuuWLOhvxSB1tt1M=; b=EiT+25mh/ooc8gEfJgK/7j6+bF4JNcoKJqiU8flAayYuJRNAyZTgoh6vHOKl3tkcU2 vlJs3CcJHjaO4WNkml+8nt2ZXDDt3tMJ3QbIIIFjVLse0n9iVxNE1D0bZ7GdjUr7aibk ZdW99uy4Hyjhz4JK1KBbZUD+Axtcy2ylkRDZZlbNTsR0sFOprdGL8dteOjknZQBywzQF SFaZUb22ZK/S+lY8N66mwT2ydASJKZ41BcPM5HVYhLegBM61zs5g9xdlMJjzVneq7xf1 +/XEspJjcfTbGetFVV99ZAClRPz7bADyJnNJIyDHkNgF5L9+DlGhj0EsG1G3/0h//w/q HKVg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508526; x=1778113326; 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=GiTDWBFvFfWsIlgU7QlGePW8lBNeuuWLOhvxSB1tt1M=; b=OWn5zPXh69RQla/06QKH6SABW3NZw19PWxynBDSDb1UVoTYRcdcW3H50JcsFN1yhsl AA1ithTYioJnHYMguZ8TShBSeSrMtqZH1H10gVfO8f9avBtKV40N/8N+Eh16lLjFdVcF ykad4qdTdDOgd9yx4K+dDkSiIHe3LCQk+46WFmrInrqz5s9PocrJpLX/iOSeWF1f40VJ u2JdevQp7RIQSvV/n5lui7cK2O+pFnqftnZAsY8+AtPsYhrxIoSiPTvWkrLy/TVc/dbd K/9Pw+fnFFeABzuXOUOK4nRhPXGRblGixsZH+rzW4DunhYWpcwZX4y2IpEe9OtUMe4X6 TxXw== X-Gm-Message-State: AOJu0YyUZBsUBpUwmu+QUix3YHb45WCBM569sNRp9m9kwrDPhtL3i1bG Ln2QmCHRDm1DKqdmE/Sug0fQt0yfZB53yGuDoDAS0Ic43hOCuI0EfHZV1gIrF6PehzJuG7GPX9H sN6pbj2s= X-Gm-Gg: AeBDieuYZnP834BJXYYa4GLwtHdSygK1ruG2b5OtQGcSGxjaIZyNNHWusujO0/13zqH /O114DKOuu3bLg5cGrImjsS8dwY4uZPEvDsfmR0GAmr2zHPhS+IQScQm7ZdpZLDPnmzKTrREgPk eTPpV8hINiHbSxvHMgD3o0vzKknS5q5nEFze33QGarGQlit3yNosjdwgeFkqAxfIUlR2no/IdDa V1nFgAOEBPx6+yfnxSRZE4DgofOEilsnstUiTwENSotDDgb+NTqZaSLWjignX96k1iNz/lehBzG 6gIYDi+vd90koQflhWOhMrbumcUD5U84Nc+R3IwKY220f2KazLlo9Ofxq2cKRn6Xa3wELWZ4zQg lh8OYD4nlLEz6ZEqM7MkFDyvjU0lc3cHbg6eGRDonaHThMv4KkM49Zg7lHdOvpb/iSloslDwOq6 zEzxDHl8EvTbiNENQxuu8TDSBFHZYswq8/pGwkl4CJ X-Received: by 2002:a05:6a00:1827:b0:82f:6b6f:13ec with SMTP id d2e1a72fcca58-834fdd080f1mr787651b3a.34.1777508526216; Wed, 29 Apr 2026 17:22:06 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 34/47] target/arm: Implement FCVT, FCVTN (FP32 to FP8) for SME Date: Thu, 30 Apr 2026 10:20:33 +1000 Message-ID: <20260430002046.59739-35-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508777293154100 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-fp8-defs.h | 2 + target/arm/tcg/fp8_helper.c | 95 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 3 + target/arm/tcg/sme.decode | 3 + 4 files changed, 103 insertions(+) diff --git a/target/arm/tcg/helper-fp8-defs.h b/target/arm/tcg/helper-fp8-d= efs.h index 5863a6dbb8..36ae977431 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -21,3 +21,5 @@ DEF_HELPER_FLAGS_4(sve2_fcvtn_bh, TCG_CALL_NO_RWG, void, = ptr, ptr, env, i32) DEF_HELPER_FLAGS_5(advsimd_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, = env, i32) DEF_HELPER_FLAGS_4(sve2_fcvtnb_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) DEF_HELPER_FLAGS_4(sve2_fcvtnt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i= 32) +DEF_HELPER_FLAGS_4(sme2_fcvt_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) +DEF_HELPER_FLAGS_4(sme2_fcvtn_bs, TCG_CALL_NO_RWG, void, ptr, ptr, env, i3= 2) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index f92ffe68e3..f0f03298d1 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -753,3 +753,98 @@ void HELPER(sve2_fcvtnt_bs)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_finish(env, &ctx); } + +void HELPER(sme2_fcvt_bs)(void *vd, void *vn, CPUARMState *env, uint32_t d= esc) +{ + ARMVectorReg scratch[4]; + FP8Context ctx =3D fp8_dst_start(env, desc); + uint32_t *n =3D vn; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + size_t stride =3D sizeof(ARMVectorReg) / 4; + + if (vectors_overlap(vd, 1, vn, 4)) { + n =3D memcpy(scratch, vn, sizeof(scratch)); + } + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; i++) { + for (size_t j =3D 0; j < 4; j++) { + float32 e =3D n[H4(i) + stride * j]; + d[H1(i + nelem * j)] =3D + fcvt_f32_to_fp8e5m2(e, ctx.scale, osc, &ctx.stat); + } + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; i++) { + for (size_t j =3D 0; j < 4; j++) { + float32 e =3D n[H4(i) + stride * j]; + d[H1(i + nelem * j)] =3D + fcvt_f32_to_fp8e4m3(e, ctx.scale, osc, &ctx.stat); + } + } + break; + default: + float8_invalid_output(d, oprsz, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} + +void HELPER(sme2_fcvtn_bs)(void *vd, void *vn, CPUARMState *env, uint32_t = desc) +{ + FP8Context ctx =3D fp8_dst_start(env, desc); + uint32_t *n0 =3D vn; + uint32_t *n1 =3D vn + sizeof(ARMVectorReg); + uint32_t *n2 =3D vn + sizeof(ARMVectorReg) * 2; + uint32_t *n3 =3D vn + sizeof(ARMVectorReg) * 3; + uint8_t *d =3D vd; + bool osc =3D FIELD_EX64(env->vfp.fpmr, FPMR, OSC); + size_t oprsz =3D simd_oprsz(desc); + size_t nelem =3D oprsz / 4; + + switch (ctx.f8fmt) { + case OFP8_E5M2: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + float32 e2 =3D n2[H2(i)]; + float32 e3 =3D n3[H2(i)]; + d[H1(4 * i + 0)] =3D + fcvt_f32_to_fp8e5m2(e0, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 1)] =3D + fcvt_f32_to_fp8e5m2(e1, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 2)] =3D + fcvt_f32_to_fp8e5m2(e2, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D + fcvt_f32_to_fp8e5m2(e3, ctx.scale, osc, &ctx.stat); + } + break; + case OFP8_E4M3: + for (size_t i =3D 0; i < nelem; ++i) { + float32 e0 =3D n0[H2(i)]; + float32 e1 =3D n1[H2(i)]; + float32 e2 =3D n2[H2(i)]; + float32 e3 =3D n3[H2(i)]; + d[H1(4 * i + 0)] =3D + fcvt_f32_to_fp8e4m3(e0, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 1)] =3D + fcvt_f32_to_fp8e4m3(e1, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 2)] =3D + fcvt_f32_to_fp8e4m3(e2, ctx.scale, osc, &ctx.stat); + d[H1(4 * i + 3)] =3D + fcvt_f32_to_fp8e4m3(e3, ctx.scale, osc, &ctx.stat); + } + break; + default: + float8_invalid_output(d, oprsz, &ctx.stat); + break; + } + + fp8_finish(env, &ctx); +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 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 19:23:37 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=1777508597; cv=none; d=zohomail.com; s=zohoarc; b=H33uC9I+iKzx6oxUkydgX86DE6gTqEVnbwDpOJjjLczW2Ie36XJD8tac/YpxyhHFprZHcxBMh30wrd5ZBdyq/CknihxMxUnf2URx7PHQdhZtwLzGt8ODffuzLDKUYAAQIbPScut+s6zs9ps+kEho1q67nnrTxDUZYyl2zfGHEgw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508597; 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=TOvd1stmjwYt3jtt3lYPGf9ETCY3xwD7NojicPAgY3M=; b=mzKSUgdeaiPc1ERC7RUSwVEg4l+NY9YNv8Kk2EjmZQYzf0sdp6Dw9r7/+ULDrWVIC3wMYQaYTxj85NIhLv9vIxOD3NLEBB1qovTwfqUHMKv7tfjicn2OOAG4BkIEECypt55fsUGxo40F1esVL5xtw3WdemmHwGRkWoOcd+InWqw= 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 1777508597196400.7371954919464; Wed, 29 Apr 2026 17:23:17 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAU-0007lh-4d; Wed, 29 Apr 2026 20:22:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAR-0007ek-Q7 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:11 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFAP-0006ay-Od for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:11 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-82418b0178cso197221b3a.1 for ; Wed, 29 Apr 2026 17:22:09 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.22.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:22:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508528; x=1778113328; 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=TOvd1stmjwYt3jtt3lYPGf9ETCY3xwD7NojicPAgY3M=; b=WEO1+yV+9S9ck4TSX6CwKG1oQtwnax3ksIv2uLF89pbZjq40QvX+KFXDeTlH4pZWfz phlbFrLOZeiXjttzz3nOnno+khQUWcRqFDPPIaAMy2QU++BvdaMMshacyRf3hh7cT0Pn T+9Urt/L42qs8+A8X7lGwC1YEn9gcCOoFgWRgBtac6zYeiKWUzOYmeoUxZjr+kBBUNqM awnbUqy5yuWfx7bz73mX/MODzRQFFNVonGmOuKypnKoH2trm7glspvkZhC3ibyZaA46L GOrhlfw/BOWvduzzC597SByfN7ctp7eijk0qxihxNE3OD5c6v6aDZDE7c+zxGWlb7yhw ktFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508528; x=1778113328; 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=TOvd1stmjwYt3jtt3lYPGf9ETCY3xwD7NojicPAgY3M=; b=JfJdgiUnxHzZsmc6RQlwb9fRTKM4PNF0/JqBRnnbvzjXOYf8xspcT/AVnS0eGy+qCp FPlZ0t69j6xwY805fnAvRLfFUXnnBnnEenfKdfyXfimjIYU4POyS2CH3np7B2h7p+aFf By0PEDsM6Npn4Bk8rVZO9NR8ifdgUyB1uKQo2K2tqjbl3tJvlXDHVvB30QtNZT+kxPc5 dHEU+/UcWEO2GoUY9+6NZlJk4UqBBF7+C9hrWmD563MMmlEh27KCqVwWgbxjwBUO6qbO NqieJ4FWTdP3u0TIsY5GBc2BSlh4b4E0QY8XsS4nDbMqVxawbtanhOtBXm7hHaUGD1Y/ F/3w== X-Gm-Message-State: AOJu0YyseenUppZWkMG6scdrhpC4FSq+o1f/Lq8n5kc/XpzRZBR0zRzf 8FObsl90Q20oKmDpI48KXGGv7nW/e2ir6kJRPxOXYMtdjFqiCAx1Pjr/lfZODrqr3Wjswsp4WrB +V4Xf7DM= X-Gm-Gg: AeBDieswoRjAWdYw1yRgmPT6y16RxZKkus7iqTBBpXwFrzamhSzgpAflHD87Hf1qowv p3VYPFIVgXdwhVbfa76i6nUwev+qIaN145TrcnmaE6oNreGAovbZ1c/OfB8uL+BYhK+wxc9ksQc CS1mRXOMRICjquirxpgzZU4GGiMiAix5rHY0MTyz+GZ7ThEMvqHb+jzMC+kFO0Wy/o33zuE7WRV FllDoEhjC79fMxvOiIS6Mw8yd69HnojRqREJ77d84om8gizbggL1254K6ylhQlNxDhEgWYwEnNb +lSNbRWG7id9SYvJPF7hQ8IWCc0AnIIxeKVVglO2kur6YQuOrZ0ynkMYYOtZvkrG5FgwzFXZ09u k1nudQGPuc/7iAM5TOzuOQ6Dg0ox2Z2D94DAa1m3MIK9xD+Mi9OFePqHGednD7ML5a8zRYY5a2N NAm99vPVj865Dby59a3/WDhVf7lL5NZBFQtIf+Aukr X-Received: by 2002:a05:6a00:391c:b0:82a:6461:6d1e with SMTP id d2e1a72fcca58-834fdcc4b03mr755188b3a.46.1777508528327; Wed, 29 Apr 2026 17:22:08 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 35/47] target/arm: Implement LUTI2, LUTI4 for AdvSIMD Date: Thu, 30 Apr 2026 10:20:34 +1000 Message-ID: <20260430002046.59739-36-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508598700154100 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..f0dc11bc8a 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 / 8; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_b(&scratch, vm, vn, elements, ibase, 0, 2, 8, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti2_h)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 16; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_h(&scratch, vm, vn, elements, ibase, 0, 2, 16, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti4_b)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 8; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_b(&scratch, vm, vn, elements, ibase, 0, 4, 8, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} + +void HELPER(gvec_luti4_h)(void *vd, void *vn, void *vm, uint32_t desc) +{ + unsigned part =3D simd_data(desc); + unsigned vl =3D simd_oprsz(desc); + unsigned elements =3D vl / 16; + unsigned ibase =3D elements * part; + ARMVectorReg scratch; + + do_lut_h(&scratch, vm, vn, elements, ibase, 0, 2, 16, 1); + memcpy(vd, &scratch, vl); + clear_tail(vd, vl, simd_maxsz(desc)); +} diff --git a/target/arm/tcg/a64.decode b/target/arm/tcg/a64.decode index a9cf259b9b..6aea3ce89f 100644 --- a/target/arm/tcg/a64.decode +++ b/target/arm/tcg/a64.decode @@ -1344,6 +1344,12 @@ EXT_q 0110 1110 00 0 rm:5 0 imm:4 0 rn:5 = rd:5 =20 TBL_TBX 0 q:1 00 1110 000 rm:5 0 len:2 tbx:1 00 rn:5 rd:5 =20 +LUTI2_1b 0100 1110 100 rm:5 0 idx:2 100 rn:5 rd:5 &rrx_e esz=3D0 +LUTI2_1h 0100 1110 110 rm:5 0 idx:3 00 rn:5 rd:5 &rrx_e esz=3D1 + +LUTI4_1b 0100 1110 010 rm:5 0 idx:1 1000 rn:5 rd:5 &rrx_e esz=3D0 +LUTI4_2h 0100 1110 010 rm:5 0 idx:2 100 rn:5 rd:5 &rrx_e esz=3D1 + # Advanced SIMD Permute =20 UZP1 0.00 1110 .. 0 ..... 0 001 10 ..... ..... @qrrr_e --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508692; cv=none; d=zohomail.com; s=zohoarc; b=db1iss8WuHrjFbDWW7PQ4mLjV2zYQvi0Ohjujb5VxfHSK9JfVFWLLJg7HzKLMwA8o+Ctj8LI6U6VUJ7aMVV9khTH9lw+Y8oDUr6tGoCIqt2Y3JcsiBreuU2Hc79N9X53zdrEhWYLwPzujom1c6FUgCRfFX3zDj7jXVHKCR34FOk= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508692; 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=/a7/W1ZnW7C2bc/N4CEA7aZNizMium1Ght7dKRz6wqc=; b=eRQqBoufQdOsBx2ha+HgDaS37ug+4SpxyI40sYM1J7jyYlHALKlbBfpvV2Tn5s6vOXcd0H8Ovd9UMqmFmkwYOeeLnmSySBTJKqGYK/A8VQPC9nE91sSrMuCi0RMGxRqxD6JZI8mjnDwBSOv4pXHXvOYgBbjWLxlIHAIejDjXfHw= 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 1777508692644219.50069027347388; Wed, 29 Apr 2026 17:24:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAY-00080E-Cs; Wed, 29 Apr 2026 20:22:18 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAU-0007nN-9N for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:14 -0400 Received: from mail-pf1-x42a.google.com ([2607:f8b0:4864:20::42a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFAS-0006bU-2u for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:13 -0400 Received: by mail-pf1-x42a.google.com with SMTP id d2e1a72fcca58-82f943870baso170802b3a.1 for ; Wed, 29 Apr 2026 17:22:11 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.22.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:22:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508531; x=1778113331; 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=/a7/W1ZnW7C2bc/N4CEA7aZNizMium1Ght7dKRz6wqc=; b=BCYBOEQPioKbOBWWbnUGvt6zPyvdZwdDqzEWmP3XX3aaa0rIMOXyyxj3aY1+Ncqq2j VjNh/Z3hiXP5XY95vj7OQpg83SGCkCKcdFYFW2wFIK3vPzJdBEhia9RgsGuy3M+655Jw D1Rab+3l0Ljdmd47LNT2mmvKRX9U4Fn+QoI8R9T9Yy7V5WJ1xzYqbqisnR1xP+gmnk4U HJZx8ErDKEDPzOeglrEIQc+eiYPAkuYnZSSylWBwyFS0A12s+QyiVSHsmbYYdkfiX7RI lnjrakTncJs2v+TGi1ripXy0t4CfsMaB2TpQ/ky3axwJpqPAhfXsym134UIxc/3M3m0W mAxw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508531; x=1778113331; 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=/a7/W1ZnW7C2bc/N4CEA7aZNizMium1Ght7dKRz6wqc=; b=BGpFvX0nA3qyBu2F+fpKWNSLhQ7zrXB0/vabHkLQnfzcCPUBbN4giEmmw4fKJp6rWy qla2tegDz5NkJvJ3eZAR2LF9NqRqf3wiqB5o193eynsi4Lsxj/2MI969HWuFpVJzEZcU aFaOfVnEMpcVbMS96Bq54wGF3kwvtNwXLHDtTY4fEGoHouCoLvhZSsEDPiGHBqDaU3Z7 qW/KAtrBwk9wGyCT1jlq6brrNmpkNiHb2itMhamo1FL+t0/qH42+YmNA093/mnQ4PKBW QfHlgBwoqSRzTww8+IUXWT61JM67jEol7UspYmf37MVosQ+WbHaSO17ylnewfO8F+l2/ 3Q9g== X-Gm-Message-State: AOJu0Yyh8GIRrJH6usIM3yBV9951t/a+/HC9ZQC3hfYakFts47fWT3T4 lGVzs8YITIZyYOnNU4KXEp+DATMlbxSNtHkZ6YsZymFI7Y2n4taMdT5cEbOzuV5R0wQffUBc1AO ziVeGLiQ= X-Gm-Gg: AeBDietkSrtkq3Z1ZhlVgxraJLFMIIAC06jlXb8JiC1NRjGbaBE8MXFy9meLlICZQvP 52SOJW4N8pgiCja0nZ5GCvetRhAtQRaCQ4rNX1iIcHTiuRjlAKVRzhQqSYP1xqJiZlc2siqiP18 Y/PswD/k4TH2mbQzcRiMqw6x8AD4MNNrCSLw/oYoUev/IDFcDi1WCQ6Qec9UlFBWJlFKRoqZoPD 05j3reyiy7NT9GOlXornBnL1RSqJon19CJ+KujnY5cbm+SG/Hw38sDPAVv7P5iHsqTIfCeFHcZ4 M+My5kuy56Mhz7GpRjTxZ3dViI18cBc2FoKLNftJyP14rAFjo//WRrAOcKPB2j0ye0/Px/2FMaO 7aKRuCTVdQXgUaiKpxn+IbUBsssYQEajI9TVzy6Pciv67Ams0l7LBg2vSxV24VLMUUxXDvNih2M Hg/0uAEp25Q7uxzokwvAwOjgOXzGJ8u5foUAiR+h/Q X-Received: by 2002:a05:6a00:1f19:b0:82c:e1aa:21e3 with SMTP id d2e1a72fcca58-834fdb9561amr759406b3a.10.1777508530488; Wed, 29 Apr 2026 17:22:10 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 36/47] target/arm: Implement LUTI2, LUTI4 for SVE Date: Thu, 30 Apr 2026 10:20:35 +1000 Message-ID: <20260430002046.59739-37-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508694202154100 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 334ff480bc..03fd860406 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1635,6 +1635,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 7fce189b36..a11ea08eb3 100644 --- a/target/arm/tcg/sve.decode +++ b/target/arm/tcg/sve.decode @@ -31,6 +31,7 @@ %dtype_23_13 23:2 13:2 %index3_22_19 22:1 19:2 %index3_22_17 22:1 17:2 +%index3_22_12 22:2 12:1 %index3_19_11 19:2 11:1 %index2_20_11 20:1 11:1 =20 @@ -1737,11 +1738,19 @@ RSUBHNT 01000101 .. 1 ..... 011 111 ..... .= .... @rd_rn_rm MATCH 01000101 .. 1 ..... 100 ... ..... 0 .... @pd_pg_rn_rm NMATCH 01000101 .. 1 ..... 100 ... ..... 1 .... @pd_pg_rn_rm =20 -### SVE2 Histogram Computation +### SVE2 Histogram Computation and Lookup Table =20 HISTCNT 01000101 .. 1 ..... 110 ... ..... ..... @rd_pg_rn_rm HISTSEG 01000101 .. 1 ..... 101 000 ..... ..... @rd_rn_rm =20 +LUTI2_1b 01000101 index:2 1 rm:5 101100 rn:5 rd:5 &rrx_esz esz=3D0 +LUTI2_1h 01000101 .. 1 rm:5 101.10 rn:5 rd:5 \ + &rrx_esz esz=3D1 index=3D%index3_22_12 + +LUTI4_1b 01000101 index:1 11 rm:5 101001 rn:5 rd:5 &rrx_esz esz=3D0 +LUTI4_1h 01000101 index:2 1 rm:5 101111 rn:5 rd:5 &rrx_esz esz=3D1 +LUTI4_2h 01000101 index:2 1 rm:5 101101 rn:5 rd:5 &rrx_esz esz=3D1 + ## SVE2 floating-point pairwise operations =20 FADDP 01100100 .. 010 00 0 100 ... ..... ..... @rdn_pg_rm --=20 2.43.0 From nobody Sat May 30 19:23:37 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=1777508814; cv=none; d=zohomail.com; s=zohoarc; b=Y5hlqedV1WnMSejekKu8Rtr2+Lxhh6Xwo6Cm25fD27ztScB887jumPPw8qP4/KF93iKjpjIohncqiJsfy4jrhC/gSo2GNP4+Ji+QqSlHgztZGEQWOexKWwm+s922v2+ZiPj6x8Hb2BAw8hG3OXThEp4pE28EchJjgG1hwkaWs4o= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508814; 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=hzFV42EK9VGs4RlyM0VXgjckD+CdV0erkFN9AWD/T1TxnRTapLQA8XkA3DJ3u5uFF8Y3HBOZ3Jja++w0VNvlq1dMeGoV8QK/49bOd3YxKX/ShJ1fgwygZT+x4uXDTiQ7bY4ruzWuoKOezqBdav9V/OPC4xtPWsbbYvTGWHbv9hE= 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 1777508814379897.699742678936; Wed, 29 Apr 2026 17:26:54 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFAv-0008Be-R7; Wed, 29 Apr 2026 20:22:45 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAV-0007s3-R6 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:15 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFAU-0006c0-29 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:15 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-8296dabef74so326047b3a.1 for ; Wed, 29 Apr 2026 17:22:13 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.22.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:22:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508533; x=1778113333; 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=Fe9lWuytxuIqwnojX2OiNIczR7vhZbb8kM2HCWDpoBAP6qZ9PkycJZUARoNEgrX9J0 kT82zHsjtfrsivBnADFVUydB2FP/WT4Od2JWFmQfz/QZ2bkwybLKAYJsEmytLhawd//k 1m1LFVnq7KVRQKztNDYczqXJhF9l7424Puvon1ejjK7l6cMw3J74sx135CtgHKglT0w6 y2j46epA/GX7XD9ZqyiVS2qjDjVpoU8+GiB4O2Uz6IZW8vew2RL3SLtkycQUj91Z+HWs efDuOiQlprXs7/Noan4PRmfzvG5X3X5i4/9D2SWUAN9LO913mhGmBF/UP8+qnNwICg8e MNNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508533; x=1778113333; 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=I6Cj+WDWAx0nYO7aRLJa0wxnn3c3hwph+J1cHfKWbnbzpne7HvAQPGwlxMnkiETstC /2ypeVa/s+a/rASQeXPvVlj42gMFQJdpD4MT9SgIoxaaZpC57v0IWBKLRcIoMwz7R/vM 50MFv3Pj/OJx9R8wBnW8Uu0leL8pb0viPFNnFcsTrL7WHnUUwAa27iL8VjpvgX2I4t3c c9ixiY520G6v3pn4BYJdnDq6UgAN9wJ+sKvKe7wqtr2z4gXXwyLL3lU3JS5f06JE6gi8 SkbPRO9Wp75Hm8xpfh1Fp4FkAGL3x7SJmmlFNs6ecX0FB0yXKXY8iDPdaSUuJkdQUpGU MsRg== X-Gm-Message-State: AOJu0Yz0jyT9A4PLEaB+byafKgC+QehmYsoor3R68qbcQwUB5Q3B6vCk sRgbcigArOn5DgeYD0ZbDDQH4NORVgrdZ0quPbB+g3WB4P/XeFbH8g4BJhieOQqz0M8+P3qXMDQ 6n74em2g= X-Gm-Gg: AeBDievWlGUxrAppILKqBp0/+e2FRxXA4VaPFo6gq3Du5p3oM1rYGVS/rfhPUvZnYMz hWYZaJlKYhJK5yZDLuAraKar7O7WfQ10xmrJMP0e9XRJFL3FcKLyeLJUbsAzFviy/uH/q615Zs5 j6p0ZdsaojjSzHskiGQEi8DRmU3QDCRBRXGTMoHC+ghBSZ1l926kK92kUCvCuetrsLSmFyoP8O5 unHzpcnvrmkNmCqfEoxeOxdBm6nWgM/yz7GP9kuxNGepZ5h8EXZc4GVT1FpbI58F18WJvYVetfh w9eM5PSrulgg2KFsNqPjyK6UIh+OgcA4eBrKquUSHJFV7caIHiDi9vl18WEBNzUmmi4hz0MpmoC uYfUEzyFSeM+WcxtkIHFMObrcR77L/6Z6K4eFNAG4IF03fgyVc1Uo7n1WUtWZDdinHgqBi6duIf lTjETRw4lgH5e2eKGO3KIczWGpU/eFo/isVMDizmLj X-Received: by 2002:a05:6a00:1a86:b0:82f:623f:e5b3 with SMTP id d2e1a72fcca58-834fdbd8f0amr798455b3a.34.1777508532652; Wed, 29 Apr 2026 17:22:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 37/47] target/arm: Enable FEAT_LUT for -cpu max Date: Thu, 30 Apr 2026 10:20:36 +1000 Message-ID: <20260430002046.59739-38-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508815746154100 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 19:23:37 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=1777508713; cv=none; d=zohomail.com; s=zohoarc; b=AxiDqDKW+qrXeR1EZyOyM/j2YqkvRofKwAjGxu9XtfpyO08xuH6e1q3sCdggxbM7SVibqVUHncUYTWz+nc9VZSsinteP5MtltK6oZEhnTG3iLe3mU7gNjgu97USclSI7VIz99pF8KFA0DR1u0/8Yk7S2k/IaWb6ByfUduJsd7EU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508713; 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=btZqErEAb253Eo0MF3qoV7z0UYPSXsBIwuwirfqNw+g0UrauhBgFtPdkDnr0BSV0JMC4wsWuMcmXGz20wsV28RU1QjqdhE19YAtsAGH42nfowLu9k45HDF+PoP4s4u8L/nm1fnMDAi8B7FuZXhLFupotwM6tqsxI9qIZroB/o+s= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=pass header.from= (p=none dis=none) Return-Path: Received: from lists1p.gnu.org (lists1p.gnu.org [209.51.188.17]) by mx.zohomail.com with SMTPS id 1777508713027526.23721969548; Wed, 29 Apr 2026 17:25:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFB8-0000Rt-Iy; Wed, 29 Apr 2026 20:22:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFAY-00081O-Mv for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:18 -0400 Received: from mail-pf1-x433.google.com ([2607:f8b0:4864:20::433]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFAW-0006cg-I0 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:18 -0400 Received: by mail-pf1-x433.google.com with SMTP id d2e1a72fcca58-82d0b68837aso190961b3a.2 for ; Wed, 29 Apr 2026 17:22:16 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.22.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:22:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508535; x=1778113335; 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=q3gALxdR4gZZy8lR0ybDmFSJpYUpcjx2vwIZAZdOe9rhH2ZANkXhKS+2V2VRTny0LH x7yX3eaDIwQ4pSk36Kc+KE2FydpluN76pH5P0sQqwK5g3Gw0jJijbU5Z1Y4y3ggVznOp rzcdUD1t5leoRbskV5LlGEkbDsIFYnu1hslpOhaBz43mhJ2oV/iz2Xn6nuLzc8fdO7oH /HbFcI4iikteAwNsbkYU6kHRHSWZKAI9VShx/EzmWDW7kUNVfJOViECqk/lLxoT3rLYe HBqzhpi/pv5J7di+tY9Z5Ofzga+hvA/hNFpp4yx1y+pcJQiBEn9EnuR2XAk10EDspywF IuqQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508535; x=1778113335; 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=RXr+XmMubz/u2DmseHxZycnIbSy7WzcS++oZyHmy/YuAJ3HuNhlU0qE8FAj048ikmy AGbF7srKy8yttbTHZxv9rG8rksRVXFRJzwv3bGW7ZoL7B/mcXZc6mI5eHtTAdDtPCz2x oOwQy616ca3Ks312QSnOofb0eOKGpsI9u/TI6DaQILeqAPnEd00u3aXCAvKdX1th1H+o rGx3UjPGHqpacuY+38agdKT5PnfS6xtDMLsdtJothR7WaRm2qdXC+qR8tRWuASLVF1Ae 3tgh09yQC0d+ZOUrdklRY/7Cnp6ekW25KiwGult8v0eol8osvqHmIrH7Qj+fkTv6Nito KhgA== X-Gm-Message-State: AOJu0YzlytG+qkWlnvYV5PYsDNODe/FAoKbNjiNQ4yAeHXi6VIlOncEl b+fvPSAmaSsfWtrgyfdazGebdLIVgB7tB9lQxhS6HKSBVgEi/NnMJiUBsPot3E5X4boIMZ4Umwb SaPy9n/w= X-Gm-Gg: AeBDiesDxaimsdSXOgwso0YOKa7wuXAmF38WjzSrOQ5I+BvQkIKIpIXdIOIRUoCE+Wl ojbwOFFA1uWiGmD+/8x96tBXbb5afwququ4Qvt+1U6bNh3dknBnAXbl+QMtwaTOMer9vPJBeM8j 8aHzCXSSSravJnBV5gscl8cH/357x/1D8/UnKVhKHU7sulU4fg8TrqFWQbFsxzl6UeI5z7QE6ql dl2G/aI3mwc+PcwPTjavzLdRpqI5hQIQi2VG51kgQuKt8ui1tl9vpyZpB5I12T10wKwkqlHgse8 e9TXALnO7czRiFadFiZr5BBweC9GnB0sn3r4+rDYvFpSd9C+2JPU4uv7t+eQ5KaOKpc353B/8NV ZxerHAdVWtJ8UWN99fK+NLMOnZQV3/lZnCfRIaEc9acNvPzB8JdfIi0GvJNewsMXsq5h31EiTzq lX1t4hGlLlBQJLHifr5de+GhbJg+WZKUVheITks5It X-Received: by 2002:a05:6a00:8e01:b0:81f:3bcb:af2a with SMTP id d2e1a72fcca58-834fdbd238emr761543b3a.26.1777508534797; Wed, 29 Apr 2026 17:22:14 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 38/47] target/arm: Enable FEAT_FP8 for -cpu max Date: Thu, 30 Apr 2026 10:20:37 +1000 Message-ID: <20260430002046.59739-39-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::433; envelope-from=richard.henderson@linaro.org; helo=mail-pf1-x433.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508713833158500 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 19:23:37 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=1777508590; cv=none; d=zohomail.com; s=zohoarc; b=flsXk5hIpBf3kbbfCxH32rW4g1LFAFILAI45ALTzVe6x1843Nj7GeCO3yP58xReG9olrDMBDGgx7GAa8Bc+Png/dyVg3UJ1BhaKe4vkWmTPkZm5tlW7kmpaB9jtWp8sYE8qmUMIpNYQemDlqMP6+VwMz4WchZZ8p8XClbynEyOU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508590; 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=ucQgH8ucWGVHrkVPLqcR6+KfDeuLOnhjY6za/Y44N2Y=; b=IxhbXMZCiv2xvnTsi6LAp3miNAeE5PQeZQoolV7Jf4R6sSa4WXTMhMZT1OmyPHnU2mSes+xE2TL7yEIgoudzN2hfCJJFbpE8/6jtrIyoyMwYihGkgjZ/CCSfjje1jCU3PhR3Vpr2TnIxFCuybkwxcNmHdHuZfdYs5QJSDVCnzU4= 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 1777508590251315.2642925295156; Wed, 29 Apr 2026 17:23:10 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFB9-0000aC-LU; Wed, 29 Apr 2026 20:22: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 1wIFAb-0008Ba-4K for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:27 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFAY-0006dA-Hf for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:22:20 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-c6dd5b01e14so95182a12.0 for ; Wed, 29 Apr 2026 17:22:18 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-834ed5cd3b8sm3461727b3a.16.2026.04.29.17.22.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:22:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508537; x=1778113337; 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=ucQgH8ucWGVHrkVPLqcR6+KfDeuLOnhjY6za/Y44N2Y=; b=vJTQAyh9DbM0WnwgW97AVgNVo6dLxY89/7o8YGuME0jrnW7RK587YY9tTq/P8Orvrf UVYhtMU0cMNEsJZeZ3SvdAAwAqRKLh2pDQroMXGTqmWnBUtOlrOZ1yyiu1HFKTiR+nIr m1rA67FoIMI/TKBWLvNb/8tbno03sB69v5VujKTwy9XQq4xRnLBiQ2tc49ZoJYc+6mat GK9hpQ9cj/mWbNiddo5qYs3ULutOmmT8KYv2jnz7aLMB/ZdkAuelY8WFXPBq6Kck68t9 otHD/fjpjE4OgW+Mc2PFzYP3oeOWdspCK/CVXZVd+OopK0B+MwsjV2q+9C07UMb9QdrA 3x5A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508537; x=1778113337; 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=ucQgH8ucWGVHrkVPLqcR6+KfDeuLOnhjY6za/Y44N2Y=; b=XiGLURPYFAmvesUxKPCAbXPVhVIoU2zlAueVLPHJBJnhW+RPoQFeQX2kc5hZt9rlQf uigSN3Q5DoXPhxMKxBFHr7tNRO0t0mm65eAqhDJB5TlJ+0TnvQfoz+3zMJn3zsEihVoe crbv+/WIMO4b4rjW4AL81vjZ4WZyIW1ORcocjtzTwVJrUvxhorJSKiMbqBCOYzY4973d ooxTvgFmF3G5H3cfGnEMPt/ZdowzrKb89aJWsS5B5YVHAwyS08Z+/WLyc0BqYb2I/pvP 1LhE2H20zLZCmvLlZy2JUZXjeuSgaBE4GhEJJMlw6vd+2NLmWTMZpeHMb2lr295azIJp EuNg== X-Gm-Message-State: AOJu0Yx487uXQkgQG6q/lBEY67jWnssyxOHp9ksZc6+vgTagjg2L2nBA B8sJn53tgzB29SDsVvsv16DCYyrqvHFyYwrqKwzewWh2P8EXfCbqCu4WRQQn3iWDP4+2sTU0Z7P YipTMKMw= X-Gm-Gg: AeBDiesSB0h8lNYKVUSstlT3Om63Ug/+wEFMYmykXd2oPVBgBQkd1Zjd9H8lMJnCJb+ S5lpYBhISYUPeckJCd/V/5VQouaYF1ZKVbJFDAy16JzgbmN0MuT+lDOm8EeM6wHAeqvHTQYwX2h pZBQyGItBLdrOOV+wJWJEkI1/w55eOsw4XExWmDM/yNk3HKfw/tvgr6Qw6VoplGxgq4bw3gHZfJ olUZ3SQoyUUss1/yV5gy8tEbKgoV+/XR94qS85DSc2phvj7MlCuc1YYOQnKuVgJUlry4pgx0j6X j/laII9nmWqZA8cQaLy8NvTj+pSf37UYMn4JLmlZSpQWaU3WV7nzNVzYq9g9E9B1Zae16vljnqC kh3gmKmU0V0qjjLxkV6RjXqMvFOxkusHy1/ZzVquQaSelyeGzFK8UJVW62WPI4FWk18f4JXTtom LqNMsd/IoefCFD2eD3CYB86blmTxkffa4sxTl50TIj X-Received: by 2002:a05:6a21:3284:b0:3a3:2b7e:a4ab with SMTP id adf61e73a8af0-3a3cf85b1aamr609886637.44.1777508537010; Wed, 29 Apr 2026 17:22:17 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 39/47] target/arm: Update ID_AA64SMFR0_EL1 fields to ARM M.b Date: Thu, 30 Apr 2026 10:20:38 +1000 Message-ID: <20260430002046.59739-40-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.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: 1777508592660154100 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 03fd860406..15e9821ce5 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -388,17 +388,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 19:23:37 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=1777508773; cv=none; d=zohomail.com; s=zohoarc; b=lIeWKYeqqHRQ2UsFhWcLujKAOteGgP1F/7VEuyaYEEHcmaTCqgAEDGuS3z4w9uNxDIvkBMFalEntXbZZNgVI/kyPRM3oWBXzGqMmF3Red8DDmQDYjGpfseAZqhFtgf0WHQ/w5zYwqVaJZuXYyrnmoOSefhjQPy2EpFuhCJIXxBA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508773; 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=aaacGOh8gwX3lVHScHw0vooo3S9NCC3dC/eSJzjcavA=; b=Kh2/6iP6nevq+AvegOwdeKlSM47Ur2rAioBjo6hJmvrLYbhS32jvHeGAfJGdo37CIhevnnyTZ8j5R29PxUIiW6296bUwPbNyPFXtCutOxP8qqDcjbgeP3GZWbW/UASnBjuPqwltCeGOR8JDUgLDN19e0peo18lbKZ8uSM9DJkRc= 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 1777508773294702.2319393581569; Wed, 29 Apr 2026 17:26:13 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFDx-0006dL-NE; Wed, 29 Apr 2026 20:25: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 1wIFDe-0006QZ-Qm for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:35 -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 1wIFDY-0007Tg-RF for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:26 -0400 Received: by mail-pj1-x102f.google.com with SMTP id 98e67ed59e1d1-362bb3260f1so188755a91.2 for ; Wed, 29 Apr 2026 17:25:24 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fd64f21b4sm3204112a12.21.2026.04.29.17.25.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:25:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508723; x=1778113523; 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=aaacGOh8gwX3lVHScHw0vooo3S9NCC3dC/eSJzjcavA=; b=XI9upLLuXm+Pyc7oDBaFUl45gPZ8D/w1rXRqA/QR88nXOKKLpVixxXkrVlZBKHAQfe BugH2i/AjmCHuaxekpsD8bp2rM38tGSHBM7OBGyiohb6smuvNVjIE4DoWxrMBLviwy4l rsSFf3vnM+tcC9XX5+Cw1I59ks6tlEKstWO2NeKH/tkQqyuyitiTmCLYlmB9mt2n1ivk AtgKwaCgi2/408pzvmLn9r0qZqegjpinv/qdegA9rCygDVbrlayRF2X96dMcvyiVZff7 M3QT3+/Kqr8MtVS6rbM+fBtj6gJ+WTh7vYgG1arOWnQqVR149qjdP0OLrCOMnUTnmQOV OxCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508723; x=1778113523; 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=aaacGOh8gwX3lVHScHw0vooo3S9NCC3dC/eSJzjcavA=; b=Qg0JPSp+YDWDpW9a5T+v4Cbt5z4rRbMsRaZmPK0QuND53NvMBBkaUz6/7esXsgz4oi NHumIiF+KkM3TzPyKz1JacvZipSy27ikF0pLgbHpu6em+7oHF9im8mpGLvoFaU7UvHva kcEolUyYJcD6dQK+YLG4e+9ZQCN43X3aRrAsYoIHliHjKOH2K/wBGLaNGoNfCIrUp2MN dccaQhSUnbDVRr+XX10EM3ATmPczXhs58GIPZFOmeI0bIE5OaqU9vHPhv2i468gqSOLo l6+mQvb0LN6SyeF+xZWHfQYAQAFo9Y6z75ES+GLqSGdbcQ77p5WfWziXBuyWWuaIWbIW /5rA== X-Gm-Message-State: AOJu0YxCUC9Y3MP615iaig5nVyu4c7kEayEfA3+NduWYBoI+v6b0thpY 3fGxlp2s4iZTIrH1we9zZMJ1xlHOvLnQV1FkjpQJdWP+4q0DXL4GDIm6gBf4CKN5d17ugW6IMpZ GV4URgw0= X-Gm-Gg: AeBDievtfA5eIrCi9M6IYU9L8ySKKfVEfIDX0YngAAwYzxPYnZqViDSlsSYe31ZxkPG an7y2ObyZYqZZjl8+h8aliaOQoP3uXCRjbZwBCHGM7LfGHR80IaQAMT8CY9KJ/qfgBHTywTXG0J z8vAVhHcwWZXf6Q5XFQfhQXJ1/N5rc8B7TBlKL3gpI+FOYa05IbwUG6llRdrfZNxyhOj+qyTnRT qigN8ldANZjgMNhG7gTNB34UmKXtuszdI3AksL2lnSrYqq6eUEtFeuJct8eHRM1qX/E7vBvp97D EgN8B1QSD/0QgVTZOYDwI4tU0rLGozAEpbxQv23ABAsLsOrg3rrT/hE+n7SVCz+dUMdTmxcHY2x jyLyFtC5qmdmtURJS8cDUCf66X7P9i9tlZsGF/9Hk/nNzs1INg+DRThdoaPh02MBRrL/DKzhYbX pOi3TrDVgVSafGeJxZHUuZ0JjxUJyldQ/qgY/25pWW X-Received: by 2002:a05:6a20:a106:b0:3a0:d88:6d7f with SMTP id adf61e73a8af0-3a3cf861605mr714215637.42.1777508723068; Wed, 29 Apr 2026 17:25:23 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 40/47] target/arm: Implement MOVT (vector to table) Date: Thu, 30 Apr 2026 10:20:39 +1000 Message-ID: <20260430002046.59739-41-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::102f; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508774092158500 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 15e9821ce5..4b228b4f3b 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1556,6 +1556,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 19:23:37 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=1777508845; cv=none; d=zohomail.com; s=zohoarc; b=cX2bSqezh4B/q51d150f6cqV9OVPigkVuDDrdw7LZ3lnjmcFxbTp2/SyM+wDtMOqY21XsQtK0JHStWQYJd9dfnVRkVi5/+kzrXbAXx+P55yQ1MFZLLlFHccg6G3hjQytbKOinXAjN9BXDaBYd20C751+MTmV0uysIoMay1nxCZ8= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508845; 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=n8+8W4S7e1exYCYoyBEXRHcKe1AEhJGQ33LWv5UpbTE=; b=VvGP50NNLKtTRCy4uupUzK6icHN1v8fuAFrcgvXEzDlrngTkDh6Vb7KLGtqO1UhSkiKFcVWv+etNfIN4Nwm2Ud3/zqVjTQ5n6QeZ7N4kuq1hC6xPan0dFJjI6aLGNcn30kUbD/phDRptcawF+BoxDr5WI8vuyo6jlvR0Bwgm4Sc= 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 1777508845653889.0254156382774; Wed, 29 Apr 2026 17:27:25 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFE1-00074s-7q; Wed, 29 Apr 2026 20:25: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 1wIFDi-0006S3-Lt for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:37 -0400 Received: from mail-pg1-x52d.google.com ([2607:f8b0:4864:20::52d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFDe-0007Tv-Ht for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:34 -0400 Received: by mail-pg1-x52d.google.com with SMTP id 41be03b00d2f7-c76c067bc51so101177a12.0 for ; Wed, 29 Apr 2026 17:25:26 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fd64f21b4sm3204112a12.21.2026.04.29.17.25.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:25:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508725; x=1778113525; 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=n8+8W4S7e1exYCYoyBEXRHcKe1AEhJGQ33LWv5UpbTE=; b=d6Cvgm27a7EnWby76SVv1/FfHPV52wZGgvSB7TJJ58NP4N5o0wGfzrXzX8YfqCPDz2 5oGSH9aE+X1IhnhTcKSZ61PkyP+tiL3lfW5y5DnyEq6T3rsfN1e5NnfdqtgnXMhvSe4d f/UxUEl+FV48LQgSp3rtUzY5KRafro3BstTFfGznx9FwTiqkYrf/yAHO8zo6VgBnZtNl TJCJEeuz0NZ/Zq/bz7+Nqln3eMxMXYfri2rV29/XOyp/nreLw6dWiZCo0+CNn0DEIG8Q CB59hHUY6WtE6TMRBXMpRLfSAUcS3CwzX3WcA0vMMPerWXfg1TDtDU2CoF/OLvGpIvZf pZPQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508725; x=1778113525; 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=n8+8W4S7e1exYCYoyBEXRHcKe1AEhJGQ33LWv5UpbTE=; b=NOTtG1yU9DzHEMZEZm7sQO+dIRIUJ4QFbD7Hkk0Gr1+s5TUK52iP7TIXxWIPTnUGLx 5TAKFtXb4/K7g75VkVxekhgze+kXLtUlj9Baq1SHS7Mx2LR4YQgqbx84axNQhfsfo+Yy ALx2b6e5dNacbp9URPumxLqi5qRol/Vma2ingUNW80jpy7tIRUAXAWz/A5WKO1SX8KTy l8TZsW2p9/1bUKEi29q/c4ZWCYf0sh2KEaoY1IokBhCDP1J3pNs4O18tKtTfFzJ3/cR2 YmHnU5d+uQy+24/2zOTSj9JlZg4R7Kb4R8ZUpRJEiepwCJsnL8GVBr/yYh5lhjhYQl6Y dD1g== X-Gm-Message-State: AOJu0YxshMmwqusuaGAZG70U9pxSPl0DO1oqcoyx1kQvkSXe0rMJ/5x/ dau/X7GSZeb225mgAoZRv92mDDAV4+g4/Ra2RqCcZe22E3kKrvJ9xqiqfSJayCe0ivKpIAzYNMI LbPwG9D8= X-Gm-Gg: AeBDieuX9mEkJlQbdTC03tDZIXjNnaGRFX8TUYQfDVkdelFn6MVejObfeG+sX1I4v8O 8ODR6rkGfDrul7RdwMmOB6Eop0VGtvVHvUEbDuVqecl+VsSSkW7+O+UJVEAyghzk7EnjjuC2Yrx 7QE+8nifu0iG3F1M3f0fQkR+4o++wdDbmwRo+QryobwUrej2P0hKXdEC53DcyUb9bnM2rZW5NP/ MXcty2ZnZ6/evpbnMaWiDV6ERXxvbakQxwUPgeeqqDq9gk1FsfJXOa/HF1sCrC+a4fWtEx1QqUk HALF7rVXQ45FugUuKCt9T2g35U0URBCzb+vwkyc1Yzpti5JrwbLNm4P+Pq0lcln4cv1jo7xKp3K prcG0LD7vXMB35UXL28IrBmMqlkFPna0uSR3dedBP5/pWrGQMSl78Y/iV3y3V/mGRvGtsn+Tl2F rIm4THmcBVv9c4IeTNCfT3hxUTrNxAK+NH11wqHDQ6 X-Received: by 2002:a05:6a21:3285:b0:3a1:ed2a:1a4f with SMTP id adf61e73a8af0-3a3cf5ffc77mr648008637.16.1777508725334; Wed, 29 Apr 2026 17:25:25 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 41/47] target/arm: Implement LUTI4 (four registers, 8-bit) Date: Thu, 30 Apr 2026 10:20:40 +1000 Message-ID: <20260430002046.59739-42-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52d; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1777508846282154100 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 4b228b4f3b..535c1e4792 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1629,6 +1629,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 f0dc11bc8a..20ecdb0a9e 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 19:23:37 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=1777508823; cv=none; d=zohomail.com; s=zohoarc; b=cSAiM4Dr2dpCSC8oZ+h5Vl3M0nJK5hnJ8VEZ8NsCuqcGuZBJWh2rqYcNJ1tpd6R+JzKjO2bNyENqPjojtafkiSohFVl/vW3QY4+nIkuBwvc9vIUkCtOSm2s5A3YlJKusUwYkmjGqY4DK4dnRa53nWrHZbJaBtPMp4xqA+tu20iY= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508823; 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=X9otV7RXIEvbHUeeQ4WJRWv6e5TFMN1hZo1Db5zwx5vjRf4Wk887GzY0dya68iyizAwU+kXdyg+WWgR5EmZ4qsm4SpSNvNZ7VbW1KZPGjgFTwqu6Zele7CLYHgEN/HG4uEfh1clnT+K4lBBot7ytVwBHFLuh7vjmbaRT5VbAQGs= 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 1777508823584113.77289509133266; Wed, 29 Apr 2026 17:27:03 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFE2-0007Jm-N7; Wed, 29 Apr 2026 20:25:54 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFDi-0006S2-Jd for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:37 -0400 Received: from mail-pg1-x52b.google.com ([2607:f8b0:4864:20::52b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFDe-0007UB-Iq for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:33 -0400 Received: by mail-pg1-x52b.google.com with SMTP id 41be03b00d2f7-c7963df6f17so209069a12.0 for ; Wed, 29 Apr 2026 17:25:28 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fd64f21b4sm3204112a12.21.2026.04.29.17.25.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:25:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508727; x=1778113527; 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=ymhxajFXBKNnrhWlpyXiJWXkrQmq3eYvuhjIriBUUFq1DfqyMRelSxmGLFS1u+FvaO T3ZjsBl/PNxhhWhmCIWrwFpAna4VcxBaaia46uzsuXcR68IS+SISNDYezHoeGZI9X3st /Xe4CTkqrl6ZmX7wcpuiM9nj9hp7E54PJn7atXlGBbM43zfDTeDSm+wl8rbndwpzdExc E8WfUVJHcXw33fUZG1wH/HVy7N+6W9RLrdJTnlkHh2EQVU1PTRPOfxAPkJUBkPThZJs+ DRXqkETaryxzopuA9WxZ75HfUUJxCfR+OqtxgfmeuMBkTowlMI4PQuKxtfbBJqq643Y8 3lYQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508727; x=1778113527; 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=VwEDtu4sfCZzpGcelhJrbJ6FxWVQNnVKXC/B448MQLROtMu+VU4Ersg+xmGU4L8W5T /UKb1Yxmaeysg6efvIEWATvb6CRkdf4ICMl4K8sa9KlmAUAeUQr5BpQI+dBsmlw6I0EZ ZsgvTLFW/RdbgJcGTU6NM4KHP3Qr62qnCKgzWKtX8wbrvS/aVowpeMcdyAutfy3ba5Sv rd3Njt+xmvScqHrPy7+BTM07T5Do12Fma/bIX391lNeiGGJizwc06kz+5/Bt/kOwKkBG KPFt33xJRKrksQxKfbhy82+oHqtUvA/Ee6xZS4yR+yh8HnCT8e1aJ5QhMM24uIhxV2XC TVRA== X-Gm-Message-State: AOJu0Yxj5jUrfN9MJSvbUy/Vn6D5z+H0NJp47UB1RUupNJOzgT3OjX1h SkR4fVNPGkkTO70GHV5x0tvdvxqolK+KFNUtSRhPuimJAWnFFKgrxa3vx/+lPPxVsdrNmXpnqVT 9uPR+mf0= X-Gm-Gg: AeBDievlXQN6irpyc5nc/tpTq8cvwwUvwg5kSZXfm3g1k49Ra4SYtaJwkeL7Hybg8Gs sPfaqq3mWsIF9PQ6Nq3y6Q2G7ukmeNje6RGAlCMQM2XliPdWd2gOYkyX2c2ChnxkRsCNoTPnlMH 2fkKQcKUgJ6ZxbeO665UCj6Pcl3fys9b/6wwyOhV+gJwrEyXHTulTt5KMoIHFchR7LnwFALJYnQ k84Pkb8nKZTohhAPbaljwRL9gxiF/JnIjmJP7ZOoegT7avYoyZeIwTsw4cQorS+LD9TFXFyIoLP K0YOyg2ENyXXJOBC1GqTJtyaIbpzg+43FebknEnaGTPuvr4BYpZSvWvXaOQsbRHCzwTzat1PH4E LoxmDDftqyS6c8zQiaiqDixpCdJNeYHFs/jg5evY5RWlbLfCSe0IaFCoRRMnZT7JbHU/6q2iNpI 5QvC7SRZgiG6nLed9C0NiRDxTGhEYD2GjEkCmPtwzB X-Received: by 2002:a05:6a20:9143:b0:398:71e4:6287 with SMTP id adf61e73a8af0-3a3cf5654b3mr722895637.10.1777508727423; Wed, 29 Apr 2026 17:25:27 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 42/47] target/arm: Enable FEAT_SME_LUTv2 for -cpu max Date: Thu, 30 Apr 2026 10:20:41 +1000 Message-ID: <20260430002046.59739-43-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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::52b; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52b.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: 1777508851768154100 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 19:23:37 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=1777508851; cv=none; d=zohomail.com; s=zohoarc; b=ELHus/J60SYcRE3ZvEK7uxSwwKCMacIenevZ4hOjHhOQrzUGgsP5Z2cZA7huFWPVd4e9GiiyCQ8lmr5UqDCN2OkfTpm6neX+WLKroMJ7o0bndNHG8gspvQFhuc4JBMRMl2oX2Gk9YsGKWnDK/EVOJziG88zntp6xr5W18TmhDUI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508851; 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=wwuj7RFO6iW2sbU/01+pk0zCNXLlJYMOmYM21ng3kh4=; b=Ary8ZZoogloIzxHn8CTp4VYZcPDsbkEi/ErfFH8UI/iTYoF+6vAeKM1hEQjULBTVJPy88YGOWFBEKQKli7D1sHs4KDjsuyz7Jp6RjseVxETzZKqHH2q8m3VVd2TxjGPnMM66Ku74Gp1aAGhsceKEizoT+XUBRuC0MLR84uFh+nI= 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 1777508851462179.44066043901876; Wed, 29 Apr 2026 17:27:31 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFE3-0007S3-Gt; Wed, 29 Apr 2026 20:25: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 1wIFDm-0006UI-AO for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:40 -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 1wIFDg-0007UZ-Gc for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:35 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c70f91776fcso111892a12.0 for ; Wed, 29 Apr 2026 17:25:30 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fd64f21b4sm3204112a12.21.2026.04.29.17.25.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:25:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508730; x=1778113530; 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=wwuj7RFO6iW2sbU/01+pk0zCNXLlJYMOmYM21ng3kh4=; b=tfJ9SpDLZeWbs7Cl9fnKGWxyJ92K+gkbsDm2O+1pgDviWgtXTuhER9NxZtqABmQfUq 1RL5ejYAkt6PWiRIjrTJAus7GC6ucqvDsHYZsIcfcHu7ymq8efpgRPT9n1MG849x36lz pv80o+ILITZA7/xfY7SnTw7a/0ZgZg0UEynAYlRHlezSQwplEAZyBZbjZXf0yLmueGAy iWE+b34NRoUyhYTm5mVfCfGdOxEUjZZ5QBzktc00lq8Vn/LGsYWgNM8kQjBWjmlml5qv wQtwtv0vuCNskaqRkMQmZ2FzDWTkjh3Vjc28e4ULkhYux/nLUOSwDNemudkCM8At4Ecw k3GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508730; x=1778113530; 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=wwuj7RFO6iW2sbU/01+pk0zCNXLlJYMOmYM21ng3kh4=; b=siqnASLo3tdEL7wFHKgZqyvtIOb3j/qoFT6FeETgkZjP+cZOrgUipokRJdbdiByijH LefPCJKSk0Eo+KkHWxc/MQkcFYzi7m7Ic/ceCqEKEMJU9TcBg43P6wS5e1mJwSNYAbrC WEQVfB/vm2HPiNh0c6UBcXUKpBnWG5EueKcr6qCsXSzgJunckUFXo6RS6xOCYa1v55jR 8SVwwSgZHtFX+rAqeNQDI21j2tG7154V2SZPfRpTOtZDdrDaL/N3RA5oP0WhnNZr7Mgv irIqBbi7jOYwK41iA93BQQkOI/0ujWMFQrtuatsSG5xEEPJvHK3QtIpfpkj+x/dluqQo 6tEQ== X-Gm-Message-State: AOJu0Yxf+5C2UIta50yWbaBTEQadYl6JCrpHs/Jp1h5sXt6Vo9WxnDz8 /kZFACkdB1PBkHfxozxkA/2EnToJV1IDfLszhtbUzGtEkBQ+0hUTAszzIWdKBXXNy9Ob9JBShEt ZAH8kicc= X-Gm-Gg: AeBDietIfnLdpyWJWLuNFZfDhu4sOjJ1EG2oN8cLQ8KudUAwmsI5NGIq7ZmxJ4UBmon 8k/iBbc58wUD4cZem1O0xou0jUMLQ2dD8KxKu2lymsW7O2Z+61AuvKR82CwgGL2KL1y+rY969Lw jr5gZ4PPcCnKHgefOJZIjf13co/4b7Cvm7UX+hkgiKaSgRpTOINcTSAhIQohXN6AI8euOneDgYd d9tJNea9lbyypAttyTnwoxzJxgClIpEVkG8ZBjS/qFDrFVGUXbuR8yDfrmS+xkr5MAblX1MKsyF rEPgVnC/k6N/9YWVwiyuhLql63Zzb0OD4fc9C1DKLmLw4ejwktN4TtehDJQe3UTnCnHuT7iCrpy X3LFeVdmqfva6Jk8VMT+Q0uQ6tQMmCjuSt/Xv01TCGl0R0ZGlfZ0TIq/vNI3Kq6qbNe0Htpz54V 9lGp7SKbbTSyrLzITLms1QTwvBxmi/ZZjocQ9sIuKn X-Received: by 2002:a05:6a20:3d85:b0:3a2:d79c:415d with SMTP id adf61e73a8af0-3a3cf7c1c29mr719354637.30.1777508729658; Wed, 29 Apr 2026 17:25:29 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 43/47] target/arm: Implement FMLALB, FMLALT for AdvSIMD Date: Thu, 30 Apr 2026 10:20:42 +1000 Message-ID: <20260430002046.59739-44-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508852239158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++ target/arm/tcg/helper-fp8-defs.h | 3 + target/arm/tcg/fp8_helper.c | 105 +++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 16 +++++ target/arm/tcg/a64.decode | 8 +++ 5 files changed, 137 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 535c1e4792..db31ac6b6b 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1576,6 +1576,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 f0f03298d1..4825316b3b 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -848,3 +848,108 @@ void HELPER(sme2_fcvtn_bs)(void *vd, void *vn, CPUARM= State *env, uint32_t desc) =20 fp8_finish(env, &ctx); } + +static FloatParts64 unpack_fp8(uint8_t x, FPMRType type, float_status *s) +{ + switch (type) { + case OFP8_E5M2: + return float8_e5m2_unpack_canonical(x, s); + case OFP8_E4M3: + return float8_e4m3_unpack_canonical(x, s); + default: + return parts64_default_nan(s); + } +} + +static void f8muladd(FloatParts64 *a, const FloatParts64 *b, + const FloatParts64 *c, int scale, float_status *s) +{ + /* + * Because of default_nan_mode, NaNs need no special handling. + * We'll simply get the default NaN out at the end of the sequence. + */ + *a =3D parts64_mul(a, b, s); + *a =3D parts64_scalbn(a, scale, s); + *a =3D parts64_addsub(a, c, s, false); +} + +void HELPER(gvec_fmla_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + float_status stat =3D env->vfp.fp_status[FPST_A64]; + 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; + + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType fmt_n =3D FIELD_EX64(fpmr, FPMR, F8S1); + FPMRType fmt_m =3D FIELD_EX64(fpmr, FPMR, F8S2); + int scale =3D -((fpmr >> R_FPMR_LSCALE_SHIFT) & 0xf); + + set_flush_to_zero(0, &stat); + set_flush_inputs_to_zero(0, &stat); + set_default_nan_mode(true, &stat); + set_float_rounding_mode(FIELD_EX64(fpmr, FPMR, OSM) + ? float_round_nearest_even_max + : float_round_nearest_even, &stat); + + for (size_t i =3D 0; i < nelem; i++) { + FloatParts64 p0 =3D unpack_fp8(n[H1(2 * i + high)], fmt_n, &stat); + FloatParts64 p1 =3D unpack_fp8(m[H1(2 * i + high)], fmt_m, &stat); + FloatParts64 p2 =3D float16_unpack_canonical(d[H2(i)], &stat); + + f8muladd(&p0, &p1, &p2, scale, &stat); + d[H2(i)] =3D float16_round_pack_canonical(&p0, &stat); + } + + float_raise(get_float_exception_flags(&stat) + & ~float_flag_input_denormal_used, + &env->vfp.fp_status[FPST_A64]); + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmla_idx_hb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + float_status stat =3D env->vfp.fp_status[FPST_A64]; + 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; + + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType fmt_n =3D FIELD_EX64(fpmr, FPMR, F8S1); + FPMRType fmt_m =3D FIELD_EX64(fpmr, FPMR, F8S2); + int scale =3D -((fpmr >> R_FPMR_LSCALE_SHIFT) & 0xf); + + set_flush_to_zero(0, &stat); + set_flush_inputs_to_zero(0, &stat); + set_default_nan_mode(true, &stat); + set_float_rounding_mode(FIELD_EX64(fpmr, FPMR, OSM) + ? float_round_nearest_even_max + : float_round_nearest_even, &stat); + + for (size_t seg =3D 0; seg < nelem; seg +=3D 8) { + FloatParts64 p1 =3D unpack_fp8(m[H1(2 * seg + idx_m)], fmt_m, &sta= t); + + for (size_t j =3D 0; j < 8; j++) { + size_t i =3D seg + j; + FloatParts64 p0 =3D unpack_fp8(n[H1(2 * i + idx_n)], fmt_n, &s= tat); + FloatParts64 p2 =3D float16_unpack_canonical(d[H2(i)], &stat); + + f8muladd(&p0, &p1, &p2, scale, &stat); + d[H2(i)] =3D float16_round_pack_canonical(&p0, &stat); + } + } + + float_raise(get_float_exception_flags(&stat) + & ~float_flag_input_denormal_used, + &env->vfp.fp_status[FPST_A64]); + 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 19:23:37 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=1777508872; cv=none; d=zohomail.com; s=zohoarc; b=C8tX+gV4ubimUMLhbUcKyKk5wlYPNZKGt2AuXDKtb/qI7dHqSfCLBpPV36KXw7WSQQ0yzyZsE3jviMWGAhO9LurdPidCEAcxmSMkr/E02Nt2nUw5LChfowUuqWsyWyptEzeVEcBOJvQEjwlzxrWvJjCx8j0F9BO61cKV1DOlxWQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508872; 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=Egvrkp8neGq2B7wyhDnAd5c3Q0Mh02xDjeK027QYBw0=; b=ikRAw2gpWQTrgOYCCJ58fZzQQWMP9gx7HaQu/DSqf96Vg0Fdt1yLqf/RPnB1mJZmcimF+brvRTTP+fFoW5PkUI/8BP+vekvuRRcEuRYrX691E9dAVRG8VwroczDUvPmfdV37Y9AZlCwfXZ9Mtj16JrYkBwYib1tcql6hwL3epH0= 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 1777508872494475.34465705501304; Wed, 29 Apr 2026 17:27:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFE1-00074U-4v; Wed, 29 Apr 2026 20:25: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 1wIFDm-0006UC-84 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:39 -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 1wIFDi-0007V7-A0 for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:35 -0400 Received: by mail-pf1-x42f.google.com with SMTP id d2e1a72fcca58-82fb2d0c5d1so992915b3a.0 for ; Wed, 29 Apr 2026 17:25:32 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fd64f21b4sm3204112a12.21.2026.04.29.17.25.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:25:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508732; x=1778113532; 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=Egvrkp8neGq2B7wyhDnAd5c3Q0Mh02xDjeK027QYBw0=; b=kXSa6HVhnO3JAaSsTYVK9cuhudyZ231ajUzWcIDIyvqs5BnL0H0TSGYIT5vDeCUXof nGibS09v5MC8/l6LMPYLo5CxauN0MRYEd+3gtGSfxa+rV8IjuqL/KOo3PLLmtcyT3qbo qzwp46+meuHODyibRgNND1+f54o2lCk1Gm6Hx9JKl2X0JSx+cFCPnm4HRhlBCeZXDAJR 1Np5sQZRLv03pYEKDKgbFKNdO47x00eEMK/H4kPfsB5jkwticwjjKvV2ey2jTUfNK5il CL8XCkZhYyGaPYb7eDW8kvHYj4Vreypa2oxWS0IXDRr+7lFCuIBeDD6mLCctxFet0CDa xZFQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508732; x=1778113532; 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=Egvrkp8neGq2B7wyhDnAd5c3Q0Mh02xDjeK027QYBw0=; b=WexS7133bcqF6MQvjuC2OiK/G22BRr1skZG3pn5PL8O7qQA/yRe706gmBqD9aHksKJ nKqXWzHrKVeZDLCryTvQZ39OB0ZCjj0bwsouNmmHZOECr6zZXJn9HCyIS3+o2usb0m8I zk1PkaLThprObdg1eBrMHF+2wra+OmlC42D9YDGwqJvIPR49QYQKhIe9J8//Me5btoh2 45ljetxYhMfhwiWR70geoj5r0Iu+/lKhC3UdR7yh5jN+Jci4hZife+lCDItOmFCC1BzH lxp8aWbDGn0i344IoBGCogdN9/hA79R7Yp3bgbfR0a7+6JJIYRqzFzQetBGayJ7Vzb7B bKOQ== X-Gm-Message-State: AOJu0Yxki2YaJiiiL2kDYdjj0qHz07iD6gYXAa/i6f+Kf+S/VRoS2dQq w0XJl78IR5U5vCEmQ8Z2gEoSFyKtxOImz/JDwHC92A1kSLNL6AtrG8pCqoZjuBeIMohIUg7FEqE gTZYt40M= X-Gm-Gg: AeBDies6FzH+JmDridgnxnifYLMI8XRrfBlf2rZSdURSh3bYMGnrPdCrGQbtlaxP6Hn 7cuWShzwKxNxUQV17tstNEuc40q/oTBgFtrbsGeq868MBlE7cmvxTyLeCo86yV/A8GXPPXZDCif T++LysICqgE9R3Y9VKHbopH4Sb1DwczfqGo26cKJqFboa7087ORJ3ONvifXb3pBO6yJEZD4EyF9 4P+VhSHf3NUurOtNNJphJGT+TlC38ksT9GUEbDQO9DqlMaQ+yySJX/FmHE4UyVGjbgLwHoydfbh EUh3xrZKfIfVNWMn+wiMvmguqYgYIoq4kQQBxv3f8jxS9k7+rdxPCiEk7bkok/Xt7bL3t3PzkSi 2J2DVnGqrhFl3hsV2+5deVrfKS5tHrD559rpXxdOnDy3msy5z2Rrf7eAR0E1Yq7I5z3QpDeRRTm +SisgQ0wGAG5n3t2KhPgB1htad8GpPjiWjwGBX7+6g X-Received: by 2002:a05:6a20:3949:b0:3a3:21db:8ecb with SMTP id adf61e73a8af0-3a3d1cf2c02mr310826637.14.1777508731696; Wed, 29 Apr 2026 17:25:31 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 44/47] target/arm: Implement FMLALB, FMLALT (FP8 to FP16) for SVE Date: Thu, 30 Apr 2026 10:20:43 +1000 Message-ID: <20260430002046.59739-45-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508874332158500 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 db31ac6b6b..1cefb21b0e 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1531,6 +1531,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 a11ea08eb3..e6c8e8fec3 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 19:23:37 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 1777508886340416.86680076632774; Wed, 29 Apr 2026 17:28:06 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFEL-00089j-UR; Wed, 29 Apr 2026 20:26:14 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFDo-0006V4-Fx for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:41 -0400 Received: from mail-pj1-x102b.google.com ([2607:f8b0:4864:20::102b]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wIFDk-0007Xd-5M for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:39 -0400 Received: by mail-pj1-x102b.google.com with SMTP id 98e67ed59e1d1-35fb16e56efso180809a91.2 for ; Wed, 29 Apr 2026 17:25:34 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fd64f21b4sm3204112a12.21.2026.04.29.17.25.32 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:25:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508734; x=1778113534; 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=sPx4OYP0T6C/6FxkTyH0Xnk5PleHFSWN0X4r8PZjzLU=; b=kkVOIYYkF58buSDimG72C4WMQpluVMgWIPDPlbF1OzcV+/SR7bY6OhLyTvd3i6i+wU 0I2l6yVsacDUu9OlQ9bu+zZeQ9gxfiaiG52zXVNEWlJjs5oPTbhqEp0/lL7djjv/6Wjj 8OxSMGEFkq9dGcbJdXnqz7BaQCwXFVG4I7mCR2Xkave6420RJU3pp3UQIMj6u5ttVLLz F6hfjhrqiDmsKn/wWYHl+HQMmPwZWKdMSZksxuUYKaK5F7S5uD61yOLjO97xX//sZ4Tl H1ZfL3B0AZ3AwIERg+D6yfyamEqdcVoWpzXRUWw9Ycc3BAqds2Xlwhqn3t8CFGQkOAEZ j8Eg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508734; x=1778113534; 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=sPx4OYP0T6C/6FxkTyH0Xnk5PleHFSWN0X4r8PZjzLU=; b=mKDu4Ht+VU3TD3QRUuOn5h1xpy09Vxh6BuULFahAUGvKHDIt/8gT4GyBgdyc7nNXjo ExEPTeJo/zL1ryXr5aiFalIuB/17+qCjOYGmdqNT+IM0wLscJxOROR2VwGiE4QZZBUlK 3AujCjYriCgME2l8FIu43j5YZDHWy5aAihOppO3erFM6uVcZe03at3+Ylp5/NhowGKPW 8J8KJ7ovu0bK8FIaxRbAdpmHYGrrjmg3UZSo/mpcectUHEyLUOpNCCv0lEcPmB72sWTL M/jGUZWqRIgQwUUEtLoya8hLF75MCNJAc9aaJLiF3TRhS2ndFzqxrNAqgAX/X2Ue//Kb aAUg== X-Gm-Message-State: AOJu0YwNrBqCG4pcxR4UE6PRbzXfr1XoRwG6E4VhJKLeVIMcdfQ3bwcf 1X+563ZQs9LObwPtQ4JNAkkROEVz0HpXmS06mNuNVf4oLFmQfW7CBaeaJtG90tMIbZoT/7XPtTR z4CO4LJ8= X-Gm-Gg: AeBDievbTk45eWk/U+c8LgqKXpVuWMek65v6UFRKu1YmOizJqaYVz0JpQkGKc2+1Smd 3ZseAENTXpKdVfof4jrQ8YGzgW59umZrtTD2f6EPHRl1ynS9OForrjffJzeEZgo+pBWs72h/4uQ /kqdYRN5siOPvi7JTtOj6S4wrlsbmgQkwAB/McvBSMZbU7yKb+mHybpw1bGvqBfckxL48J0uqor mTmWaxfIpFGMcxxvHGCpjzNKxxEBPLkZf6IDmb2jxBEi4+UtG+movMwoLhtaD4aqDJoGu+yxpZs QGo2C5O3cI1ykpgpMKl7T9Af41sOfDAjidhFTb25hnDBpDyN789DzA6Z4VJuuMIO10SdafCcq2C 1TD7SXOt310/5nXP1DFOOQHtITYLjdrZ1s3/SXnrWo+S217M78qRx0BMarBNZo09tG+KPnOZiXf YQLxtHc2YNrhN4Ug73uapEy8mxMCBidE24ONKvMpFm X-Received: by 2002:a05:6a20:2585:b0:398:9d1e:1c6 with SMTP id adf61e73a8af0-3a3cf129ab6mr761850637.0.1777508733669; Wed, 29 Apr 2026 17:25:33 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 45/47] target/arm: Implement FMLALL{BB, BT, TB, TT} for AdvSIMD Date: Thu, 30 Apr 2026 10:20:44 +1000 Message-ID: <20260430002046.59739-46-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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::102b; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102b.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZM-MESSAGEID: 1777508888833154100 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 | 81 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-a64.c | 3 ++ target/arm/tcg/a64.decode | 7 +++ 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 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 4825316b3b..79d66e2604 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -953,3 +953,84 @@ void HELPER(gvec_fmla_idx_hb)(void *vd, void *vn, void= *vm, &env->vfp.fp_status[FPST_A64]); clear_tail(vd, oprsz, simd_maxsz(desc)); } + +void HELPER(gvec_fmla_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + float_status stat =3D env->vfp.fp_status[FPST_A64]; + 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; + + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType fmt_n =3D FIELD_EX64(fpmr, FPMR, F8S1); + FPMRType fmt_m =3D FIELD_EX64(fpmr, FPMR, F8S2); + int scale =3D -FIELD_EX64(fpmr, FPMR, LSCALE); + + set_flush_to_zero(0, &stat); + set_flush_inputs_to_zero(0, &stat); + set_default_nan_mode(true, &stat); + set_float_rounding_mode(FIELD_EX64(fpmr, FPMR, OSM) + ? float_round_nearest_even_max + : float_round_nearest_even, &stat); + + for (size_t i =3D 0; i < nelem; i++) { + FloatParts64 p0 =3D unpack_fp8(n[H1(4 * i + idx)], fmt_n, &stat); + FloatParts64 p1 =3D unpack_fp8(m[H1(4 * i + idx)], fmt_m, &stat); + FloatParts64 p2 =3D float32_unpack_canonical(d[H4(i)], &stat); + + f8muladd(&p0, &p1, &p2, scale, &stat); + d[H4(i)] =3D float32_round_pack_canonical(&p0, &stat); + } + + float_raise(get_float_exception_flags(&stat) + & ~float_flag_input_denormal_used, + &env->vfp.fp_status[FPST_A64]); + clear_tail(vd, oprsz, simd_maxsz(desc)); +} + +void HELPER(gvec_fmla_idx_sb)(void *vd, void *vn, void *vm, + CPUARMState *env, uint32_t desc) +{ + float_status stat =3D env->vfp.fp_status[FPST_A64]; + 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; + + uint64_t fpmr =3D env->vfp.fpmr; + FPMRType fmt_n =3D FIELD_EX64(fpmr, FPMR, F8S1); + FPMRType fmt_m =3D FIELD_EX64(fpmr, FPMR, F8S2); + int scale =3D -FIELD_EX64(fpmr, FPMR, LSCALE); + + set_flush_to_zero(0, &stat); + set_flush_inputs_to_zero(0, &stat); + set_default_nan_mode(true, &stat); + set_float_rounding_mode(FIELD_EX64(fpmr, FPMR, OSM) + ? float_round_nearest_even_max + : float_round_nearest_even, &stat); + + for (size_t seg =3D 0; seg < nelem; seg +=3D 4) { + FloatParts64 p1 =3D unpack_fp8(m[H1(4 * seg + idx_m)], fmt_m, &sta= t); + + for (size_t j =3D 0; j < 4; j++) { + size_t i =3D seg + j; + FloatParts64 p0 =3D unpack_fp8(n[H1(4 * i + idx_n)], fmt_n, &s= tat); + FloatParts64 p2 =3D float32_unpack_canonical(d[H4(i)], &stat); + + f8muladd(&p0, &p1, &p2, scale, &stat); + d[H4(i)] =3D float32_round_pack_canonical(&p0, &stat); + } + } + + float_raise(get_float_exception_flags(&stat) + & ~float_flag_input_denormal_used, + &env->vfp.fp_status[FPST_A64]); + 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 19:23:37 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=1777508789; cv=none; d=zohomail.com; s=zohoarc; b=IQ/Nu179O4hzvjnERSkCf73pYPX55n1O9gRYXKTYkDjmxFM4TtimkKJIClxXwftoIyiTlr8OXVd1k5xqglRlrxhVsEQXfPBRxa/gebd85J8PdvsqtbCP2HTJS62KVvAOa/T39ZWSLe/7cJooPmimOaVbe00Ym8kwxpS3TQu9XeI= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508789; 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=Z4jpUR3TlL8yGAheKTyKt8861n/irmD9eb1yDY+JyNk=; b=Is2i8O9IkwBx4d0QVxCMuEx/djzTR0Q2SymIARTUSPo74mnTrOt8aaBuvFQJ0ZzBboHcptIJwY95LLXpU2QB+xWvqd6ahJ0kYqAO33RoBvMZ2b2hRWlbxf1LeQygZOORyFbqJZ6rL5WwliYKrVa8rI9fZT+SwabFYkZZwzGHcm0= 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 177750878913638.35219083988318; Wed, 29 Apr 2026 17:26:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFEJ-0007y9-E1; Wed, 29 Apr 2026 20:26:13 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wIFDo-0006V5-Iz for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:41 -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 1wIFDm-0007Yv-1J for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:40 -0400 Received: by mail-pf1-x431.google.com with SMTP id d2e1a72fcca58-82f9fdfc965so174910b3a.1 for ; Wed, 29 Apr 2026 17:25:37 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fd64f21b4sm3204112a12.21.2026.04.29.17.25.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:25:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508736; x=1778113536; 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=Z4jpUR3TlL8yGAheKTyKt8861n/irmD9eb1yDY+JyNk=; b=tCVcN01YXE1Eqsvu5uewt07Qe/rHOuGA2wEMFWb69gedTP6TnImEpRmTjh1dx/7Mmx +DxJXQjJAUSONN5pijgUPtAiokpNXWbI/M+pwjujTC0Hriou+kza6hmlCg8BrTaU42vl V5iX3L6KTciXDVqtsRFmmmVZaea88sa5FR0YLOQqH0cW09m0BqSzTPeO+HofjkIBZkFp /xsVRAdDOgEk2Oqm+QWgQyDtbUbYYy//1Atb96nxJtEJNQfWb2Aq9qJKbUoBwgy/BCoW O+AqN6TRwwP+qKpOSjEhhkDDOGXGPLoc6Y7pADCVUdKxIL5qSbM8cM8EYcZKUFiq4ev4 FuDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508736; x=1778113536; 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=Z4jpUR3TlL8yGAheKTyKt8861n/irmD9eb1yDY+JyNk=; b=LCh/d08ajFuAeQXMfc2WZ0JS6vVaY/JJ1SdcVBYns0LZ2I2K31fDPBhRQJHGV43KFb BTr6yofQwBWcVYEZpexEeGFV5PrbbShanaR5C8x0W1Y03BH1dNNA7ZtyS/Q6BbLY9Ujm CLu3qzqQnJ7jG3tT0sL9gt2R0BepOu0YgftsCBfvRSiARrQVqLX1/ZQUZlWndqtqFHDY gOKwBFW4wzdWLPpzfnshIT0ekkszC2JR91jvlj5KsXKjL+35ane+78cy+NRhftZwQCuz 0MKV9E0QSyNBPvvrJnnPxuhft4utZYJALy8kBTMgvlBBpPzmqr8crqIhMifOOPU7fgrW JCow== X-Gm-Message-State: AOJu0YyhthXIH6djygqvOc8UvTPu/S8FLmJxC9v/IuUil2IBPQ6FnfoS fkb3um9gJhHEhcL+B4S44I86BDPiKNJQ5eICdN0VKLq4kJRainJxMkFA3hlA9yRQW7ExOlSfnyr SH1hEa6s= X-Gm-Gg: AeBDiesq+aRjZ7alvkQNti1HKTNAbK2CimYsO0aGcQLo+NLlMqr5Emz7t5Vqvye+MxV Xy+QpNVddM3IktNce+MBo0lvJ/5wU4B/3AL8mJq3I7Y0kqGIGIbai4IM6kP0eu3w/gd2FB1U9e3 WuwnUdoDEu4zFpojsEGyzUAmap+xA03iIzpj8TvWdLTv/y3MdhGw4kVYzdIpB8BtdvFVyGMVB7e sEoZXFKwDjtxjVPhHrWy114TSt/xaYl2tlb0cXfZinPq9nIJ3cQwm+kLzxQogUK6WLbIOYJRN76 CnRtVGoPXlC727Ow7hTl6BBbB/nNO4x1a2T56XFRkdjMlPLKGu071vTJWG7hyLgVsgwcO7ULabm EMgn4tX/ceOmh62FBpHHG4UqH2ZZImlvhHQpDQXbsS+ysCDD++u7FxOIJopIoj6KfjtTm9m9rwB k5ntA89eOQjXz4MZnkySjYsw7g2nT4HxoB5OW9dbzD X-Received: by 2002:a05:6a20:728f:b0:3a2:d629:16a2 with SMTP id adf61e73a8af0-3a3cf3fdd3cmr649260637.10.1777508736074; Wed, 29 Apr 2026 17:25:36 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 46/47] target/arm: Implement FMLALL{BB,BT,TB,TT} for SVE Date: Thu, 30 Apr 2026 10:20:45 +1000 Message-ID: <20260430002046.59739-47-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508791428154100 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 e6c8e8fec3..c93d8db71c 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 19:23:37 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=1777508788; cv=none; d=zohomail.com; s=zohoarc; b=GDgle1KEKWb015aQBXBijYVu++lFZFXuPuJGX9bYE8YBvePPRys8sFxb3ekPOHaJVdgkrbwVPDfGriSk0upuit59tcvbZqhN0z36gqTpYjNIov1hwizUMlvcg29qojb+fWtffiSaDGmEvwN4DKxNHUOnQffCrHFPmCadBr1FQWg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1777508788; 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=OmQJI5UoNKG/xFAYmpGTnfDl+5aYtL8XsNpDrin0KpiRtaq4hWVM3kQ3aQdMEsocShpMJ1n8Om3OPpVkg6wnBxKoUToxjmDr64uVaksCTfDhresgV+nJ7HGe9py4hBZD/bo/wqHX5WaQTBhk9+Oy6O/IzXM1mkbevx0QfdXyxCQ= 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 1777508788315266.3785312154745; Wed, 29 Apr 2026 17:26:28 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wIFE5-0007ce-0z; Wed, 29 Apr 2026 20:25: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 1wIFDq-0006Yk-5y for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:45 -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 1wIFDo-0007bE-7P for qemu-devel@nongnu.org; Wed, 29 Apr 2026 20:25:41 -0400 Received: by mail-pg1-x52f.google.com with SMTP id 41be03b00d2f7-c6e2355739dso101817a12.2 for ; Wed, 29 Apr 2026 17:25:39 -0700 (PDT) Received: from stoup.. ([180.233.125.15]) by smtp.gmail.com with ESMTPSA id 41be03b00d2f7-c7fd64f21b4sm3204112a12.21.2026.04.29.17.25.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 29 Apr 2026 17:25:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1777508738; x=1778113538; 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=VmN5W11uZ3xuQWiviKk1osvGupP/EuFWqGHrjv4OFttrrFy4mzzO9yfJ4TDr3NliH5 a3c9/3kMQXldLWQ1AG4ZmTwwVWMnAQOfGzLKX7QcjNthD+tw59kNjNxcXVwb7Z5o48JV 2ZezQx6A4VaVbtBRAfyZhqa+A2PGeVEz9V+YNQsKlZ+EeMjSipeyQTBUWRCChfsWceKn wS8CkP12QaWg5QQ0LzqPtygYqdI9C/R6pVh64XG2uS46q+IsB3tuSKpZt6RAWUolJc49 jWheq7onNkLuhQhpvRQkOOpPRpLpeht5XCSvaRFwnzBxtaPpr2xkdHcRtsu4jpjILtRR 835w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1777508738; x=1778113538; 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=USSsTdYUhdQc7YWLexBkkY+XkrRi24yL95ec0NrZLofMOdtUgAVv+2i9DoTV5Uj58b A5tuqVYPEuglk2G823KRPfZq+fnvOE1Bfuuk7HgneMjGGRhYOaL8MuJAUYxxK8tpLwJ3 wGrevC/AVQf6AeIbf+3bytUlPawgcEzhXpPcAQ9QEWzlyFjnrUBHi8J4fh/RN/X6ZkUX jrlp6In0xQxsvPBZUPJ/zQQwmTNeDGnGrHavUTpLsxxJPXwnYhXRFumdSmdV5hZDRMHA wuN8ezzL6Dd356dNrrKaEFpHBLIutuEfX/PS7S09l5UZNm/aikVzxaMYcUgCOhM3Wl3p da+g== X-Gm-Message-State: AOJu0YyOG+LBXn53qTOu3UtZvYQXfn4yVo0lN/xz33TD0Hc3OX2OvueB 67BRF0np6tlYT/ljEUTvOvWKGctHkKn4lVtNWu3qyfZU1O/SplcqkO7zXcjLVFsmQWFM1h8i+Y9 QDxq4Rvs= X-Gm-Gg: AeBDies6+q2pnFW4hKMaupAbrDFOG6eBgvqL9+o71PQGsQGhKlEgzV5a7rkKz1Et4Sk bJms6Yi0RzD+/zC9ljSVvEtRL94HaO78EZK6yCIJXI1THdhnlC3d3Qd0rfzoiUEZXmk6gsUGx5E nWfJ1ONzBhY4dna5TQ24eRIDz1lwFA/xWVFniSKmEEwTnIVvWPR0czJwxBSEB1MFI+k2uIGZCrp 4hnxpqAXoVaaLRtGCnKgur4Ypgh8/b1urS2gJp6yBCcYRTAHJU81rzPyycYAZujeh3s1GBmdufm sEL0ey2iqunRsz2nI9APkMWxAiezaTkovaR1DTfO+c9xRH8RypgyeNzP+2KDzVOblqvA/AG9zAM 0gTOKqICLI2+G2c/be3I0UpY+7SnsX6Yu32XsgSQoW1C96WPRTu1a5fk1zaYFRNg2F9S9U8vX1I cLuFmy3SmKi/P4PTrzWwLjf0s7zsrDhfumelmXrds2 X-Received: by 2002:a05:6a20:e212:b0:3a3:327:c5c8 with SMTP id adf61e73a8af0-3a3cf1059f6mr778773637.0.1777508738169; Wed, 29 Apr 2026 17:25:38 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH v3 47/47] target/arm: Enable FEAT_FP8FMA, FEAT_SSVE_FP8FMA for -cpu max Date: Thu, 30 Apr 2026 10:20:46 +1000 Message-ID: <20260430002046.59739-48-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260430002046.59739-1-richard.henderson@linaro.org> References: <20260430002046.59739-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: 1777508789440154100 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