On Fri, 8 May 2026 at 00:46, Richard Henderson <[email protected]> wrote: > > Signed-off-by: Richard Henderson <[email protected]> > --- > target/arm/tcg/helper-fp8-defs.h | 2 + > target/arm/tcg/fp8_helper.c | 85 ++++++++++++++++++++++++++++++++ > target/arm/tcg/translate-sve.c | 3 ++ > target/arm/tcg/sve.decode | 2 + > 4 files changed, 92 insertions(+) > > diff --git a/target/arm/tcg/helper-fp8-defs.h > b/target/arm/tcg/helper-fp8-defs.h > index b5dc2b7064..bbc8d69e28 100644 > --- a/target/arm/tcg/helper-fp8-defs.h > +++ b/target/arm/tcg/helper-fp8-defs.h > @@ -12,3 +12,5 @@ DEF_HELPER_FLAGS_4(advsimd_fcvtl_hb, TCG_CALL_NO_RWG, void, > ptr, ptr, env, i32) > DEF_HELPER_FLAGS_4(sve2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) > DEF_HELPER_FLAGS_4(sme2_fcvt_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) > DEF_HELPER_FLAGS_4(sme2_fcvtl_hb, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) > + > +DEF_HELPER_FLAGS_4(sve2_bfcvtn_bh, TCG_CALL_NO_RWG, void, ptr, ptr, env, i32) > diff --git a/target/arm/tcg/fp8_helper.c b/target/arm/tcg/fp8_helper.c > index fce02f68fa..400deee612 100644 > --- a/target/arm/tcg/fp8_helper.c > +++ b/target/arm/tcg/fp8_helper.c > @@ -78,6 +78,14 @@ static FP8Context fp8_src_start(CPUARMState *env, uint32_t > desc, int scale_mask) > return fp8_start(env, desc, f8fmt, scale); > } > > +static FP8Context fp8_dst_start(CPUARMState *env, uint32_t desc) > +{ > + uint64_t fpmr = env->vfp.fpmr; > + FPMRType f8fmt = FIELD_EX64(fpmr, FPMR, F8D); > + int scale = FIELD_SEX64(fpmr, FPMR, NSCALE); > + > + return fp8_start(env, desc, f8fmt, scale); > +}
We need to vary the number of bits in FPMR.NSCALE that we look at depending on whether we're doing halfprec to fp8 or single to fp8 conversions. The pseudocode FPConvertFP8() function has let scale : integer = if N == 16 then SInt(fpmr.NSCALE[4:0]) else SInt(fpmr.NSCALE)Íž I think this function needs an extra "bool is_halfprec" or some equivalent of the fp8_src_start() scale_mask argument (not quite as simple as just copying that because this one is signed...) thanks -- PMM
