Wire Sysio Wire Sysion 1.0.0
Loading...
Searching...
No Matches
s_normRoundPackToF128.c File Reference
#include <stdbool.h>
#include <stdint.h>
#include "platform.h"
#include "internals.h"
Include dependency graph for s_normRoundPackToF128.c:

Go to the source code of this file.

Functions

float128_t softfloat_normRoundPackToF128 (bool sign, int_fast32_t exp, uint_fast64_t sig64, uint_fast64_t sig0)
 

Function Documentation

◆ softfloat_normRoundPackToF128()

float128_t softfloat_normRoundPackToF128 ( bool sign,
int_fast32_t exp,
uint_fast64_t sig64,
uint_fast64_t sig0 )

Definition at line 43 of file s_normRoundPackToF128.c.

45{
46 int_fast8_t shiftDist;
47 struct uint128 sig128;
48 union ui128_f128 uZ;
49 uint_fast64_t sigExtra;
50 struct uint128_extra sig128Extra;
51
52 if ( ! sig64 ) {
53 exp -= 64;
54 sig64 = sig0;
55 sig0 = 0;
56 }
57 shiftDist = softfloat_countLeadingZeros64( sig64 ) - 15;
58 exp -= shiftDist;
59 if ( 0 <= shiftDist ) {
60 if ( shiftDist ) {
61 sig128 = softfloat_shortShiftLeft128( sig64, sig0, shiftDist );
62 sig64 = sig128.v64;
63 sig0 = sig128.v0;
64 }
65 if ( (uint32_t) exp < 0x7FFD ) {
66 uZ.ui.v64 = packToF128UI64( sign, sig64 | sig0 ? exp : 0, sig64 );
67 uZ.ui.v0 = sig0;
68 return uZ.f;
69 }
70 sigExtra = 0;
71 } else {
72 sig128Extra =
73 softfloat_shortShiftRightJam128Extra( sig64, sig0, 0, -shiftDist );
74 sig64 = sig128Extra.v.v64;
75 sig0 = sig128Extra.v.v0;
76 sigExtra = sig128Extra.extra;
77 }
78 return softfloat_roundPackToF128( sign, exp, sig64, sig0, sigExtra );
79
80}
#define softfloat_countLeadingZeros64
float128_t softfloat_roundPackToF128(bool sign, int_fast32_t exp, uint_fast64_t sig64, uint_fast64_t sig0, uint_fast64_t sigExtra)
struct uint128 softfloat_shortShiftLeft128(uint64_t a64, uint64_t a0, uint_fast8_t dist)
struct uint128_extra softfloat_shortShiftRightJam128Extra(uint64_t a64, uint64_t a0, uint64_t extra, uint_fast8_t dist)
unsigned int uint32_t
Definition stdint.h:126
uint64_t uint_fast64_t
Definition stdint.h:157
int8_t int_fast8_t
Definition stdint.h:150
Here is the call graph for this function: