home *** CD-ROM | disk | FTP | other *** search
/ Amiga Elysian Archive / AmigaElysianArchive.iso / prog / c / gcc233.lha / os-include / inline / mathffp.h < prev    next >
C/C++ Source or Header  |  1992-12-29  |  5KB  |  189 lines

  1. #ifndef _INLINE_MATHFFP_H
  2. #define _INLINE_MATHFFP_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL extern struct MathBase*  MathBase;
  11. #endif
  12. #ifndef BASE_PAR_DECL
  13. #define BASE_PAR_DECL
  14. #define BASE_PAR_DECL0 void
  15. #endif
  16. #ifndef BASE_NAME
  17. #define BASE_NAME MathBase
  18. #endif
  19.  
  20. static __inline FLOAT 
  21. SPAbs (BASE_PAR_DECL FLOAT parm)
  22. {
  23.   BASE_EXT_DECL
  24.   register FLOAT  _res  __asm("d0");
  25.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  26.   register FLOAT d0 __asm("d0") = parm;
  27.   __asm __volatile ("jsr a6@(-0x36)"
  28.   : "=r" (_res)
  29.   : "r" (a6), "r" (d0)
  30.   : "a0","a1","d0","d1", "memory");
  31.   return _res;
  32. }
  33. static __inline FLOAT 
  34. SPAdd (BASE_PAR_DECL FLOAT leftParm,FLOAT rightParm)
  35. {
  36.   BASE_EXT_DECL
  37.   register FLOAT  _res  __asm("d0");
  38.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  39.   register FLOAT d1 __asm("d1") = leftParm;
  40.   register FLOAT d0 __asm("d0") = rightParm;
  41.   __asm __volatile ("jsr a6@(-0x42)"
  42.   : "=r" (_res)
  43.   : "r" (a6), "r" (d1), "r" (d0)
  44.   : "a0","a1","d0","d1", "memory");
  45.   return _res;
  46. }
  47. static __inline FLOAT 
  48. SPCeil (BASE_PAR_DECL FLOAT parm)
  49. {
  50.   BASE_EXT_DECL
  51.   register FLOAT  _res  __asm("d0");
  52.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  53.   register FLOAT d0 __asm("d0") = parm;
  54.   __asm __volatile ("jsr a6@(-0x60)"
  55.   : "=r" (_res)
  56.   : "r" (a6), "r" (d0)
  57.   : "a0","a1","d0","d1", "memory");
  58.   return _res;
  59. }
  60. static __inline LONG 
  61. SPCmp (BASE_PAR_DECL FLOAT leftParm,FLOAT rightParm)
  62. {
  63.   BASE_EXT_DECL
  64.   register LONG  _res  __asm("d0");
  65.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  66.   register FLOAT d1 __asm("d1") = leftParm;
  67.   register FLOAT d0 __asm("d0") = rightParm;
  68.   __asm __volatile ("jsr a6@(-0x2a)"
  69.   : "=r" (_res)
  70.   : "r" (a6), "r" (d1), "r" (d0)
  71.   : "a0","a1","d0","d1", "memory");
  72.   return _res;
  73. }
  74. static __inline FLOAT 
  75. SPDiv (BASE_PAR_DECL FLOAT leftParm,FLOAT rightParm)
  76. {
  77.   BASE_EXT_DECL
  78.   register FLOAT  _res  __asm("d0");
  79.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  80.   register FLOAT d1 __asm("d1") = leftParm;
  81.   register FLOAT d0 __asm("d0") = rightParm;
  82.   __asm __volatile ("jsr a6@(-0x54)"
  83.   : "=r" (_res)
  84.   : "r" (a6), "r" (d1), "r" (d0)
  85.   : "a0","a1","d0","d1", "memory");
  86.   return _res;
  87. }
  88. static __inline LONG 
  89. SPFix (BASE_PAR_DECL FLOAT parm)
  90. {
  91.   BASE_EXT_DECL
  92.   register LONG  _res  __asm("d0");
  93.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  94.   register FLOAT d0 __asm("d0") = parm;
  95.   __asm __volatile ("jsr a6@(-0x1e)"
  96.   : "=r" (_res)
  97.   : "r" (a6), "r" (d0)
  98.   : "a0","a1","d0","d1", "memory");
  99.   return _res;
  100. }
  101. static __inline FLOAT 
  102. SPFloor (BASE_PAR_DECL FLOAT parm)
  103. {
  104.   BASE_EXT_DECL
  105.   register FLOAT  _res  __asm("d0");
  106.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  107.   register FLOAT d0 __asm("d0") = parm;
  108.   __asm __volatile ("jsr a6@(-0x5a)"
  109.   : "=r" (_res)
  110.   : "r" (a6), "r" (d0)
  111.   : "a0","a1","d0","d1", "memory");
  112.   return _res;
  113. }
  114. static __inline FLOAT 
  115. SPFlt (BASE_PAR_DECL long integer)
  116. {
  117.   BASE_EXT_DECL
  118.   register FLOAT  _res  __asm("d0");
  119.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  120.   register long d0 __asm("d0") = integer;
  121.   __asm __volatile ("jsr a6@(-0x24)"
  122.   : "=r" (_res)
  123.   : "r" (a6), "r" (d0)
  124.   : "a0","a1","d0","d1", "memory");
  125.   return _res;
  126. }
  127. static __inline FLOAT 
  128. SPMul (BASE_PAR_DECL FLOAT leftParm,FLOAT rightParm)
  129. {
  130.   BASE_EXT_DECL
  131.   register FLOAT  _res  __asm("d0");
  132.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  133.   register FLOAT d1 __asm("d1") = leftParm;
  134.   register FLOAT d0 __asm("d0") = rightParm;
  135.   __asm __volatile ("jsr a6@(-0x4e)"
  136.   : "=r" (_res)
  137.   : "r" (a6), "r" (d1), "r" (d0)
  138.   : "a0","a1","d0","d1", "memory");
  139.   return _res;
  140. }
  141. static __inline FLOAT 
  142. SPNeg (BASE_PAR_DECL FLOAT parm)
  143. {
  144.   BASE_EXT_DECL
  145.   register FLOAT  _res  __asm("d0");
  146.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  147.   register FLOAT d0 __asm("d0") = parm;
  148.   __asm __volatile ("jsr a6@(-0x3c)"
  149.   : "=r" (_res)
  150.   : "r" (a6), "r" (d0)
  151.   : "a0","a1","d0","d1", "memory");
  152.   return _res;
  153. }
  154. static __inline FLOAT 
  155. SPSub (BASE_PAR_DECL FLOAT leftParm,FLOAT rightParm)
  156. {
  157.   BASE_EXT_DECL
  158.   register FLOAT  _res  __asm("d0");
  159.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  160.   register FLOAT d1 __asm("d1") = leftParm;
  161.   register FLOAT d0 __asm("d0") = rightParm;
  162.   __asm __volatile ("jsr a6@(-0x48)"
  163.   : "=r" (_res)
  164.   : "r" (a6), "r" (d1), "r" (d0)
  165.   : "a0","a1","d0","d1", "memory");
  166.   return _res;
  167. }
  168. static __inline LONG 
  169. SPTst (BASE_PAR_DECL FLOAT parm)
  170. {
  171.   BASE_EXT_DECL
  172.   register LONG  _res  __asm("d0");
  173.   register struct MathBase* a6 __asm("a6") = BASE_NAME;
  174.   register FLOAT d1 __asm("d1") = parm;
  175.   __asm __volatile ("jsr a6@(-0x30)"
  176.   : "=r" (_res)
  177.   : "r" (a6), "r" (d1)
  178.   : "a0","a1","d0","d1", "memory");
  179.   return _res;
  180. }
  181. #undef BASE_EXT_DECL
  182. #undef BASE_PAR_DECL
  183. #undef BASE_PAR_DECL0
  184. #undef BASE_NAME
  185.  
  186. __END_DECLS
  187.  
  188. #endif /* _INLINE_MATHFFP_H */
  189.