Browse Source

[sim] specialized softfloat for riscv

cs250
Andrew Waterman 16 years ago
parent
commit
b46f178e58
  1. 2
      softfloat/SoftFloat-3/source/riscv/s_commonNaNToF32UI.c
  2. 3
      softfloat/SoftFloat-3/source/riscv/s_commonNaNToF64UI.c
  3. 2
      softfloat/SoftFloat-3/source/riscv/s_f32UIToCommonNaN.c
  4. 2
      softfloat/SoftFloat-3/source/riscv/s_f64UIToCommonNaN.c
  5. 6
      softfloat/SoftFloat-3/source/riscv/specialize.h

2
softfloat/SoftFloat-3/source/riscv/s_commonNaNToF32UI.c

@ -11,7 +11,7 @@
uint_fast32_t softfloat_commonNaNToF32UI( struct commonNaN a ) 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;
} }

3
softfloat/SoftFloat-3/source/riscv/s_commonNaNToF64UI.c

@ -12,8 +12,7 @@ uint_fast64_t softfloat_commonNaNToF64UI( struct commonNaN a )
{ {
return return
(uint_fast64_t) a.sign<<63 | UINT64_C( 0x7FF8000000000000 ) (uint_fast64_t) a.sign<<63 | UINT64_C( 0x7FFFFFFFFFFFFFFF );
| a.v64>>12;
} }

2
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 ); softfloat_raiseFlags( softfloat_flag_invalid );
} }
z.sign = uiA>>31; z.sign = uiA>>31;
z.v64 = (uint_fast64_t) uiA<<41; z.v64 = (uint_fast64_t) 0x7FFFF <<41;
z.v0 = 0; z.v0 = 0;
return z; return z;

2
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 ); softfloat_raiseFlags( softfloat_flag_invalid );
} }
z.sign = uiA>>63; z.sign = uiA>>63;
z.v64 = uiA<<12; z.v64 = (uint_fast64_t) 0xFFFFFFFFFFFFF <<12;
z.v0 = 0; z.v0 = 0;
return z; return z;

6
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. | 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. | 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 | 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 ); struct commonNaN softfloat_f32UIToCommonNaN( uint_fast32_t );
#if defined INLINE_LEVEL && ( 1 <= INLINE_LEVEL ) #if defined INLINE_LEVEL && ( 1 <= INLINE_LEVEL )
INLINE uint_fast32_t softfloat_commonNaNToF32UI( struct commonNaN a ) 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 #else
uint_fast32_t softfloat_commonNaNToF32UI( struct commonNaN ); uint_fast32_t softfloat_commonNaNToF32UI( struct commonNaN );
#endif #endif

Loading…
Cancel
Save