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 )
{
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
(uint_fast64_t) a.sign<<63 | UINT64_C( 0x7FF8000000000000 )
| a.v64>>12;
(uint_fast64_t) a.sign<<63 | UINT64_C( 0x7FFFFFFFFFFFFFFF );
}

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 );
}
z.sign = uiA>>31;
z.v64 = (uint_fast64_t) uiA<<41;
z.v64 = (uint_fast64_t) 0x7FFFF <<41;
z.v0 = 0;
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 );
}
z.sign = uiA>>63;
z.v64 = uiA<<12;
z.v64 = (uint_fast64_t) 0xFFFFFFFFFFFFF <<12;
z.v0 = 0;
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.
@ -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

Loading…
Cancel
Save