From nobody Sat Jul 25 12:31: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=1784483434; cv=none; d=zohomail.com; s=zohoarc; b=h1afhRIziIVuLf12QaqV3jCA3/l+MsyXkS5eYmfK+kMQSOSp0Oezfkyn1QHjRvOowDPXk4roqx/XwRLP4sq8muc9lty+wyYq8RL1xJ6xK7mxxIHH1FYwhHZzRwCii8ZsroD7jOglQXy8oZGSFi77Hwxy7tIyCjLXcaiu96Rvink= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784483434; 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=LdFQn/wRhipZIaSYzoAsurGex/nWNiOc/pNKvI17GKE=; b=Q5lbf2P74c4c8U+I4UyD1FpiB6hO5/9t3t1iu3WaRtydreSzezIAW0oXZ6P/iehTXTc/BePOfLbodlG+FIdasX9pVZDZSGnNv61z1JHjwGLsgcSYbBVIPAvNCeyKXTSoCbQck7woslgKqXGWq+FS2aLHsFaaslH/aQ+jl+ktXgY= 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 1784483434384990.3265888390034; Sun, 19 Jul 2026 10:50:34 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlVdf-0000ef-Um; Sun, 19 Jul 2026 13:49:21 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlVdb-0000dX-Et for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:15 -0400 Received: from mail-pl1-x631.google.com ([2607:f8b0:4864:20::631]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wlVdZ-0003Bh-K7 for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:15 -0400 Received: by mail-pl1-x631.google.com with SMTP id d9443c01a7336-2ccf2360620so53536715ad.3 for ; Sun, 19 Jul 2026 10:49:13 -0700 (PDT) Received: from stoup.. ([32.140.233.50]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a20c158sm30471881eec.29.2026.07.19.10.49.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 10:49:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1784483352; x=1785088152; 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=LdFQn/wRhipZIaSYzoAsurGex/nWNiOc/pNKvI17GKE=; b=tBeM4+IBGy1KtCdt2wOYdPCVwEBe0D5kJmp0txAByPz6pPY5pBcxdAMhUc6Nle3oUL Io3V1zhXpnyeceBGsv6d7LtbGVN/qPmgV0nc5qEWQoldpWzRQfm8ylKIzkaoJDkN0TCJ rSM29/TUeMHBs21fYtM2+mSiaaeFareNYyLk/7UQ0bQEDH73kibIFN/D29MbAJVh5O65 reAh0QNaP1oZfZc+5IFMIf5vB46Uil1WvEi5RCMo3RQk8Vl3fY+eeCfkqnDS44FAzbiv 2Qn3s4vrIQ8ucKB0znx8bxRuD7HtfvbcrY+Niuje0D8gfRMQ7W7m9RC7rT5aBuohR32L hkTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784483352; x=1785088152; 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=LdFQn/wRhipZIaSYzoAsurGex/nWNiOc/pNKvI17GKE=; b=PvbOZBA6SWaXOLTDnKQwwMcwOQ8SjhewqW+++xGfQkfi4r51V5Ov1JTbxfcG25scRt IdE196B50P1dtxmVUEXiidRzBhmr2JLmdFMkHtivBN9zgM1C5CBrz9DFFcEYLllD63pO Uu809AVKjqYVOrBEjx31DiCMkYXB/wAMcT7bCOX5eQmhDmggNSIVh3AvyycMW4cvPTAm ejfu79wijMGYWmAqtvov1mFNoaGotPlABYVmh+mm7uuLW1L8Xxh2/lNSeZDxpboV3FHe soSoRHRLPRknnbu2nblLRm0XbD9TB5b8E2JhGgwUWINFDrjLcyK4vwIKmG763sdyN0Kr iGrQ== X-Gm-Message-State: AOJu0YxepDWRHvm5tSJzttXEwuMFuoYkxHFs9bk7w/fX7SLO8T1lkNII BUg38uSQgmFdXi+WdaNt3v1VOas5zOvqHCnI/bVqOlEZ9L/hw5XCfBw6Rg7ilEOBDUqS9tBC3Yo agxgo X-Gm-Gg: AfdE7cnypgxZDv8UE8coPiLY82YYDEClB35iQFv5qx+11Tp353vsdsb2wAG8hqnjw1w QUP4NqQtVmfLs7suBZ3w0Su/A5mouv+cBVaQmxuzlVxAg7uy98w1BGdrsi8KW7jnMf0bIM+/rrd 3c1gRnPCdjyD1MHpXPh1hEk4m6TuDQCFfYyEqz14OUTOFX9vM95TIv8NQXpzpQsm5MIyhdp4aqz bXUPMZxHyqdi5xuaG86D6O3QcZRfpNnyBM+M+lRc1krh/HbCnuGUsb83JMQwSjoEzJeh4qPYLUY b08lOOOOSNc86c/FrYjKCBMyJoqOsPr0x0OlPrg4HVAWxrKyUrvzsDExLRx0vz5EL9ochAIgx8x KbLAfmmy77iKx7iiGW+BtpkaQoqZO6pgxdSwh0G61GnW+mYCKrikngfWlf1x/3mFvwkmiFJH63e azOf9YUlTSl7PA3yOwBV3ZiuhOwW86 X-Received: by 2002:a05:6a20:734b:b0:3bf:6c08:2b2d with SMTP id adf61e73a8af0-3c3ada90558mr10857540637.53.1784483351447; Sun, 19 Jul 2026 10:49:11 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 1/6] target/arm: Split zdn in do_z2z_n1 and do_z2z_n1_fpst Date: Sun, 19 Jul 2026 10:49:00 -0700 Message-ID: <20260719174905.420725-2-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260719174905.420725-1-richard.henderson@linaro.org> References: <20260719174905.420725-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::631; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x631.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1784483435527158500 Content-Type: text/plain; charset="utf-8" Rename from z2z to zzz to indicate zd and zn may not overlap. During decode, retain z2z name and duplicate the same field into zd and zn. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sme.c | 71 +++++++++++++++++----------------- target/arm/tcg/sme.decode | 8 ++-- 2 files changed, 39 insertions(+), 40 deletions(-) diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index fb296ae02f..cee609cc07 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -659,31 +659,30 @@ TRANS_FEAT(BMOPA, aa64_sme2, do_outprod, a, MO_32, ge= n_helper_sme2_bmopa_s) TRANS_FEAT(SMOPA2_s, aa64_sme2, do_outprod, a, MO_32, gen_helper_sme2_smop= a2_s) TRANS_FEAT(UMOPA2_s, aa64_sme2, do_outprod, a, MO_32, gen_helper_sme2_umop= a2_s) =20 -static bool do_z2z_n1(DisasContext *s, arg_z2z_en *a, GVecGen3Fn *fn) +static bool do_zzz_n1(DisasContext *s, arg_zzz_en *a, GVecGen3Fn *fn) { - int esz, dn, vsz, mofs, n; - bool overlap =3D false; + int esz =3D a->esz, vsz, mofs; + int overlap =3D -1; =20 if (!sme_sm_enabled_check(s)) { return true; } =20 - esz =3D a->esz; - n =3D a->n; - dn =3D a->zdn; mofs =3D vec_full_reg_offset(s, a->zm); vsz =3D streaming_vec_reg_size(s); =20 - for (int i =3D 0; i < n; i++) { - int dofs =3D vec_full_reg_offset(s, dn + i); + for (int i =3D 0, n =3D a->n; i < n; i++) { + int dofs =3D vec_full_reg_offset(s, a->zd + i); + int nofs =3D vec_full_reg_offset(s, a->zn + i); if (dofs =3D=3D mofs) { - overlap =3D true; + overlap =3D i; } else { - fn(esz, dofs, dofs, mofs, vsz, vsz); + fn(esz, dofs, nofs, mofs, vsz, vsz); } } - if (overlap) { - fn(esz, mofs, mofs, mofs, vsz, vsz); + if (overlap >=3D 0) { + int nofs =3D vec_full_reg_offset(s, a->zn + overlap); + fn(esz, mofs, nofs, mofs, vsz, vsz); } return true; } @@ -710,14 +709,14 @@ static void gen_sme2_urshl(unsigned vece, uint32_t rd= _ofs, uint32_t rn_ofs, tcg_gen_gvec_3_ool(rd_ofs, rn_ofs, rm_ofs, opr_sz, max_sz, 0, fns[vece= ]); } =20 -TRANS_FEAT(ADD_n1, aa64_sme2, do_z2z_n1, a, tcg_gen_gvec_add) -TRANS_FEAT(SMAX_n1, aa64_sme2, do_z2z_n1, a, tcg_gen_gvec_smax) -TRANS_FEAT(SMIN_n1, aa64_sme2, do_z2z_n1, a, tcg_gen_gvec_smin) -TRANS_FEAT(UMAX_n1, aa64_sme2, do_z2z_n1, a, tcg_gen_gvec_umax) -TRANS_FEAT(UMIN_n1, aa64_sme2, do_z2z_n1, a, tcg_gen_gvec_umin) -TRANS_FEAT(SRSHL_n1, aa64_sme2, do_z2z_n1, a, gen_sme2_srshl) -TRANS_FEAT(URSHL_n1, aa64_sme2, do_z2z_n1, a, gen_sme2_urshl) -TRANS_FEAT(SQDMULH_n1, aa64_sme2, do_z2z_n1, a, gen_gvec_sve2_sqdmulh) +TRANS_FEAT(ADD_n1, aa64_sme2, do_zzz_n1, a, tcg_gen_gvec_add) +TRANS_FEAT(SMAX_n1, aa64_sme2, do_zzz_n1, a, tcg_gen_gvec_smax) +TRANS_FEAT(SMIN_n1, aa64_sme2, do_zzz_n1, a, tcg_gen_gvec_smin) +TRANS_FEAT(UMAX_n1, aa64_sme2, do_zzz_n1, a, tcg_gen_gvec_umax) +TRANS_FEAT(UMIN_n1, aa64_sme2, do_zzz_n1, a, tcg_gen_gvec_umin) +TRANS_FEAT(SRSHL_n1, aa64_sme2, do_zzz_n1, a, gen_sme2_srshl) +TRANS_FEAT(URSHL_n1, aa64_sme2, do_zzz_n1, a, gen_sme2_urshl) +TRANS_FEAT(SQDMULH_n1, aa64_sme2, do_zzz_n1, a, gen_gvec_sve2_sqdmulh) =20 static bool do_z2z_nn(DisasContext *s, arg_z2z_en *a, GVecGen3Fn *fn) { @@ -750,11 +749,11 @@ TRANS_FEAT(SRSHL_nn, aa64_sme2, do_z2z_nn, a, gen_sme= 2_srshl) TRANS_FEAT(URSHL_nn, aa64_sme2, do_z2z_nn, a, gen_sme2_urshl) TRANS_FEAT(SQDMULH_nn, aa64_sme2, do_z2z_nn, a, gen_gvec_sve2_sqdmulh) =20 -static bool do_z2z_n1_fpst(DisasContext *s, arg_z2z_en *a, +static bool do_zzz_n1_fpst(DisasContext *s, arg_zzz_en *a, gen_helper_gvec_3_ptr * const fns[4]) { - int esz =3D a->esz, n, dn, vsz, mofs; - bool overlap =3D false; + int esz =3D a->esz, vsz, mofs; + int overlap =3D -1; gen_helper_gvec_3_ptr *fn =3D fns[esz]; TCGv_ptr fpst; =20 @@ -770,21 +769,21 @@ static bool do_z2z_n1_fpst(DisasContext *s, arg_z2z_e= n *a, } =20 fpst =3D fpstatus_ptr(esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64); - n =3D a->n; - dn =3D a->zdn; mofs =3D vec_full_reg_offset(s, a->zm); vsz =3D streaming_vec_reg_size(s); =20 - for (int i =3D 0; i < n; i++) { - int dofs =3D vec_full_reg_offset(s, dn + i); + for (int i =3D 0, n =3D a->n; i < n; i++) { + int dofs =3D vec_full_reg_offset(s, a->zd + i); + int nofs =3D vec_full_reg_offset(s, a->zn + i); if (dofs =3D=3D mofs) { - overlap =3D true; + overlap =3D i; } else { - tcg_gen_gvec_3_ptr(dofs, dofs, mofs, fpst, vsz, vsz, 0, fn); + tcg_gen_gvec_3_ptr(dofs, nofs, mofs, fpst, vsz, vsz, 0, fn); } } - if (overlap) { - tcg_gen_gvec_3_ptr(mofs, mofs, mofs, fpst, vsz, vsz, 0, fn); + if (overlap >=3D 0) { + int nofs =3D vec_full_reg_offset(s, a->zn + overlap); + tcg_gen_gvec_3_ptr(mofs, nofs, mofs, fpst, vsz, vsz, 0, fn); } return true; } @@ -831,7 +830,7 @@ static gen_helper_gvec_3_ptr * const f_vector_fmax[2][4= ] =3D { gen_helper_gvec_ah_fmax_s, gen_helper_gvec_ah_fmax_d }, }; -TRANS_FEAT(FMAX_n1, aa64_sme2, do_z2z_n1_fpst, a, f_vector_fmax[s->fpcr_ah= ]) +TRANS_FEAT(FMAX_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fmax[s->fpcr_ah= ]) TRANS_FEAT(FMAX_nn, aa64_sme2, do_z2z_nn_fpst, a, f_vector_fmax[s->fpcr_ah= ]) =20 static gen_helper_gvec_3_ptr * const f_vector_fmin[2][4] =3D { @@ -844,7 +843,7 @@ static gen_helper_gvec_3_ptr * const f_vector_fmin[2][4= ] =3D { gen_helper_gvec_ah_fmin_s, gen_helper_gvec_ah_fmin_d }, }; -TRANS_FEAT(FMIN_n1, aa64_sme2, do_z2z_n1_fpst, a, f_vector_fmin[s->fpcr_ah= ]) +TRANS_FEAT(FMIN_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fmin[s->fpcr_ah= ]) TRANS_FEAT(FMIN_nn, aa64_sme2, do_z2z_nn_fpst, a, f_vector_fmin[s->fpcr_ah= ]) =20 static gen_helper_gvec_3_ptr * const f_vector_fmaxnm[4] =3D { @@ -853,7 +852,7 @@ static gen_helper_gvec_3_ptr * const f_vector_fmaxnm[4]= =3D { gen_helper_gvec_fmaxnum_s, gen_helper_gvec_fmaxnum_d, }; -TRANS_FEAT(FMAXNM_n1, aa64_sme2, do_z2z_n1_fpst, a, f_vector_fmaxnm) +TRANS_FEAT(FMAXNM_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fmaxnm) TRANS_FEAT(FMAXNM_nn, aa64_sme2, do_z2z_nn_fpst, a, f_vector_fmaxnm) =20 static gen_helper_gvec_3_ptr * const f_vector_fminnm[4] =3D { @@ -862,7 +861,7 @@ static gen_helper_gvec_3_ptr * const f_vector_fminnm[4]= =3D { gen_helper_gvec_fminnum_s, gen_helper_gvec_fminnum_d, }; -TRANS_FEAT(FMINNM_n1, aa64_sme2, do_z2z_n1_fpst, a, f_vector_fminnm) +TRANS_FEAT(FMINNM_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fminnm) TRANS_FEAT(FMINNM_nn, aa64_sme2, do_z2z_nn_fpst, a, f_vector_fminnm) =20 static gen_helper_gvec_3_ptr * const f_vector_famax[4] =3D { @@ -887,7 +886,7 @@ static gen_helper_gvec_3_ptr * const f_vector_fscale[4]= =3D { gen_helper_gvec_fscale_s, gen_helper_gvec_fscale_d, }; -TRANS_FEAT(FSCALE_n1, aa64_sme2_f8cvt, do_z2z_n1_fpst, a, f_vector_fscale) +TRANS_FEAT(FSCALE_n1, aa64_sme2_f8cvt, do_zzz_n1_fpst, a, f_vector_fscale) TRANS_FEAT(FSCALE_nn, aa64_sme2_f8cvt, do_z2z_nn_fpst, a, f_vector_fscale) =20 /* Add/Sub vector Z[m] to each Z[n*N] with result in ZA[d*N]. */ diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index e8176fffdb..30946330ff 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -220,11 +220,13 @@ UMOPA2_s 1010000 1 10 0 ..... ... ... ..... . = 10 .. @op_32 %zd_ax2 1:4 !function=3Dtimes_2 %zd_ax4 2:3 !function=3Dtimes_4 =20 +&zzz_en zd zn zm esz n &z2z_en zdn zm esz n + @z2z_2x1 ....... . esz:2 .. zm:4 ....0. ..... .... . \ - &z2z_en n=3D2 zdn=3D%zd_ax2 + &zzz_en n=3D2 zd=3D%zd_ax2 zn=3D%zd_ax2 @z2z_4x1 ....... . esz:2 .. zm:4 ....1. ..... ...0 . \ - &z2z_en n=3D4 zdn=3D%zd_ax4 + &zzz_en n=3D4 zd=3D%zd_ax4 zn=3D%zd_ax4 =20 SMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 0 @z2z_2x1 SMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 0 @z2z_4x1 @@ -990,8 +992,6 @@ UZP_2 11000001 esz:2 1 zm:5 110100 zn:5 .... = 1 \ UZP_2 11000001 00 1 zm:5 110101 zn:5 .... 1 \ &zzz_e zd=3D%zd_ax2 esz=3D4 =20 -&zzz_en zd zn zm esz n - FCLAMP 11000001 esz:2 1 zm:5 110000 zn:5 .... 0 \ &zzz_en zd=3D%zd_ax2 n=3D2 FCLAMP 11000001 esz:2 1 zm:5 110010 zn:5 ...0 0 \ --=20 2.43.0 From nobody Sat Jul 25 12:31: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=1784483443; cv=none; d=zohomail.com; s=zohoarc; b=KuPgDx0L3Hu+FaOUM8Fh2o1fUTWixhDb1rcBohVVi7skugnt7nOya2TfcO4JeOeEL2FXutYMPrxlAbN/SRj1w3bSpysl6vCgvPL8PsxER8RnNCalQ/ZyG0a+6zn1a/A+X/G9fakvaMBg7lmsf0Q7ZZRK6syAzQtMkccUh6Es/bM= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784483443; 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=sGlXj1O3kPVSdzD1psVMFLlRXXlssVVKH+b4+oDeL/E=; b=V0rrBYEdKAiiQ5RhHjIyCNOI6ni6a7rMd0d52pnbJc6gFO4KY+FTxSYCONA/YQaaXBMV2LXEJ4XA/Wjs3O18DFbsY2w6cqaSK8K6DJB07p/3bcxvTX7g/ZSglOfyLyH/UOwmI0YSDGg0gxmWmREAsvRH458uQJzkZhiF8Uj8dJU= 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 1784483443588427.2759789961889; Sun, 19 Jul 2026 10:50:43 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlVdn-0000hd-Vp; Sun, 19 Jul 2026 13:49:28 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlVdd-0000eJ-1p for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:17 -0400 Received: from mail-pg1-x52e.google.com ([2607:f8b0:4864:20::52e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wlVda-0003By-PY for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:16 -0400 Received: by mail-pg1-x52e.google.com with SMTP id 41be03b00d2f7-cb5a6aa8760so862618a12.1 for ; Sun, 19 Jul 2026 10:49:14 -0700 (PDT) Received: from stoup.. ([32.140.233.50]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a20c158sm30471881eec.29.2026.07.19.10.49.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 10:49:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1784483353; x=1785088153; 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=sGlXj1O3kPVSdzD1psVMFLlRXXlssVVKH+b4+oDeL/E=; b=fkHlDoxeqjMgd0wye31mrBItV5dT1jir2X93EhFCYzoS0CHXYjujk7xbq1Td567Lr5 SiZwMZpHdECmPKhq+evIFIEnhc1LZyGnH57ZOW9fFK8y5QhgZ7EkagO1OocJV1fft5ZA 7Zs9dQT0Q7hmPcXD88+bxBU5Z2s7YzNXQxKKx6WdHteXKrhm2Q2pE91Ogb/CFsa4/StH yw99GobbLw2hsqt5noWlLGk221nK492wCNXZCXaEBjQ7oLUwcT/evD1vZAOB82eyVo83 7T1d3dTMG0mnyqHWGEhiiOV6wwdpw2fjTGSnSqMBjgAPiOSsjf/2RQzs9Uxzy0Wxl6h1 u69Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784483353; x=1785088153; 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=sGlXj1O3kPVSdzD1psVMFLlRXXlssVVKH+b4+oDeL/E=; b=fidO/dsH86tZ4TTHWorGWCg5la+GQ3BJHf2HFnKxES0t8dAPcZNQq0ST+XGTtbvnzg ISg66axLD/ErZayDhTKXU1/rW9iTtWmA2J8RnW7rj5YLITjtCDDS/72bFr9Gg5xbzy02 VF9YBMR0bk/G/jl3K98DeEgN8iVjztlBQt+bHCLOTrYuyAq3XXzld+JDDDKQHrfMx/yF lNstDd7ff184j8l/MdEvsvtldofwn5O/1yfJDJCGdtiEKmFE/1CvVyeirLJfVV+c03ea 0qM4vedYpxV8awXKUyytaSCB1d9+RpgzNIVlzQmJ7dXYF7J77RYPxd4FaUoysLnWrnLZ HyPg== X-Gm-Message-State: AOJu0YwVSV3FHQPkoKIiujWW6sYKR0pXufVgdULcs0ccx4k3iwkzYcH0 BH9Y1BscoYf3AG34UCJiwnoslTu6onqEjOrwRcE2xP/W7maH3sEDMwpNrcc3eDvcncQHoxg08VK 7H0Bd X-Gm-Gg: AfdE7ck3zKtLUDbo8d1t4y5ugtHUsqeRcjF5E0IcbpzNt0ovizXRTIlwDr5+Z5AbPf2 8NC2D3sflpfk3YgSWFwJgSecLNDcA1WzGdLMP3UsSIcfC3bcIU8SBKfoXWRzGXDJPzwf0ejTpBm //5Eoc3BsbiF1M+dFtjXzlBhJLnW/A3IMaA5vLt2P2YOmVXsu+T9Y/CXiWmU7xb06ZYCWVfgWXp wp/TLORE8nIrJQshbxVkNs3DZfJXUXs1mLB0Jooqdj9phpAItEQBcj0B7hfO9GJAVlWMxhqvmFd I0VoVP7qp9MW3kb3eWFK4LyJCaymsLX+EFLm4GR9K3St0ypb1D9dyz9M75ROh8pbsdAROWpZrUO PSTn3hLJn4NH+Q+pB1fe8jW48sPAP//RW6B5Cp9TNhDyix2anOPieuD+l+ZY5qAiQHpc0yNRg1h k7ZRsld1c= X-Received: by 2002:a05:6a20:4310:b0:3bf:bde7:d679 with SMTP id adf61e73a8af0-3c3ada190aemr11584602637.40.1784483352955; Sun, 19 Jul 2026 10:49:12 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 2/6] target/arm: Split zdn in do_z2z_nn and do_z2z_nn_fpst Date: Sun, 19 Jul 2026 10:49:01 -0700 Message-ID: <20260719174905.420725-3-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260719174905.420725-1-richard.henderson@linaro.org> References: <20260719174905.420725-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::52e; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x52e.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=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: 1784483445508158502 Content-Type: text/plain; charset="utf-8" Rename from z2z to zzz to indicate zd and zn may not overlap. During decode, retain z2z name and duplicate the same field into zd and zn. Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sme.c | 61 ++++++++++++++++------------------ target/arm/tcg/sme.decode | 5 ++- 2 files changed, 30 insertions(+), 36 deletions(-) diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index cee609cc07..5f02d462d3 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -718,36 +718,33 @@ TRANS_FEAT(SRSHL_n1, aa64_sme2, do_zzz_n1, a, gen_sme= 2_srshl) TRANS_FEAT(URSHL_n1, aa64_sme2, do_zzz_n1, a, gen_sme2_urshl) TRANS_FEAT(SQDMULH_n1, aa64_sme2, do_zzz_n1, a, gen_gvec_sve2_sqdmulh) =20 -static bool do_z2z_nn(DisasContext *s, arg_z2z_en *a, GVecGen3Fn *fn) +static bool do_zzz_nn(DisasContext *s, arg_zzz_en *a, GVecGen3Fn *fn) { - int esz, dn, dm, vsz, n; + int esz =3D a->esz, vsz; =20 if (!sme_sm_enabled_check(s)) { return true; } =20 - esz =3D a->esz; - n =3D a->n; - dn =3D a->zdn; - dm =3D a->zm; vsz =3D streaming_vec_reg_size(s); =20 - for (int i =3D 0; i < n; i++) { - int dofs =3D vec_full_reg_offset(s, dn + i); - int mofs =3D vec_full_reg_offset(s, dm + i); + for (int i =3D 0, n =3D a->n; i < n; i++) { + int dofs =3D vec_full_reg_offset(s, a->zd + i); + int nofs =3D vec_full_reg_offset(s, a->zn + i); + int mofs =3D vec_full_reg_offset(s, a->zm + i); =20 - fn(esz, dofs, dofs, mofs, vsz, vsz); + fn(esz, dofs, nofs, mofs, vsz, vsz); } return true; } =20 -TRANS_FEAT(SMAX_nn, aa64_sme2, do_z2z_nn, a, tcg_gen_gvec_smax) -TRANS_FEAT(SMIN_nn, aa64_sme2, do_z2z_nn, a, tcg_gen_gvec_smin) -TRANS_FEAT(UMAX_nn, aa64_sme2, do_z2z_nn, a, tcg_gen_gvec_umax) -TRANS_FEAT(UMIN_nn, aa64_sme2, do_z2z_nn, a, tcg_gen_gvec_umin) -TRANS_FEAT(SRSHL_nn, aa64_sme2, do_z2z_nn, a, gen_sme2_srshl) -TRANS_FEAT(URSHL_nn, aa64_sme2, do_z2z_nn, a, gen_sme2_urshl) -TRANS_FEAT(SQDMULH_nn, aa64_sme2, do_z2z_nn, a, gen_gvec_sve2_sqdmulh) +TRANS_FEAT(SMAX_nn, aa64_sme2, do_zzz_nn, a, tcg_gen_gvec_smax) +TRANS_FEAT(SMIN_nn, aa64_sme2, do_zzz_nn, a, tcg_gen_gvec_smin) +TRANS_FEAT(UMAX_nn, aa64_sme2, do_zzz_nn, a, tcg_gen_gvec_umax) +TRANS_FEAT(UMIN_nn, aa64_sme2, do_zzz_nn, a, tcg_gen_gvec_umin) +TRANS_FEAT(SRSHL_nn, aa64_sme2, do_zzz_nn, a, gen_sme2_srshl) +TRANS_FEAT(URSHL_nn, aa64_sme2, do_zzz_nn, a, gen_sme2_urshl) +TRANS_FEAT(SQDMULH_nn, aa64_sme2, do_zzz_nn, a, gen_gvec_sve2_sqdmulh) =20 static bool do_zzz_n1_fpst(DisasContext *s, arg_zzz_en *a, gen_helper_gvec_3_ptr * const fns[4]) @@ -788,10 +785,10 @@ static bool do_zzz_n1_fpst(DisasContext *s, arg_zzz_e= n *a, return true; } =20 -static bool do_z2z_nn_fpst(DisasContext *s, arg_z2z_en *a, +static bool do_zzz_nn_fpst(DisasContext *s, arg_zzz_en *a, gen_helper_gvec_3_ptr * const fns[4]) { - int esz =3D a->esz, n, dn, dm, vsz; + int esz =3D a->esz, vsz; gen_helper_gvec_3_ptr *fn =3D fns[esz]; TCGv_ptr fpst; =20 @@ -806,16 +803,14 @@ static bool do_z2z_nn_fpst(DisasContext *s, arg_z2z_e= n *a, } =20 fpst =3D fpstatus_ptr(esz =3D=3D MO_16 ? FPST_A64_F16 : FPST_A64); - n =3D a->n; - dn =3D a->zdn; - dm =3D a->zm; vsz =3D streaming_vec_reg_size(s); =20 - for (int i =3D 0; i < n; i++) { - int dofs =3D vec_full_reg_offset(s, dn + i); - int mofs =3D vec_full_reg_offset(s, dm + i); + for (int i =3D 0, n =3D a->n; i < n; i++) { + int dofs =3D vec_full_reg_offset(s, a->zd + i); + int nofs =3D vec_full_reg_offset(s, a->zn + i); + int mofs =3D vec_full_reg_offset(s, a->zm + i); =20 - tcg_gen_gvec_3_ptr(dofs, dofs, mofs, fpst, vsz, vsz, 0, fn); + tcg_gen_gvec_3_ptr(dofs, nofs, mofs, fpst, vsz, vsz, 0, fn); } return true; } @@ -831,7 +826,7 @@ static gen_helper_gvec_3_ptr * const f_vector_fmax[2][4= ] =3D { gen_helper_gvec_ah_fmax_d }, }; TRANS_FEAT(FMAX_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fmax[s->fpcr_ah= ]) -TRANS_FEAT(FMAX_nn, aa64_sme2, do_z2z_nn_fpst, a, f_vector_fmax[s->fpcr_ah= ]) +TRANS_FEAT(FMAX_nn, aa64_sme2, do_zzz_nn_fpst, a, f_vector_fmax[s->fpcr_ah= ]) =20 static gen_helper_gvec_3_ptr * const f_vector_fmin[2][4] =3D { { gen_helper_gvec_fmin_b16, @@ -844,7 +839,7 @@ static gen_helper_gvec_3_ptr * const f_vector_fmin[2][4= ] =3D { gen_helper_gvec_ah_fmin_d }, }; TRANS_FEAT(FMIN_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fmin[s->fpcr_ah= ]) -TRANS_FEAT(FMIN_nn, aa64_sme2, do_z2z_nn_fpst, a, f_vector_fmin[s->fpcr_ah= ]) +TRANS_FEAT(FMIN_nn, aa64_sme2, do_zzz_nn_fpst, a, f_vector_fmin[s->fpcr_ah= ]) =20 static gen_helper_gvec_3_ptr * const f_vector_fmaxnm[4] =3D { gen_helper_gvec_fmaxnum_b16, @@ -853,7 +848,7 @@ static gen_helper_gvec_3_ptr * const f_vector_fmaxnm[4]= =3D { gen_helper_gvec_fmaxnum_d, }; TRANS_FEAT(FMAXNM_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fmaxnm) -TRANS_FEAT(FMAXNM_nn, aa64_sme2, do_z2z_nn_fpst, a, f_vector_fmaxnm) +TRANS_FEAT(FMAXNM_nn, aa64_sme2, do_zzz_nn_fpst, a, f_vector_fmaxnm) =20 static gen_helper_gvec_3_ptr * const f_vector_fminnm[4] =3D { gen_helper_gvec_fminnum_b16, @@ -862,7 +857,7 @@ static gen_helper_gvec_3_ptr * const f_vector_fminnm[4]= =3D { gen_helper_gvec_fminnum_d, }; TRANS_FEAT(FMINNM_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fminnm) -TRANS_FEAT(FMINNM_nn, aa64_sme2, do_z2z_nn_fpst, a, f_vector_fminnm) +TRANS_FEAT(FMINNM_nn, aa64_sme2, do_zzz_nn_fpst, a, f_vector_fminnm) =20 static gen_helper_gvec_3_ptr * const f_vector_famax[4] =3D { NULL, @@ -870,7 +865,7 @@ static gen_helper_gvec_3_ptr * const f_vector_famax[4] = =3D { gen_helper_gvec_famax_s, gen_helper_gvec_famax_d, }; -TRANS_FEAT(FAMAX_nn, aa64_sme2_faminmax, do_z2z_nn_fpst, a, f_vector_famax) +TRANS_FEAT(FAMAX_nn, aa64_sme2_faminmax, do_zzz_nn_fpst, a, f_vector_famax) =20 static gen_helper_gvec_3_ptr * const f_vector_famin[4] =3D { NULL, @@ -878,7 +873,7 @@ static gen_helper_gvec_3_ptr * const f_vector_famin[4] = =3D { gen_helper_gvec_famin_s, gen_helper_gvec_famin_d, }; -TRANS_FEAT(FAMIN_nn, aa64_sme2_faminmax, do_z2z_nn_fpst, a, f_vector_famin) +TRANS_FEAT(FAMIN_nn, aa64_sme2_faminmax, do_zzz_nn_fpst, a, f_vector_famin) =20 static gen_helper_gvec_3_ptr * const f_vector_fscale[4] =3D { NULL, @@ -887,7 +882,7 @@ static gen_helper_gvec_3_ptr * const f_vector_fscale[4]= =3D { gen_helper_gvec_fscale_d, }; TRANS_FEAT(FSCALE_n1, aa64_sme2_f8cvt, do_zzz_n1_fpst, a, f_vector_fscale) -TRANS_FEAT(FSCALE_nn, aa64_sme2_f8cvt, do_z2z_nn_fpst, a, f_vector_fscale) +TRANS_FEAT(FSCALE_nn, aa64_sme2_f8cvt, do_zzz_nn_fpst, a, f_vector_fscale) =20 /* Add/Sub vector Z[m] to each Z[n*N] with result in ZA[d*N]. */ static bool do_azz_n1(DisasContext *s, arg_azz_n *a, int esz, diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 30946330ff..36fbe24faf 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -221,7 +221,6 @@ UMOPA2_s 1010000 1 10 0 ..... ... ... ..... . 10= .. @op_32 %zd_ax4 2:3 !function=3Dtimes_4 =20 &zzz_en zd zn zm esz n -&z2z_en zdn zm esz n =20 @z2z_2x1 ....... . esz:2 .. zm:4 ....0. ..... .... . \ &zzz_en n=3D2 zd=3D%zd_ax2 zn=3D%zd_ax2 @@ -266,9 +265,9 @@ FSCALE_n1 1100000 1 .. 10 .... 1010.0 01100 .... 0= @z2z_4x1 %zm_ax4 18:3 !function=3Dtimes_4 =20 @z2z_2x2 ....... . esz:2 . ....0 ....0. ..... .... . \ - &z2z_en n=3D2 zdn=3D%zd_ax2 zm=3D%zm_ax2 + &zzz_en n=3D2 zd=3D%zd_ax2 zn=3D%zd_ax2 zm=3D%zm_ax2 @z2z_4x4 ....... . esz:2 . ...00 ....1. ..... ...0 . \ - &z2z_en n=3D4 zdn=3D%zd_ax4 zm=3D%zm_ax4 + &zzz_en n=3D4 zd=3D%zd_ax4 zn=3D%zd_ax4 zm=3D%zm_ax4 =20 SMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 0 @z2z_2x2 SMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 0 @z2z_4x4 --=20 2.43.0 From nobody Sat Jul 25 12:31: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=1784483440; cv=none; d=zohomail.com; s=zohoarc; b=lFlaK8s8lkujronaC3RBvJFjD5SDswB1FVFn2d77rRXS+zsuuq1z7cV8T7tPfmd5SkA6KsClVE5aXf6Krgj5FGkaFqiC3ZeN0VddWflMLF8aUwcI8XvSMtNB07untLvYnAogaFzoY1su9aN4lWQQblgaKImaBJTIGv8AFIXIAeg= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784483440; 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=cmppddNv7Pj2UPySj8zRnZ2ypnKj0mTQMSjcsVIS5c8=; b=EBR0Al5KcRXwN9cPlHpsAkzDM5qxTw8Jdkdz94cRKrBDrl7HGhCQnCry/x75TrQVatUoFwwAnqGY4jLEKPFAdfzcfPeghr3DsRVZaf8U3AQRCZFBsZf62oaHtN/vg4RQzUt1y56F2aQSWgHAbv1d4txq5jUhSg/yEOsOHi1ETPE= 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 1784483440292318.116835878844; Sun, 19 Jul 2026 10:50:40 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlVds-0000jH-JR; Sun, 19 Jul 2026 13:49:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlVde-0000ej-BG for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:18 -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 1wlVdc-0003CJ-Pu for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:18 -0400 Received: by mail-pl1-x629.google.com with SMTP id d9443c01a7336-2cae1a3a744so70753645ad.3 for ; Sun, 19 Jul 2026 10:49:16 -0700 (PDT) Received: from stoup.. ([32.140.233.50]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a20c158sm30471881eec.29.2026.07.19.10.49.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 10:49:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1784483355; x=1785088155; 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=cmppddNv7Pj2UPySj8zRnZ2ypnKj0mTQMSjcsVIS5c8=; b=iDLGH7QBRs+Lkq4Dt9BC6JhH1Pqxe9TwUcgfo8O68OSkJ+DxUcKUHTJXfXZCN10PSm sWtdTH0smqowqtAl+I/rNRijLRZsOfj57YJxiY+wjrotgD5qK9FE4wb7R0JokslUE7RV jPyZ3zbi5XV/3+K8jzvTB4ed22X4GNHzCSBq+D9qQhvuDo4rDOdugwOyhIZUjYuINX+h tyMAH1XwQhX+71v8tSXkjyimMVL2u0bNL2lrXornbkkDmrFluM8RRntegIub1MXLYtux alcwNmezhodWkIx6c1Y9lnTvqhTNAllbQcPjbJcVVtToNucYmaXExe1ym5g8YfBBxrF3 6kgg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784483355; x=1785088155; 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=cmppddNv7Pj2UPySj8zRnZ2ypnKj0mTQMSjcsVIS5c8=; b=f/IkmiEd3ezrZdEgdUnfHNGpYQQAz9fU4Qplt//5XT+3YB2v7LAjpiLLxVIJsXic3s 0/S9zFVpOTe9IxKwIkYtVlVph1d3ts9J8tP27Qkguw2K4gba7cIJS6X37tm6s7VTMUcn pRyBpkh9ilMSPB6kMhUR6v1JKM82tiIcg/abyANYx/c5DH13lAQe5hB27or782f30ZH4 G7/oQj67lRQt6pzwWclD417/9Xod3EpY6h1di/zrMKsq1gPGQn51YMWEO23b6mHkfP7f 6/Ldv6DWypDFYc54dt3JvX8ZdY6b/eR05oxgOCYqbQPkjiu+j90yb/I1AyYhu3R5OTPZ oCFQ== X-Gm-Message-State: AOJu0YzgBA7euuCzUSjkVelvRr8+ScwPpl8R1MYM/ECc5l2ONHEdSCUs E3P/YWr6qbxxPQoaPjTSF/dGiHOi/XxX5gFatLgE3GAyJVLgsg8LRKHBOWCckD2FHGfaz5LC5mK p03Mq X-Gm-Gg: AfdE7ckxXFVJy0BZqSebvk0iyKreyzGoZ/c9afQwEIe2KGWH0g9P5yoTCdl1tw1CkRY cwlw34H4vEq2Cs0c7VjSaZ2Gezm3Md5WUTHcvm18L3Vtr+WUgEN1gbKtuF9rTNlER12fYBG3k2r aHaCHY2HfWbjjdcsr0m7Mn9xRsqqrb7DMKEOXzjgmnOehhgwb+bmfjPFSjuHpACj0CI4MaevOcg Edk77dJDfUdarkiVT4kV5YZJxdVaj3M6OniUEZMX4xEOcYtn1uztNMaIaOUSTcbkyNwS0fb+284 4fQqnDCt011UEnpmR3xGAsyv0F6gNk12J7YZtzZCAxgd79t4glUEZR0IFFU6VqdlQh+qtC5vcbi 6z7VlspSqeCVkZeEnfrGMMdRuM8+t0Iphs8Ntkx/IZyaCsGKU4cWlkekj5fro2II680e7FPVPen BGK+unhpw= X-Received: by 2002:a05:6a20:2583:b0:3c3:8d86:9855 with SMTP id adf61e73a8af0-3c3ad668353mr11543722637.7.1784483355068; Sun, 19 Jul 2026 10:49:15 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org, qemu-stable@nongnu.org Subject: [PATCH 3/6] target/arm: Fix b16b16 feature test for SME2 BFCLAMP, BFMAX, BFMIN Date: Sun, 19 Jul 2026 10:49:02 -0700 Message-ID: <20260719174905.420725-4-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260719174905.420725-1-richard.henderson@linaro.org> References: <20260719174905.420725-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: 1784483441592158500 Content-Type: text/plain; charset="utf-8" These are controlled by FEAT_SVE_B16B16 not FEAT_SME_B16B16. Cc: qemu-stable@nongnu.org Fixes: bc65d2bd1cb ("target/arm: Implement SME2 Multiple and Single SVE Des= tructive") Fixes: 930760eb753 ("target/arm: Implement SME2 Multiple Vectors SVE Destru= ctive") Fixes: 8b61eff8e72 ("target/arm: Implement SME2 FCLAMP, SCLAMP, UCLAMP") Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sme.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 5f02d462d3..ca88b3cdcc 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -758,7 +758,7 @@ static bool do_zzz_n1_fpst(DisasContext *s, arg_zzz_en = *a, return false; } /* These insns use MO_8 to encode BFloat16. */ - if (esz =3D=3D MO_8 && !dc_isar_feature(aa64_sme_b16b16, s)) { + if (esz =3D=3D MO_8 && !dc_isar_feature(aa64_sve_b16b16, s)) { return false; } if (!sme_sm_enabled_check(s)) { @@ -795,7 +795,7 @@ static bool do_zzz_nn_fpst(DisasContext *s, arg_zzz_en = *a, if (fn =3D=3D NULL) { return false; } - if (esz =3D=3D MO_8 && !dc_isar_feature(aa64_sme_b16b16, s)) { + if (esz =3D=3D MO_8 && !dc_isar_feature(aa64_sve_b16b16, s)) { return false; } if (!sme_sm_enabled_check(s)) { @@ -1850,7 +1850,7 @@ static bool trans_FCLAMP(DisasContext *s, arg_zzz_en = *a) return false; } /* This insn uses MO_8 to encode BFloat16. */ - if (a->esz =3D=3D MO_8 && !dc_isar_feature(aa64_sme_b16b16, s)) { + if (a->esz =3D=3D MO_8 && !dc_isar_feature(aa64_sve_b16b16, s)) { return false; } if (!sme_sm_enabled_check(s)) { --=20 2.43.0 From nobody Sat Jul 25 12:31: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=1784483468; cv=none; d=zohomail.com; s=zohoarc; b=l3jirtUQ1lNwNAlBaoAxY4WW4bLUGoNmT7LmgCEsASeRQ+DwN1gLNK3SsX8NvPt0O3HwgEzvSlJH1r8YtXa9FY7z7kDKzzIz6TEsv2LVsGCpr1sd4vY3o8oPP9QStAxy4jmqsEoLFTTfYbknMTDEdYsywR/ch2kJpiIzuWUWEVo= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784483468; 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=DvW7Iez6tG/67Zny7+UcsdudFSnXZ/jiURiYfWzXAXY=; b=PQpG6T0XgzNQ1HDhdPpDgiHyu52LvYQU8cTuD2+w9r4+Ji6UWG2kqLILFsxIOwvzjThwvC9UqAMcm9hK0uNRSbB08+pbeDD/OTdj0uvakAY785XNehjZFQ+5qJz8y7h1e0JzKWpwzCWQi+JjufUWiBwU4eWO6wOKxzE4nptWcuE= 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 1784483468527700.0363786756872; Sun, 19 Jul 2026 10:51:08 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlVds-0000jL-KR; Sun, 19 Jul 2026 13:49:32 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlVdg-0000f8-Ko for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:21 -0400 Received: from mail-pj1-x102a.google.com ([2607:f8b0:4864:20::102a]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wlVde-0003Ct-G1 for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:20 -0400 Received: by mail-pj1-x102a.google.com with SMTP id 98e67ed59e1d1-38dc69c74b8so7165664a91.0 for ; Sun, 19 Jul 2026 10:49:18 -0700 (PDT) Received: from stoup.. ([32.140.233.50]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a20c158sm30471881eec.29.2026.07.19.10.49.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 10:49:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1784483357; x=1785088157; 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=DvW7Iez6tG/67Zny7+UcsdudFSnXZ/jiURiYfWzXAXY=; b=VOZo9Op10ml/id2BLiVcz2akjkEAip5L2x/O7QTal9m6tv17/jOb6azyUVlinjjzGZ 39NqohSZTz6GpKFvpPhGMWGSBFSWRPAoXEWWB7eb/oJ4j4VhPA5QeDdQ3oq04cghSgoF GlQwotuH6tgj8SIT+Ni6lHXoCWCFNHxv+6M2Oq29yFesP5rRjzOOKcdKY2/TTy0Q2ERA F17ju/5pscAeyjvOxymkghCGg2YYebv287i/i6OAqBAOc6BkUNwk3VlOy/tGQdMp8Ou+ ZLPWQe9OwJK8fDGFI/MdUKEzrT7pdn2yvp5/8ZyPUOA5Z1nYxzXYihD5BJwgRVD4Z5c9 baSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784483357; x=1785088157; 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=DvW7Iez6tG/67Zny7+UcsdudFSnXZ/jiURiYfWzXAXY=; b=SPWqvJy2MBDTmeoza5UYv6+vRHE/FcfIHKM8RlAO5PS98cYNkEaJY8DKal87XFo+I+ Rha3I+W44D8KOZgMDvHqZ1zly+JjPdrcmhJwNIQwyWEWApjJhHfATpwdLUVwb3azCtjN zcwC3MO/ZQuJPVN4lz/Jft4iQjCxvJOgHRrOg1YUcSpn0sd1U2BQX1K+pFQ11/fzAkYx fmWUPP+ZeotEwi9J5rfCVSMZj71LQPwFYgkSnNzZzZenSHauJqpy/rWHu4SiJip3Yuy0 5xJpgHuP/quQYmRcng2qY0DWv+jfBgw0pAfuubMeSThJMzyop0wsiuxdpp9h7z3QNrYx 5dYw== X-Gm-Message-State: AOJu0YxKyM1MCQqVqZfGRqJsN0uFTNFL08mQilZGCzPvAPb92H8xTxYZ pyXOCWW8yZ0+1hWfqJeAtzitxuCARuM4uhmXsNJONHymDFwAY675gYcEf6wr1cJAWM496MyFLzm UjGVH X-Gm-Gg: AfdE7ckK0ro4mIM/eWVMj3cPnjsbjKwOc/XMB19JM9b1H3jMjP9v34BVSeVJzrK8yiH idfIWMaIps85wn3K2dASwgzSCeewKMLTq7CM1YGfMEYDoZdDexbkSsdSodfWK5hWfj1rEU9hZSi IYfIAux6UdwKb1UdbwgxAQQ6esmPtyo7t79lcx5ytP8DmPJgxtb7+K+VHzlwPgYeGkI2dYjlMcz Vimcf+k7GQr04qJl6wyJbeSCdTWqYJ39OhMwtxlJIrehfFrU02IIXA2q+BoRDSUGaQ3WvaGj9pC HeO5WJNPhZ8W8kVrLTnLjQlCmYqNBR8yG20P2oLR8jj2ss83GSQQziKK1yjp9MsAp4lx/smqNGW lJn06Ey4501D0aivgGZ5iJriVAvSE2caG8H0gcFxqSRfzqdwuKCQl4UuAy48tJuTnWxqqY/MC3R p8KnGVlF4= X-Received: by 2002:a05:6a21:4a81:b0:3c3:8298:da0c with SMTP id adf61e73a8af0-3c3ad972c12mr12418044637.41.1784483356748; Sun, 19 Jul 2026 10:49:16 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 4/6] target/arm: Split decode of BFloat SME FMAX/FMIN Date: Sun, 19 Jul 2026 10:49:03 -0700 Message-ID: <20260719174905.420725-5-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260719174905.420725-1-richard.henderson@linaro.org> References: <20260719174905.420725-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::102a; envelope-from=richard.henderson@linaro.org; helo=mail-pj1-x102a.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: 1784483469754158500 Content-Type: text/plain; charset="utf-8" Split decode so that feature detection can be handled external to do_zzz_{n1,nn}_fpst. Signed-off-by: Richard Henderson --- target/arm/cpu-features.h | 5 ++ target/arm/tcg/translate-sme.c | 61 +++++++++++++---------- target/arm/tcg/sme.decode | 90 ++++++++++++++++++++++++++++------ 3 files changed, 115 insertions(+), 41 deletions(-) diff --git a/target/arm/cpu-features.h b/target/arm/cpu-features.h index 280ead6f9c..e444397a47 100644 --- a/target/arm/cpu-features.h +++ b/target/arm/cpu-features.h @@ -1743,6 +1743,11 @@ static inline bool isar_feature_aa64_sme2p2_or_sve2p= 2(const ARMISARegisters *id) return isar_feature_aa64_sme2p2(id) || isar_feature_aa64_sve2p2(id); } =20 +static inline bool isar_feature_aa64_sme2_sve_b16b16(const ARMISARegisters= *id) +{ + return isar_feature_aa64_sme2(id) && isar_feature_aa64_sve_b16b16(id); +} + static inline bool isar_feature_aa64_sme2_i16i64(const ARMISARegisters *id) { return isar_feature_aa64_sme2(id) && isar_feature_aa64_sme_i16i64(id); diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index ca88b3cdcc..379764da24 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -747,20 +747,15 @@ TRANS_FEAT(URSHL_nn, aa64_sme2, do_zzz_nn, a, gen_sme= 2_urshl) TRANS_FEAT(SQDMULH_nn, aa64_sme2, do_zzz_nn, a, gen_gvec_sve2_sqdmulh) =20 static bool do_zzz_n1_fpst(DisasContext *s, arg_zzz_en *a, - gen_helper_gvec_3_ptr * const fns[4]) + gen_helper_gvec_3_ptr *fn) { int esz =3D a->esz, vsz, mofs; int overlap =3D -1; - gen_helper_gvec_3_ptr *fn =3D fns[esz]; TCGv_ptr fpst; =20 if (fn =3D=3D NULL) { return false; } - /* These insns use MO_8 to encode BFloat16. */ - if (esz =3D=3D MO_8 && !dc_isar_feature(aa64_sve_b16b16, s)) { - return false; - } if (!sme_sm_enabled_check(s)) { return true; } @@ -786,18 +781,14 @@ static bool do_zzz_n1_fpst(DisasContext *s, arg_zzz_e= n *a, } =20 static bool do_zzz_nn_fpst(DisasContext *s, arg_zzz_en *a, - gen_helper_gvec_3_ptr * const fns[4]) + gen_helper_gvec_3_ptr *fn) { int esz =3D a->esz, vsz; - gen_helper_gvec_3_ptr *fn =3D fns[esz]; TCGv_ptr fpst; =20 if (fn =3D=3D NULL) { return false; } - if (esz =3D=3D MO_8 && !dc_isar_feature(aa64_sve_b16b16, s)) { - return false; - } if (!sme_sm_enabled_check(s)) { return true; } @@ -825,8 +816,14 @@ static gen_helper_gvec_3_ptr * const f_vector_fmax[2][= 4] =3D { gen_helper_gvec_ah_fmax_s, gen_helper_gvec_ah_fmax_d }, }; -TRANS_FEAT(FMAX_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fmax[s->fpcr_ah= ]) -TRANS_FEAT(FMAX_nn, aa64_sme2, do_zzz_nn_fpst, a, f_vector_fmax[s->fpcr_ah= ]) +TRANS_FEAT(BFMAX_n1, aa64_sme2_sve_b16b16, do_zzz_n1_fpst, a, + f_vector_fmax[s->fpcr_ah][0]) +TRANS_FEAT(FMAX_n1, aa64_sme2, do_zzz_n1_fpst, a, + f_vector_fmax[s->fpcr_ah][a->esz]) +TRANS_FEAT(BFMAX_nn, aa64_sme2_sve_b16b16, do_zzz_nn_fpst, a, + f_vector_fmax[s->fpcr_ah][0]) +TRANS_FEAT(FMAX_nn, aa64_sme2, do_zzz_nn_fpst, a, + f_vector_fmax[s->fpcr_ah][a->esz]) =20 static gen_helper_gvec_3_ptr * const f_vector_fmin[2][4] =3D { { gen_helper_gvec_fmin_b16, @@ -838,26 +835,40 @@ static gen_helper_gvec_3_ptr * const f_vector_fmin[2]= [4] =3D { gen_helper_gvec_ah_fmin_s, gen_helper_gvec_ah_fmin_d }, }; -TRANS_FEAT(FMIN_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fmin[s->fpcr_ah= ]) -TRANS_FEAT(FMIN_nn, aa64_sme2, do_zzz_nn_fpst, a, f_vector_fmin[s->fpcr_ah= ]) +TRANS_FEAT(BFMIN_n1, aa64_sme2_sve_b16b16, do_zzz_n1_fpst, a, + f_vector_fmin[s->fpcr_ah][0]) +TRANS_FEAT(FMIN_n1, aa64_sme2, do_zzz_n1_fpst, a, + f_vector_fmin[s->fpcr_ah][a->esz]) +TRANS_FEAT(BFMIN_nn, aa64_sme2_sve_b16b16, do_zzz_nn_fpst, a, + f_vector_fmin[s->fpcr_ah][0]) +TRANS_FEAT(FMIN_nn, aa64_sme2, do_zzz_nn_fpst, a, + f_vector_fmin[s->fpcr_ah][a->esz]) =20 static gen_helper_gvec_3_ptr * const f_vector_fmaxnm[4] =3D { - gen_helper_gvec_fmaxnum_b16, + NULL, gen_helper_gvec_fmaxnum_h, gen_helper_gvec_fmaxnum_s, gen_helper_gvec_fmaxnum_d, }; -TRANS_FEAT(FMAXNM_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fmaxnm) -TRANS_FEAT(FMAXNM_nn, aa64_sme2, do_zzz_nn_fpst, a, f_vector_fmaxnm) +TRANS_FEAT(BFMAXNM_n1, aa64_sme2_sve_b16b16, do_zzz_n1_fpst, a, + gen_helper_gvec_fmaxnum_b16) +TRANS_FEAT(FMAXNM_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fmaxnm[a->esz= ]) +TRANS_FEAT(BFMAXNM_nn, aa64_sme2_sve_b16b16, do_zzz_nn_fpst, a, + gen_helper_gvec_fmaxnum_b16) +TRANS_FEAT(FMAXNM_nn, aa64_sme2, do_zzz_nn_fpst, a, f_vector_fmaxnm[a->esz= ]) =20 static gen_helper_gvec_3_ptr * const f_vector_fminnm[4] =3D { - gen_helper_gvec_fminnum_b16, + NULL, gen_helper_gvec_fminnum_h, gen_helper_gvec_fminnum_s, gen_helper_gvec_fminnum_d, }; -TRANS_FEAT(FMINNM_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fminnm) -TRANS_FEAT(FMINNM_nn, aa64_sme2, do_zzz_nn_fpst, a, f_vector_fminnm) +TRANS_FEAT(BFMINNM_n1, aa64_sme2_sve_b16b16, do_zzz_n1_fpst, a, + gen_helper_gvec_fminnum_b16) +TRANS_FEAT(FMINNM_n1, aa64_sme2, do_zzz_n1_fpst, a, f_vector_fminnm[a->esz= ]) +TRANS_FEAT(BFMINNM_nn, aa64_sme2_sve_b16b16, do_zzz_nn_fpst, a, + gen_helper_gvec_fminnum_b16) +TRANS_FEAT(FMINNM_nn, aa64_sme2, do_zzz_nn_fpst, a, f_vector_fminnm[a->esz= ]) =20 static gen_helper_gvec_3_ptr * const f_vector_famax[4] =3D { NULL, @@ -865,7 +876,7 @@ static gen_helper_gvec_3_ptr * const f_vector_famax[4] = =3D { gen_helper_gvec_famax_s, gen_helper_gvec_famax_d, }; -TRANS_FEAT(FAMAX_nn, aa64_sme2_faminmax, do_zzz_nn_fpst, a, f_vector_famax) +TRANS_FEAT(FAMAX_nn, aa64_sme2_faminmax, do_zzz_nn_fpst, a, f_vector_famax= [a->esz]) =20 static gen_helper_gvec_3_ptr * const f_vector_famin[4] =3D { NULL, @@ -873,7 +884,7 @@ static gen_helper_gvec_3_ptr * const f_vector_famin[4] = =3D { gen_helper_gvec_famin_s, gen_helper_gvec_famin_d, }; -TRANS_FEAT(FAMIN_nn, aa64_sme2_faminmax, do_zzz_nn_fpst, a, f_vector_famin) +TRANS_FEAT(FAMIN_nn, aa64_sme2_faminmax, do_zzz_nn_fpst, a, f_vector_famin= [a->esz]) =20 static gen_helper_gvec_3_ptr * const f_vector_fscale[4] =3D { NULL, @@ -881,8 +892,8 @@ static gen_helper_gvec_3_ptr * const f_vector_fscale[4]= =3D { gen_helper_gvec_fscale_s, gen_helper_gvec_fscale_d, }; -TRANS_FEAT(FSCALE_n1, aa64_sme2_f8cvt, do_zzz_n1_fpst, a, f_vector_fscale) -TRANS_FEAT(FSCALE_nn, aa64_sme2_f8cvt, do_zzz_nn_fpst, a, f_vector_fscale) +TRANS_FEAT(FSCALE_n1, aa64_sme2_f8cvt, do_zzz_n1_fpst, a, f_vector_fscale[= a->esz]) +TRANS_FEAT(FSCALE_nn, aa64_sme2_f8cvt, do_zzz_nn_fpst, a, f_vector_fscale[= a->esz]) =20 /* Add/Sub vector Z[m] to each Z[n*N] with result in ZA[d*N]. */ static bool do_azz_n1(DisasContext *s, arg_azz_n *a, int esz, diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index 36fbe24faf..e1bef9987b 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -227,6 +227,11 @@ UMOPA2_s 1010000 1 10 0 ..... ... ... ..... . 1= 0 .. @op_32 @z2z_4x1 ....... . esz:2 .. zm:4 ....1. ..... ...0 . \ &zzz_en n=3D4 zd=3D%zd_ax4 zn=3D%zd_ax4 =20 +@z2z_2x1_e0 ....... . .. .. zm:4 ....0. ..... .... . \ + &zzz_en esz=3D0 n=3D2 zd=3D%zd_ax2 zn=3D%zd_ax2 +@z2z_4x1_e0 ....... . .. .. zm:4 ....1. ..... ...0 . \ + &zzz_en esz=3D0 n=3D4 zd=3D%zd_ax4 zn=3D%zd_ax4 + SMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 0 @z2z_2x1 SMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 0 @z2z_4x1 UMAX_n1 1100000 1 .. 10 .... 1010.0 00000 .... 1 @z2z_2x1 @@ -236,14 +241,38 @@ SMIN_n1 1100000 1 .. 10 .... 1010.0 00001 ....= 0 @z2z_4x1 UMIN_n1 1100000 1 .. 10 .... 1010.0 00001 .... 1 @z2z_2x1 UMIN_n1 1100000 1 .. 10 .... 1010.0 00001 .... 1 @z2z_4x1 =20 -FMAX_n1 1100000 1 .. 10 .... 1010.0 01000 .... 0 @z2z_2x1 -FMAX_n1 1100000 1 .. 10 .... 1010.0 01000 .... 0 @z2z_4x1 -FMIN_n1 1100000 1 .. 10 .... 1010.0 01000 .... 1 @z2z_2x1 -FMIN_n1 1100000 1 .. 10 .... 1010.0 01000 .... 1 @z2z_4x1 -FMAXNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 0 @z2z_2x1 -FMAXNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 0 @z2z_4x1 -FMINNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 1 @z2z_2x1 -FMINNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 1 @z2z_4x1 +{ + BFMAX_n1 1100000 1 00 10 .... 1010.0 01000 .... 0 @z2z_2x1_e0 + FMAX_n1 1100000 1 .. 10 .... 1010.0 01000 .... 0 @z2z_2x1 +} +{ + BFMAX_n1 1100000 1 00 10 .... 1010.0 01000 .... 0 @z2z_4x1_e0 + FMAX_n1 1100000 1 .. 10 .... 1010.0 01000 .... 0 @z2z_4x1 +} +{ + BFMIN_n1 1100000 1 00 10 .... 1010.0 01000 .... 1 @z2z_2x1_e0 + FMIN_n1 1100000 1 .. 10 .... 1010.0 01000 .... 1 @z2z_2x1 +} +{ + BFMIN_n1 1100000 1 00 10 .... 1010.0 01000 .... 1 @z2z_4x1_e0 + FMIN_n1 1100000 1 .. 10 .... 1010.0 01000 .... 1 @z2z_4x1 +} +{ + BFMAXNM_n1 1100000 1 00 10 .... 1010.0 01001 .... 0 @z2z_2x1_e0 + FMAXNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 0 @z2z_2x1 +} +{ + BFMAXNM_n1 1100000 1 00 10 .... 1010.0 01001 .... 0 @z2z_4x1_e0 + FMAXNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 0 @z2z_4x1 +} +{ + BFMINNM_n1 1100000 1 00 10 .... 1010.0 01001 .... 1 @z2z_2x1_e0 + FMINNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 1 @z2z_2x1 +} +{ + BFMINNM_n1 1100000 1 00 10 .... 1010.0 01001 .... 1 @z2z_4x1_e0 + FMINNM_n1 1100000 1 .. 10 .... 1010.0 01001 .... 1 @z2z_4x1 +} =20 SRSHL_n1 1100000 1 .. 10 .... 1010.0 10001 .... 0 @z2z_2x1 SRSHL_n1 1100000 1 .. 10 .... 1010.0 10001 .... 0 @z2z_4x1 @@ -269,6 +298,11 @@ FSCALE_n1 1100000 1 .. 10 .... 1010.0 01100 .... = 0 @z2z_4x1 @z2z_4x4 ....... . esz:2 . ...00 ....1. ..... ...0 . \ &zzz_en n=3D4 zd=3D%zd_ax4 zn=3D%zd_ax4 zm=3D%zm_ax4 =20 +@z2z_2x2_e0 ....... . .. . ....0 ....0. ..... .... . \ + &zzz_en esz=3D0 n=3D2 zd=3D%zd_ax2 zn=3D%zd_ax2 zm=3D%zm_a= x2 +@z2z_4x4_e0 ....... . .. . ...00 ....1. ..... ...0 . \ + &zzz_en esz=3D0 n=3D4 zd=3D%zd_ax4 zn=3D%zd_ax4 zm=3D%zm_a= x4 + SMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 0 @z2z_2x2 SMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 0 @z2z_4x4 UMAX_nn 1100000 1 .. 1 ..... 1011.0 00000 .... 1 @z2z_2x2 @@ -278,14 +312,38 @@ SMIN_nn 1100000 1 .. 1 ..... 1011.0 00001 ....= 0 @z2z_4x4 UMIN_nn 1100000 1 .. 1 ..... 1011.0 00001 .... 1 @z2z_2x2 UMIN_nn 1100000 1 .. 1 ..... 1011.0 00001 .... 1 @z2z_4x4 =20 -FMAX_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 0 @z2z_2x2 -FMAX_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 0 @z2z_4x4 -FMIN_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 1 @z2z_2x2 -FMIN_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 1 @z2z_4x4 -FMAXNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 0 @z2z_2x2 -FMAXNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 0 @z2z_4x4 -FMINNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 1 @z2z_2x2 -FMINNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 1 @z2z_4x4 +{ + BFMAX_nn 1100000 1 00 1 ..... 1011.0 01000 .... 0 @z2z_2x2_e0 + FMAX_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 0 @z2z_2x2 +} +{ + BFMAX_nn 1100000 1 00 1 ..... 1011.0 01000 .... 0 @z2z_4x4_e0 + FMAX_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 0 @z2z_4x4 +} +{ + BFMIN_nn 1100000 1 00 1 ..... 1011.0 01000 .... 1 @z2z_2x2_e0 + FMIN_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 1 @z2z_2x2 +} +{ + BFMIN_nn 1100000 1 00 1 ..... 1011.0 01000 .... 1 @z2z_4x4_e0 + FMIN_nn 1100000 1 .. 1 ..... 1011.0 01000 .... 1 @z2z_4x4 +} +{ + BFMAXNM_nn 1100000 1 00 1 ..... 1011.0 01001 .... 0 @z2z_2x2_e0 + FMAXNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 0 @z2z_2x2 +} +{ + BFMAXNM_nn 1100000 1 00 1 ..... 1011.0 01001 .... 0 @z2z_4x4_e0 + FMAXNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 0 @z2z_4x4 +} +{ + BFMINNM_nn 1100000 1 00 1 ..... 1011.0 01001 .... 1 @z2z_2x2_e0 + FMINNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 1 @z2z_2x2 +} +{ + BFMINNM_nn 1100000 1 00 1 ..... 1011.0 01001 .... 1 @z2z_4x4_e0 + FMINNM_nn 1100000 1 .. 1 ..... 1011.0 01001 .... 1 @z2z_4x4 +} =20 SRSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... 0 @z2z_2x2 SRSHL_nn 1100000 1 .. 1 ..... 1011.0 10001 .... 0 @z2z_4x4 --=20 2.43.0 From nobody Sat Jul 25 12:31: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=1784483429; cv=none; d=zohomail.com; s=zohoarc; b=ch4+2zL7obmDEnl8MiXpYqulXT9tEgeOHqzkc96mMtKs+k/90jeOnqn2XRgklIUHA+busSwJIIGipzDtmuW7dPQgR+gGRn8ACbxzNcEYj/d/92DuazmVzXUxfL4T8QhRgdKhixZtENy6efXehqJtxNibV4HMNiTMDFpuZU9DGNc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784483429; 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=E+OQ6BtDfQiTt1mzt/r3Vu4ZzRtczFyPqZTa5s6YjYo=; b=dW4WwkfHG/IWnZ9hwEhE5TMfvlEOhmWP4XiPhjcXLvPxLBKancoRFarZdXtDLpdXdRqQL7+uL3ccXAmWQ6oV2az4vWDRkuQowGonScwkhLWcRx9PyW57fTftwECbbn19tiGaDVbx8gU/LcWC4riOMsStFbq3Q9xnpLJjollItlM= 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 1784483429825155.582823632516; Sun, 19 Jul 2026 10:50:29 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlVdu-0000jw-44; Sun, 19 Jul 2026 13:49:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlVdh-0000fQ-6v for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:21 -0400 Received: from mail-pl1-x62f.google.com ([2607:f8b0:4864:20::62f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wlVdf-0003DI-Iv for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:20 -0400 Received: by mail-pl1-x62f.google.com with SMTP id d9443c01a7336-2cad4170e8eso125987115ad.3 for ; Sun, 19 Jul 2026 10:49:19 -0700 (PDT) Received: from stoup.. ([32.140.233.50]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a20c158sm30471881eec.29.2026.07.19.10.49.17 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 10:49:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1784483358; x=1785088158; 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=E+OQ6BtDfQiTt1mzt/r3Vu4ZzRtczFyPqZTa5s6YjYo=; b=ZYhEs1j8eBgpnPoTSmF07waPXU+uM9SRw1RUog/fyz2yxARvg6Gvux7l9k+aFocADP ltcrBuCBDdmGRCIbQi+40VXRbISVAdF7frzH29BF3BXDY2bTMfShZaggbUlXHwvvMK8B MZl321jq8OTQNYsR7WT47MXiXNL6Tr3r+XvgGpGQukYqw62de4w7oYlmImr4zmEJGoWX B3aYELir9ddYbX/Nr+Ykr1Xow/H/IL/2ybyUJvqSzRSKsJUtQRWgTDdNx3aePiNdmYY6 eATZPgOf+xhmXYvBFA/QtMV4/gu9KVUfNNO+tUF9UZ6di5p09DAFTsmGXIsGpG7yfyWW Zq9g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784483358; x=1785088158; 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=E+OQ6BtDfQiTt1mzt/r3Vu4ZzRtczFyPqZTa5s6YjYo=; b=ii9gqkcGCypcXcFvVblf/hWki0KKNnt2T1pPm7hLV/BLi8JTMuseUSoNyiQ3gbW7vy jgFpWL9ug3DVqTvHpOZe8njcIN/oAFUzJwJ8tdUrY3qHrmk8AyzfoU0SnSvic3pDH9Qa sgcHUo7+bIArcBX9zr5EWV1cZT4PdfrFtIV0TtFT55wP/z02T7WmgnxWldavNxv06E5b yZoWQIRKEBbcmg4L4hehTZnY60YwQDVHqPLv5ylW1u5z8Pv2LJ8UBcDsWYof7lazhurv tuMc9o9eVUhh39CGjmh0jkPIOwyV+EQ1RTDcBei95d/TfmW5g1lSuf0Qokkkh9x63Zty 4osQ== X-Gm-Message-State: AOJu0YyvWdJt/Oy35jILt6TMzNfqvSUPhXA4v9Ud+YwNsDj6cfxdEnaL TVns0Ky6OKqZj+KT8lfEQSQO42RJplM+DsZ2Je5dhdBC5HKpXgimQ0QhKDq34McIX7JwJojJWxD /HZ5d X-Gm-Gg: AfdE7ckvalu66XYeO2l060e8lsSUjVG18yMTOhpn85gRc/8GFck6GVxNHec26x/cbaq ZgYjvLo/PzF8gMe5mCl5xa+0+yNndz4ixYyvtA+vYR3Uy+N9oZ8ynbb18eBwQa+/EpL4M1Xycnc 7IvBAvhDjzXhCNdAcAwM9El1czAgBy25cs1ygNmVUaDSzBxf83WNpANpHt/PQ56IWWApNWMiCop o3PzOvGV978rpQs8hpslU8JabNXl1D+DbL8Xm4fQmpMMFms0GGxstbGkONG+vlVN1fKC+p28Hia lPlwdlD03mkZ3aoRN9HHSFb5SW2cfvZ3iUNERsdUlLE/jo/1VaPASYCeKzGD+uNEqR2L5jkOkVw k0CY7LJupg0bt8UYDQslC9uGuHVIqQZiY1HDIznddb9ocKbirwmXXbmzg8EwA0P7nQmISRS9tE7 WOPsc1/qM= X-Received: by 2002:a05:6a21:e0a6:b0:3c0:9c18:d5a1 with SMTP id adf61e73a8af0-3c3ad9647b0mr11526197637.62.1784483358102; Sun, 19 Jul 2026 10:49:18 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 5/6] target/arm: Implement FMUL (multiple/multiple and single vectors) Date: Sun, 19 Jul 2026 10:49:04 -0700 Message-ID: <20260719174905.420725-6-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260719174905.420725-1-richard.henderson@linaro.org> References: <20260719174905.420725-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::62f; envelope-from=richard.henderson@linaro.org; helo=mail-pl1-x62f.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1784483431508158501 Content-Type: text/plain; charset="utf-8" Signed-off-by: Richard Henderson --- target/arm/tcg/translate-sme.c | 9 +++++++++ target/arm/tcg/sme.decode | 15 ++++++++++++--- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 379764da24..840e91b677 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -895,6 +895,15 @@ static gen_helper_gvec_3_ptr * const f_vector_fscale[4= ] =3D { TRANS_FEAT(FSCALE_n1, aa64_sme2_f8cvt, do_zzz_n1_fpst, a, f_vector_fscale[= a->esz]) TRANS_FEAT(FSCALE_nn, aa64_sme2_f8cvt, do_zzz_nn_fpst, a, f_vector_fscale[= a->esz]) =20 +static gen_helper_gvec_3_ptr * const f_vector_fmul[4] =3D { + NULL, + gen_helper_gvec_fmul_h, + gen_helper_gvec_fmul_s, + gen_helper_gvec_fmul_d, +}; +TRANS_FEAT(FMUL_n1, aa64_sme2p2, do_zzz_n1_fpst, a, f_vector_fmul[a->esz]) +TRANS_FEAT(FMUL_nn, aa64_sme2p2, do_zzz_nn_fpst, a, f_vector_fmul[a->esz]) + /* Add/Sub vector Z[m] to each Z[n*N] with result in ZA[d*N]. */ static bool do_azz_n1(DisasContext *s, arg_azz_n *a, int esz, GVecGen3FnVar *fn) diff --git a/target/arm/tcg/sme.decode b/target/arm/tcg/sme.decode index e1bef9987b..60c7cacc10 100644 --- a/target/arm/tcg/sme.decode +++ b/target/arm/tcg/sme.decode @@ -219,6 +219,8 @@ UMOPA2_s 1010000 1 10 0 ..... ... ... ..... . 10= .. @op_32 =20 %zd_ax2 1:4 !function=3Dtimes_2 %zd_ax4 2:3 !function=3Dtimes_4 +%zn_ax2 6:4 !function=3Dtimes_2 +%zn_ax4 7:3 !function=3Dtimes_4 =20 &zzz_en zd zn zm esz n =20 @@ -288,6 +290,11 @@ SQDMULH_n1 1100000 1 .. 10 .... 1010.1 00000 .... = 0 @z2z_4x1 FSCALE_n1 1100000 1 .. 10 .... 1010.0 01100 .... 0 @z2z_2x1 FSCALE_n1 1100000 1 .. 10 .... 1010.0 01100 .... 0 @z2z_4x1 =20 +FMUL_n1 1100000 1 esz:2 1 zm:4 0 111010 ....0 ....0 \ + &zzz_en n=3D2 zd=3D%zd_ax2 zn=3D%zn_ax2 +FMUL_n1 1100000 1 esz:2 1 zm:4 1 111010 ...00 ...00 \ + &zzz_en n=3D4 zd=3D%zd_ax4 zn=3D%zn_ax4 + ### SME2 Multi-vector Multiple Vectors SVE Destructive =20 %zm_ax2 17:4 !function=3Dtimes_2 @@ -361,6 +368,11 @@ FAMIN_nn 1100000 1 .. 1 ..... 1011.0 01010 .... = 1 @z2z_4x4 FSCALE_nn 1100000 1 .. 1 ..... 1011.0 01100 .... 0 @z2z_2x2 FSCALE_nn 1100000 1 .. 1 ..... 1011.0 01100 .... 0 @z2z_4x4 =20 +FMUL_nn 1100000 1 esz:2 1 ....0 111001 ....0 ....0 \ + &zzz_en n=3D2 zd=3D%zd_ax2 zn=3D%zn_ax2 zm=3D%zm_ax2 +FMUL_nn 1100000 1 esz:2 1 ...01 111001 ...00 ...00 \ + &zzz_en n=3D4 zd=3D%zd_ax4 zn=3D%zn_ax4 zm=3D%zm_ax4 + ### SME2 Multi-vector Multiple and Single Array Vectors =20 &azz_n n off rv zn zm @@ -521,9 +533,6 @@ FDOT_n1_hb 11000001 001 1 .... 0 .. 100 ..... 01 .= .. @azz_nx1_o3 n=3D4 =20 ### SME2 Multi-vector Multiple Array Vectors =20 -%zn_ax2 6:4 !function=3Dtimes_2 -%zn_ax4 7:3 !function=3Dtimes_4 - @azz_2x2_o3 ........ ... ..... . .. ... ..... .. off:3 \ &azz_n n=3D2 rv=3D%mova_rv zn=3D%zn_ax2 zm=3D%zm_ax2 @azz_4x4_o3 ........ ... ..... . .. ... ..... .. off:3 \ --=20 2.43.0 From nobody Sat Jul 25 12:31: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=1784483416; cv=none; d=zohomail.com; s=zohoarc; b=UcKpUYte2Ua3cB8/4NsWqOmzdOpHE3W7mVPUjvmlbfNIiMc5uigvm08sTppg3c2dmyzMhxqsOKQOYZW6nhhgxSqOECQaVtilvpQxzh6rELo7eT7QOboYv3fMMK/scaENnRnBFq4UCxtnOBdxNdC/wqxhqT4xxf9QcjGbYBDfhjc= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1784483416; 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=0CtLZvXDNlXfS9i+K4OAJUmjoEmIO//slYt8sWEi78s=; b=VTqLDFE37G8D1pCTJFUw2iVW2St6E0XANKypblCu8By8p20q824AoRotSsKghW4c6Si7pBGzc4+IoRsHCYOEbB7P9Lw3kn66hrtjhDaZ6gM1GtHNxZE+syqzFSiFKSnl3a2Jh90afjVxjuHZ2mgIHonyhsN7XP/pZuoMZto6Cyo= 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 1784483416872762.1199628744686; Sun, 19 Jul 2026 10:50:16 -0700 (PDT) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists1p.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1wlVdu-0000jy-Ay; Sun, 19 Jul 2026 13:49:34 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists1p.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1wlVdl-0000gl-UA for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:27 -0400 Received: from mail-pg1-x530.google.com ([2607:f8b0:4864:20::530]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1wlVdj-0003Dn-Pz for qemu-devel@nongnu.org; Sun, 19 Jul 2026 13:49:25 -0400 Received: by mail-pg1-x530.google.com with SMTP id 41be03b00d2f7-c9e7391839cso5477390a12.0 for ; Sun, 19 Jul 2026 10:49:21 -0700 (PDT) Received: from stoup.. ([32.140.233.50]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-3142a20c158sm30471881eec.29.2026.07.19.10.49.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 19 Jul 2026 10:49:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1784483360; x=1785088160; 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=0CtLZvXDNlXfS9i+K4OAJUmjoEmIO//slYt8sWEi78s=; b=sqWR9BbSqxIs9xHVlhrwisWU5oNC8ugUFuo/o8oiqoWxw7cXSf6Kz+8zPTI7/PgpYp lQmrE7Is02n9Hkzd48Nko2TBXIsjLtXif8BoOmDjP3948XHznX93GUpkfcv/RQORSCbe Out7GwJITP03jSxjYtVO3QGAOxGzbJ8+f4D5gK/zZM58puPNZzjzvml4iqO2EAhhTTIQ eYp9JwIIOvN/U8WyxJEgcWWJaM+0qn5S9mxz20XMOjMlf6+sLrGFIZr1erX9K2uOBQcn C5CYiLPEXMXaaQkzZqaNvTVg00lVTTSrsuVHqIZZtCorRkvsVZinNBq3UDp3mrPKIb7g fsdw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1784483360; x=1785088160; 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=0CtLZvXDNlXfS9i+K4OAJUmjoEmIO//slYt8sWEi78s=; b=rhQ1ztL8bwba78IMWLoZe84ss8ckgJ5yV8LDNtVSYKaSYnebwfyFK3NdG1wq/gk4Uc 4Wcc3NGl5wd+HnlWmH+/ygLKjBxe2GN7uwPtnwTRWXsLFEKb1ppFO1I6NQcRnQ0oPzsi 9NG3f6reG8kfbeiY5ARcsgKouk5GA6374DtJ5kLObOdM64uysfY9Dymo+yqxycvFmpcw aAWTaFxWn1kFc8PtI78kS4AhgMEXzssrvwDm493Q4/yUBkrAhxq4BqFX51h5EVVSRxDb rPpRVsWfwItrWn/3mqQoVeQEdbZD4Dex7pD+5D3soXz7i7bLuJB8aspdI5aUbmVkXwJx Ub/w== X-Gm-Message-State: AOJu0YwfzevPmleTi7tp2E3gh3g54hyEtnf4dJm+uR9f36hV09Z+Wcv5 4UeXSjGvMExUKUGZqY3L1cYZHpYQbtoNylz5khavXyL0hBiV29TllobRCtVU+RyFy87tmH6tFn4 E7kRF X-Gm-Gg: AfdE7ckFhh5JgBqvsPwA2+SqIjVzfNjBOBIxF3f25yUoBstQZAdfq57h7y35ZRU66zW /4IWioj2wislc8+jW2ydipGztvvhMjAGlr5TXmf+QBZ029y4lXqpFtD6fbEKmcHcVtqn7qS38UX ixk8jPctXRo4VMmgna1NN8U+l0OoAx2SvzZTDrBMNYLuWX+pwCFOcF1f8mlamkpeXLtSRfQ7vtk wxTKn63StUI5kAZbVarVKv7dC7BFSCGIcKLVFT0W8Qs3qpiLrwYrRXI+qMw2dT6Ql55DcUP0AhD bqbRw6QgEsOgEe5aXXmER9nO5xp8q/u6f1+uVSIZcpajjIlSjLWNu7hS6alqnXwGsSRkJOKGnJ+ kF69oCbycYDecI7743CviEEWE/zJmf00EgttmhCvGYvRyNGC9PX9KvLEOAo279bHx6VN/8DBaVK W95YUTVeK1Y4Mlx1MMlw== X-Received: by 2002:a05:6300:95:b0:3c3:859b:9178 with SMTP id adf61e73a8af0-3c3ad7a3a0fmr11907378637.34.1784483360514; Sun, 19 Jul 2026 10:49:20 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Cc: qemu-arm@nongnu.org Subject: [PATCH 6/6] target/arm: Enable FEAT_SVE2p2 and FEAT_SME2p2 for -cpu max Date: Sun, 19 Jul 2026 10:49:05 -0700 Message-ID: <20260719174905.420725-7-richard.henderson@linaro.org> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260719174905.420725-1-richard.henderson@linaro.org> References: <20260719174905.420725-1-richard.henderson@linaro.org> MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Received-SPF: pass (zohomail.com: domain of gnu.org designates 209.51.188.17 as permitted sender) client-ip=209.51.188.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists1p.gnu.org; Received-SPF: pass client-ip=2607:f8b0:4864:20::530; envelope-from=richard.henderson@linaro.org; helo=mail-pg1-x530.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: qemu development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: qemu-devel-bounces+importer=patchew.org@nongnu.org X-ZohoMail-DKIM: pass (identity @linaro.org) X-ZM-MESSAGEID: 1784483419522158500 Content-Type: text/plain; charset="utf-8" These features are tied together if both SVE and SME are enabled. Signed-off-by: Richard Henderson --- linux-user/aarch64/elfload.c | 2 ++ target/arm/tcg/cpu64.c | 5 +++-- docs/system/arm/emulation.rst | 2 ++ 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/linux-user/aarch64/elfload.c b/linux-user/aarch64/elfload.c index 48be49580a..c086548f7f 100644 --- a/linux-user/aarch64/elfload.c +++ b/linux-user/aarch64/elfload.c @@ -178,6 +178,8 @@ abi_ulong get_elf_hwcap(CPUState *cs) 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); + GET_FEATURE_ID(aa64_sve2p2, ARM_HWCAP_A64_SVE2P2); + GET_FEATURE_ID(aa64_sme2p2, ARM_HWCAP_A64_SME2P2); =20 return hwcaps; } diff --git a/target/arm/tcg/cpu64.c b/target/arm/tcg/cpu64.c index 24f34947ec..33eafb467d 100644 --- a/target/arm/tcg/cpu64.c +++ b/target/arm/tcg/cpu64.c @@ -1365,8 +1365,9 @@ void aarch64_max_tcg_initfn(Object *obj) SET_IDREG(isar, ID_AA64MMFR4, t); =20 t =3D GET_IDREG(isar, ID_AA64ZFR0); - t =3D FIELD_DP64(t, ID_AA64ZFR0, SVEVER, 2); /* FEAT_SVE2p1 */ + t =3D FIELD_DP64(t, ID_AA64ZFR0, SVEVER, 3); /* FEAT_SVE2p2 */ t =3D FIELD_DP64(t, ID_AA64ZFR0, AES, 2); /* FEAT_SVE_PMULL128 */ + t =3D FIELD_DP64(t, ID_AA64ZFR0, ELTPERM, 1); /* FEAT_SVE2p2 */ t =3D FIELD_DP64(t, ID_AA64ZFR0, BITPERM, 1); /* FEAT_SVE_BitPerm */ t =3D FIELD_DP64(t, ID_AA64ZFR0, BFLOAT16, 2); /* FEAT_BF16, FEAT_EBF= 16 */ t =3D FIELD_DP64(t, ID_AA64ZFR0, B16B16, 1); /* FEAT_SVE_B16B16 */ @@ -1403,7 +1404,7 @@ void aarch64_max_tcg_initfn(Object *obj) t =3D FIELD_DP64(t, ID_AA64SMFR0, I16I32, 5); /* FEAT_SME2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, F64F64, 1); /* FEAT_SME_F64F64 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, I16I64, 0xf); /* FEAT_SME_I16I64 */ - t =3D FIELD_DP64(t, ID_AA64SMFR0, SMEVER, 2); /* FEAT_SME2p1 */ + t =3D FIELD_DP64(t, ID_AA64SMFR0, SMEVER, 3); /* FEAT_SME2p2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, LUTv2, 1); /* FEAT_SME_LUTv2 */ t =3D FIELD_DP64(t, ID_AA64SMFR0, FA64, 1); /* FEAT_SME_FA64 */ SET_IDREG(isar, ID_AA64SMFR0, t); diff --git a/docs/system/arm/emulation.rst b/docs/system/arm/emulation.rst index cc42db9e0b..4d33be615f 100644 --- a/docs/system/arm/emulation.rst +++ b/docs/system/arm/emulation.rst @@ -179,6 +179,7 @@ the following architecture extensions: - FEAT_SME (Scalable Matrix Extension) - FEAT_SME2 (Scalable Matrix Extension version 2) - FEAT_SME2p1 (Scalable Matrix Extension version 2.1) +- FEAT_SME2p2 (Scalable Matrix Extension version 2.2) - FEAT_SME_B16B16 (Non-widening BFloat16 arithmetic for SME2) - FEAT_SME_FA64 (Full A64 instruction set in Streaming SVE mode) - FEAT_SME_F16F16 (Non-widening half-precision FP16 arithmetic for SME2) @@ -203,6 +204,7 @@ the following architecture extensions: - FEAT_SVE_SM4 (Scalable Vector SM4 instructions) - FEAT_SVE2 (Scalable Vector Extension version 2) - FEAT_SVE2p1 (Scalable Vector Extension version 2.1) +- FEAT_SVE2p2 (Scalable Vector Extension version 2.2) - FEAT_SPECRES (Speculation restriction instructions) - FEAT_SSBS (Speculative Store Bypass Safe) - FEAT_SSBS2 (MRS and MSR instructions for SSBS version 2) --=20 2.43.0