This patch series fixes a number of minor bugs in the ARM target where we were not correctly setting the cumulative exception flags in the FPSCR. It includes adding a new flag to softfloat indicating when a denormal result has been flushed to zero (as discussed previously on the list.)
Tested with the usual random instruction sequence testing (covering all the neon and vfp data processing instructions which can set FPSCR exception flags). These patches fix all the FPSCR flags bugs I found, with the exception of those in the VCVT float-int and float32-float16 conversion routines, which are a bit trickier to fix because they are bugs in softfloat rather than merely in the arm helper functions. Peter Maydell (7): target-arm: Don't set FP exceptions in recip, recip_sqrt estimate fns target-arm: Signal InputDenormal for VRECPE, VRSQRTE, VRECPS, VRSQRTS target-arm: Signal InvalidOp for Neon GE and GT compares of QNaN target-arm: Refactor int-float conversions target-arm: Add separate Neon float-int conversion helpers softfloat: Add new flag for when denormal result is flushed to zero target-arm: Signal Underflow when denormal flushed to zero on output fpu/softfloat.c | 41 ++++++++++-- fpu/softfloat.h | 3 +- target-arm/helper.c | 151 +++++++--------------------------------------- target-arm/helper.h | 70 ++++++++++++--------- target-arm/neon_helper.c | 40 ++++++------- target-arm/op_helper.c | 74 ++++++++++++++++++++++ target-arm/translate.c | 92 ++++++++++++++++------------ 7 files changed, 243 insertions(+), 228 deletions(-)