On 10/19/20 8:13 AM, Peter Maydell wrote:
> M-profile CPUs with half-precision floating point support should
> be able to write to FPSCR.FZ16, but an M-profile specific masking
> of the value at the top of vfp_set_fpscr() currently prevents that.
> This is not yet an active bug because we have no M-profile
> FP16 CPUs, but needs to be fixed before we can add any.
> 
> The bits that the masking is effectively preventing from being
> set are the A-profile only short-vector Len and Stride fields,
> plus the Neon QC bit. Rearrange the order of the function so
> that those fields are handled earlier and only under a suitable
> guard; this allows us to drop the M-profile specific masking,
> making FZ16 writeable.
> 
> This change also makes the QC bit correctly RAZ/WI for older
> no-Neon A-profile cores.
> 
> This refactoring also paves the way for the low-overhead-branch
> LTPSIZE field, which uses some of the bits that are used for
> A-profile Stride and Len.
> 
> Signed-off-by: Peter Maydell <peter.mayd...@linaro.org>
> ---
>  target/arm/vfp_helper.c | 47 ++++++++++++++++++++++++-----------------
>  1 file changed, 28 insertions(+), 19 deletions(-)

Reviewed-by: Richard Henderson <richard.hender...@linaro.org>

r~


Reply via email to