From b46f178e5884c6744895a84937014ec73d4a10c8 Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Tue, 17 Aug 2010 17:46:52 -0700 Subject: [PATCH] [sim] specialized softfloat for riscv --- softfloat/SoftFloat-3/source/riscv/s_commonNaNToF32UI.c | 2 +- softfloat/SoftFloat-3/source/riscv/s_commonNaNToF64UI.c | 3 +-- softfloat/SoftFloat-3/source/riscv/s_f32UIToCommonNaN.c | 2 +- softfloat/SoftFloat-3/source/riscv/s_f64UIToCommonNaN.c | 2 +- softfloat/SoftFloat-3/source/riscv/specialize.h | 6 +++--- 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/softfloat/SoftFloat-3/source/riscv/s_commonNaNToF32UI.c b/softfloat/SoftFloat-3/source/riscv/s_commonNaNToF32UI.c index 3b96c41..61f2735 100755 --- a/softfloat/SoftFloat-3/source/riscv/s_commonNaNToF32UI.c +++ b/softfloat/SoftFloat-3/source/riscv/s_commonNaNToF32UI.c @@ -11,7 +11,7 @@ uint_fast32_t softfloat_commonNaNToF32UI( struct commonNaN a ) { - return (uint_fast32_t) a.sign<<31 | 0x7FC00000 | a.v64>>41; + return (uint_fast32_t) a.sign<<31 | 0x7FFFFFFF; } diff --git a/softfloat/SoftFloat-3/source/riscv/s_commonNaNToF64UI.c b/softfloat/SoftFloat-3/source/riscv/s_commonNaNToF64UI.c index 474ceee..da36c04 100755 --- a/softfloat/SoftFloat-3/source/riscv/s_commonNaNToF64UI.c +++ b/softfloat/SoftFloat-3/source/riscv/s_commonNaNToF64UI.c @@ -12,8 +12,7 @@ uint_fast64_t softfloat_commonNaNToF64UI( struct commonNaN a ) { return - (uint_fast64_t) a.sign<<63 | UINT64_C( 0x7FF8000000000000 ) - | a.v64>>12; + (uint_fast64_t) a.sign<<63 | UINT64_C( 0x7FFFFFFFFFFFFFFF ); } diff --git a/softfloat/SoftFloat-3/source/riscv/s_f32UIToCommonNaN.c b/softfloat/SoftFloat-3/source/riscv/s_f32UIToCommonNaN.c index 067e8da..9ee0db9 100755 --- a/softfloat/SoftFloat-3/source/riscv/s_f32UIToCommonNaN.c +++ b/softfloat/SoftFloat-3/source/riscv/s_f32UIToCommonNaN.c @@ -17,7 +17,7 @@ struct commonNaN softfloat_f32UIToCommonNaN( uint_fast32_t uiA ) softfloat_raiseFlags( softfloat_flag_invalid ); } z.sign = uiA>>31; - z.v64 = (uint_fast64_t) uiA<<41; + z.v64 = (uint_fast64_t) 0x7FFFF <<41; z.v0 = 0; return z; diff --git a/softfloat/SoftFloat-3/source/riscv/s_f64UIToCommonNaN.c b/softfloat/SoftFloat-3/source/riscv/s_f64UIToCommonNaN.c index f933ded..84d8ca0 100755 --- a/softfloat/SoftFloat-3/source/riscv/s_f64UIToCommonNaN.c +++ b/softfloat/SoftFloat-3/source/riscv/s_f64UIToCommonNaN.c @@ -17,7 +17,7 @@ struct commonNaN softfloat_f64UIToCommonNaN( uint_fast64_t uiA ) softfloat_raiseFlags( softfloat_flag_invalid ); } z.sign = uiA>>63; - z.v64 = uiA<<12; + z.v64 = (uint_fast64_t) 0xFFFFFFFFFFFFF <<12; z.v0 = 0; return z; diff --git a/softfloat/SoftFloat-3/source/riscv/specialize.h b/softfloat/SoftFloat-3/source/riscv/specialize.h index ca0bb1d..bf57bc9 100755 --- a/softfloat/SoftFloat-3/source/riscv/specialize.h +++ b/softfloat/SoftFloat-3/source/riscv/specialize.h @@ -37,7 +37,7 @@ these four paragraphs for those parts of this code that are retained. /*---------------------------------------------------------------------------- *----------------------------------------------------------------------------*/ -#define init_detectTininess softfloat_tininess_afterRounding; +#define init_detectTininess softfloat_tininess_beforeRounding; /*---------------------------------------------------------------------------- | Structure used to transfer NaN representations from one format to another. @@ -50,7 +50,7 @@ struct commonNaN { /*---------------------------------------------------------------------------- | The pattern for a default generated single-precision NaN. *----------------------------------------------------------------------------*/ -#define defaultNaNF32UI 0xFFC00000 +#define defaultNaNF32UI 0xFFFFFFFF /*---------------------------------------------------------------------------- | Returns 1 if the single-precision floating-point value `a' is a signaling @@ -68,7 +68,7 @@ bool softfloat_isSigNaNF32UI( uint_fast32_t ); struct commonNaN softfloat_f32UIToCommonNaN( uint_fast32_t ); #if defined INLINE_LEVEL && ( 1 <= INLINE_LEVEL ) INLINE uint_fast32_t softfloat_commonNaNToF32UI( struct commonNaN a ) - { return (uint_fast32_t) a.sign<<31 | 0x7FC00000 | a.v64>>41; } + { return (uint_fast32_t) a.sign<<31 | 0x7FFFFFFF; } #else uint_fast32_t softfloat_commonNaNToF32UI( struct commonNaN ); #endif -- 2.30.2