diff options
-rw-r--r-- | target-sparc/op.c | 3 | ||||
-rw-r--r-- | target-sparc/op_helper.c | 15 |
2 files changed, 18 insertions, 0 deletions
diff --git a/target-sparc/op.c b/target-sparc/op.c index 80864c3bb8..55ea2b9fe4 100644 --- a/target-sparc/op.c +++ b/target-sparc/op.c @@ -1711,6 +1711,9 @@ void OPPROTO op_fcmped_fcc3(void) /* Integer to float conversion. */ #ifdef USE_INT_TO_FLOAT_HELPERS F_HELPER(ito); +#ifdef TARGET_SPARC64 +F_HELPER(xto); +#endif #else F_OP(ito, s) { diff --git a/target-sparc/op_helper.c b/target-sparc/op_helper.c index ab456e30c3..460ede2498 100644 --- a/target-sparc/op_helper.c +++ b/target-sparc/op_helper.c @@ -69,6 +69,21 @@ void do_fitod(void) { DT0 = int32_to_float64(*((int32_t *)&FT1), &env->fp_status); } +#ifdef TARGET_SPARC64 +void do_fxtos(void) +{ + set_float_exception_flags(0, &env->fp_status); + FT0 = int64_to_float32(*((int64_t *)&DT1), &env->fp_status); + check_ieee_exceptions(); +} + +void do_fxtod(void) +{ + set_float_exception_flags(0, &env->fp_status); + DT0 = int64_to_float64(*((int64_t *)&DT1), &env->fp_status); + check_ieee_exceptions(); +} +#endif #endif void do_fabss(void) |