Message ID | 20240730160306.2959745-3-peter.maydell@linaro.org |
---|---|
State | Accepted |
Headers | show |
Series | target/arm: Implement FEAT_EBF16 | expand |
On 7/31/24 02:03, Peter Maydell wrote: > To implement the FEAT_EBF16 semantics, we are going to need > the CPUARMState env pointer in every helper function which calls > bfdotadd(). > > Pass the env pointer through from generated code to the sme_bfmopa > helper. (We'll add the code that uses it when we've adjusted > all the helpers to have access to the env pointer.) > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > target/arm/tcg/helper-sme.h | 4 ++-- > target/arm/tcg/sme_helper.c | 4 ++-- > target/arm/tcg/translate-sme.c | 2 +- > 3 files changed, 5 insertions(+), 5 deletions(-) > > diff --git a/target/arm/tcg/helper-sme.h b/target/arm/tcg/helper-sme.h > index 659867a1faf..f12d903aa44 100644 > --- a/target/arm/tcg/helper-sme.h > +++ b/target/arm/tcg/helper-sme.h > @@ -126,8 +126,8 @@ DEF_HELPER_FLAGS_7(sme_fmopa_s, TCG_CALL_NO_RWG, > void, ptr, ptr, ptr, ptr, ptr, ptr, i32) > DEF_HELPER_FLAGS_7(sme_fmopa_d, TCG_CALL_NO_RWG, > void, ptr, ptr, ptr, ptr, ptr, ptr, i32) > -DEF_HELPER_FLAGS_6(sme_bfmopa, TCG_CALL_NO_RWG, > - void, ptr, ptr, ptr, ptr, ptr, i32) > +DEF_HELPER_FLAGS_7(sme_bfmopa, TCG_CALL_NO_RWG, > + void, env, ptr, ptr, ptr, ptr, ptr, i32) > DEF_HELPER_FLAGS_6(sme_smopa_s, TCG_CALL_NO_RWG, > void, ptr, ptr, ptr, ptr, ptr, i32) > DEF_HELPER_FLAGS_6(sme_umopa_s, TCG_CALL_NO_RWG, > diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c > index 2af2b957cb6..f172225b2f2 100644 > --- a/target/arm/tcg/sme_helper.c > +++ b/target/arm/tcg/sme_helper.c > @@ -1080,8 +1080,8 @@ void HELPER(sme_fmopa_h)(CPUARMState *env, > } > } > > -void HELPER(sme_bfmopa)(void *vza, void *vzn, void *vzm, void *vpn, > - void *vpm, uint32_t desc) > +void HELPER(sme_bfmopa)(CPUARMState *env, void *vza, void *vzn, void *vzm, > + void *vpn, void *vpm, uint32_t desc) Per this morning's review of do_outprod_env, I think env should be penultimate, as for other gen_helper_gvec_5_ptr functions. Otherwise, Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ > { > intptr_t row, col, oprsz = simd_maxsz(desc); > uint32_t neg = simd_data(desc) * 0x80008000u; > diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c > index 8e9332f1898..bcb502feb05 100644 > --- a/target/arm/tcg/translate-sme.c > +++ b/target/arm/tcg/translate-sme.c > @@ -355,7 +355,7 @@ TRANS_FEAT(FMOPA_d, aa64_sme_f64f64, do_outprod_fpst, a, > MO_64, FPST_FPCR, gen_helper_sme_fmopa_d) > > /* TODO: FEAT_EBF16 */ > -TRANS_FEAT(BFMOPA, aa64_sme, do_outprod, a, MO_32, gen_helper_sme_bfmopa) > +TRANS_FEAT(BFMOPA, aa64_sme, do_outprod_env, a, MO_32, gen_helper_sme_bfmopa) > > TRANS_FEAT(SMOPA_s, aa64_sme, do_outprod, a, MO_32, gen_helper_sme_smopa_s) > TRANS_FEAT(UMOPA_s, aa64_sme, do_outprod, a, MO_32, gen_helper_sme_umopa_s)
diff --git a/target/arm/tcg/helper-sme.h b/target/arm/tcg/helper-sme.h index 659867a1faf..f12d903aa44 100644 --- a/target/arm/tcg/helper-sme.h +++ b/target/arm/tcg/helper-sme.h @@ -126,8 +126,8 @@ DEF_HELPER_FLAGS_7(sme_fmopa_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_7(sme_fmopa_d, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, ptr, i32) -DEF_HELPER_FLAGS_6(sme_bfmopa, TCG_CALL_NO_RWG, - void, ptr, ptr, ptr, ptr, ptr, i32) +DEF_HELPER_FLAGS_7(sme_bfmopa, TCG_CALL_NO_RWG, + void, env, ptr, ptr, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_6(sme_smopa_s, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, ptr, i32) DEF_HELPER_FLAGS_6(sme_umopa_s, TCG_CALL_NO_RWG, diff --git a/target/arm/tcg/sme_helper.c b/target/arm/tcg/sme_helper.c index 2af2b957cb6..f172225b2f2 100644 --- a/target/arm/tcg/sme_helper.c +++ b/target/arm/tcg/sme_helper.c @@ -1080,8 +1080,8 @@ void HELPER(sme_fmopa_h)(CPUARMState *env, } } -void HELPER(sme_bfmopa)(void *vza, void *vzn, void *vzm, void *vpn, - void *vpm, uint32_t desc) +void HELPER(sme_bfmopa)(CPUARMState *env, void *vza, void *vzn, void *vzm, + void *vpn, void *vpm, uint32_t desc) { intptr_t row, col, oprsz = simd_maxsz(desc); uint32_t neg = simd_data(desc) * 0x80008000u; diff --git a/target/arm/tcg/translate-sme.c b/target/arm/tcg/translate-sme.c index 8e9332f1898..bcb502feb05 100644 --- a/target/arm/tcg/translate-sme.c +++ b/target/arm/tcg/translate-sme.c @@ -355,7 +355,7 @@ TRANS_FEAT(FMOPA_d, aa64_sme_f64f64, do_outprod_fpst, a, MO_64, FPST_FPCR, gen_helper_sme_fmopa_d) /* TODO: FEAT_EBF16 */ -TRANS_FEAT(BFMOPA, aa64_sme, do_outprod, a, MO_32, gen_helper_sme_bfmopa) +TRANS_FEAT(BFMOPA, aa64_sme, do_outprod_env, a, MO_32, gen_helper_sme_bfmopa) TRANS_FEAT(SMOPA_s, aa64_sme, do_outprod, a, MO_32, gen_helper_sme_smopa_s) TRANS_FEAT(UMOPA_s, aa64_sme, do_outprod, a, MO_32, gen_helper_sme_umopa_s)
To implement the FEAT_EBF16 semantics, we are going to need the CPUARMState env pointer in every helper function which calls bfdotadd(). Pass the env pointer through from generated code to the sme_bfmopa helper. (We'll add the code that uses it when we've adjusted all the helpers to have access to the env pointer.) Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- target/arm/tcg/helper-sme.h | 4 ++-- target/arm/tcg/sme_helper.c | 4 ++-- target/arm/tcg/translate-sme.c | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-)