From ab928baadbfd3316988a3ad5b5d9b84693a8636f Mon Sep 17 00:00:00 2001 From: Andrew Waterman Date: Fri, 15 Oct 2010 16:17:53 -0700 Subject: [sim] made softfloat files C instead of C++ --- softfloat/s_normRoundPackToF32.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100755 softfloat/s_normRoundPackToF32.c (limited to 'softfloat/s_normRoundPackToF32.c') diff --git a/softfloat/s_normRoundPackToF32.c b/softfloat/s_normRoundPackToF32.c new file mode 100755 index 0000000..2e6f4b0 --- /dev/null +++ b/softfloat/s_normRoundPackToF32.c @@ -0,0 +1,24 @@ + +#include +#include +#include "platform.h" +#include "primitives.h" +#include "internals.h" + +float32_t + softfloat_normRoundPackToF32( bool sign, int_fast16_t exp, uint_fast32_t sig ) +{ + int shiftCount; + union ui32_f32 uZ; + + shiftCount = softfloat_countLeadingZeros32( sig ) - 1; + exp -= shiftCount; + if ( ( 7 <= shiftCount ) && ( (uint16_t) exp < 0xFD ) ) { + uZ.ui = packToF32UI( sign, sig ? exp : 0, sig<<( shiftCount - 7 ) ); + return uZ.f; + } else { + return softfloat_roundPackToF32( sign, exp, sig<