target-arm: Use correct float status for Neon int-float conversions

The Neon versions of int-float conversions must use the "standard FPSCR"
rather than the default FPSCR. Implement this by having the helper
functions take a pointer to the appropriate float_status value rather
than simply taking a pointer to the entire CPUState, and making
translate.c pass a pointer to vfp.fp_status or vfp.standard_fp_status
appropriately for whether the instruction being translated is Neon
or VFP.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Aurelien Jarno <aurelien@aurel32.net>
This commit is contained in:
Peter Maydell 2011-05-19 14:46:19 +01:00 committed by Aurelien Jarno
parent 36802b6b1e
commit 5500b06cb5
3 changed files with 146 additions and 194 deletions

View file

@ -96,36 +96,36 @@ DEF_HELPER_3(vfp_cmped, void, f64, f64, env)
DEF_HELPER_2(vfp_fcvtds, f64, f32, env)
DEF_HELPER_2(vfp_fcvtsd, f32, f64, env)
DEF_HELPER_2(vfp_uitos, f32, i32, env)
DEF_HELPER_2(vfp_uitod, f64, i32, env)
DEF_HELPER_2(vfp_sitos, f32, i32, env)
DEF_HELPER_2(vfp_sitod, f64, i32, env)
DEF_HELPER_2(vfp_uitos, f32, i32, ptr)
DEF_HELPER_2(vfp_uitod, f64, i32, ptr)
DEF_HELPER_2(vfp_sitos, f32, i32, ptr)
DEF_HELPER_2(vfp_sitod, f64, i32, ptr)
DEF_HELPER_2(vfp_touis, i32, f32, env)
DEF_HELPER_2(vfp_touid, i32, f64, env)
DEF_HELPER_2(vfp_touizs, i32, f32, env)
DEF_HELPER_2(vfp_touizd, i32, f64, env)
DEF_HELPER_2(vfp_tosis, i32, f32, env)
DEF_HELPER_2(vfp_tosid, i32, f64, env)
DEF_HELPER_2(vfp_tosizs, i32, f32, env)
DEF_HELPER_2(vfp_tosizd, i32, f64, env)
DEF_HELPER_2(vfp_touis, i32, f32, ptr)
DEF_HELPER_2(vfp_touid, i32, f64, ptr)
DEF_HELPER_2(vfp_touizs, i32, f32, ptr)
DEF_HELPER_2(vfp_touizd, i32, f64, ptr)
DEF_HELPER_2(vfp_tosis, i32, f32, ptr)
DEF_HELPER_2(vfp_tosid, i32, f64, ptr)
DEF_HELPER_2(vfp_tosizs, i32, f32, ptr)
DEF_HELPER_2(vfp_tosizd, i32, f64, ptr)
DEF_HELPER_3(vfp_toshs, i32, f32, i32, env)
DEF_HELPER_3(vfp_tosls, i32, f32, i32, env)
DEF_HELPER_3(vfp_touhs, i32, f32, i32, env)
DEF_HELPER_3(vfp_touls, i32, f32, i32, env)
DEF_HELPER_3(vfp_toshd, i64, f64, i32, env)
DEF_HELPER_3(vfp_tosld, i64, f64, i32, env)
DEF_HELPER_3(vfp_touhd, i64, f64, i32, env)
DEF_HELPER_3(vfp_tould, i64, f64, i32, env)
DEF_HELPER_3(vfp_shtos, f32, i32, i32, env)
DEF_HELPER_3(vfp_sltos, f32, i32, i32, env)
DEF_HELPER_3(vfp_uhtos, f32, i32, i32, env)
DEF_HELPER_3(vfp_ultos, f32, i32, i32, env)
DEF_HELPER_3(vfp_shtod, f64, i64, i32, env)
DEF_HELPER_3(vfp_sltod, f64, i64, i32, env)
DEF_HELPER_3(vfp_uhtod, f64, i64, i32, env)
DEF_HELPER_3(vfp_ultod, f64, i64, i32, env)
DEF_HELPER_3(vfp_toshs, i32, f32, i32, ptr)
DEF_HELPER_3(vfp_tosls, i32, f32, i32, ptr)
DEF_HELPER_3(vfp_touhs, i32, f32, i32, ptr)
DEF_HELPER_3(vfp_touls, i32, f32, i32, ptr)
DEF_HELPER_3(vfp_toshd, i64, f64, i32, ptr)
DEF_HELPER_3(vfp_tosld, i64, f64, i32, ptr)
DEF_HELPER_3(vfp_touhd, i64, f64, i32, ptr)
DEF_HELPER_3(vfp_tould, i64, f64, i32, ptr)
DEF_HELPER_3(vfp_shtos, f32, i32, i32, ptr)
DEF_HELPER_3(vfp_sltos, f32, i32, i32, ptr)
DEF_HELPER_3(vfp_uhtos, f32, i32, i32, ptr)
DEF_HELPER_3(vfp_ultos, f32, i32, i32, ptr)
DEF_HELPER_3(vfp_shtod, f64, i64, i32, ptr)
DEF_HELPER_3(vfp_sltod, f64, i64, i32, ptr)
DEF_HELPER_3(vfp_uhtod, f64, i64, i32, ptr)
DEF_HELPER_3(vfp_ultod, f64, i64, i32, ptr)
DEF_HELPER_2(vfp_fcvt_f16_to_f32, f32, i32, env)
DEF_HELPER_2(vfp_fcvt_f32_to_f16, i32, f32, env)