52 lines
961 B
C
52 lines
961 B
C
|
#include "soft-fp.h"
|
||
|
#include "double.h"
|
||
|
#include "single.h"
|
||
|
|
||
|
void
|
||
|
fp_unpack_d(long *_s, unsigned long *_f1, unsigned long *_f0,
|
||
|
long *_e, long *_c, void *val)
|
||
|
{
|
||
|
FP_DECL_D(X);
|
||
|
|
||
|
__FP_UNPACK_RAW_2(D, X, val);
|
||
|
|
||
|
_FP_UNPACK_CANONICAL(D, 2, X);
|
||
|
|
||
|
*_s = X_s;
|
||
|
*_f1 = X_f1;
|
||
|
*_f0 = X_f0;
|
||
|
*_e = X_e;
|
||
|
*_c = X_c;
|
||
|
}
|
||
|
|
||
|
int
|
||
|
fp_pack_d(void *val, long X_s, unsigned long X_f1,
|
||
|
unsigned long X_f0, long X_e, long X_c)
|
||
|
{
|
||
|
int exc;
|
||
|
|
||
|
exc = _FP_PACK_CANONICAL(D, 2, X);
|
||
|
if (!exc || !__FPU_TRAP_P(exc))
|
||
|
__FP_PACK_RAW_2(D, val, X);
|
||
|
return exc;
|
||
|
}
|
||
|
|
||
|
int
|
||
|
fp_pack_ds(void *val, long X_s, unsigned long X_f1,
|
||
|
unsigned long X_f0, long X_e, long X_c)
|
||
|
{
|
||
|
FP_DECL_S(__X);
|
||
|
int exc;
|
||
|
|
||
|
FP_CONV(S, D, 1, 2, __X, X);
|
||
|
exc = _FP_PACK_CANONICAL(S, 1, __X);
|
||
|
if (!exc || !__FPU_TRAP_P(exc)) {
|
||
|
_FP_UNPACK_CANONICAL(S, 1, __X);
|
||
|
FP_CONV(D, S, 2, 1, X, __X);
|
||
|
exc |= _FP_PACK_CANONICAL(D, 2, X);
|
||
|
if (!exc || !__FPU_TRAP_P(exc))
|
||
|
__FP_PACK_RAW_2(D, val, X);
|
||
|
}
|
||
|
return exc;
|
||
|
}
|