qemu/target/arm
Peter Maydell aaae563bc7 target/arm: Implement FPST_STD_F16 fpstatus
Architecturally, Neon FP16 operations use the "standard FPSCR" like
all other Neon operations.  However, this is defined in the Arm ARM
pseudocode as "a fixed value, except that FZ16 (and AHP) follow the
FPSCR bits". In QEMU, the softfloat float_status doesn't include
separate flush-to-zero for FP16 operations, so we must keep separate
fp_status for "Neon non-FP16" and "Neon fp16" operations, in the
same way we do already for the non-Neon "fp_status" vs "fp_status_f16".

Add the extra float_status field to the CPU state structure,
ensure it is correctly initialized and updated on FPSCR writes,
and make fpstatus_ptr(FPST_STD_F16) return a pointer to it.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Message-id: 20200806104453.30393-4-peter.maydell@linaro.org
2020-08-24 10:15:11 +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 target/arm: Make cpu_register() available for other files 2020-04-30 15:35:41 +01:00
cpu.c target/arm: Implement FPST_STD_F16 fpstatus 2020-08-24 10:15:11 +01:00
cpu.h target/arm: Implement FPST_STD_F16 fpstatus 2020-08-24 10:15:11 +01:00
cpu64.c hw/arm/virt: Enable MTE via a machine property 2020-07-20 11:35:15 +01:00
cpu_tcg.c target/arm: Use correct GDB XML for M-profile cores 2020-05-14 15:03:08 +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: Simplify DC_ZVA 2020-06-26 14:31:12 +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: Add mte helpers for sve scatter/gather memory ops 2020-06-26 14:31:12 +01:00
helper.c target/arm: Convert A32 coprocessor insns to decodetree 2020-08-24 10:02:07 +01:00
helper.h target/arm: Implement LDG, STG, ST2G instructions 2020-06-26 14:31:12 +01:00
idau.h qom: make interface types abstract 2018-12-11 15:45:22 -02: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 arm: add trailing ; after MISMATCH_CHECK 2017-02-01 03:37:18 +02:00
kvm-stub.c Include qemu-common.h exactly where needed 2019-06-12 13:20:20 +02:00
kvm.c target/arm: kvm: Handle misconfigured dabt injection 2020-07-03 16:59:42 +01:00
kvm32.c target/arm: kvm: Handle misconfigured dabt injection 2020-07-03 16:59:42 +01:00
kvm64.c target/arm: kvm: Handle misconfigured dabt injection 2020-07-03 16:59:42 +01:00
kvm_arm.h target/arm: kvm: Handle misconfigured dabt injection 2020-07-03 16:59:42 +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: Do M-profile NOCP checks early and via decodetree 2020-08-24 10:05:12 +01:00
monitor.c error: Eliminate error_propagate() with Coccinelle, part 1 2020-07-10 15:18:08 +02:00
mte_helper.c target/arm: Improve IMPDEF algorithm for IRG 2020-07-27 16:12:11 +01:00
neon-dp.decode target/arm: Convert Neon VTRN to decodetree 2020-06-23 11:39:47 +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 VFM[AS]L (scalar) to decodetree 2020-05-04 12:57:56 +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: SVE brk[ab] merging does not have s bit 2019-01-07 15:23:45 +00:00
sve_helper.c target/arm: Complete TBI clearing for user-only for SVE 2020-06-26 14:31:12 +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: Replace A64 get_fpstatus_ptr() with generic fpstatus_ptr() 2020-08-24 10:15:11 +01: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: Make A32/T32 use new fpstatus_ptr() API 2020-08-24 10:15:11 +01:00
translate-sve.c target/arm: Replace A64 get_fpstatus_ptr() with generic fpstatus_ptr() 2020-08-24 10:15:11 +01:00
translate-vfp.c.inc target/arm: Make A32/T32 use new fpstatus_ptr() API 2020-08-24 10:15:11 +01:00
translate.c target/arm: Make A32/T32 use new fpstatus_ptr() API 2020-08-24 10:15:11 +01:00
translate.h target/arm: Implement FPST_STD_F16 fpstatus 2020-08-24 10:15:11 +01:00
vec_helper.c target/arm: Convert aes and sm4 to gvec helpers 2020-06-05 17:23:09 +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: Split VMINMAXNM decode 2020-02-28 16:14:57 +00:00
vfp.decode target/arm: Do M-profile NOCP checks early and via decodetree 2020-08-24 10:05:12 +01:00
vfp_helper.c target/arm: Implement FPST_STD_F16 fpstatus 2020-08-24 10:15:11 +01:00