From nobody Sat Jul 25 20:47:28 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=1783983849; cv=none; d=zohomail.com; s=zohoarc; b=G/f4WRfFp3Ddy2h7fM9PUA7GFNoazAsryBF1bC+TTf5TQuggJRydHZmY/TvZ2Y6KzuOiDj4cJkjdAXIS8AJ7L156+RN4PFdOuAgKkZjwYTCIPAWMezUxOlyRh9Gy1M4jlwZN8aAEBFujifmmLvGVF/GjqDI4F3ip2sAh68x5dhw= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783983849; 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=oA0mwBBBDpOEpWGjeDqrqTBzFmtmLxWzsZ6rx392Upw=; b=MPxbNt+VF/cf4UwZN9aj/yQHvDAABcVyvGL8+lox62a6WXYcmBqtlOUbM7QpvJ5o/HQfDWsCM/EBoo3YZsXrLzlU2rYHD2rCZ2ZEcQor1peGuuO9YWvrhYfkqBlazEuXU0DYhouQvPWPyuCJF2Ui9nkQcrmO+aUkhFk8FiaFhlk= 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 1783983849342429.8213869756121; Mon, 13 Jul 2026 16:04:09 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjPfo-00064n-5C; Mon, 13 Jul 2026 19:02:52 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjPfn-00064D-5j for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:51 -0400 Received: from mail-pl1-x636.google.com ([2607:f8b0:4864:20::636]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wjPfk-0005ly-2m for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:50 -0400 Received: by mail-pl1-x636.google.com with SMTP id d9443c01a7336-2cab973140bso41749975ad.3 for ; Mon, 13 Jul 2026 16:02:47 -0700 (PDT) Received: from stoup.. ([71.212.146.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bf8e9csm106902965ad.24.2026.07.13.16.02.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 16:02:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783983766; x=1784588566; 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:content-type; bh=oA0mwBBBDpOEpWGjeDqrqTBzFmtmLxWzsZ6rx392Upw=; b=vwQeN/bllP10qVpsRyZbWyb+bv/gIBjIhlzjpzhRxGx/ZMlj3VhqZzGXqiWDKqIji/ fTE3bNeeKcijoN0M6pxIBvp/rYzID4usWxP4AROOA4bU1fXBSWn15Ztyb764TwYOK4MQ jHpVTDNIkYR6ypmGM8cxYky5grZxcq51aJ+B7P8dRYd812+4mtFoFuQWOKfyHkNShaCE Qye7OVtRD3KoWjItxlJfhlS0V1hiQ1LwXpbjGvNtwVIvm8idGAGMldz8/d6A4GG9YzPP ukOq1QjB7WesBTRO0JBb/5FGi/q+1EXYJ3Mx7RPCjBHrBnJBrZH+551tGpO1wKFmBTBG +c7A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783983766; x=1784588566; 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:content-type; bh=oA0mwBBBDpOEpWGjeDqrqTBzFmtmLxWzsZ6rx392Upw=; b=qSCzeIh078aUQ8wyyPOo7zdlk/HFq2j6gt23zoqbbTThYimclACGovInuAL8s6oiQ0 s9Ip26FrmlGlhJfbkoBEZ6f7p1G2YDbaMmoG4+K0U4CzOT508uvkgPOYnz+IkkYJfsMg iA2FFYyxu+hMEHZ36fJmogMidom3tMAkc84AOAkgmxDhv77CcdGX5N5MmK+FRx0ovF0L HfTuxsnR5f4cRmmxbFYcCP+gtu10+8KIQ0dyI6vDFIRpHcyW4uHRLx0oEfaW+aRcK98B oThkK14MavGmvilRicinSAC4t4hS89XHJFITh3lXwwwFKAKIxl+xmxZXnncAeP7yKd/b 6kMA== X-Gm-Message-State: AOJu0YwV7xMAIf6C+u9pWthNzS0YfusYO4nEx1SS4h5nV0Iq354vyBJx xeiVxQq1rIjaYyt1wqVsoLQRl40fLkxagrX3VYgPb7/LqMMogE+abmKviy3l2CopU4Nx09WMxi1 unuyE X-Gm-Gg: AfdE7cn1iBnsPcM+Efv4ncEoGKEMISmEQ4PRvwLrFN693YKo89FPljuZNVtWLHqZF0U qIdgVhzCVmJwuUlY71k8ghUCO1mZ+E5oOqyeLtuXlYaT8nOSnT7ALRnlb1IHlJFzclVH4AVs0jX 3MeLcC0LQa7q8HEhLB2+2Li9/xFpcYdRonsh/37jNPO+AU6F1JMQ6RpApdfZymvRopOHlPGDIpq +xy+sdsbutTIRvfhDaqIEruWo8qbeKGRj/qmO7XHKmiczHsv/+HfI50b/Xs3SqifEk//Y8+TYwV ujqXVkddj0o3WCYyEDORN2nbSvTt9wONeezWwSP50kMO+8MaW/U7WSRpowkE5/PqnTZexJObnu+ JGL0xwwcwqRgfRUpx7OW53E017gy+X1WtxJF/Bq0gxg1X6UbGM73gdCKu1PIdGBtPdGRFkQ29gQ w3SgzX9pCpmAp//ZRr3A== X-Received: by 2002:a17:902:ef0a:b0:2cc:f4d4:299f with SMTP id d9443c01a7336-2ce9ee16c6bmr105232375ad.27.1783983766314; Mon, 13 Jul 2026 16:02:46 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 01/10] target/arm: Implement FTMOPA (non-widening, FP32) Date: Mon, 13 Jul 2026 16:02:35 -0700 Message-ID: <20260713230244.70174-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713230244.70174-1-richard.henderson@linaro.org> References: <20260713230244.70174-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::636; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x636.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783983851360158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-sme-defs.h | 2 ++ target/arm/tcg/sme_helper.c | 49 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 26 +++++++++++++++++ target/arm/tcg/sme.decode | 10 +++++++ 5 files changed, 92 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index fb5ed25ad0..6370c03e2a 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1590,6 +1590,11 @@ static inline bool isar_feature_aa64_sme_mop4(const = ARMISARegisters *id) return FIELD_EX64_IDREG(id, ID_AA64SMFR0, SMOP4); } =20 +static inline bool isar_feature_aa64_sme_tmop(const ARMISARegisters *id) +{ + return FIELD_EX64_IDREG(id, ID_AA64SMFR0, STMOP); +} + static inline bool isar_feature_aa64_ssve_aes(const ARMISARegisters *id) { return FIELD_EX64_IDREG(id, ID_AA64SMFR0, AES); diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 7fc7129e54..8107eb40af 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -404,3 +404,5 @@ DEF_HELPER_FLAGS_4(sme_usmop4a_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_usmop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_usmop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_usmop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) + +DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 23bb816b6a..571b0add34 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2636,6 +2636,49 @@ void sme_mop4(void *vza, void *vzn, void *vzm, void = *fn_opaque, } } =20 +/* + * Sparse outer product, non-widening. ESZ in {16, 32}. + */ +static void sme_tmop(void *vza, void *vzn, void *vzm, uint64_t *zk, + void *fn_opaque, uint32_t desc, MemOp esz, + void (*fn)(void *, void *, void *, void *)) +{ + intptr_t oprsz =3D simd_maxsz(desc); + intptr_t index =3D simd_data(desc); + intptr_t esize =3D 1 << esz; + intptr_t host_adj =3D HOST_BIG_ENDIAN ? 8 - esize : 0; + /* Base in bits for op3[index*:csize], csize =3D (VL * 2) / esize. */ + intptr_t ctrl_base =3D index * oprsz * 2; + /* Create a zero for use with the largest esz. */ + uint32_t zero =3D 0; + + for (intptr_t row =3D 0; row < oprsz; row +=3D esize) { + void *vza_row =3D vza + tile_vslice_offset(row); + + for (intptr_t col =3D 0; col < oprsz; col +=3D esize) { + void *e2 =3D vzm + (col ^ host_adj); + void *e3 =3D vza_row + (col ^ host_adj); + + /* + * Two control bits select one element: + * Zn[row], if [0] is set, + * Zn+1[row], if [1] is set, + * 0, otherwise. + * Compute the address of that element. + */ + void *e1 =3D &zero; + uint64_t this_ctrl =3D extractn(zk, (ctrl_base + 2 * col) >> e= sz, 2); + if (this_ctrl) { + e1 =3D vzn + (row ^ host_adj); + if (!(this_ctrl & 1)) { + e1 +=3D sizeof(ARMVectorReg); + } + } + fn(e3, e1, e2, fn_opaque); + } + } +} + static void inner_fmop4a_hh(void *vd, void *vn, void *vm, void *vinfo) { float16 *d =3D vd, *n =3D vn, *m =3D vm; @@ -2692,6 +2735,12 @@ void HELPER(sme_fmop4a_ss)(void *vza, void *vzn, voi= d *vzm, sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float32), inner_fmop4a_ss); } =20 +void HELPER(sme_ftmopa_ss)(void *vza, void *vzn, void *vzm, void *vzk, + float_status *fpst, uint32_t desc) +{ + sme_tmop(vza, vzn, vzm, vzk, fpst, desc, MO_32, inner_fmop4a_ss); +} + static void inner_fmop4s_ss(void *vd, void *vn, void *vm, void *vinfo) { float32 *d =3D vd, *n =3D vn, *m =3D vm; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index dcc4690fba..36a0b00089 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -31,6 +31,12 @@ * Include the generated decoder. */ =20 +static int expand_tmop_zk(DisasContext *s, int x) +{ + /* Pseudocode for 1:K:1:zk. */ + return 0b10100 | ((x & 4) << 1) | (x & 3); +} + #include "decode-sme.c.inc" =20 static bool sme2_zt0_enabled_check(DisasContext *s) @@ -2132,3 +2138,23 @@ TRANS_FEAT(USMOP4_sb, aa64_sme_mop4, do_mop4_int, a,= MO_32, a->s ? gen_helper_sme_usmop4s_sb : gen_helper_sme_usmop4a_sb) TRANS_FEAT(USMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64, a->s ? gen_helper_sme_usmop4s_dh : gen_helper_sme_usmop4a_dh) + +static bool do_tmop_fp(DisasContext *s, arg_tmop *a, MemOp esz, + int e_fpst, gen_helper_gvec_4_ptr *fn) +{ + if (sme_smza_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + uint32_t desc =3D simd_desc(svl, svl, a->idx); + TCGv_ptr za =3D get_tile(s, esz, a->zad); + TCGv_ptr zn =3D vec_full_reg_ptr(s, a->zn); + TCGv_ptr zm =3D vec_full_reg_ptr(s, a->zm); + TCGv_ptr zk =3D vec_full_reg_ptr(s, a->zm); + TCGv_ptr fpst =3D (e_fpst >=3D 0 ? fpstatus_ptr(e_fpst) : tcg_env); + + fn(za, zn, zm, zk, fpst, tcg_constant_i32(desc)); + } + return true; +} + +TRANS_FEAT(FTMOPA_ss, aa64_sme_tmop, do_tmop_fp, + a, MO_32, FPST_ZA, gen_helper_sme_ftmopa_ss) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 53e7e67feb..0250177d0d 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1131,3 +1131,13 @@ UMOP4_dh 1010 0001 111. ...0 0000 00.. ..0. 1= ... @mop4_o3 =20 USMOP4_sb 1000 0001 000. ...0 1000 00.. ..0. 00.. @mop4_o2 USMOP4_dh 1010 0001 110. ...0 0000 00.. ..0. 1... @mop4_o3 + +# SME TMOP Sparse outer products + +&tmop zad zn zm zk idx +%tmop_zk 10:3 !function=3Dexpand_tmop_zk + +@tmop_o2 .... .... ... zm:5 ... ... .... idx:2 .. zad:2 \ + &tmop zn=3D%zn_ax2 zk=3D%tmop_zk + +FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 00 .. @tmop_o2 --=20 2.43.0 From nobody Sat Jul 25 20:47:28 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=1783983859; cv=none; d=zohomail.com; s=zohoarc; b=I2R4+fIqa76vtfLGjcI2gQeOXfwMczTNL6lAkVQ+F6rckKJZn1x8GBUO18qV1ByAOBXcTuru5yqNNuj1a1Cp9HvTJ8ufOP1TY55ovDQ/NZPJKbed3wIpnz6v2SMrzgpYA4EZsNX96huTAC13QgVe01e3emi1uRaQn1Bd/XMoD34= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783983859; 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=KTzWDudorFUSc6264taLnl6rTnQdRME8Qf8ZWZSVL4w=; b=Ys+zMyokC5V1UXk415fQRKAeHN4CMA++7qRSJu18G5g02FM7dV7zMt8e5AYcrnAJzru3NWG/k2o+EblwvnhzSV0gBrQ91Kniya4sIGXkx5KlDntPxvjFMr03Hbou+mVUGTw9o8AjMcoNpHvgDqm/rrGc5fUpO8q++N17e+3zIKg= 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 1783983858975330.7554946264054; Mon, 13 Jul 2026 16:04:18 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjPfp-000668-CP; Mon, 13 Jul 2026 19:02: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 1wjPfn-000649-25 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:51 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wjPfk-0005m5-MI for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:50 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2caced6038eso5107755ad.0 for ; Mon, 13 Jul 2026 16:02:48 -0700 (PDT) Received: from stoup.. ([71.212.146.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bf8e9csm106902965ad.24.2026.07.13.16.02.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 16:02:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783983767; x=1784588567; 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:content-type; bh=KTzWDudorFUSc6264taLnl6rTnQdRME8Qf8ZWZSVL4w=; b=Y+IiIbziugAEP+x4wthAosnoweUeZOergOUe3RV3HgjlK805cNROyB31QneugnhBnp vSB8eZgsctClTeM5kmfoiS0GkRI78tNewEaFQ9x+n3X1VqZ1mu7TYmovUFcyOpAVTUdz PWCWq5bZRQEA16J3kKKh7/mJyqpMDAd5+W9fO6D+tu79aNM9djZbJc/IZ9OVqqEmIKHT n++Dpbqrgh9sH2gDMlUyMVHx1wVVviOQoL1Zy58yiklEy9b2xosCKH2Vu6R93GZ7TAdZ /9UDG0p8bWtSksoWZz6LZRvYszI3mAjxV7EbwIJohKgNiAN+sivK6Zmi+/yin6OTlood PsVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783983767; x=1784588567; 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:content-type; bh=KTzWDudorFUSc6264taLnl6rTnQdRME8Qf8ZWZSVL4w=; b=DcoPVxzNh6QYajdxaFUo89zwFVbxr4R2eQhme5IMm+/iAouXW1EgUkwrPb91XmIV2i u52qW8yNjFj+uueLgLTghpZeNRJ65csFAF+B6Oap40GOimHZRJUVY76Rh+4L1MM98gyv dlSH/9WixQN93iD5bHFy7AnQ4Lo8JiRYhbA0BcMm1m7LNY24h1jzVNXa89caPASosRgP +fMpy8RVTguj8QJfIzOKZpVZn9FWYod9skCPB9D2YDmWPZR9LIB4Eo4YpF7ROiajF8Te PDH/r/+XF0hsk64jBFN8pXrDUtI8tm8H1EU0deWK5YPlPFZf4Aw948CGlUdZDUOl5VpE s0rQ== X-Gm-Message-State: AOJu0YygS4hSDR6r5zRGHYyrEGlGjJUIHYdWUPn7gxhbHlA4WWAzU+uB WVH0lZAJ/zAYWP0ePRpaaGnRnoLgT/uzm9pAF1qXQ8ObxSoZ/00SHULkO6xefpw1Fbc7mV9gbsj RdO/7 X-Gm-Gg: AfdE7ckcMY3GG8it7pJIFwJgMhh+2vEjbZyc9RLgNWWhimrZOZ7Vg1K+9lvJC99gaK1 DeDWLhtihooKvP5BrIfzqSj8IAz8pchlNZiHnw2cqlkPd8Iqu3s/c2LtJOxZS9/1TDEOWxONA8m Bty3n4P+Su2aVapgbCKKRtBbavordXiw+GVpzJwBGcrzUxaZN0VXVz0mKsaLq5ZQCGmVNWEi/S3 EXevBH11SPZWy7oaq0H87tezygXWxjfE65hizJL9oG7jFaZ6AntTVID2Gz+zL5fwSpWHz/UwgR0 FPVBtBpRC/dJQr5u2tQXh+scNYNdntyedTZx5S03bzKkZTdYHx0e1fNkR60BMLmTFKCX3rEtMyZ nejQaVknHe9uN+3f0eWdqN3UQ773AwiZGp3nXoOR6zCysXoLE00QY/jjOi2prZstjYbDWe106N0 WLs0xLcryA3425fBGXwvYu9XkbEcSr X-Received: by 2002:a17:903:240c:b0:2ca:2390:ff13 with SMTP id d9443c01a7336-2cea169f406mr87436085ad.5.1783983767100; Mon, 13 Jul 2026 16:02:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 02/10] target/arm: Implement FTMOPA (non-widening, FP16) Date: Mon, 13 Jul 2026 16:02:36 -0700 Message-ID: <20260713230244.70174-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713230244.70174-1-richard.henderson@linaro.org> References: <20260713230244.70174-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783983861198158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-sme-defs.h | 1 + target/arm/tcg/sme_helper.c | 6 ++++++ target/arm/tcg/translate-sme.c | 2 ++ target/arm/tcg/sme.decode | 3 +++ 5 files changed, 17 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 6370c03e2a..4190398a1d 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1842,6 +1842,11 @@ static inline bool isar_feature_aa64_sme_mop4_i16i64= (const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_i16i64(= id); } =20 +static inline bool isar_feature_aa64_sme_tmop_f16f16(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f16f16(= id); +} + /* * Feature tests for "does this exist in either 32-bit or 64-bit?" */ diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 8107eb40af..84707e6c71 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -405,4 +405,5 @@ DEF_HELPER_FLAGS_4(sme_usmop4s_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_usmop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_usmop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) =20 +DEF_HELPER_FLAGS_6(sme_ftmopa_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 571b0add34..49fd3d07e4 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2693,6 +2693,12 @@ void HELPER(sme_fmop4a_hh)(void *vza, void *vzn, voi= d *vzm, sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(float16), inner_fmop4a_hh); } =20 +void HELPER(sme_ftmopa_hh)(void *vza, void *vzn, void *vzm, void *vzk, + float_status *fpst, uint32_t desc) +{ + sme_tmop(vza, vzn, vzm, vzk, fpst, desc, MO_16, inner_fmop4a_hh); +} + static void inner_fmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) { float16 *d =3D vd, *n =3D vn, *m =3D vm; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 36a0b00089..6cb9628e75 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2156,5 +2156,7 @@ static bool do_tmop_fp(DisasContext *s, arg_tmop *a, = MemOp esz, return true; } =20 +TRANS_FEAT(FTMOPA_hh, aa64_sme_tmop_f16f16, do_tmop_fp, + a, MO_16, FPST_ZA_F16, gen_helper_sme_ftmopa_hh) TRANS_FEAT(FTMOPA_ss, aa64_sme_tmop, do_tmop_fp, a, MO_32, FPST_ZA, gen_helper_sme_ftmopa_ss) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 0250177d0d..16ed3ca391 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1137,7 +1137,10 @@ USMOP4_dh 1010 0001 110. ...0 0000 00.. ..0. 1= ... @mop4_o3 &tmop zad zn zm zk idx %tmop_zk 10:3 !function=3Dexpand_tmop_zk =20 +@tmop_o1 .... .... ... zm:5 ... ... .... idx:2 ... zad:1 \ + &tmop zn=3D%zn_ax2 zk=3D%tmop_zk @tmop_o2 .... .... ... zm:5 ... ... .... idx:2 .. zad:2 \ &tmop zn=3D%zn_ax2 zk=3D%tmop_zk =20 +FTMOPA_hh 1000 0001 010 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 00 .. @tmop_o2 --=20 2.43.0 From nobody Sat Jul 25 20:47:28 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=1783983845; cv=none; d=zohomail.com; s=zohoarc; b=e90HZJs+OiVWdROuft54n2DD5/K/p96E3K0Ea2oqcQex150Bx9VMfYidfvhGVimxFTJpwk9PSNTNtcCuqnB+etfme9Mt/hXkJcKBr+RuwyqenSA9mBEv6rQUB31QXcwbMWLcW+lCy4kDfq4tClOl4kLrRGHaktCmUE+7DarPwhM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783983845; 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=XNp999Clca8qTMzc4jizfYop/326GBQLd9efVVSHuso=; b=RM6ntAWCZVYYMeWs8cjxQoJBB4XOzzpgSuKIicxMqKCIg/bSjEaFjWZgIdRmkiBvBdYjpWJw5MHszKYdk2X/vcYfIi+u7X0UUILr1gZGEMAh0Ee96a/2uP+wqpC3wFdh+yqtUOvz+mSXGwvyheBjx8OFutzn8oamkCZ8wsHdk7Q= 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 1783983845796451.0095362405565; Mon, 13 Jul 2026 16:04:05 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjPfp-00066g-RM; Mon, 13 Jul 2026 19:02: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 1wjPfo-00064w-Dc for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:52 -0400 Received: from mail-pl1-x634.google.com ([2607:f8b0:4864:20::634]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wjPfl-0005mE-Go for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:52 -0400 Received: by mail-pl1-x634.google.com with SMTP id d9443c01a7336-2cacf197759so4679695ad.2 for ; Mon, 13 Jul 2026 16:02:49 -0700 (PDT) Received: from stoup.. ([71.212.146.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bf8e9csm106902965ad.24.2026.07.13.16.02.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 16:02:47 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783983768; x=1784588568; 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:content-type; bh=XNp999Clca8qTMzc4jizfYop/326GBQLd9efVVSHuso=; b=YK5MXY3+ULU6nOnu7V9frDJP5MjNxJy/aH+lzHv8zBLsSrVTBvWDpfBGHJTxbVOopa SO4gWxM2zZB8MaP1+ao3DIqgBPLSc/wgAiMWieoO56Xdk96mKDi8Tqa0AgjmPJ9eGHqv +QBGLb9RzovYnmk5G1biMLolkQI9jHiVxLb596wyBriTEJb3xom8wNVCynt1YQNvl0YR HgjLm3O3vhAmGBuwAWNkO7TBOTLlfW9dZxUHs1xYvGghiWVmehCdYC2NBW8AStAViRl4 jz/Ihtz3OtdKS3OyrxYv4xXhGvHJn+tLmNiXqGPyIBpl3nVjYDr83aN05lIoDdqmEEkM QNGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783983768; x=1784588568; 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:content-type; bh=XNp999Clca8qTMzc4jizfYop/326GBQLd9efVVSHuso=; b=hfp6b/Ig6csTXxVksK0loLLfcCMV7GD+dex1tyB2IUr1FEKMGh8eTGWG23MFVd9IHc xs1PM0zfnWOjZjDVUrMbYhxmrLVpmaZTuzk2NdPyv8eTnWHYJELc2h2KfzvhJEmaIc3u 9lkBubdxlED4mbjzKy6DJ2a+xR5en46pCBV1qccEKR2qhPlb4Beyeki3kAVuHgxaWMz7 eToSz1/4SVzVrNkz3pRZgW2I0Jjgf+RlHHazx2o+aENMphe62yGsjaPOnppdcnnGECat n4y+fh/UDkDLbljxXyBZKJjlIYz+jn2kOfS0N6zeKQ/KwPyg8mWT0iHLA1h2tZsMlEJb eYdQ== X-Gm-Message-State: AOJu0YwEiLDX0CGHbUIotamViLqh6x8h8gG/KSqsSDkjDAIMuO43WnYM hBO3pVug0txo8djaUeB4hfvmX+kW3vDiFLKhYdsosJLTVmt4uKzGo1NhttbgC7URpc+raEkj8D9 DiSf/ X-Gm-Gg: AfdE7ck/5eXgCzbcJC2boTf3SJYECvG05DAIT71T7pt3z3YHxBN9md36JRcZ5n3UmKc oDX4qThX+fBn2Qao7wR/oQG8v9eqAYLILm1/fWLkNhh+aSuMN2ZE0Mql4OwtSzDQAW0vy63z/H7 PODxdc0yFdKH3SJZlSe8jfy0IA3SyNi7c1ppb2BskkrYQTB/W6TGN2aqIHfDMBQ/pl//g8/ySN/ s+ZaWUZLQLD4WTQnB3xx7WZDh1RNV6SaXJM7uXwp8tHMvLv42OGxFA/55ki0rxGqTsRR5rCU1Oe LrBHI8fBpu4yGGRYhCtlmuCuqiL6DwKsbW24ME1yU2VkHWyPQM0U3tIJtuEBJMMIyClAoEprFia 5IaFbBqEDdfH0z79Ig59Rrzxnybg09mvaIL0fbkRFFN7P4R95wkt45hJ9ye71LglqD3FyZFU9PX mUU4MmIFfB9GR5cC8Xvw== X-Received: by 2002:a17:903:2f88:b0:2ca:b8fd:1a8f with SMTP id d9443c01a7336-2ce9f044760mr103764575ad.39.1783983767979; Mon, 13 Jul 2026 16:02:47 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 03/10] target/arm: Implement BFTMOPA (non-widening) Date: Mon, 13 Jul 2026 16:02:37 -0700 Message-ID: <20260713230244.70174-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713230244.70174-1-richard.henderson@linaro.org> References: <20260713230244.70174-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::634; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x634.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_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: 1783983847421158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 +++++ target/arm/tcg/helper-sme-defs.h | 1 + target/arm/tcg/sme_helper.c | 6 ++++++ target/arm/tcg/translate-sme.c | 2 ++ target/arm/tcg/sme.decode | 1 + 5 files changed, 15 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 4190398a1d..d3bf0746cb 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1842,6 +1842,11 @@ static inline bool isar_feature_aa64_sme_mop4_i16i64= (const ARMISARegisters *id) return isar_feature_aa64_sme_mop4(id) && isar_feature_aa64_sme_i16i64(= id); } =20 +static inline bool isar_feature_aa64_sme_tmop_b16b16(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_b16b16(= id); +} + static inline bool isar_feature_aa64_sme_tmop_f16f16(const ARMISARegisters= *id) { return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f16f16(= id); diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 84707e6c71..224de45294 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -405,5 +405,6 @@ DEF_HELPER_FLAGS_4(sme_usmop4s_sb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_4(sme_usmop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) DEF_HELPER_FLAGS_4(sme_usmop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i= 32) =20 +DEF_HELPER_FLAGS_6(sme_bftmopa_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, fpst, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 49fd3d07e4..e57c56d5f2 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2831,6 +2831,12 @@ void HELPER(sme_bfmop4a_hh)(void *vza, void *vzn, vo= id *vzm, sme_mop4(vza, vzn, vzm, fpst, desc, sizeof(bfloat16), inner_bfmop4a_hh= ); } =20 +void HELPER(sme_bftmopa_hh)(void *vza, void *vzn, void *vzm, void *vzk, + float_status *fpst, uint32_t desc) +{ + sme_tmop(vza, vzn, vzm, vzk, fpst, desc, MO_16, inner_bfmop4a_hh); +} + static void inner_bfmop4s_hh(void *vd, void *vn, void *vm, void *vinfo) { bfloat16 *d =3D vd, *n =3D vn, *m =3D vm; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 6cb9628e75..7d21ebabc3 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2156,6 +2156,8 @@ static bool do_tmop_fp(DisasContext *s, arg_tmop *a, = MemOp esz, return true; } =20 +TRANS_FEAT(BFTMOPA_hh, aa64_sme_tmop_b16b16, do_tmop_fp, + a, MO_16, FPST_ZA, gen_helper_sme_bftmopa_hh) TRANS_FEAT(FTMOPA_hh, aa64_sme_tmop_f16f16, do_tmop_fp, a, MO_16, FPST_ZA_F16, gen_helper_sme_ftmopa_hh) TRANS_FEAT(FTMOPA_ss, aa64_sme_tmop, do_tmop_fp, diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 16ed3ca391..f0f9b3f61d 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1142,5 +1142,6 @@ USMOP4_dh 1010 0001 110. ...0 0000 00.. ..0. 1.= .. @mop4_o3 @tmop_o2 .... .... ... zm:5 ... ... .... idx:2 .. zad:2 \ &tmop zn=3D%zn_ax2 zk=3D%tmop_zk =20 +BFTMOPA_hh 1000 0001 011 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_hh 1000 0001 010 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 00 .. @tmop_o2 --=20 2.43.0 From nobody Sat Jul 25 20:47:28 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=1783983866; cv=none; d=zohomail.com; s=zohoarc; b=RxU2n3LPNoblq1UYIdwj9Jd4uBpJ+6JBBNAHADrF3QihfMXy7MwOw2g6Omdv6KGFmZToUD6YgKIz1qHR89BRn16WY08KMA9JH7x9xe5UvZXu2eBZ1EcJIEpEoq1NijJry0rfnXPdGWYyY0FqupufHeDw2kpn2rfud3pZnGqRlUU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783983866; 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=hx2UipEvcD0cL3stpkPbQTGggpLNP935LYuwW72ZW4w=; b=nzMgYOdV9aPr3f1X+nQ0/2OAfNfjmyATd74AfcCS8+fPhiI2PgWLO+ZDKLKe7lV8AHz34+p+Wi0GD/l0mQqKaEEod1y/rSk4y1eslYQh0DqNEhVcXoOF3DZEgc5puZg55xLAf9uXCEHKyO5Yo4tdjvnkBYvSHP41f7xRqi59GxY= 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 1783983866796388.8248526582935; Mon, 13 Jul 2026 16:04:26 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjPfr-00068m-Vi; Mon, 13 Jul 2026 19:02:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjPfo-00065Y-Sl for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:52 -0400 Received: from mail-pl1-x632.google.com ([2607:f8b0:4864:20::632]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wjPfm-0005md-V6 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:52 -0400 Received: by mail-pl1-x632.google.com with SMTP id d9443c01a7336-2cee9b74ee1so2858935ad.3 for ; Mon, 13 Jul 2026 16:02:50 -0700 (PDT) Received: from stoup.. ([71.212.146.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bf8e9csm106902965ad.24.2026.07.13.16.02.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 16:02:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783983769; x=1784588569; 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:content-type; bh=hx2UipEvcD0cL3stpkPbQTGggpLNP935LYuwW72ZW4w=; b=aCG3LpBY3v4ZdjrF0d8WoEL/0CbCmRfNydYwd6e81+zOLpsYdw+8/8ymTlX9nMasdo 4FEuNorlUjTZv2WAJr3MU0XXOtzgMK6s8KhsURjRbESASpwz1UBqIH7pyshcViAl9URZ JFjeN1bT5Q41JEPLXPSFUPPII8i02Ve7CkClO6mb6rh6PaqZKZJ+fA6zd9ko8sVIstZF TtIGP6cib+7fujwuP/gsX0/f5ylsDi1GHjyKAqRlrz38AbagLbR2FQtTq1qQRSOVDRMa /hyciGEtOr5vtYiEOXrBmzbDetmryqgugnZXSe4t4sWjNmzrE68ObWwQrEDnqmrnzw00 jwig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783983769; x=1784588569; 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:content-type; bh=hx2UipEvcD0cL3stpkPbQTGggpLNP935LYuwW72ZW4w=; b=BLpjFtESkifUvgaSESl7Evl+AUx88GfvLs36KtmKV+gbLHMOYHJJPfGfojPMkPq4Ib v+SAvRjENS2dsYzgx1yAhaAul+1neeXgUj+Q2kNaaFcsehlZ68kQp+gdYzGzX50X9f4W GeA7DwB/F2V43KHIuWW9iGSygXA2c4yD24p8ts3GC9IdqrNdxdyASz5xbhUdMMthGlS+ odJstxwkni0c7hodF7Cg1EPVNrf8G0K4RhV5UeG13Pm7uQ09/hNlTI2bDS7JGkc8bOvV CA0B0L2pquWCJ0vAHGuBvx6uSB5/lbXNyJQxzkv/AEj52ILyoYfqxCCK+k1YkQuqCu7w dSlw== X-Gm-Message-State: AOJu0Yx4lIyicvs7Bmk1lrxjbpaaqyPFQt48oJ4WSf0Kxw7j5osAqxpN 3F9HNBTb+KRWBhr4lNjBh70FwU32c2jHJccw09HRfqJ3Oz+4KWfUlMXe1OdkqrzO6FpMS4s6gEt Sa3+C X-Gm-Gg: AfdE7cmhcUtqEoKA7qd9uosXzpLtsw2ymkiJRh+sdNAQBEoNlko5mgmveGfWWbWIefz 7IhG2DvCIuK499Xh3OGpNfeJbzrW3qE/LGMZj00VZiKny7ob8t1fqogZCjd/6TPC1S8am/KlUOp 2n4msxJzuy1N/EAJgJkKt4C0mBbRNOkcUlWgeJWi2qfatxZVzAV1TZOleWutxSoB/9jTdy7sX84 QDGqeudOEB7Q4darzVscbtK6xqJBF6U3pz/PdE8w7z6SIigvFO1vlnzVtjokTXqlNutfWXVVYYo 6C+3LESmbOcnxkQY3u16CBKXXMy611oaS4JG+7kfktEFH7YaAKTs0lRmI3hAOmgOdDRhW5VSiyg ivjgeNjsx5KUu+KcKkMoYx+Ub2Bwgf5D8EqreaTEMxrE3W4tDOrY2jlLOcb/gxzfNTgTu+RLHJf Tkje3uS6J1cjRyNQujxg== X-Received: by 2002:a17:903:3905:b0:2c8:248a:5dbb with SMTP id d9443c01a7336-2ce9e9a701fmr103267885ad.7.1783983768803; Mon, 13 Jul 2026 16:02:48 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 04/10] target/arm: Implement BFTMOPA (widening) Date: Mon, 13 Jul 2026 16:02:38 -0700 Message-ID: <20260713230244.70174-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713230244.70174-1-richard.henderson@linaro.org> References: <20260713230244.70174-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::632; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x632.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783983867358158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sme-defs.h | 2 ++ target/arm/tcg/sme_helper.c | 54 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 3 ++ target/arm/tcg/sme.decode | 2 ++ 4 files changed, 61 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 224de45294..f05b53f412 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -408,3 +408,5 @@ DEF_HELPER_FLAGS_4(sme_usmop4s_dh, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_6(sme_bftmopa_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, fpst, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_hh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) + +DEF_HELPER_FLAGS_6(sme_bftmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, env, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index e57c56d5f2..91447d9c0e 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2679,6 +2679,50 @@ static void sme_tmop(void *vza, void *vzn, void *vzm= , uint64_t *zk, } } =20 +/* + * Sparse outer product, widening 2-way, 16 to 32-bit. + */ +static void sme_tmop_2way_sh(uint32_t *za, uint16_t *zn0, uint32_t *zm, + uint64_t *zk, void *fn_opaque, uint32_t desc, + void (*fn)(void *, void *, void *, void *)) +{ + intptr_t oprsz =3D simd_maxsz(desc); + intptr_t dim =3D oprsz >> MO_32; + intptr_t index =3D simd_data(desc); + intptr_t ctrl_base =3D (index * oprsz) >> 1; + uint16_t *zn1 =3D zn0 + sizeof(ARMVectorReg) / 2; + + for (intptr_t row =3D 0; row < dim; row++) { + uint32_t *za_row =3D za + tile_vslice_offset(row); + + for (intptr_t col =3D 0; col < dim; col++) { + uint32_t *e2 =3D zm + H4(col); + uint32_t *e3 =3D za_row + H4(col); + uint32_t e1 =3D 0; + + /* + * Four control bits select two elements. The two elements + * may be non-contiguous, so assemble them locally into e1. + * Pseudo-code has a double loop running forward, with a + * test for (i < 2) to limit construction to 2 elements. + * Easier to run a single loop backward, shifting extra + * elements off the top of our uint32_t. + */ + uint64_t this_ctrl =3D extractn(zk, ctrl_base + col * 4, 4); + for (int i =3D 3; i >=3D 0; i--) { + if (this_ctrl & (1 << i)) { + bool e =3D i & 1; + bool r =3D i & 2; + uint16_t *p =3D (r ? zn1 : zn0) + H2(2 * row + e); + e1 =3D (e1 << 16) | *p; + } + } + + fn(e3, &e1, e2, fn_opaque); + } + } +} + static void inner_fmop4a_hh(void *vd, void *vn, void *vm, void *vinfo) { float16 *d =3D vd, *n =3D vn, *m =3D vm; @@ -2893,6 +2937,16 @@ void HELPER(sme_bfmop4a_sh)(void *vza, void *vzn, vo= id *vzm, : inner_bfmop4a_sh); } =20 +void HELPER(sme_bftmopa_sh)(void *vza, void *vzn, void *vzm, void *vzk, + CPUArchState *env, uint32_t desc) +{ + float_status fpst; + + sme_tmop_2way_sh(vza, vzn, vzm, vzk, &fpst, desc, + is_ebf(env, &fpst) ? inner_ebf_bfmop4a_sh + : inner_bfmop4a_sh); +} + static void inner_bfmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) { float32 *d =3D vd; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 7d21ebabc3..8548bfd5c9 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2162,3 +2162,6 @@ TRANS_FEAT(FTMOPA_hh, aa64_sme_tmop_f16f16, do_tmop_f= p, a, MO_16, FPST_ZA_F16, gen_helper_sme_ftmopa_hh) TRANS_FEAT(FTMOPA_ss, aa64_sme_tmop, do_tmop_fp, a, MO_32, FPST_ZA, gen_helper_sme_ftmopa_ss) + +TRANS_FEAT(BFTMOPA_sh, aa64_sme_tmop, do_tmop_fp, + a, MO_32, FPST_ENV, gen_helper_sme_bftmopa_sh) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index f0f9b3f61d..49af8fd19e 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1145,3 +1145,5 @@ USMOP4_dh 1010 0001 110. ...0 0000 00.. ..0. 1.= .. @mop4_o3 BFTMOPA_hh 1000 0001 011 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_hh 1000 0001 010 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 00 .. @tmop_o2 + +BFTMOPA_sh 1000 0001 010 ..... 000 ... .... .. 00 .. @tmop_o2 --=20 2.43.0 From nobody Sat Jul 25 20:47:28 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=1783983887; cv=none; d=zohomail.com; s=zohoarc; b=BByKTxLrIrn49YaF84T7/YpoCiX/H4HEoKcwmlY/4u8pMqIB13rE9bVGYzVGKGpQP/FnTfUtjS72VgxQADYX7yh+R66D8Wshugu5xB5VatjGggaYBZU84CNtt8XS06rn2rp1eShd8R7iSLQ9gZv4jwWszujdH4WC0ajk0nUtzqU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783983887; 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=D3B4FRG0i1WwOJHdec37PeTEQbfPbhciyRXi7UVkDdM=; b=Ilt//azz92UfAhj2ksPnPqzJYyA+qcXpWdCQvHyBHs/MsE+5JIXhtRfmcoeTZp5HShWKY9qjRh9P2AlSLGl895Ix13yKvxIgN1354ixV8RbkpBQH+MQ5wZ/J/7ZSdyay9L1l6bkCH+zO/PhUwkuDhhHB5YOn9aRzUhP4uxDARUA= 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 1783983887918614.0469603840721; Mon, 13 Jul 2026 16:04:47 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjPfs-00069Z-DB; Mon, 13 Jul 2026 19:02:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjPfo-00065Z-Sx for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:52 -0400 Received: from mail-pl1-x633.google.com ([2607:f8b0:4864:20::633]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wjPfn-0005mk-7f for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:52 -0400 Received: by mail-pl1-x633.google.com with SMTP id d9443c01a7336-2ceb096e675so24955955ad.0 for ; Mon, 13 Jul 2026 16:02:50 -0700 (PDT) Received: from stoup.. ([71.212.146.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bf8e9csm106902965ad.24.2026.07.13.16.02.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 16:02:49 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783983770; x=1784588570; 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:content-type; bh=D3B4FRG0i1WwOJHdec37PeTEQbfPbhciyRXi7UVkDdM=; b=ZGksirqmOMSyHSRpkOUYkLDVgt1YSiK+299NfyjA5DuAvNDB6i1mvHBXTCuDlspzBX vZcC+IptRVs/fFxkUxOOmf80ZlC6bXpNg00nfDHEB1Q4pcokd9FLEBQ8x5+BYlz56OCY 3FyDNt9te/rmKJcYhO4rlGISvGpkWwbwj3tWKL2F9yO32ZUnjiXqQcfAHRXoiWWmIMSy 2kjzclC/bg19MCBW/bEPeai9t8wxhCxpceN4Y+HUCaooM2sYZxqtpGRBBDqU0Ei+a3fo ggAkbp/pEN8KhgfYBzqUXWjcwbzf5X2xunS49x9HcWwIsESSLjNuiajh5bMmflMz7wk4 fk5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783983770; x=1784588570; 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:content-type; bh=D3B4FRG0i1WwOJHdec37PeTEQbfPbhciyRXi7UVkDdM=; b=Al3ww3ftojftoKbLk6Vs3SiOplQIcPR8j/bBPdIhknm1X2pKTXOB0uIt0c3sy1UUsY ASa30mUYiZ4iVMn/60M8Yx4URhzcKWodxv/em9nlHHESinuOF+twk3m/KbIpuYyAGeq6 pviygnlujiFHNjm9VPuAnCPBd98hP7R/xG2+BefkJE8VWK0rWMdtsb/FWMGOt62o0szr /WCjMRkQ6BGjCMVXRKI7mgyPYfWMLUg0slij35uYx/Zgx0C2w3znuyKCFV9zxo7Lub5H moA786PTxc1M6SzK9ZS2s0Hieamiygg0ujVnH8+aqIZ1MOKa8nHjxsDq6K3x+VdMzFNu bozg== X-Gm-Message-State: AOJu0Yw2iNqz3w9jzGoPDgFnDeM90TdQIsAVjAdIAXN8fspQyqY0eNQI 2JUAMitufGVGD9MAHwVzDaVXZ3g1LyU5uZwrLW7xiGJkJMJ7GwBOw0tVyeJeEQAGBbOvCkI7/a6 CUcck X-Gm-Gg: AfdE7ckAOR8kPmH6ebNJJt2D52Ded53sXZb1jfLbU3jsUC3tH+958civlFSpxV4EvtF YJNfr9+L9kM5qx/twLUcWM8z5HcCFVoBTGSSgd/8Cw5iZP6hDOoZi55xmC3bDhCog4UjiSMwzi/ XLrhFYLpskp2AUERt20s+PzYrWQqIDWqjI8lVBoX/vZD6Qj6bxJzUm/G4mxyAuvceHlSt1LGRId I24YTkp2YULFuA9c7NjKJ1yiRANRwLsDB/Y/TF1Ait5ivIxWL5ESacwEWSDxf/0gWzX8mEDDYOc PhPiD+m2XIKk6iUWVJAU8oBoc8WVty97wq8FFJHwPbrtlR2eFOwNOWB7veX21wk6AFTvzuvqQeM SwVWk6ZWb60RdRclrKnli3J/c2l9v4VZ+vL9gIa59CbVYkpu1/GRLdiGnhruteygcCuw0n3dQJo 4WUe8u7vVP06TOYTKQdFFLoOSGbVWk X-Received: by 2002:a17:902:fda5:b0:2ca:d7a0:1312 with SMTP id d9443c01a7336-2ce9ee16623mr111917935ad.25.1783983769677; Mon, 13 Jul 2026 16:02:49 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 05/10] target/arm: Implement FTMOPA (widening, 2-way, FP16 to FP32) Date: Mon, 13 Jul 2026 16:02:39 -0700 Message-ID: <20260713230244.70174-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713230244.70174-1-richard.henderson@linaro.org> References: <20260713230244.70174-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::633; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x633.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783983889370158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sme-defs.h | 1 + target/arm/tcg/sme_helper.c | 6 ++++++ target/arm/tcg/translate-sme.c | 2 ++ target/arm/tcg/sme.decode | 1 + 4 files changed, 10 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index f05b53f412..8a959447b2 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -410,3 +410,4 @@ DEF_HELPER_FLAGS_6(sme_ftmopa_hh, TCG_CALL_NO_RWG, void= , ptr, ptr, ptr, ptr, fps DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, fpst, i32) =20 DEF_HELPER_FLAGS_6(sme_bftmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, env, i32) +DEF_HELPER_FLAGS_6(sme_ftmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, env, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 91447d9c0e..c2b7c23d6c 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -3020,6 +3020,12 @@ void HELPER(sme_fmop4a_sh)(void *vza, void *vzn, voi= d *vzm, sme_mop4(vza, vzn, vzm, env, desc, sizeof(float32), inner_fmop4a_sh); } =20 +void HELPER(sme_ftmopa_sh)(void *vza, void *vzn, void *vzm, void *vzk, + CPUArchState *env, uint32_t desc) +{ + sme_tmop_2way_sh(vza, vzn, vzm, vzk, env, desc, inner_fmop4a_sh); +} + static void inner_fmop4s_sh(void *vd, void *vn, void *vm, void *vinfo) { float32 *d =3D vd; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 8548bfd5c9..43d1726972 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2165,3 +2165,5 @@ TRANS_FEAT(FTMOPA_ss, aa64_sme_tmop, do_tmop_fp, =20 TRANS_FEAT(BFTMOPA_sh, aa64_sme_tmop, do_tmop_fp, a, MO_32, FPST_ENV, gen_helper_sme_bftmopa_sh) +TRANS_FEAT(FTMOPA_sh, aa64_sme_tmop, do_tmop_fp, + a, MO_32, FPST_ENV, gen_helper_sme_ftmopa_sh) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 49af8fd19e..5c453ea729 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1147,3 +1147,4 @@ FTMOPA_hh 1000 0001 010 ..... 000 ... .... .. 1= 00 . @tmop_o1 FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 00 .. @tmop_o2 =20 BFTMOPA_sh 1000 0001 010 ..... 000 ... .... .. 00 .. @tmop_o2 +FTMOPA_sh 1000 0001 011 ..... 000 ... .... .. 00 .. @tmop_o2 --=20 2.43.0 From nobody Sat Jul 25 20:47:28 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=1783983891; cv=none; d=zohomail.com; s=zohoarc; b=B82Mtc0E1tM0Tz1LpngWkgxvTzYnnnHY6n4nuh9zq6eHC86u78HTy1KLYVyufjUDcI4Kp/Ceio2LiWWBxoe2gLNNA6aCOypSk649GPv5buK8INtygSWQVT8pc2tgUjxaLsXi7pwNy+bQ9IEtxeS6Vpsjmr36BJoibc8ekqBF5Us= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783983891; 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=c/U/Q9KaL1t57a12jvk2yeR0GpuqsQXc/eJUhWpLOZA=; b=IAfNtvzMoY4Ml/2cnjo7BlJkGZoXkjTRYl5ifkic35a8iLlsUJsyOLF7WYWSXVqYlDsI+T3AvnRMAI/82NjdTiug0K9MUlcEdEDoSeMzqdxdicKKM0JdfNp6TqRi9MkNXXEOTXqPR+9KtB95oxjXJJ68+skopXnU/foOzdqSMKQ= 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 1783983891739805.2116572286789; Mon, 13 Jul 2026 16:04:51 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjPfs-0006A1-Qa; Mon, 13 Jul 2026 19:02:56 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjPfq-00066v-3g for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:54 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wjPfo-0005nD-64 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:53 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2cc6dd436c6so3862295ad.2 for ; Mon, 13 Jul 2026 16:02:51 -0700 (PDT) Received: from stoup.. ([71.212.146.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bf8e9csm106902965ad.24.2026.07.13.16.02.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 16:02:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783983770; x=1784588570; 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:content-type; bh=c/U/Q9KaL1t57a12jvk2yeR0GpuqsQXc/eJUhWpLOZA=; b=CxYK5+d96Oz9DjFBurzLXNKZYZRffqeDTl22Ut+WZ+w/dWisvUKAlAA5inAHDa8eDJ sTQzXKcQ5vr03B7Io6kjs3CpbfdG1baBZ7Ke2MlG8np4BsrDyv7mrBNbG47gssjTxrc7 7EGuWhV4pBBpoMCXrHcSV/WBNyX6UzF01Hl4X34YWJXtwLGcsJeLFpOKxvjdBV8NkYZH X4SpfS983l6awhw6CigPYdSkU3QWl58Yaa7cLX82bPAdFJ852MPArBl0xYpgDt+SY64i /uMAsEg53mpm+SDtgqb20ja8r5f6ESelbZT/a4JnS9Cm383DmItUNmwdURVZsPhcC+lh O9qQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783983770; x=1784588570; 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:content-type; bh=c/U/Q9KaL1t57a12jvk2yeR0GpuqsQXc/eJUhWpLOZA=; b=bAbXIn1IVafCEGof45IIVzIl8HzLtD01ZJJa2CSELpjr7QS43ataU9kws7jBoWQyo0 FwmWpOnZv4iQBsvIm4meTc/1b6E9pG3H1Srmr8/VM2zBwmsFbj5YkmBd4VwsBTaNueLX ZXhG9CQcAVjhhISg7SCzLgOV4rXwPpgNpxz+hQY24cs+AAGEWtfWu+J7VUIhwlO0x6F4 0Ey29IqjXPbhSSDM2aB2Eux78FP2gm9N5dQFjVseYP0sbNuKjd65IBODjTBoYCv4jh9/ ac+PpLuzxsNx3DQN5+m1GywgAWEv4qB9C/Vy8VGgx0Sxi/RfAM63a2B/WBoW4y39cA0K i5gA== X-Gm-Message-State: AOJu0YyJJNKMUilqobilVm04cHWW3/ZCoMwxKJHvEANWajMvx59V6lDx GchpxtBtmxTGaqgeJcNOJKQnUHvLmqQ4NyeAO25uY6QrtSDEYTdg/m1nWpE6aoZVlgsjrN8VMxU eDh8o X-Gm-Gg: AfdE7cn/6UaBMR0Lz0C2HBmpriwOvWYfxs2EVrmBrmcEJoBkTWM7QZmnOsSVufUl50Z Frpf4o9k5PgifiaEyhGZmMcFwgpYIPWXa2nYGfqJbO5gmz3X0qFFAbekaWgKAMFVvr+xKYZbYvd Qk9diL9iYKIuwOzRkIj0YnGwLhKvZWc+pxYtVbx+/ahL5m2Lt7sC/J5ZdtaDRdJ3dY754yH8/qC vlalF7zV9107qiO+FmbEtDlmOwseu5itwleCQcB4aoqA+GF+fYN7zd4r2eZBp9LZPK+v7MK9+kV 7At9YK/jDiPTArxsgQTz6zUGb4OzfcraoeQuT4/hI+eRVMFrBAwwwACttRCZq8+tnF9HvyCLrpT jywEzHEiEb/YQV5oXk3no0N37APH8Qvr6+oj2J/BNApYVuMkfUZMz7FfgulpWt5H/hqSynAyInt w7hpiB9/OQ4PWplOGXnrNfEy6tBJVe X-Received: by 2002:a17:902:d98b:b0:2ca:1bbe:c3d0 with SMTP id d9443c01a7336-2ce9f3d5e4amr101786985ad.43.1783983770461; Mon, 13 Jul 2026 16:02:50 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 06/10] target/arm: Implement FTMOPA (widening, 2-way, FP8 to FP16) Date: Mon, 13 Jul 2026 16:02:40 -0700 Message-ID: <20260713230244.70174-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713230244.70174-1-richard.henderson@linaro.org> References: <20260713230244.70174-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1783983893490158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-fp8-defs.h | 2 ++ target/arm/tcg/fp8_helper.c | 43 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 12 +++++++++ target/arm/tcg/sme.decode | 2 ++ 5 files changed, 64 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index d3bf0746cb..1ab6c90b8c 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1852,6 +1852,11 @@ static inline bool isar_feature_aa64_sme_tmop_f16f16= (const ARMISARegisters *id) return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f16f16(= id); } =20 +static inline bool isar_feature_aa64_sme_tmop_f8f16(const ARMISARegisters = *id) +{ + return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f8f16(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 dedbd8541c..13be62aa15 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -47,3 +47,5 @@ DEF_HELPER_FLAGS_5(sme_fvdot_idx_hb, TCG_CALL_NO_RWG, voi= d, ptr, ptr, ptr, env, =20 DEF_HELPER_FLAGS_5(sme_fmop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) DEF_HELPER_FLAGS_5(sme_fmop4a_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) + +DEF_HELPER_FLAGS_6(sme_ftmopa_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, env, i32) diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 4b046f5f26..305cafdc9b 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -1005,3 +1005,46 @@ void HELPER(sme_fmop4a_hb)(void *vza, void *vzn, voi= d *vzm, FP8MulContext ctx =3D fp8_mul_start(env, 0xf); sme_mop4(vza, vzn, vzm, &ctx, desc, sizeof(float16), inner_fmop4a_hb); } + +void HELPER(sme_ftmopa_hb)(void *vza, void *vzn, void *vzm, void *vzk, + CPUArchState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + intptr_t oprsz =3D simd_maxsz(desc); + intptr_t dim =3D oprsz >> MO_16; + intptr_t index =3D simd_data(desc); + intptr_t ctrl_base =3D (index * oprsz) >> 1; + uint8_t *zn0 =3D vzn, *zn1 =3D vzn + sizeof(ARMVectorReg); + uint16_t *za =3D vza, *zm =3D vzm; + uint64_t *zk =3D vzk; + + for (intptr_t row =3D 0; row < dim; row++) { + uint16_t *za_row =3D za + tile_vslice_offset(row); + + for (intptr_t col =3D 0; col < dim; col++) { + uint16_t e2 =3D zm[H2(col)]; + uint16_t *e3 =3D za_row + H2(col); + uint16_t e1 =3D 0; + + /* + * Four control bits select two elements. The two elements + * may be non-contiguous, so assemble them locally into e1. + * Pseudo-code has a double loop running forward, with a + * test for (i < 2) to limit construction to 2 elements. + * Easier to run a single loop backward, shifting extra + * elements off the top of our uint16_t. + */ + uint64_t this_ctrl =3D extractn(zk, ctrl_base + col * 4, 4); + for (int i =3D 3; i >=3D 0; i--) { + if (this_ctrl & (1 << i)) { + bool e =3D i & 1; + bool r =3D i & 2; + uint8_t *p =3D (r ? zn1 : zn0) + H1(2 * row + e); + e1 =3D (e1 << 8) | *p; + } + } + + *e3 =3D f8dotadd_h(e1, e2, 2, *e3, &ctx); + } + } +} diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 43d1726972..395652f477 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2167,3 +2167,15 @@ TRANS_FEAT(BFTMOPA_sh, aa64_sme_tmop, do_tmop_fp, a, MO_32, FPST_ENV, gen_helper_sme_bftmopa_sh) TRANS_FEAT(FTMOPA_sh, aa64_sme_tmop, do_tmop_fp, a, MO_32, FPST_ENV, gen_helper_sme_ftmopa_sh) + +static bool do_tmop_fp8(DisasContext *s, arg_tmop *a, MemOp esz, + gen_helper_gvec_4_ptr *fn) +{ + if (!fpmr_access_check(s)) { + return true; + } + return do_tmop_fp(s, a, esz, FPST_ENV, fn); +} + +TRANS_FEAT(FTMOPA_hb, aa64_sme_tmop_f8f16, do_tmop_fp8, + a, MO_16, gen_helper_sme_ftmopa_hb) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 5c453ea729..da6f4686d3 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1148,3 +1148,5 @@ FTMOPA_ss 1000 0000 010 ..... 000 ... .... .. 0= 0 .. @tmop_o2 =20 BFTMOPA_sh 1000 0001 010 ..... 000 ... .... .. 00 .. @tmop_o2 FTMOPA_sh 1000 0001 011 ..... 000 ... .... .. 00 .. @tmop_o2 + +FTMOPA_hb 1000 0000 011 ..... 000 ... .... .. 100 . @tmop_o1 --=20 2.43.0 From nobody Sat Jul 25 20:47:28 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=1783983870; cv=none; d=zohomail.com; s=zohoarc; b=AuWhLECAnlVS2vSZLZnH6TA51MKoCPr8fqwN+YSgWh6+E7y9EDjld5JNpk8xQGRurRuvdwNI6ixUor+9lplVg+D/x7/yBi3oZ/umZ588wcdsE9qH4+yLPIaJx4VWLGrCIzz3xv80e+95jgXSC4S9VSDLPWbsjwLWsvoK7NFBk0I= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783983870; 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=s2ESLQXRt7qIVkr/K/adcRYQvwQDSMqgiuM+T8rBJFg=; b=IjbKxktQgGdRyX5vHRKtAJESkyu/jMXXYBpfQ9eVsQ1tFlbwWX59T07Yymoktdck3+pUc5cXfXVdjmkXCO3T0cDCGYM0YeVRAdZUcBG3Y9c1zbO7ZAhUDxozfTJh9t0LB6vovOJJ056sPCU2F/tgZ2aqQmESy6cPbfRUcCurxIU= 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 1783983870868327.669151570797; Mon, 13 Jul 2026 16:04:30 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjPft-0006AA-EW; Mon, 13 Jul 2026 19:02: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 1wjPfq-00067k-LE for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:54 -0400 Received: from mail-pl1-x62a.google.com ([2607:f8b0:4864:20::62a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wjPfo-0005nU-NT for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:54 -0400 Received: by mail-pl1-x62a.google.com with SMTP id d9443c01a7336-2c7c61b5292so4447915ad.0 for ; Mon, 13 Jul 2026 16:02:52 -0700 (PDT) Received: from stoup.. ([71.212.146.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bf8e9csm106902965ad.24.2026.07.13.16.02.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 16:02:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783983771; x=1784588571; 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:content-type; bh=s2ESLQXRt7qIVkr/K/adcRYQvwQDSMqgiuM+T8rBJFg=; b=rj1Ynq9vuy/lcVNYabeDJEEQDErY031mgW53c93Sgndx8u0Ch4VZts2GpMKnconykv tJwBhnuNYyzQihFjDaUQkNsCdjrhx5ZTUEXN1FRpcI2/rbU4nK8AyJnupb5fQZmI4RJ4 nIDHz3qSklr90pS1Kxj9OKFMYJcGCz8J5tgkAvM90oZoHU2HlcyWQt25v0/cPKiCnkW/ wCzrQUJv/ApYTq66Y5WmmZQK19iZDpLNcssZWAKEkV53Tv9KGKGtMVEDHyHUFqy0fa8C 8KpXtStyZIbWisGPcNNcfbZa23GSoRfwhuxXiGCnBwQU2OH8DJjs05i54Uwk22V4J5zN KBNg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783983771; x=1784588571; 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:content-type; bh=s2ESLQXRt7qIVkr/K/adcRYQvwQDSMqgiuM+T8rBJFg=; b=QnMks+6REE9KnrEF5owMZbFNP9X/26M5rQv/pnjaj87U885K4WCQcgc+PoeQDxtsce Fw6qxfVUT5TvbuoDIvPETfzzeAMP6ENntEg7y4e8OcwBHBpYqPINVTy7f7GEvHrlLIKE cjPDTzIuFTNvOO46ReESztyl/1Ti8TLtRomCmk3YFUoHFOE8Vk1yYi5bBhIYSxMJJgqW KDIGdt1azRRUQCnJWGo/dVnip5IHwkPGY7M/wILA5hptAWTOPiNNMGTYRobBXS84hNYj LPVgBODMXFK0La7OsFSgqjflx+eeOgO4iDNXWGy7ZJkojTPThsGZLPQlQf25lKYrN5Br m75A== X-Gm-Message-State: AOJu0YyYK7toe2wsoBhxK3J/bFiTSxc/ER2UpegsrnCVlTZSDn22t80x NGpRG3aWIw0PMA8C4Q4qNAyiJcCxUmxHwoktI9L+aERNXoPz9+dXvsGPivzmw9ReScGncQz+id9 qfIMB X-Gm-Gg: AfdE7cloiu9iRjhpgSDvuwMhBTs5RnhxxPn1EHtu4exjmvMVwo1NKxy61cvna9tfc2F KCFcAwthypNd7RTICcCvVOXwpotx3MP5cVjxFVACZTrRWINdG0wK0mmRnBvFPkBMCfN8AUYK6np zrxQk86CGwMPZ33QWcj6bS8ReDafXMFCHeDUDMIgAuRzFJZpdqyNJPXcgmP37lOdvv/aJ7+iIUr PUkZQ486q67wtQe9FQWn41Wqsf8bJePK0tRcsIpaUECFhcQGAOgfW9VmgYd4/o8eaPisHBiY3qt 7wyeFSgkdW+uasTC52WVhaoVZOzEjrDhHNtU7r51vgJckom+N7Al5Ia0kwsIoMhK3lQN5QfQW9T ovyeSOFeRzuT7pzHZrqq+8N8xGBuzZoC9NlJkrPy4VMhS20v8wKOCawxUwNTmC5rW2gYW1FJfE0 Kyg3sMJZDkNt0djKsU6Q== X-Received: by 2002:a17:902:ef0a:b0:2ca:9ab:e725 with SMTP id d9443c01a7336-2ce9e59d62cmr109786845ad.1.1783983771193; Mon, 13 Jul 2026 16:02:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 07/10] target/arm: Implement FTMOPA (widening, 4-way, FP8 to FP32) Date: Mon, 13 Jul 2026 16:02:41 -0700 Message-ID: <20260713230244.70174-8-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713230244.70174-1-richard.henderson@linaro.org> References: <20260713230244.70174-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62a; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62a.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783983871388158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++++ target/arm/tcg/helper-fp8-defs.h | 1 + target/arm/tcg/vec_internal.h | 7 +++++ target/arm/tcg/fp8_helper.c | 7 +++++ target/arm/tcg/sme_helper.c | 44 ++++++++++++++++++++++++++++++++ target/arm/tcg/translate-sme.c | 2 ++ target/arm/tcg/sme.decode | 1 + 7 files changed, 67 insertions(+) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 1ab6c90b8c..280ead6f9c 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1857,6 +1857,11 @@ static inline bool isar_feature_aa64_sme_tmop_f8f16(= const ARMISARegisters *id) return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f8f16(i= d); } =20 +static inline bool isar_feature_aa64_sme_tmop_f8f32(const ARMISARegisters = *id) +{ + return isar_feature_aa64_sme_tmop(id) && isar_feature_aa64_sme_f8f32(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 13be62aa15..e2cf2ba8c7 100644 --- a/target/arm/tcg/helper-fp8-defs.h +++ b/target/arm/tcg/helper-fp8-defs.h @@ -49,3 +49,4 @@ DEF_HELPER_FLAGS_5(sme_fmop4a_sb, TCG_CALL_NO_RWG, void, = ptr, ptr, ptr, env, i32 DEF_HELPER_FLAGS_5(sme_fmop4a_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, en= v, i32) =20 DEF_HELPER_FLAGS_6(sme_ftmopa_hb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, env, i32) +DEF_HELPER_FLAGS_6(sme_ftmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, env, i32) diff --git a/target/arm/tcg/vec_internal.h b/target/arm/tcg/vec_internal.h index 038a2a3439..8f6d8a984b 100644 --- a/target/arm/tcg/vec_internal.h +++ b/target/arm/tcg/vec_internal.h @@ -555,4 +555,11 @@ void sme_mop4(void *vza, void *vzn, void *vzm, void *f= n_opaque, uint32_t desc, size_t esize, void (*fn)(void *, void *, void *, void *)); =20 +/* + * Perform SME sparse outer product, 4-way, 8 to 32-bit. + */ +void sme_tmop_4way_sb(uint32_t *za, uint8_t *zn0, uint32_t *zm, + uint64_t *zk, void *fn_opaque, uint32_t desc, + void (*fn)(void *, void *, void *, void *)); + #endif /* TARGET_ARM_VEC_INTERNAL_H */ diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c index 305cafdc9b..0be811e71b 100644 --- a/target/arm/tcg/fp8_helper.c +++ b/target/arm/tcg/fp8_helper.c @@ -1048,3 +1048,10 @@ void HELPER(sme_ftmopa_hb)(void *vza, void *vzn, voi= d *vzm, void *vzk, } } } + +void HELPER(sme_ftmopa_sb)(void *vza, void *vzn, void *vzm, void *vzk, + CPUArchState *env, uint32_t desc) +{ + FP8MulContext ctx =3D fp8_mul_start(env, 0xf); + sme_tmop_4way_sb(vza, vzn, vzm, vzk, &ctx, desc, inner_fmop4a_sb); +} diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index c2b7c23d6c..3d7aefac5b 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -2723,6 +2723,50 @@ static void sme_tmop_2way_sh(uint32_t *za, uint16_t = *zn0, uint32_t *zm, } } =20 +void sme_tmop_4way_sb(uint32_t *za, uint8_t *zn0, uint32_t *zm, + uint64_t *zk, void *fn_opaque, uint32_t desc, + void (*fn)(void *, void *, void *, void *)) +{ + intptr_t oprsz =3D simd_maxsz(desc); + intptr_t dim =3D oprsz >> MO_32; + intptr_t index =3D simd_data(desc); + intptr_t ctrl_base =3D (index * oprsz) >> 1; + uint8_t *zn1 =3D zn0 + sizeof(ARMVectorReg); + + for (intptr_t row =3D 0; row < dim; row++) { + uint32_t *za_row =3D za + tile_vslice_offset(row); + + for (intptr_t col =3D 0; col < dim; col++) { + uint32_t *e2 =3D zm + H4(col); + uint32_t *e3 =3D za_row + H4(col); + uint16_t e1l =3D 0, e1h =3D 0; + uint32_t e1; + + /* + * Eight control bits select two elements from each row. + * The elements may be non-contiguous, so assemble them + * locally into e1. + * Pseudo-code has a triple loop running forward, with a + * test for (i < 2) to limit construction to 2 elements. + * Easier to run a single loop backward, shifting extra + * elements off the top. + */ + uint64_t this_ctrl =3D extractn(zk, ctrl_base + col * 8, 8); + for (int e =3D 3; e >=3D 0; e--) { + if (this_ctrl & (0x01 << e)) { + e1l =3D (e1l << 8) | zn0[H1(4 * row + e)]; + } + if (this_ctrl & (0x10 << e)) { + e1h =3D (e1h << 8) | zn1[H1(4 * row + e)]; + } + } + e1 =3D (e1h << 16) | e1l; + + fn(e3, &e1, e2, fn_opaque); + } + } +} + static void inner_fmop4a_hh(void *vd, void *vn, void *vm, void *vinfo) { float16 *d =3D vd, *n =3D vn, *m =3D vm; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 395652f477..0fda2d9ac5 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2179,3 +2179,5 @@ static bool do_tmop_fp8(DisasContext *s, arg_tmop *a,= MemOp esz, =20 TRANS_FEAT(FTMOPA_hb, aa64_sme_tmop_f8f16, do_tmop_fp8, a, MO_16, gen_helper_sme_ftmopa_hb) +TRANS_FEAT(FTMOPA_sb, aa64_sme_tmop_f8f32, do_tmop_fp8, + a, MO_32, gen_helper_sme_ftmopa_sb) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index da6f4686d3..eab1f7e8fb 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1150,3 +1150,4 @@ BFTMOPA_sh 1000 0001 010 ..... 000 ... .... .. 0= 0 .. @tmop_o2 FTMOPA_sh 1000 0001 011 ..... 000 ... .... .. 00 .. @tmop_o2 =20 FTMOPA_hb 1000 0000 011 ..... 000 ... .... .. 100 . @tmop_o1 +FTMOPA_sb 1000 0000 011 ..... 000 ... .... .. 00 .. @tmop_o2 --=20 2.43.0 From nobody Sat Jul 25 20:47:28 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=1783983832; cv=none; d=zohomail.com; s=zohoarc; b=Rd3Ew32dKlR+6aaXkXo3xftOqq1pCe7ly2yHFRa43Bjw8V38KKbmP4sGxcUX7hlqt7cLHQc+8Cm9lA6SWe9vFE4A8plGcl74NWppRU7Nj0GnxsgXp7kPV2a5q6mKbGDPInPl+47PvPODCNXm2w0x8F92MUdIhaE8ebSwTGMm3ew= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783983832; 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=lKjINVU4cgcSq/r8Q0p1zL0dVvca6JAQIxpELWKZess=; b=DdWYBjEFAPdy0e5MdAiAJXb42pOiH2oK9+v87vuwTo4uxKPQRkxw0vi5qLsQHgpE+hYG4baZ8rId5l2NjsEZGSr5nokdJFhhiYfYR5A9nt06v5ocmu3E/jbSs6RWL7g8/iTv1vk3mlas8+Yo/SB+hV/aXWbxER1v4ycGF2x5EeE= 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 1783983832391936.1264782680098; Mon, 13 Jul 2026 16:03:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjPft-0006AX-W1; Mon, 13 Jul 2026 19:02:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjPfr-00068S-Bg for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:55 -0400 Received: from mail-pl1-x62d.google.com ([2607:f8b0:4864:20::62d]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wjPfp-0005o2-I0 for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:55 -0400 Received: by mail-pl1-x62d.google.com with SMTP id d9443c01a7336-2cce6a0c9c3so32857555ad.1 for ; Mon, 13 Jul 2026 16:02:53 -0700 (PDT) Received: from stoup.. ([71.212.146.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bf8e9csm106902965ad.24.2026.07.13.16.02.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 16:02:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783983772; x=1784588572; 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:content-type; bh=lKjINVU4cgcSq/r8Q0p1zL0dVvca6JAQIxpELWKZess=; b=sjdBBMxNQx7qUwfZBDf3Cp9LSWGmij27L+B8wmlUM2H9/yXFJaGQfTPskveVk3xPzD dkk9YSLuKmEN7GZQDyJGNB5v0AuGGBfNYRQYLW145FfV2Wp25QkB+wrOTPZqjuXr+2nT xCbdIHKnYtjApSJ9UdcVmjxZY6bVbNjvZhEdplLPiSgiDi6TM2C3lIjuF9KyChGxT7jH 0UnVG5oql5ejD52auihuomp3MI05MvAUd6AJXN81N2ydyTE/ockE4YESNwNY8foJsUOd TLbisZFcT9RUi1/Qr2lvEvl7l3CAk8QARoyVpAO08JVP8ijCfk5H+1YO2S1dDj1fMB5T PQmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783983772; x=1784588572; 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:content-type; bh=lKjINVU4cgcSq/r8Q0p1zL0dVvca6JAQIxpELWKZess=; b=ebL1icaV1JaWpGhWrIPv84lY9SIdLPnhismTU6B8cuiRxkLQeJm4w8m269Fa8oh/Ka MFG7hNO0qf+KkvxzyIoFSFbBjJIhd3wXfDblchP7LC/tH7pF7MI/Oha4FQEahZsU9jik 8T3KQCqoH1cKMyeLZEIx8mnpxRy5kuUzX0n7yFyKv8J5+2vue3A3ZvITdjFzRHHgwEkN +zJDbGkuOP7HWD9Hr8mKo+MjfWe+QMG/hRODeBTzNmriT/WoExag2OwzE/3n9Ypsm2EJ cGzC1kfRqy3UOKgrKlzcCc6PERmTQi/y3V3CWTdaJ/XF4TcaZsrEeFkfNJ259Giytbpy vRlw== X-Gm-Message-State: AOJu0Yzet1JqWU6LfKyggGLRAODxGQR9fBHbGHgEfrAXEyWTCbOLH72n of0OpyUrpolKuci/K2+cZk7nQtGzz9iwcSVLoTjYUbw/fvrIdzHfjFZi6+qgU3YGKBCcEEA9wDJ mHYET X-Gm-Gg: AfdE7cnLrMsI47LMi8Ljdju9ka4jR4/cAYUPztGsSCGTQm4AxyPqnJQZL+lIVF1GPNe jmInIygWwAGgsEKvg0PBzsyMHnPMFBEgQgkMZQtrzVVaWcElbo5v3VGYfMGTbvZrafs3mJ6nPao 5YuOyi1MV/bpfHtiLBTvpH2vFmhUNFkK1fZH5TsXBC8fy8itoGDb5vEi3rFlMMT7f6QGIwgXLPT inRth5CYTiVv7RkP6glUg5P+qKYI66rBxZACPoHb4xLz1D86dcPSbcVPAJP6Ev2PyfxrboBb1p6 ow2q2CSQjvIM39OkYxeW6Wa2/rkImzLnsVlbUnylSRBNRJhkDI6rnZWmQxfS8yyTMdJAD+fhpup LqCUr9TdqdpyM7UKH5T9VAGk8P85RKuDt81Qj0ipqGvhE8ZqakfgLHFXNXsTiDOijMT1BfE0OrN Agg3pmtss72bGEQuh+ekH6Wc0GPu9b X-Received: by 2002:a17:90b:3f0c:b0:38e:1497:af5b with SMTP id 98e67ed59e1d1-38e1ae634a3mr70201a91.1.1783983771970; Mon, 13 Jul 2026 16:02:51 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 08/10] target/arm: Implement [SU]TMOPA (2-way) Date: Mon, 13 Jul 2026 16:02:42 -0700 Message-ID: <20260713230244.70174-9-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713230244.70174-1-richard.henderson@linaro.org> References: <20260713230244.70174-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62d; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62d.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783983833738158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sme-defs.h | 3 +++ target/arm/tcg/sme_helper.c | 12 ++++++++++++ target/arm/tcg/translate-sme.c | 21 +++++++++++++++++++++ target/arm/tcg/sme.decode | 3 +++ 4 files changed, 39 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 8a959447b2..1de72b7472 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -411,3 +411,6 @@ DEF_HELPER_FLAGS_6(sme_ftmopa_ss, TCG_CALL_NO_RWG, void= , ptr, ptr, ptr, ptr, fps =20 DEF_HELPER_FLAGS_6(sme_bftmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, env, i32) DEF_HELPER_FLAGS_6(sme_ftmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, env, i32) + +DEF_HELPER_FLAGS_5(sme_stmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) +DEF_HELPER_FLAGS_5(sme_utmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 3d7aefac5b..951cbbf58e 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -3123,6 +3123,18 @@ IMOP4_2WAY(umop4s_sh, -, int32_t, uint16_t, uint16_t) =20 #undef IMOP4_2WAY =20 +#define ITMOP_2WAY(TNAME, MNAME) \ +void HELPER(sme_##TNAME)(void *vza, void *vzn, void *vzm, \ + void *vzk, uint32_t desc) \ +{ \ + sme_tmop_2way_sh(vza, vzn, vzm, vzk, NULL, desc, inner_##MNAME); \ +} + +ITMOP_2WAY(stmopa_sh, smop4a_sh) +ITMOP_2WAY(utmopa_sh, umop4a_sh) + +#undef ITMOP_2WAY + #define IMOP4_4WAY(NAME, OP, TYPED, TYPEN, TYPEM) \ static void inner_##NAME(void *vd, void *vn, void *vm, void *vinfo) \ { \ diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 0fda2d9ac5..9c641de5c0 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2181,3 +2181,24 @@ TRANS_FEAT(FTMOPA_hb, aa64_sme_tmop_f8f16, do_tmop_f= p8, a, MO_16, gen_helper_sme_ftmopa_hb) TRANS_FEAT(FTMOPA_sb, aa64_sme_tmop_f8f32, do_tmop_fp8, a, MO_32, gen_helper_sme_ftmopa_sb) + +static bool do_tmop_int(DisasContext *s, arg_tmop *a, MemOp esz, + gen_helper_gvec_4 *fn) +{ + if (sme_smza_enabled_check(s)) { + int svl =3D streaming_vec_reg_size(s); + uint32_t desc =3D simd_desc(svl, svl, a->idx); + TCGv_ptr za =3D get_tile(s, esz, a->zad); + TCGv_ptr zn =3D vec_full_reg_ptr(s, a->zn); + TCGv_ptr zm =3D vec_full_reg_ptr(s, a->zm); + TCGv_ptr zk =3D vec_full_reg_ptr(s, a->zm); + + fn(za, zn, zm, zk, tcg_constant_i32(desc)); + } + return true; +} + +TRANS_FEAT(STMOPA_sh, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_stmopa_sh) +TRANS_FEAT(UTMOPA_sh, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_utmopa_sh) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index eab1f7e8fb..08036c60c0 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1151,3 +1151,6 @@ FTMOPA_sh 1000 0001 011 ..... 000 ... .... .. 0= 0 .. @tmop_o2 =20 FTMOPA_hb 1000 0000 011 ..... 000 ... .... .. 100 . @tmop_o1 FTMOPA_sb 1000 0000 011 ..... 000 ... .... .. 00 .. @tmop_o2 + +STMOPA_sh 1000 0000 010 ..... 100 ... .... .. 10 .. @tmop_o2 +UTMOPA_sh 1000 0001 010 ..... 100 ... .... .. 10 .. @tmop_o2 --=20 2.43.0 From nobody Sat Jul 25 20:47:28 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=1783983908; cv=none; d=zohomail.com; s=zohoarc; b=mym1G4mRHwqgnNxv/msNFFNcY+f9uDb71BLuhw+O4kL9FkjlN3bjpW8cEcHnG14MdGWVqRi614VMz/pdJdxnnBXHMqamlvh/YG6E9CeVvQKACzfQvuInUdf7o+xexyfjuQMzikdvACe51zVUZSaJ86RKrdQZIqz/ArhrFaMkiYQ= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783983908; 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=3rqfigLspY1b2yaZ2w3pjxnJUalskgeOLYUrf4vXRKg=; b=cV9RLG2tIYWRT8AOFfp3HNpNmHQueBcNg4/K6mpGiIWuZ4IBCVjZ7kkyrYEaHvx68NKmKN2zyQsimu0RNftMX/qnFPVXabFWNTHeVQJjJc6T6tZGAu1RPdfUzHYTMGWEOiwAnUFXjeHWqUuOtH+CPTJCmj0NjKAE8rlspmdocWk= 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 1783983908116828.0357082969911; Mon, 13 Jul 2026 16:05:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjPfu-0006An-6U; Mon, 13 Jul 2026 19:02:58 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wjPfr-00068j-SY for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:55 -0400 Received: from mail-pl1-x629.google.com ([2607:f8b0:4864:20::629]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wjPfq-0005oG-6g for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:55 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2caea3f742bso41234305ad.0 for ; Mon, 13 Jul 2026 16:02:53 -0700 (PDT) Received: from stoup.. ([71.212.146.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bf8e9csm106902965ad.24.2026.07.13.16.02.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 16:02:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783983773; x=1784588573; 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:content-type; bh=3rqfigLspY1b2yaZ2w3pjxnJUalskgeOLYUrf4vXRKg=; b=yYD+zEqN2hmYtbgP0DdccO46C2Cj3agCGMQeePqL40aZ1PEsdCVxq97MkzW68kGXBY aUmSE0GrTSDgY4WaW5w1Uf+cE7y5gOuZAvLFoEXEKq5ePpTUYM6/KWTe+MTn8yCSq9nv x43IA83HdOCuQP0CFVtOJxtPm1TWKZvQGPyPZmPAKhvz01Sq9+j6mJSw3HUhCqhPNBsh VVY1vlaLa6rEHOKc0FQyK9qGs+ZQ6zXl0el5DseNbLegzIK0GY9Z1Qg78Lp7JEi7CNYh m1mgc64fg++SdxQyhBUE0VoNriWyXKaTI+wIjqbnm8LDpQoXPY7crZubLjdleW7FE1ea RTuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783983773; x=1784588573; 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:content-type; bh=3rqfigLspY1b2yaZ2w3pjxnJUalskgeOLYUrf4vXRKg=; b=aBuk09NJAEcsAju84vrfac2BA4stsKxy5cWuWZjUYc+tfd0jDPah3Hwx7fwAEphJpx hntr07/Wd81AbwRcuKsXegV+UuE0PgEOAYUziS0P4WevqWyFplCGboZSoyY6raLKdJtT fBJ4tZIeDx+4lJ3kptohXk8MyAhJEnMM8abnOn3V85iWDlhF6mYxBdn0N21/05WPHMSJ lnxtcr3G0l3GVpWCab7moE+b+QpnLwdmPwn6JHyX38p2BA3Csz84WLWy/6UedlvFEMHu xlYp6SNecQjRQ/NCpInxktXKwx7X1q1kOrQolpBDc7pSPkw6P//xqc6BepHgAaQwKmwO WLUQ== X-Gm-Message-State: AOJu0YwFx4y10C9WexS4DtYumB1K7iqyySO56xyn8s8GQ9emDcTpQJnF zA0GiB8OqjE4yT9iJe7YRQI1zqHT0q3CLz+wdkuAMCGw3LKMW6MkEOk8x2D4HY7g1WkN3kV9xfp ynAmd X-Gm-Gg: AfdE7ckRGRzw8Wspj6QvH5K3nzOmEq0zp9Y17UHXdTkTtxqGrwiM3hp83NRC7716U4X j6NjSy2+d9lk2qUwj6uOmGGrdbmHTEbGzy+W2Wenym7O2guBQVtnN1LOB5Ab6dHtvbpb5C4kh67 VWobOukPHjMXYXvJj8z+ZfMduOHislpDygyC8HX9PocxlQ1u0viUS6yU1nx7QWfDSt7GxjPauoK yYqK7VsnkN12nbwFW7SyywC5ne/lezFNKXvr2TxubCe/OA7qBq94wG7K7PWJUJGgnH41VVngLbO 5i12JxBvijqrwjnmw7rqd8SiHuy2s25s0xfpENHpgSPa0QiHEMtLJCMN5pSVY7UMYMvwDk0CsM1 dYV8yIeQ9r051eKaiDd6zNKmHRChBbGx41RX4VXnwYz4yYPCo49kKrOeNFm7hy3y+SRyWOkBirG sFDcRqEwbixE4eo3tPNw== X-Received: by 2002:a17:902:d2cb:b0:2c9:a247:171 with SMTP id d9443c01a7336-2ce9e7adb4fmr106609905ad.1.1783983772668; Mon, 13 Jul 2026 16:02:52 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 09/10] target/arm: Implement {S,SU,US,U}TMOPA (4-way) Date: Mon, 13 Jul 2026 16:02:43 -0700 Message-ID: <20260713230244.70174-10-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713230244.70174-1-richard.henderson@linaro.org> References: <20260713230244.70174-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::629; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x629.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783983909478158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/helper-sme-defs.h | 5 +++++ target/arm/tcg/sme_helper.c | 14 ++++++++++++++ target/arm/tcg/translate-sme.c | 9 +++++++++ target/arm/tcg/sme.decode | 5 +++++ 4 files changed, 33 insertions(+) diff --git a/target/arm/tcg/helper-sme-defs.h b/target/arm/tcg/helper-sme-d= efs.h index 1de72b7472..b8cb643367 100644 --- a/target/arm/tcg/helper-sme-defs.h +++ b/target/arm/tcg/helper-sme-defs.h @@ -414,3 +414,8 @@ DEF_HELPER_FLAGS_6(sme_ftmopa_sh, TCG_CALL_NO_RWG, void= , ptr, ptr, ptr, ptr, env =20 DEF_HELPER_FLAGS_5(sme_stmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) DEF_HELPER_FLAGS_5(sme_utmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) + +DEF_HELPER_FLAGS_5(sme_stmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) +DEF_HELPER_FLAGS_5(sme_sutmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, i32) +DEF_HELPER_FLAGS_5(sme_utmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, pt= r, i32) +DEF_HELPER_FLAGS_5(sme_ustmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, p= tr, i32) diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 951cbbf58e..9de95428d2 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -3168,3 +3168,17 @@ IMOP4_4WAY(usmop4a_dh, +, int64_t, uint16_t, int16_t) IMOP4_4WAY(usmop4s_dh, -, int64_t, uint16_t, int16_t) =20 #undef IMOP4_4WAY + +#define ITMOP_4WAY(TNAME, MNAME) \ +void HELPER(sme_##TNAME)(void *vza, void *vzn, void *vzm, \ + void *vzk, uint32_t desc) \ +{ \ + sme_tmop_4way_sb(vza, vzn, vzm, vzk, NULL, desc, inner_##MNAME); \ +} + +ITMOP_4WAY(stmopa_sb, smop4a_sb) +ITMOP_4WAY(utmopa_sb, umop4a_sb) +ITMOP_4WAY(sutmopa_sb, sumop4a_sb) +ITMOP_4WAY(ustmopa_sb, usmop4a_sb) + +#undef ITMOP_4WAY diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 9c641de5c0..fb296ae02f 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -2202,3 +2202,12 @@ TRANS_FEAT(STMOPA_sh, aa64_sme_tmop, do_tmop_int, a, MO_32, gen_helper_sme_stmopa_sh) TRANS_FEAT(UTMOPA_sh, aa64_sme_tmop, do_tmop_int, a, MO_32, gen_helper_sme_utmopa_sh) + +TRANS_FEAT(STMOPA_sb, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_stmopa_sb) +TRANS_FEAT(SUTMOPA_sb, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_sutmopa_sb) +TRANS_FEAT(USTMOPA_sb, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_ustmopa_sb) +TRANS_FEAT(UTMOPA_sb, aa64_sme_tmop, do_tmop_int, + a, MO_32, gen_helper_sme_utmopa_sb) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 08036c60c0..e8176fffdb 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -1154,3 +1154,8 @@ FTMOPA_sb 1000 0000 011 ..... 000 ... .... .. 0= 0 .. @tmop_o2 =20 STMOPA_sh 1000 0000 010 ..... 100 ... .... .. 10 .. @tmop_o2 UTMOPA_sh 1000 0001 010 ..... 100 ... .... .. 10 .. @tmop_o2 + +STMOPA_sb 1000 0000 010 ..... 100 ... .... .. 00 .. @tmop_o2 +SUTMOPA_sb 1000 0000 011 ..... 100 ... .... .. 00 .. @tmop_o2 +USTMOPA_sb 1000 0001 010 ..... 100 ... .... .. 00 .. @tmop_o2 +UTMOPA_sb 1000 0001 011 ..... 100 ... .... .. 00 .. @tmop_o2 --=20 2.43.0 From nobody Sat Jul 25 20:47:28 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=1783983832; cv=none; d=zohomail.com; s=zohoarc; b=WCXCkIN9eBFvw3cYvxMuffTWzOVRD1yPeA6MvTfzagQ/fJ0ZELOmecUQ9lyYk/S+GgW/gZ4gC5A3ZZD+zAUParF1Ok0fG/6Uqt/K76NoxE9/6rnGKNJxG4dVXr60ippbXEzW95t5fFGbEDFG0BFqBFYYm1a5zn/kQeK6m9ouiME= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1783983832; 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=LQCl/R1yssx48UUucnUCgjegUycmuRreckK23eAbJps=; b=ErdTTEacelrGgiKl81n3ZISoDXP6h5tsfLHSno1ItGztmO1NqnOuQPmBkJLFoM9wWx8/B7i7wHtb75HRvVljNWb6LJZEecN6pR98CRK4nFi8Gq8LM9303zIfLEL3Xz5/zdCIw2oyLJwNUscMifCKejlNZTYLaV7mSKWIXe5uHCE= 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 1783983832391632.675547019269; Mon, 13 Jul 2026 16:03:52 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wjPfw-0006CG-Ke; Mon, 13 Jul 2026 19:03: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 1wjPfs-00069n-Ia for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:56 -0400 Received: from mail-pl1-x630.google.com ([2607:f8b0:4864:20::630]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wjPfr-0005oe-1I for qemu-devel@nongnu.org; Mon, 13 Jul 2026 19:02:56 -0400 Received: by mail-pl1-x630.google.com with SMTP id d9443c01a7336-2ccf2360620so2529245ad.3 for ; Mon, 13 Jul 2026 16:02:54 -0700 (PDT) Received: from stoup.. ([71.212.146.49]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-2ccc9bf8e9csm106902965ad.24.2026.07.13.16.02.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 13 Jul 2026 16:02:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1783983773; x=1784588573; 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:content-type; bh=LQCl/R1yssx48UUucnUCgjegUycmuRreckK23eAbJps=; b=WOaBt+4pPj0DsSHIQs0N9OYlXfoAA7u5eSE0sgTJ8vT90tlEkKA2hj5pnYEhk9ToZ8 wTg5nadc27g4WWWPu6dzmmoyntsYRKXtvKUjSVLvvuEp4m3pEn1xVhOJmgjfSMltmGqB Y+i2bcNZbk06WK0njzRhjYdZm2TuQD0os777OKNe6dCjhNkOa73WOU7TDD17peSH3px4 RZwwbNzbknZxggFE/IiQttYictD0895gQnChwl03NBkr2PUSI9e/10ypVkeoILACAXDt ZaSL0kKGn7OmGt3Jj4aZlx5BoTh5etjlf8iRaEnsN3axfnLNsNiyOpecY+v3rw8OCPJB 74bA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783983773; x=1784588573; 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:content-type; bh=LQCl/R1yssx48UUucnUCgjegUycmuRreckK23eAbJps=; b=AD2jZJmbfsr4LAk3DvQsADt1KOlYg9jbzIAlz+Vg5wsXaYUnlcXvPeXbC85auhHGbs yQeJBr8dLkpzA/HvSDMSlUIrvOKMSxCOHt7Xhxq0MU/9q/MLYOGsmOPGkJuTeciYtuCg jLIAiXCxOCx0zH0fMX2TtHpXkQlEmdFjolc0WD7MOtppPFjmlqX3TMKkiMs7XSzfTPT3 2axwRbj2Yfaj7jiwyHW35cuM83cr23C8jkvEyx9WJkqR/9XX12/1xXQU6Gp++Ed+vhqK 45gQtpGsAEdQKN/pSgIzMi2e+LqCB7lN+28h3Ugtj6VWgDn3f36s+ePObxxHGmHePiAw ZLmA== X-Gm-Message-State: AOJu0YxDkmOfAVrSHvpUTNHRkkU4RS4QS54JHFnwsv23AxWnmVNq6WFQ iJrEi5yXHbrObOjdvBPoK0Za+hhVdTuvbCxkGiUfr1VQjsnd6IMQoJxtnSEZgYU9QLmWXpfIcXn QkXeS X-Gm-Gg: AfdE7clsIOdtUMhI+ajk/i70yvP1gZf8ZwF/PNh7V0Q8T1a06dhSA+/ZTKGr9sX+e4C mQCOS/yQYYfWfMhqfk4InMgnuQ1XfIZM6MkQW4sGyjnv/yrXvzrDW4ENoYzM+qrd4RMJQ5VBQtK 0F/bS9ZG5QzT/bjtX3sgOL08avo2EsvVWAWfNARdNu9VJ9H5wtDdsJBTt+0bVSlQDHpfsZDioFt Ovi6Y1CnAYlgUaA9MiP0+5iJFOg20I6eqfsIh2inPZX+AKDolWpHOIuNWehxa1M6wVjKDGJr/R/ 922etA1mJAh3vAXvWsDtqq+zmE6U/yGbl3JQb9eOR5RlWa14EFlkG1Ofbx2P5EPpHlmF8Wr+56r sh4M0JXrp08kysAkVMx3DxiB7/iQDg0PsvCsl7nobng8pUTwkiRLJ5vTJHs0Bjlh7o9Y8FNa3Pw tUre9D4aHcHVvMqsLrVA== X-Received: by 2002:a17:902:ce85:b0:2c6:a981:b591 with SMTP id d9443c01a7336-2ce9ee11b3dmr93941825ad.30.1783983773495; Mon, 13 Jul 2026 16:02:53 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 10/10] target/arm: Enable FEAT_SME_TMOP for -cpu max Date: Mon, 13 Jul 2026 16:02:44 -0700 Message-ID: <20260713230244.70174-11-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260713230244.70174-1-richard.henderson@linaro.org> References: <20260713230244.70174-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::630; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x630.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1783983833722158500 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 1 + target/arm/tcg/cpu64.c | 3 ++- docs/system/arm/emulation.rst | 1 + 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 64e25a04e3..48be49580a 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -177,6 +177,7 @@ abi_ulong get_elf_hwcap(CPUState *cs) GET_FEATURE_ID(aa64_ssve_fexpa, ARM_HWCAP_A64_SME_SFEXPA); GET_FEATURE_ID(aa64_fprcvt, ARM_HWCAP_A64_FPRCVT); GET_FEATURE_ID(aa64_sme_mop4, ARM_HWCAP_A64_SME_SMOP4); + GET_FEATURE_ID(aa64_sme_tmop, ARM_HWCAP_A64_SME_STMOP); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 8a3ebf6321..24f34947ec 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1384,8 +1384,9 @@ 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, SFEXPA, 1); /* FEAT_SSVE_FEXPA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SMOP4, 1); /* FEAT_SME_MOP4 */ + t =3D FIELD_DP64(t, ID_AA64SMFR0, STMOP, 1); /* FEAT_SME_TMOP */ + t =3D FIELD_DP64(t, ID_AA64SMFR0, SFEXPA, 1); /* FEAT_SSVE_FEXPA */ t =3D FIELD_DP64(t, ID_AA64SMFR0, AES, 1); /* FEAT_SSVE_AES */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP2, 1); /* FEAT_SSVE_FP8DOT2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, SF8DP4, 1); /* FEAT_SSVE_FP8DOT4 */ diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index 4f413d69ef..a4ac2a2c85 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -176,6 +176,7 @@ the following architecture extensions: - 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_SME_MOP4 (Quarter-tile outer product instructions) +- FEAT_SME_TMOP (Structured sparsity outer product instructions) - FEAT_SSVE_AES (Streaming SVE Mode Advanced Encryption Standard and 128-b= it polynomial multiply long instructions) - FEAT_SSVE_FEXPA (Streaming FEXPA instruction) - FEAT_SSVE_FP8DOT2 (SVE2 FP8 2-way dot product to half-precision instruct= ions in Streaming SVE mode) --=20 2.43.0