Message ID | 20250124162836.2332150-10-peter.maydell@linaro.org (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | target/arm: Implement FEAT_AFP and FEAT_RPRES | expand |
On 1/24/25 08:27, Peter Maydell wrote: > The helpers vfp_cmps, vfp_cmpes, vfp_cmpd, vfp_cmped are used only from > the A32 decoder; the A64 decoder uses separate vfp_cmps_a64 etc helpers > (because for A64 we update the main NZCV flags and for A32 we update > the FPSCR NZCV flags). So we can make these helpers use the fp_status_a32 > field instead of fp_status. > > Signed-off-by: Peter Maydell <peter.maydell@linaro.org> > --- > We could in theory make A32 use the a64 helpers and do the setting > of vfp.fpsr NZCV in the generated code from the helper return value, > but it doesn't seem worthwhile to me. > --- > target/arm/vfp_helper.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/target/arm/vfp_helper.c b/target/arm/vfp_helper.c > index 0671ba3a88b..034f26e5daa 100644 > --- a/target/arm/vfp_helper.c > +++ b/target/arm/vfp_helper.c > @@ -373,8 +373,8 @@ void VFP_HELPER(cmpe, P)(ARGTYPE a, ARGTYPE b, CPUARMState *env) \ > FLOATTYPE ## _compare(a, b, &env->vfp.FPST)); \ > } > DO_VFP_cmp(h, float16, dh_ctype_f16, fp_status_f16) > -DO_VFP_cmp(s, float32, float32, fp_status) > -DO_VFP_cmp(d, float64, float64, fp_status) > +DO_VFP_cmp(s, float32, float32, fp_status_a32) > +DO_VFP_cmp(d, float64, float64, fp_status_a32) > #undef DO_VFP_cmp > > /* Integer to float and float to integer conversions */ Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
diff --git a/target/arm/vfp_helper.c b/target/arm/vfp_helper.c index 0671ba3a88b..034f26e5daa 100644 --- a/target/arm/vfp_helper.c +++ b/target/arm/vfp_helper.c @@ -373,8 +373,8 @@ void VFP_HELPER(cmpe, P)(ARGTYPE a, ARGTYPE b, CPUARMState *env) \ FLOATTYPE ## _compare(a, b, &env->vfp.FPST)); \ } DO_VFP_cmp(h, float16, dh_ctype_f16, fp_status_f16) -DO_VFP_cmp(s, float32, float32, fp_status) -DO_VFP_cmp(d, float64, float64, fp_status) +DO_VFP_cmp(s, float32, float32, fp_status_a32) +DO_VFP_cmp(d, float64, float64, fp_status_a32) #undef DO_VFP_cmp /* Integer to float and float to integer conversions */
The helpers vfp_cmps, vfp_cmpes, vfp_cmpd, vfp_cmped are used only from the A32 decoder; the A64 decoder uses separate vfp_cmps_a64 etc helpers (because for A64 we update the main NZCV flags and for A32 we update the FPSCR NZCV flags). So we can make these helpers use the fp_status_a32 field instead of fp_status. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> --- We could in theory make A32 use the a64 helpers and do the setting of vfp.fpsr NZCV in the generated code from the helper return value, but it doesn't seem worthwhile to me. --- target/arm/vfp_helper.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)