qemu/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 target/arm: Convert Unallocated memory hint 2019-09-05 13:23:03 +01:00
a32.decode target/arm: Convert A32 coprocessor insns to decodetree 2020-08-24 10:02:07 +01:00
arch_dump.c target/arm: Add isar_feature_aa32_vfp_simd 2020-02-28 16:14:57 +00:00
arm-powerctl.c arm/arm-powerctl: rebuild hflags after setting CP15 bits in arm_set_cpu_on() 2019-12-20 14:03:00 +00:00
arm-powerctl.h target/arm/arm-powerctl: Add new arm_set_cpu_on_and_reset() 2019-02-28 11:03:04 +00:00
arm-semi.c target/arm/arm-semi: Don't let the guest close stdin/stdout/stderr 2020-01-30 16:02:01 +00:00
arm_ldst.h target/arm: fetch code with translator_ld 2019-10-28 15:12:38 +00:00
cpu-param.h target/arm: Don't use a TLB for ARMMMUIdx_Stage2 2020-05-04 10:32:46 +01:00
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
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
crypto_helper.c target/arm: Split helper_crypto_sm3tt 2020-06-05 17:23:09 +01:00
debug_helper.c target/arm: Stop assuming DBGDIDR always exists 2020-02-21 16:07:01 +00:00
gdbstub.c target/arm: Use correct GDB XML for M-profile cores 2020-05-14 15:03:08 +01:00
gdbstub64.c gdbstub: extend GByteArray to read register helpers 2020-03-17 17:38:38 +00:00
helper-a64.c target/arm: Remove local definitions of float constants 2020-09-01 11:19:32 +01:00
helper-a64.h target/arm: Add helper_mte_check_zva 2020-06-26 14:31:12 +01:00
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 target/arm: Always pass cacheattr to get_phys_addr 2020-06-26 14:31:12 +01:00
iwmmxt_helper.c target/arm: Untabify iwmmxt_helper.c 2018-08-24 13:17:48 +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 Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
kvm.c hw/arm/virt: Implement kvm-steal-time 2020-10-08 15:24:32 +01:00
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
m-nocp.decode target/arm: Do M-profile NOCP checks early and via decodetree 2020-08-24 10:05:12 +01:00
m_helper.c target/arm: Always pass cacheattr to get_phys_addr 2020-06-26 14:31:12 +01:00
machine.c target/arm: Add isar_feature_aa64_fp_simd, isar_feature_aa32_vfp 2020-02-28 16:14:57 +00:00
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-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 target/arm: Convert Neon 'load/store single structure' to decodetree 2020-05-04 12:57:56 +01:00
neon-shared.decode target/arm: Convert VCMLA, VCADD size field to MO_* in decode 2020-09-14 14:23:19 +01:00
neon_helper.c target/arm: Convert Neon VADD, VSUB, VABD 3-reg-same insns to decodetree 2020-05-14 15:03:09 +01:00
op_addsub.h
op_helper.c target/arm: Implement LDG, STG, ST2G instructions 2020-06-26 14:31:12 +01:00
pauth_helper.c target/arm: Fix AddPAC error indication 2020-08-03 17:55:03 +01:00
psci.c sysemu: Split sysemu/runstate.h off sysemu/sysemu.h 2019-08-16 13:37:36 +02:00
sve.decode target/arm: Tidy SVE tszimm shift formats 2020-08-28 10:02:49 +01:00
sve_helper.c target/arm: Merge helper_sve_clr_* and helper_sve_movz_* 2020-08-28 10:02:48 +01:00
t16.decode target/arm: Convert T16, long branches 2019-09-05 13:23:04 +01:00
t32.decode target/arm: Convert T32 coprocessor insns to decodetree 2020-08-24 10:15:08 +01:00
tlb_helper.c target/arm: Cache the Tagged bit for a page in MemTxAttrs 2020-06-26 14:31:12 +01:00
trace-events trace-events: Shorten file names in comments 2019-03-22 16:18:07 +00:00
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 target/arm: Convert aes and sm4 to gvec helpers 2020-06-05 17:23:09 +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
vfp_helper.c target/arm: AArch32 VCVT fixed-point to float is always round-to-nearest 2020-10-20 16:12:00 +01:00