[sim] specialized softfloat for riscv
authorAndrew Waterman <waterman@s141.Millennium.Berkeley.EDU>
Wed, 18 Aug 2010 00:46:52 +0000 (17:46 -0700)
committerAndrew Waterman <waterman@s141.Millennium.Berkeley.EDU>
Wed, 18 Aug 2010 00:46:52 +0000 (17:46 -0700)
softfloat/SoftFloat-3/source/riscv/s_commonNaNToF32UI.c
softfloat/SoftFloat-3/source/riscv/s_commonNaNToF64UI.c
softfloat/SoftFloat-3/source/riscv/s_f32UIToCommonNaN.c
softfloat/SoftFloat-3/source/riscv/s_f64UIToCommonNaN.c
softfloat/SoftFloat-3/source/riscv/specialize.h

index 3b96c417632e061f5c4f2dcb4646c9932e441b4f..61f27356eebf50e770ae0d66a0b01f874144b567 100755 (executable)
@@ -11,7 +11,7 @@
 uint_fast32_t softfloat_commonNaNToF32UI( struct commonNaN a )\r
 {\r
 \r
-    return (uint_fast32_t) a.sign<<31 | 0x7FC00000 | a.v64>>41;\r
+    return (uint_fast32_t) a.sign<<31 | 0x7FFFFFFF;\r
 \r
 }\r
 \r
index 474ceee98d9abc660ade5763b1c3e65f86fc2ca9..da36c047c10409818cdbc8ad09d1c8907759e725 100755 (executable)
@@ -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 );
 
 }
 
index 067e8dacec7c1401b940072057a57b260954f0df..9ee0db974a1db81808378f0eb9b0c7bf4a8bbf0f 100755 (executable)
@@ -17,7 +17,7 @@ struct commonNaN softfloat_f32UIToCommonNaN( uint_fast32_t uiA )
         softfloat_raiseFlags( softfloat_flag_invalid );\r
     }\r
     z.sign = uiA>>31;\r
-    z.v64 = (uint_fast64_t) uiA<<41;\r
+    z.v64 = (uint_fast64_t) 0x7FFFF <<41;\r
     z.v0 = 0;\r
     return z;\r
 \r
index f933dedbe1c8c70dbe5017389fe5893eff2c1aa1..84d8ca0e1e3f11998d65720e97eb3064f1fd3db6 100755 (executable)
@@ -17,7 +17,7 @@ struct commonNaN softfloat_f64UIToCommonNaN( uint_fast64_t uiA )
         softfloat_raiseFlags( softfloat_flag_invalid );\r
     }\r
     z.sign = uiA>>63;\r
-    z.v64 = uiA<<12;\r
+    z.v64 = (uint_fast64_t) 0xFFFFFFFFFFFFF <<12;\r
     z.v0 = 0;\r
     return z;\r
 \r
index ca0bb1d589250d05ef2e0da3024cb02ad15a4d03..bf57bc988d30f92ec507635e27c76bce1ecb1127 100755 (executable)
@@ -37,7 +37,7 @@ these four paragraphs for those parts of this code that are retained.
 \r
 /*----------------------------------------------------------------------------\r
 *----------------------------------------------------------------------------*/\r
-#define init_detectTininess softfloat_tininess_afterRounding;\r
+#define init_detectTininess softfloat_tininess_beforeRounding;\r
 \r
 /*----------------------------------------------------------------------------\r
 | Structure used to transfer NaN representations from one format to another.\r
@@ -50,7 +50,7 @@ struct commonNaN {
 /*----------------------------------------------------------------------------\r
 | The pattern for a default generated single-precision NaN.\r
 *----------------------------------------------------------------------------*/\r
-#define defaultNaNF32UI 0xFFC00000\r
+#define defaultNaNF32UI 0xFFFFFFFF\r
 \r
 /*----------------------------------------------------------------------------\r
 | Returns 1 if the single-precision floating-point value `a' is a signaling\r
@@ -68,7 +68,7 @@ bool softfloat_isSigNaNF32UI( uint_fast32_t );
 struct commonNaN softfloat_f32UIToCommonNaN( uint_fast32_t );\r
 #if defined INLINE_LEVEL && ( 1 <= INLINE_LEVEL )\r
 INLINE uint_fast32_t softfloat_commonNaNToF32UI( struct commonNaN a )\r
-    { return (uint_fast32_t) a.sign<<31 | 0x7FC00000 | a.v64>>41; }\r
+    { return (uint_fast32_t) a.sign<<31 | 0x7FFFFFFF; }\r
 #else\r
 uint_fast32_t softfloat_commonNaNToF32UI( struct commonNaN );\r
 #endif\r