qemu-e2k/target/arm
Peter Maydell 61db12d9f9 target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest
For AArch32, unlike the VCVT of integer to float, which honours the
rounding mode specified by the FPSCR, VCVT of fixed-point to float is
always round-to-nearest. (AArch64 fixed-point-to-float conversions
always honour the FPCR rounding mode.)

Implement this by providing _round_to_nearest versions of the
relevant helpers which set the rounding mode temporarily when making
the call to the underlying softfloat function.

We only need to change the VFP VCVT instructions, because the
standard- FPSCR value used by the Neon VCVT is always set to
round-to-nearest, so we don't need to do the extra work of saving
and restoring the rounding mode.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20201013103532.13391-1-peter.maydell@linaro.org
2020-10-20 16:12:00 +01:00
..
a32-uncond.decode
a32.decode target/arm: Convert A32 coprocessor insns to decodetree 2020-08-24 10:02:07 +01:00
arch_dump.c
arm_ldst.h
arm-powerctl.c
arm-powerctl.h
arm-semi.c
cpu64.c target/arm: Make '-cpu max' have a 48-bit PA 2020-10-08 21:40:01 +01:00
cpu_tcg.c target/arm: Add ID register values for Cortex-M0 2020-10-01 15:31:00 +01:00
cpu-param.h
cpu-qom.h qom: Remove module_obj_name parameter from OBJECT_DECLARE* macros 2020-09-18 14:12:32 -04:00
cpu.c hw/arm/virt: Implement kvm-steal-time 2020-10-08 15:24:32 +01:00
cpu.h hw/arm/virt: Implement kvm-steal-time 2020-10-08 15:24:32 +01:00
crypto_helper.c
debug_helper.c
gdbstub64.c
gdbstub.c
helper-a64.c target/arm: Remove local definitions of float constants 2020-09-01 11:19:32 +01:00
helper-a64.h
helper-sve.h target/arm: Merge helper_sve_clr_* and helper_sve_movz_* 2020-08-28 10:02:48 +01:00
helper.c icount: rename functions to be consistent with the module name 2020-10-05 16:41:22 +02:00
helper.h target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2020-10-20 16:12:00 +01:00
idau.h Use DECLARE_*CHECKER* macros 2020-09-09 09:27:09 -04:00
internals.h
iwmmxt_helper.c
kvm64.c hw/arm/virt: Implement kvm-steal-time 2020-10-08 15:24:32 +01:00
kvm_arm.h hw/arm/virt: Implement kvm-steal-time 2020-10-08 15:24:32 +01:00
kvm-consts.h target/arm: Remove no-longer-reachable 32-bit KVM code 2020-09-14 14:23:19 +01:00
kvm-stub.c
kvm.c hw/arm/virt: Implement kvm-steal-time 2020-10-08 15:24:32 +01:00
m_helper.c
m-nocp.decode target/arm: Do M-profile NOCP checks early and via decodetree 2020-08-24 10:05:12 +01:00
machine.c
meson.build target/arm: Remove KVM support for 32-bit Arm hosts 2020-09-14 14:23:19 +01:00
monitor.c hw/arm/virt: Implement kvm-steal-time 2020-10-08 15:24:32 +01:00
mte_helper.c qemu/atomic.h: rename atomic_ to qatomic_ 2020-09-23 16:07:44 +01:00
neon_helper.c
neon-dp.decode target/arm: Convert Neon VCVT fp size field to MO_* in decode 2020-09-14 14:23:19 +01:00
neon-ls.decode
neon-shared.decode target/arm: Convert VCMLA, VCADD size field to MO_* in decode 2020-09-14 14:23:19 +01:00
op_addsub.h
op_helper.c
pauth_helper.c
psci.c
sve_helper.c target/arm: Merge helper_sve_clr_* and helper_sve_movz_* 2020-08-28 10:02:48 +01:00
sve.decode target/arm: Tidy SVE tszimm shift formats 2020-08-28 10:02:49 +01:00
t16.decode
t32.decode target/arm: Convert T32 coprocessor insns to decodetree 2020-08-24 10:15:08 +01:00
tlb_helper.c
trace-events
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
translate-a64.c target/arm/translate-a64:Remove redundant statement in disas_simd_two_reg_misc_fp16() 2020-09-01 11:57:39 +02:00
translate-a64.h target/arm: Replace A64 get_fpstatus_ptr() with generic fpstatus_ptr() 2020-08-24 10:15:11 +01:00
translate-neon.c.inc target/arm: Convert VCMLA, VCADD size field to MO_* in decode 2020-09-14 14:23:19 +01:00
translate-sve.c target/arm: Fix SVE splice 2020-10-01 15:31:00 +01:00
translate-vfp.c.inc target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2020-10-20 16:12:00 +01:00
translate.c target/arm: Fix SMLAD incorrect setting of Q bit 2020-10-20 16:12:00 +01:00
translate.h target/arm: Rearrange {sve,fp}_check_access assert 2020-08-28 10:02:47 +01:00
vec_helper.c target/arm/vec_helper: Add gvec fp indexed multiply-and-add operations 2020-09-01 11:45:32 +01:00
vec_internal.h
vfp_helper.c target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2020-10-20 16:12:00 +01:00
vfp-uncond.decode target/arm: Implement new VFP fp16 insn VMOVX 2020-09-01 11:19:32 +01:00
vfp.decode target/arm: Implement VFP fp16 VMOV between gp and halfprec registers 2020-09-01 11:19:32 +01:00