aboutsummaryrefslogtreecommitdiff
path: root/softfloat/s_addMagsF64.c
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@s141.Millennium.Berkeley.EDU>2011-06-12 20:27:10 -0700
committerAndrew Waterman <waterman@s141.Millennium.Berkeley.EDU>2011-06-12 20:27:10 -0700
commit740f981cfd55604d46598144dccac26dd53f643c (patch)
tree4b825dc642cb6eb9a060e54bf8d69288fbee4904 /softfloat/s_addMagsF64.c
parentc0ebf99d6bb3ef3cf252703b50b849bcbaa2ec59 (diff)
downloadspike-740f981cfd55604d46598144dccac26dd53f643c.zip
spike-740f981cfd55604d46598144dccac26dd53f643c.tar.gz
spike-740f981cfd55604d46598144dccac26dd53f643c.tar.bz2
[sim] renamed to riscv-isa-run
Diffstat (limited to 'softfloat/s_addMagsF64.c')
-rwxr-xr-xsoftfloat/s_addMagsF64.c77
1 files changed, 0 insertions, 77 deletions
diff --git a/softfloat/s_addMagsF64.c b/softfloat/s_addMagsF64.c
deleted file mode 100755
index a81c3e4..0000000
--- a/softfloat/s_addMagsF64.c
+++ /dev/null
@@ -1,77 +0,0 @@
-
-#include <stdbool.h>
-#include <stdint.h>
-#include "platform.h"
-#include "primitives.h"
-#include "internals.h"
-#include "specialize.h"
-
-float64_t
- softfloat_addMagsF64( uint_fast64_t uiA, uint_fast64_t uiB, bool signZ )
-{
- int_fast16_t expA;
- uint_fast64_t sigA;
- int_fast16_t expB;
- uint_fast64_t sigB;
- int_fast16_t expDiff;
- uint_fast64_t uiZ;
- int_fast16_t expZ;
- uint_fast64_t sigZ;
- union ui64_f64 uZ;
-
- expA = expF64UI( uiA );
- sigA = fracF64UI( uiA );
- expB = expF64UI( uiB );
- sigB = fracF64UI( uiB );
- expDiff = expA - expB;
- sigA <<= 9;
- sigB <<= 9;
- if ( ! expDiff ) {
- if ( expA == 0x7FF ) {
- if ( sigA | sigB ) goto propagateNaN;
- uiZ = uiA;
- goto uiZ;
- }
- if ( ! expA ) {
- uiZ =
- packToF64UI(
- signZ, 0, ( uiA + uiB ) & UINT64_C( 0x7FFFFFFFFFFFFFFF ) );
- goto uiZ;
- }
- expZ = expA;
- sigZ = UINT64_C( 0x4000000000000000 ) + sigA + sigB;
- } else {
- if ( expDiff < 0 ) {
- if ( expB == 0x7FF ) {
- if ( sigB ) goto propagateNaN;
- uiZ = packToF64UI( signZ, 0x7FF, 0 );
- goto uiZ;
- }
- expZ = expB;
- sigA += expA ? UINT64_C( 0x2000000000000000 ) : sigA;
- sigA = softfloat_shift64RightJam( sigA, - expDiff );
- } else {
- if ( expA == 0x7FF ) {
- if ( sigA ) goto propagateNaN;
- uiZ = uiA;
- goto uiZ;
- }
- expZ = expA;
- sigB += expB ? UINT64_C( 0x2000000000000000 ) : sigB;
- sigB = softfloat_shift64RightJam( sigB, expDiff );
- }
- sigZ = UINT64_C( 0x2000000000000000 ) + sigA + sigB;
- if ( sigZ < UINT64_C( 0x4000000000000000 ) ) {
- --expZ;
- sigZ <<= 1;
- }
- }
- return softfloat_roundPackToF64( signZ, expZ, sigZ );
- propagateNaN:
- uiZ = softfloat_propagateNaNF64UI( uiA, uiB );
- uiZ:
- uZ.ui = uiZ;
- return uZ.f;
-
-}
-