temporary undoing of renaming
[riscv-isa-sim.git] / softfloat / f32_to_ui32.c
1
2 #include <stdbool.h>
3 #include <stdint.h>
4 #include "platform.h"
5 #include "primitives.h"
6 #include "internals.h"
7 #include "softfloat.h"
8
9 uint_fast32_t f32_to_ui32( float32_t a, int_fast8_t roundingMode, bool exact )
10 {
11 union ui32_f32 uA;
12 uint_fast32_t uiA;
13 bool sign;
14 int_fast16_t exp;
15 uint_fast32_t sig;
16 uint_fast64_t sig64;
17 int_fast16_t shiftCount;
18
19 uA.f = a;
20 uiA = uA.ui;
21 sign = signF32UI( uiA );
22 exp = expF32UI( uiA );
23 sig = fracF32UI( uiA );
24 if ( exp ) sig |= 0x00800000;
25 sig64 = (uint_fast64_t) sig<<32;
26 shiftCount = 0xAF - exp;
27 if ( 0 < shiftCount ) {
28 sig64 = softfloat_shift64RightJam( sig64, shiftCount );
29 }
30 return softfloat_roundPackToUI32( sign, sig64, roundingMode, exact );
31
32 }
33