From: Peter Maydell <peter.maydell@linaro.org>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: qemu-devel@nongnu.org
Subject: Re: [PATCH v2 035/101] target/arm: Implement SME2 FDOT
Date: Mon, 23 Jun 2025 17:38:21 +0100 [thread overview]
Message-ID: <CAFEAcA87DoZhX0NNEf7nao48VGu7nfpmO0wug6JduYLtEKp35w@mail.gmail.com> (raw)
In-Reply-To: <20250621235037.74091-36-richard.henderson@linaro.org>
On Sun, 22 Jun 2025 at 00:54, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
> target/arm/tcg/helper-sme.h | 5 ++++
> target/arm/tcg/sme_helper.c | 44 ++++++++++++++++++++++++++++++++++
> target/arm/tcg/translate-sme.c | 18 ++++++++++++++
> target/arm/tcg/translate-sve.c | 5 ++++
> target/arm/tcg/sme.decode | 14 +++++++++++
> target/arm/tcg/sve.decode | 8 +++++--
> 6 files changed, 92 insertions(+), 2 deletions(-)
>
> diff --git a/target/arm/tcg/helper-sme.h b/target/arm/tcg/helper-sme.h
> index cdd7058aed..ec93ff57ff 100644
> --- a/target/arm/tcg/helper-sme.h
> +++ b/target/arm/tcg/helper-sme.h
> @@ -173,3 +173,8 @@ DEF_HELPER_FLAGS_5(gvec_fmaxnum_b16, TCG_CALL_NO_RWG,
> void, ptr, ptr, ptr, fpst, i32)
> DEF_HELPER_FLAGS_5(gvec_fminnum_b16, TCG_CALL_NO_RWG,
> void, ptr, ptr, ptr, fpst, i32)
> +
> +DEF_HELPER_FLAGS_6(sme2_fdot_h, TCG_CALL_NO_RWG,
> + void, ptr, ptr, ptr, ptr, env, i32)
> +DEF_HELPER_FLAGS_6(sme2_fdot_idx_h, TCG_CALL_NO_RWG,
> + void, ptr, ptr, ptr, ptr, env, i32)
> diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c
> index 194560eafa..bd9b81d5aa 100644
> --- a/target/arm/tcg/sme_helper.c
> +++ b/target/arm/tcg/sme_helper.c
> @@ -1122,6 +1122,50 @@ void HELPER(sme_fmopa_h)(void *vza, void *vzn, void *vzm, void *vpn,
> }
> }
>
> +void HELPER(sme2_fdot_h)(void *vd, void *vn, void *vm, void *va,
> + CPUARMState *env, uint32_t desc)
> +{
> + intptr_t i, oprsz = simd_maxsz(desc);
> + bool za = extract32(desc, SIMD_DATA_SHIFT, 1);
> + float_status *fpst_std = &env->vfp.fp_status[za ? FPST_ZA : FPST_A64];
> + float_status *fpst_f16 = &env->vfp.fp_status[za ? FPST_ZA_F16 : FPST_A64_F16];
> + float_status fpst_odd = *fpst_std;
> + float32 *d = vd, *a = va;
> + uint32_t *n = vn, *m = vm;
> +
> + set_float_rounding_mode(float_round_to_odd, &fpst_odd);
> +
> + for (i = 0; i < oprsz / sizeof(float32); ++i) {
> + d[H4(i)] = f16_dotadd(a[H4(i)], n[H4(i)], m[H4(i)],
> + fpst_f16, fpst_std, &fpst_odd);
I can never figure out with these helpers when we need the H
macros and when we don't...
> + }
> +}
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
thanks
-- PMM
next prev parent reply other threads:[~2025-06-23 16:39 UTC|newest]
Thread overview: 170+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-21 23:48 [PATCH v2 000/101] target/arm: Implement FEAT_SME2p1 Richard Henderson
2025-06-21 23:48 ` [PATCH v2 001/101] tcg: Add dbase argument to do_dup_store Richard Henderson
2025-06-23 9:59 ` Peter Maydell
2025-06-21 23:48 ` [PATCH v2 002/101] tcg: Add dbase argument to do_dup Richard Henderson
2025-06-23 10:01 ` Peter Maydell
2025-06-21 23:48 ` [PATCH v2 003/101] tcg: Add dbase argument to expand_clr Richard Henderson
2025-06-23 10:02 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 004/101] tcg: Add base arguments to check_overlap_[234] Richard Henderson
2025-06-23 10:06 ` Peter Maydell
2025-06-23 16:22 ` Richard Henderson
2025-06-21 23:49 ` [PATCH v2 005/101] tcg: Split out tcg_gen_gvec_2_var Richard Henderson
2025-06-23 10:12 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 006/101] tcg: Split out tcg_gen_gvec_3_var Richard Henderson
2025-06-23 10:15 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 007/101] tcg: Split out tcg_gen_gvec_mov_var Richard Henderson
2025-06-23 10:16 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 008/101] tcg: Split out tcg_gen_gvec_{add,sub}_var Richard Henderson
2025-06-23 10:18 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 009/101] tcg: Split out tcg_gen_gvec_dup_imm_var Richard Henderson
2025-06-23 10:20 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 010/101] linux-user/aarch64: Update hwcap bits from 6.14 Richard Henderson
2025-06-23 10:25 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 011/101] target/arm: Remove CPUARMState.vfp.scratch Richard Henderson
2025-06-23 10:26 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 012/101] target/arm: Introduce FPST_ZA, FPST_ZA_F16 Richard Henderson
2025-06-23 10:30 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 013/101] target/arm: Use FPST_ZA for sme_fmopa_[hsd] Richard Henderson
2025-06-23 10:33 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 014/101] target/arm: Rename zarray to za_state.za Richard Henderson
2025-06-23 10:35 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 015/101] target/arm: Add isar feature tests for SME2, SVE2p1 Richard Henderson
2025-06-23 10:44 ` Peter Maydell
2025-06-23 16:57 ` Richard Henderson
2025-06-21 23:49 ` [PATCH v2 016/101] target/arm: Add ZT0 Richard Henderson
2025-06-23 11:50 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 017/101] target/arm: Add zt0_excp_el to DisasContext Richard Henderson
2025-06-22 20:21 ` Richard Henderson
2025-06-21 23:49 ` [PATCH v2 018/101] target/arm: Implement SME2 ZERO ZT0 Richard Henderson
2025-06-23 12:02 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 019/101] target/arm: Implement SME2 LDR/STR ZT0 Richard Henderson
2025-06-23 12:21 ` Peter Maydell
2025-06-23 15:34 ` Richard Henderson
2025-06-21 23:49 ` [PATCH v2 020/101] target/arm: Implement SME2 MOVT Richard Henderson
2025-06-23 12:25 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 021/101] target/arm: Split get_tile_rowcol argument tile_index Richard Henderson
2025-06-23 12:35 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 022/101] target/arm: Rename MOVA for translate Richard Henderson
2025-06-23 12:36 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 023/101] target/arm: Implement SME2 MOVA to/from tile, multiple registers Richard Henderson
2025-06-23 14:20 ` Peter Maydell
2025-06-23 15:42 ` Richard Henderson
2025-06-24 14:45 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 024/101] target/arm: Split out get_zarray Richard Henderson
2025-06-23 14:32 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 025/101] target/arm: Implement SME2 MOVA to/from array, multiple registers Richard Henderson
2025-06-23 14:40 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 026/101] target/arm: Implement SME2 BMOPA Richard Henderson
2025-06-23 14:47 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 027/101] target/arm: Implement SME2 SMOPS, UMOPS (2-way) Richard Henderson
2025-06-23 14:52 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 028/101] target/arm: Introduce gen_gvec_sve2_sqdmulh Richard Henderson
2025-06-23 14:56 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 029/101] target/arm: Implement SME2 Multiple and Single SVE Destructive Richard Henderson
2025-06-23 15:18 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 030/101] target/arm: Implement SME2 Multiple Vectors " Richard Henderson
2025-06-23 15:25 ` Peter Maydell
2025-06-23 15:46 ` Richard Henderson
2025-06-23 16:01 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 031/101] target/arm: Implement SME2 ADD/SUB (array results, multiple and single vector) Richard Henderson
2025-06-23 16:15 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 032/101] target/arm: Implement SME2 ADD/SUB (array results, multiple vectors) Richard Henderson
2025-06-23 16:18 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 033/101] target/arm: Pass ZA to helper_sve2_fmlal_zz[zx]w_s Richard Henderson
2025-06-23 16:21 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 034/101] target/arm: Implement SME2 FMLAL, BFMLAL Richard Henderson
2025-06-23 16:31 ` Peter Maydell
2025-06-24 14:28 ` Peter Maydell
2025-06-24 14:45 ` Richard Henderson
2025-06-21 23:49 ` [PATCH v2 035/101] target/arm: Implement SME2 FDOT Richard Henderson
2025-06-23 16:38 ` Peter Maydell [this message]
2025-06-23 17:58 ` Richard Henderson
2025-06-21 23:49 ` [PATCH v2 036/101] target/arm: Implement SME2 BFDOT Richard Henderson
2025-06-23 16:39 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 037/101] target/arm: Implement SME2 FVDOT, BFVDOT Richard Henderson
2025-06-23 16:53 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 038/101] target/arm: Rename helper_gvec_*dot_[bh] to *_4[bh] Richard Henderson
2025-06-23 16:54 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 039/101] target/arm: Remove helper_gvec_sudot_idx_4b Richard Henderson
2025-06-23 17:00 ` Peter Maydell
2025-06-23 18:01 ` Richard Henderson
2025-06-21 23:49 ` [PATCH v2 040/101] target/arm: Implemement SME2 SDOT, UDOT, USDOT, SUDOT Richard Henderson
2025-06-24 10:02 ` Peter Maydell
2025-06-24 14:55 ` Richard Henderson
2025-06-21 23:49 ` [PATCH v2 041/101] target/arm: Rename SVE SDOT and UDOT patterns Richard Henderson
2025-06-24 10:03 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 042/101] target/arm: Tighten USDOT (vectors) decode Richard Henderson
2025-06-24 10:13 ` Peter Maydell
2025-06-24 13:56 ` Richard Henderson
2025-06-21 23:49 ` [PATCH v2 043/101] target/arm: Implement SDOT, UDOT (2-way) for SME2/SVE2p1 Richard Henderson
2025-06-24 10:15 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 044/101] target/arm: Implement SME2 SVDOT, UVDOT, SUVDOT, USVDOT Richard Henderson
2025-06-24 10:36 ` Peter Maydell
2025-06-21 23:49 ` [PATCH v2 045/101] target/arm: Implement SME2 SMLAL, SMLSL, UMLAL, UMLSL Richard Henderson
2025-06-21 23:49 ` [PATCH v2 046/101] target/arm: Implement SME2 SMLALL, SMLSLL, UMLALL, UMLSLL Richard Henderson
2025-06-24 13:51 ` Richard Henderson
2025-06-24 17:41 ` Peter Maydell
2025-06-25 3:12 ` Richard Henderson
2025-06-21 23:49 ` [PATCH v2 047/101] target/arm: Rename gvec_fml[as]_[hs] with _nf_ infix Richard Henderson
2025-06-21 23:49 ` [PATCH v2 048/101] target/arm: Implement SME2 FMLA, FMLS Richard Henderson
2025-06-21 23:49 ` [PATCH v2 049/101] target/arm: Implement SME2 BFMLA, BFMLS Richard Henderson
2025-06-21 23:49 ` [PATCH v2 050/101] target/arm: Implement SME2 FADD, FSUB, BFADD, BFSUB Richard Henderson
2025-06-21 23:49 ` [PATCH v2 051/101] target/arm: Implement SME2 BFCVT, BFCVTN, FCVT, FCVTN Richard Henderson
2025-06-21 23:49 ` [PATCH v2 052/101] target/arm: Implement SME2 FCVT (widening), FCVTL Richard Henderson
2025-06-21 23:49 ` [PATCH v2 053/101] target/arm: Implement SME2 FCVTZS, FCVTZU Richard Henderson
2025-06-21 23:49 ` [PATCH v2 054/101] target/arm: Implement SME2 SCVTF, UCVTF Richard Henderson
2025-06-21 23:49 ` [PATCH v2 055/101] target/arm: Implement SME2 FRINTN, FRINTP, FRINTM, FRINTA Richard Henderson
2025-06-21 23:49 ` [PATCH v2 056/101] target/arm: Introduce do_[us]sat_[bhs] macros Richard Henderson
2025-06-21 23:49 ` [PATCH v2 057/101] target/arm: Use do_[us]sat_[bhs] in sve_helper.c Richard Henderson
2025-06-21 23:49 ` [PATCH v2 058/101] target/arm: Implement SME2 SQCVT, UQCVT, SQCVTU Richard Henderson
2025-06-21 23:49 ` [PATCH v2 059/101] target/arm: Implement SQCVTN, UQCVTN, SQCVTUN for SME2/SVE2p1 Richard Henderson
2025-06-21 23:49 ` [PATCH v2 060/101] target/arm: Implement SME2 SUNPK, UUNPK Richard Henderson
2025-06-21 23:49 ` [PATCH v2 061/101] target/arm: Implement SME2 ZIP, UZP (four registers) Richard Henderson
2025-06-21 23:49 ` [PATCH v2 062/101] target/arm: Move do_urshr, do_srshr to vec_internal.h Richard Henderson
2025-06-21 23:49 ` [PATCH v2 063/101] target/arm: Implement SME2 SQRSHR, UQRSHR, SQRSHRN Richard Henderson
2025-06-21 23:50 ` [PATCH v2 064/101] target/arm: Implement SME2 ZIP, UZP (two registers) Richard Henderson
2025-06-21 23:50 ` [PATCH v2 065/101] target/arm: Implement SME2 FCLAMP, SCLAMP, UCLAMP Richard Henderson
2025-06-22 20:54 ` Richard Henderson
2025-06-23 10:32 ` Alex Bennée
2025-06-21 23:50 ` [PATCH v2 066/101] target/arm: Enable SCLAMP, UCLAMP for SVE2p1 Richard Henderson
2025-06-21 23:50 ` [PATCH v2 067/101] target/arm: Implement FCLAMP for SME2, SVE2p1 Richard Henderson
2025-06-22 17:22 ` Richard Henderson
2025-06-23 9:24 ` Alex Bennée
2025-06-21 23:50 ` [PATCH v2 068/101] target/arm: Implement SME2 SEL Richard Henderson
2025-06-23 21:24 ` Richard Henderson
2025-06-21 23:50 ` [PATCH v2 069/101] target/arm: Implement SME2p1 Multiple Zero Richard Henderson
2025-06-21 23:50 ` [PATCH v2 070/101] target/arm: Introduce pred_count_test Richard Henderson
2025-06-21 23:50 ` [PATCH v2 071/101] target/arm: Fold predtest_ones into helper_sve_brkns Richard Henderson
2025-06-21 23:50 ` [PATCH v2 072/101] target/arm: Split out do_whilel from helper_sve_whilel Richard Henderson
2025-06-21 23:50 ` [PATCH v2 073/101] target/arm: Split out do_whileg from helper_sve_whileg Richard Henderson
2025-06-21 23:50 ` [PATCH v2 074/101] target/arm: Move scale by esz into helper_sve_while* Richard Henderson
2025-06-21 23:50 ` [PATCH v2 075/101] target/arm: Split trans_WHILE to lt and gt Richard Henderson
2025-06-21 23:50 ` [PATCH v2 076/101] target/arm: Implement SVE2p1 WHILE (predicate pair) Richard Henderson
2025-06-21 23:50 ` [PATCH v2 077/101] target/arm: Implement SVE2p1 WHILE (predicate as counter) Richard Henderson
2025-06-21 23:50 ` [PATCH v2 078/101] target/arm: Implement SVE2p1 PTRUE " Richard Henderson
2025-06-21 23:50 ` [PATCH v2 079/101] target/arm: Enable PSEL for SVE2p1 Richard Henderson
2025-06-21 23:50 ` [PATCH v2 080/101] target/arm: Implement {ADD, SMIN, SMAX, UMIN, UMAX}QV " Richard Henderson
2025-06-21 23:50 ` [PATCH v2 081/101] target/arm: Implement SVE2p1 PEXT Richard Henderson
2025-06-21 23:50 ` [PATCH v2 082/101] target/arm: Implement ANDQV, ORQV, EORQV for SVE2p1 Richard Henderson
2025-06-21 23:50 ` [PATCH v2 083/101] target/arm: Implement FADDQV, F{MIN, MAX}{NM}QV " Richard Henderson
2025-06-21 23:50 ` [PATCH v2 084/101] target/arm: Implement BFMLSLB{L, T} for SME2/SVE2p1 Richard Henderson
2025-06-21 23:50 ` [PATCH v2 085/101] target/arm: Implement CNTP (predicate as counter) " Richard Henderson
2025-06-22 21:39 ` Richard Henderson
2025-06-21 23:50 ` [PATCH v2 086/101] target/arm: Implement DUPQ for SME2p1/SVE2p1 Richard Henderson
2025-06-21 23:50 ` [PATCH v2 087/101] target/arm: Implement EXTQ " Richard Henderson
2025-06-21 23:50 ` [PATCH v2 088/101] target/arm: Implement PMOV " Richard Henderson
2025-06-21 23:50 ` [PATCH v2 089/101] target/arm: Implement ZIPQ, UZPQ " Richard Henderson
2025-06-21 23:50 ` [PATCH v2 090/101] target/arm: Implement TBLQ, TBXQ " Richard Henderson
2025-06-21 23:50 ` [PATCH v2 091/101] target/arm: Implement SME2 counted predicate register load/store Richard Henderson
2025-06-24 14:21 ` Peter Maydell
2025-06-24 19:38 ` Richard Henderson
2025-06-21 23:50 ` [PATCH v2 092/101] target/arm: Split the ST_zpri and ST_zprr patterns Richard Henderson
2025-06-21 23:50 ` [PATCH v2 093/101] target/arm: Implement {LD1, ST1}{W, D} (128-bit element) for SVE2p1 Richard Henderson
2025-06-21 23:50 ` [PATCH v2 094/101] target/arm: Move ld1qq and st1qq primitives to sve_ldst_internal.h Richard Henderson
2025-06-21 23:50 ` [PATCH v2 095/101] target/arm: Implement {LD, ST}[234]Q for SME2p1/SVE2p1 Richard Henderson
2025-06-21 23:50 ` [PATCH v2 096/101] target/arm: Implement LD1Q, ST1Q for SVE2p1 Richard Henderson
2025-06-21 23:50 ` [PATCH v2 097/101] target/arm: Implement LUTI2, LUTI4 for SME2/SME2p1 Richard Henderson
2025-06-21 23:50 ` [PATCH v2 098/101] target/arm: Implement MOVAZ for SME2p1 Richard Henderson
2025-06-21 23:50 ` [PATCH v2 099/101] linux-user/aarch64: Set hwcap bits for SME2p1/SVE2p1 Richard Henderson
2025-06-21 23:50 ` [PATCH v2 100/101] target/arm: Enable FEAT_SME2p1 on -cpu max Richard Henderson
2025-06-21 23:50 ` [PATCH v2 101/101] tests/tcg/aarch64: Add sme2-matmul test case Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CAFEAcA87DoZhX0NNEf7nao48VGu7nfpmO0wug6JduYLtEKp35w@mail.gmail.com \
--to=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).