Subversion Repositories HelenOS

Rev

Rev 857 | Rev 1657 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * Copyright (C) 2005 Josef Cejka
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  *
  9.  * - Redistributions of source code must retain the above copyright
  10.  *   notice, this list of conditions and the following disclaimer.
  11.  * - Redistributions in binary form must reproduce the above copyright
  12.  *   notice, this list of conditions and the following disclaimer in the
  13.  *   documentation and/or other materials provided with the distribution.
  14.  * - The name of the author may not be used to endorse or promote products
  15.  *   derived from this software without specific prior written permission.
  16.  *
  17.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
  18.  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  19.  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
  20.  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
  21.  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  22.  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
  23.  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
  24.  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  25.  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  26.  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  27.  */
  28.  
  29. #ifndef __SOFTFLOAT_H__
  30. #define __SOFTFLOAT_H__
  31.  
  32. float __addsf3(float a, float b);
  33. double __adddf3(double a, double b);
  34. long double __addtf3(long double a, long double b);
  35. long double __addxf3(long double a, long double b);
  36.  
  37. float __subsf3(float a, float b);
  38. double __subdf3(double a, double b);
  39. long double __subtf3(long double a, long double b);
  40. long double __subxf3(long double a, long double b);
  41.  
  42. float __mulsf3(float a, float b);
  43. double __muldf3(double a, double b);
  44. long double __multf3(long double a, long double b);
  45. long double __mulxf3(long double a, long double b);
  46.  
  47. float __divsf3(float a, float b);
  48. double __divdf3(double a, double b);
  49. long double __divtf3(long double a, long double b);
  50. long double __divxf3(long double a, long double b);
  51.  
  52. float __negsf2(float a);
  53. double __negdf2(double a);
  54. long double __negtf2(long double a);
  55. long double __negxf2(long double a);
  56.  
  57. double __extendsfdf2(float a);
  58. long double __extendsftf2(float a);
  59. long double __extendsfxf2(float a);
  60. long double __extenddftf2(double a);
  61. long double __extenddfxf2(double a);
  62.  
  63. double __truncxfdf2(long double a);
  64. double __trunctfdf2(long double a);
  65. float __truncxfsf2(long double a);
  66. float __trunctfsf2(long double a);
  67. float __truncdfsf2(double a);
  68.  
  69. int __fixsfsi(float a);
  70. int __fixdfsi(double a);
  71. int __fixtfsi(long double a);
  72. int __fixxfsi(long double a);
  73.  
  74. long __fixsfdi(float a);
  75. long __fixdfdi(double a);
  76. long __fixtfdi(long double a);
  77. long __fixxfdi(long double a);
  78.  
  79. long long __fixsfti(float a);
  80. long long __fixdfti(double a);
  81. long long __fixtfti(long double a);
  82. long long __fixxfti(long double a);
  83.  
  84. unsigned int __fixunssfsi(float a);
  85. unsigned int __fixunsdfsi(double a);
  86. unsigned int __fixunstfsi(long double a);
  87. unsigned int __fixunsxfsi(long double a);
  88.  
  89. unsigned long __fixunssfdi(float a);
  90. unsigned long __fixunsdfdi(double a);
  91. unsigned long __fixunstfdi(long double a);
  92. unsigned long __fixunsxfdi(long double a);
  93.  
  94. unsigned long long __fixunssfti(float a);
  95. unsigned long long __fixunsdfti(double a);
  96. unsigned long long __fixunstfti(long double a);
  97. unsigned long long __fixunsxfti(long double a);
  98.  
  99. float __floatsisf(int i);
  100. double __floatsidf(int i);
  101. long double __floatsitf(int i);
  102. long double __floatsixf(int i);
  103.  
  104. float __floatdisf(long i);
  105. double __floatdidf(long i);
  106. long double __floatditf(long i);
  107. long double __floatdixf(long i);
  108.  
  109. float __floattisf(long long i);
  110. double __floattidf(long long i);
  111. long double __floattitf(long long i);
  112. long double __floattixf(long long i);
  113.  
  114. float __floatunsisf(unsigned int i);
  115. double __floatunsidf(unsigned int i);
  116. long double __floatunsitf(unsigned int i);
  117. long double __floatunsixf(unsigned int i);
  118.  
  119. float __floatundisf(unsigned long i);
  120. double __floatundidf(unsigned long i);
  121. long double __floatunditf(unsigned long i);
  122. long double __floatundixf(unsigned long i);
  123.  
  124. float __floatuntisf(unsigned long long i);
  125. double __floatuntidf(unsigned long long i);
  126. long double __floatuntitf(unsigned long long i);
  127. long double __floatuntixf(unsigned long long i);
  128.  
  129. int __cmpsf2(float a, float b);
  130. int __cmpdf2(double a, double b);
  131. int __cmptf2(long double a, long double b);
  132.  
  133. int __unordsf2(float a, float b);
  134. int __unorddf2(double a, double b);
  135. int __unordtf2(long double a, long double b);
  136.  
  137. int __eqsf2(float a, float b);
  138. int __eqdf2(double a, double b);
  139. int __eqtf2(long double a, long double b);
  140.  
  141. int __nesf2(float a, float b);
  142. int __nedf2(double a, double b);
  143. int __netf2(long double a, long double b);
  144.  
  145. int __gesf2(float a, float b);
  146. int __gedf2(double a, double b);
  147. int __getf2(long double a, long double b);
  148.  
  149. int __ltsf2(float a, float b);
  150. int __ltdf2(double a, double b);
  151. int __lttf2(long double a, long double b);
  152. int __lesf2(float a, float b);
  153. int __ledf2(double a, double b);
  154. int __letf2(long double a, long double b);
  155.  
  156. int __gtsf2(float a, float b);
  157. int __gtdf2(double a, double b);
  158. int __gttf2(long double a, long double b);
  159.  
  160. /* Not implemented yet*/
  161. float __powisf2(float a, int b);
  162.  
  163. #endif
  164.  
  165.