types.c
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:1k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  * BK Id: SCCS/s.types.c 1.5 05/17/01 18:14:23 cort
  3.  */
  4. #include "soft-fp.h"
  5. #include "double.h"
  6. #include "single.h"
  7. void
  8. fp_unpack_d(long *_s, unsigned long *_f1, unsigned long *_f0,
  9.     long *_e, long *_c, void *val)
  10. {
  11. FP_DECL_D(X);
  12. __FP_UNPACK_RAW_2(D, X, val);
  13. _FP_UNPACK_CANONICAL(D, 2, X);
  14. *_s = X_s;
  15. *_f1 = X_f1;
  16. *_f0 = X_f0;
  17. *_e = X_e;
  18. *_c = X_c;
  19. }
  20. int
  21. fp_pack_d(void *val, long X_s, unsigned long X_f1,
  22.   unsigned long X_f0, long X_e, long X_c)
  23. {
  24. int exc;
  25. exc = _FP_PACK_CANONICAL(D, 2, X);
  26. if (!exc || !__FPU_TRAP_P(exc))
  27. __FP_PACK_RAW_2(D, val, X);
  28. return exc;
  29. }
  30. int
  31. fp_pack_ds(void *val, long X_s, unsigned long X_f1,
  32.    unsigned long X_f0, long X_e, long X_c)
  33. {
  34. FP_DECL_S(__X);
  35. int exc;
  36. FP_CONV(S, D, 1, 2, __X, X);
  37. exc = _FP_PACK_CANONICAL(S, 1, __X);
  38. if (!exc || !__FPU_TRAP_P(exc)) {
  39. _FP_UNPACK_CANONICAL(S, 1, __X);
  40. FP_CONV(D, S, 2, 1, X, __X);
  41. exc |= _FP_PACK_CANONICAL(D, 2, X);
  42. if (!exc || !__FPU_TRAP_P(exc))
  43. __FP_PACK_RAW_2(D, val, X);
  44. }
  45. return exc;
  46. }