Logo Search packages:      
Sourcecode: linux version File versions  Download package

types.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;
}

Generated by  Doxygen 1.6.0   Back to index