diff options
author | Andrew Waterman <waterman@s141.Millennium.Berkeley.EDU> | 2011-06-12 20:27:10 -0700 |
---|---|---|
committer | Andrew Waterman <waterman@s141.Millennium.Berkeley.EDU> | 2011-06-12 20:27:10 -0700 |
commit | 740f981cfd55604d46598144dccac26dd53f643c (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /softfloat/s_subMagsF32.c | |
parent | c0ebf99d6bb3ef3cf252703b50b849bcbaa2ec59 (diff) | |
download | riscv-isa-sim-740f981cfd55604d46598144dccac26dd53f643c.zip riscv-isa-sim-740f981cfd55604d46598144dccac26dd53f643c.tar.gz riscv-isa-sim-740f981cfd55604d46598144dccac26dd53f643c.tar.bz2 |
[sim] renamed to riscv-isa-run
Diffstat (limited to 'softfloat/s_subMagsF32.c')
-rwxr-xr-x | softfloat/s_subMagsF32.c | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/softfloat/s_subMagsF32.c b/softfloat/s_subMagsF32.c deleted file mode 100755 index 0c83b02..0000000 --- a/softfloat/s_subMagsF32.c +++ /dev/null @@ -1,81 +0,0 @@ - -#include <stdbool.h> -#include <stdint.h> -#include "platform.h" -#include "primitives.h" -#include "internals.h" -#include "specialize.h" -#include "softfloat.h" - -float32_t - softfloat_subMagsF32( uint_fast32_t uiA, uint_fast32_t uiB, bool signZ ) -{ - int_fast16_t expA; - uint_fast32_t sigA; - int_fast16_t expB; - uint_fast32_t sigB; - int_fast16_t expDiff; - uint_fast32_t uiZ; - int_fast16_t expZ; - uint_fast32_t sigZ; - union ui32_f32 uZ; - - expA = expF32UI( uiA ); - sigA = fracF32UI( uiA ); - expB = expF32UI( uiB ); - sigB = fracF32UI( uiB ); - expDiff = expA - expB; - sigA <<= 7; - sigB <<= 7; - if ( 0 < expDiff ) goto expABigger; - if ( expDiff < 0 ) goto expBBigger; - if ( expA == 0xFF ) { - if ( sigA | sigB ) goto propagateNaN; - softfloat_raiseFlags( softfloat_flag_invalid ); - uiZ = defaultNaNF32UI; - goto uiZ; - } - if ( ! expA ) { - expA = 1; - expB = 1; - } - if ( sigB < sigA ) goto aBigger; - if ( sigA < sigB ) goto bBigger; - uiZ = packToF32UI( softfloat_roundingMode == softfloat_round_min, 0, 0 ); - goto uiZ; - expBBigger: - if ( expB == 0xFF ) { - if ( sigB ) goto propagateNaN; - uiZ = packToF32UI( signZ ^ 1, 0xFF, 0 ); - goto uiZ; - } - sigA += expA ? 0x40000000 : sigA; - sigA = softfloat_shift32RightJam( sigA, - expDiff ); - sigB |= 0x40000000; - bBigger: - signZ ^= 1; - expZ = expB; - sigZ = sigB - sigA; - goto normRoundPack; - expABigger: - if ( expA == 0xFF ) { - if ( sigA ) goto propagateNaN; - uiZ = uiA; - goto uiZ; - } - sigB += expB ? 0x40000000 : sigB; - sigB = softfloat_shift32RightJam( sigB, expDiff ); - sigA |= 0x40000000; - aBigger: - expZ = expA; - sigZ = sigA - sigB; - normRoundPack: - return softfloat_normRoundPackToF32( signZ, expZ - 1, sigZ ); - propagateNaN: - uiZ = softfloat_propagateNaNF32UI( uiA, uiB ); - uiZ: - uZ.ui = uiZ; - return uZ.f; - -} - |