aboutsummaryrefslogtreecommitdiff
path: root/softfloat
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2015-02-22 19:27:37 -0800
committerChristopher Celio <celio@eecs.berkeley.edu>2015-02-22 19:27:37 -0800
commit7e4df4d518b5090eb76f88e6195d8206ae413ca7 (patch)
treebf38b1ac167f722779f4128a5086c6765d41972a /softfloat
parent1b15ab2ef5e2730540c42330f3f5681e6534a038 (diff)
downloadriscv-isa-sim-7e4df4d518b5090eb76f88e6195d8206ae413ca7.zip
riscv-isa-sim-7e4df4d518b5090eb76f88e6195d8206ae413ca7.tar.gz
riscv-isa-sim-7e4df4d518b5090eb76f88e6195d8206ae413ca7.tar.bz2
Softfloat fcvt.{w/h}.s now returns -MaxInt for -NaN
Behavior now consistent with RISC-V user spec.
Diffstat (limited to 'softfloat')
-rwxr-xr-xsoftfloat/f32_to_i32.c1
-rwxr-xr-xsoftfloat/f32_to_i64.c2
2 files changed, 1 insertions, 2 deletions
diff --git a/softfloat/f32_to_i32.c b/softfloat/f32_to_i32.c
index bbbaee0..98c67c9 100755
--- a/softfloat/f32_to_i32.c
+++ b/softfloat/f32_to_i32.c
@@ -21,7 +21,6 @@ int_fast32_t f32_to_i32( float32_t a, int_fast8_t roundingMode, bool exact )
sign = signF32UI( uiA );
exp = expF32UI( uiA );
sig = fracF32UI( uiA );
- if ( ( exp == 0xFF ) && sig ) sign = 0;
if ( exp ) sig |= 0x00800000;
sig64 = (uint_fast64_t) sig<<32;
shiftCount = 0xAF - exp;
diff --git a/softfloat/f32_to_i64.c b/softfloat/f32_to_i64.c
index c0b8981..34f877f 100755
--- a/softfloat/f32_to_i64.c
+++ b/softfloat/f32_to_i64.c
@@ -25,7 +25,7 @@ int_fast64_t f32_to_i64( float32_t a, int_fast8_t roundingMode, bool exact )
shiftCount = 0xBE - exp;
if ( shiftCount < 0 ) {
softfloat_raiseFlags( softfloat_flag_invalid );
- if ( ! sign || ( ( exp == 0xFF ) && sig ) ) {
+ if ( ! sign ) {
return INT64_C( 0x7FFFFFFFFFFFFFFF );
}
return - INT64_C( 0x7FFFFFFFFFFFFFFF ) - 1;