9 softfloat_roundPackToUI64(
13 int_fast8_t roundingMode
,
17 bool roundNearestEven
, increment
;
19 roundNearestEven
= ( roundingMode
== softfloat_round_nearest_even
);
20 increment
= ( UINT64_C( 0x8000000000000000 ) <= sig0
);
23 && ( roundingMode
!= softfloat_round_nearest_maxMag
)
26 ( roundingMode
!= softfloat_round_minMag
)
28 == ( sign
? softfloat_round_min
: softfloat_round_max
) )
33 if ( ! sig64
) goto invalid
;
35 ~ ( ! ( sig0
& UINT64_C( 0x7FFFFFFFFFFFFFFF ) )
38 if ( sign
&& sig64
) goto invalid
;
39 if ( exact
&& sig0
) softfloat_exceptionFlags
|= softfloat_flag_inexact
;
42 softfloat_raiseFlags( softfloat_flag_invalid
);
43 return UINT64_C( 0xFFFFFFFFFFFFFFFF );