Revision be22a9ab fpu/softfloat.c
b/fpu/softfloat.c | ||
---|---|---|
64 | 64 |
STATUS(float_exception_flags) = val; |
65 | 65 |
} |
66 | 66 |
|
67 |
#ifdef FLOATX80 |
|
68 | 67 |
void set_floatx80_rounding_precision(int val STATUS_PARAM) |
69 | 68 |
{ |
70 | 69 |
STATUS(floatx80_rounding_precision) = val; |
71 | 70 |
} |
72 |
#endif |
|
73 | 71 |
|
74 | 72 |
/*---------------------------------------------------------------------------- |
75 | 73 |
| Returns the fraction bits of the half-precision floating-point value `a'. |
... | ... | |
564 | 562 |
|
565 | 563 |
} |
566 | 564 |
|
567 |
#ifdef FLOATX80 |
|
568 |
|
|
569 | 565 |
/*---------------------------------------------------------------------------- |
570 | 566 |
| Returns the fraction bits of the extended double-precision floating-point |
571 | 567 |
| value `a'. |
... | ... | |
851 | 847 |
|
852 | 848 |
} |
853 | 849 |
|
854 |
#endif |
|
855 |
|
|
856 |
#ifdef FLOAT128 |
|
857 |
|
|
858 | 850 |
/*---------------------------------------------------------------------------- |
859 | 851 |
| Returns the least-significant 64 fraction bits of the quadruple-precision |
860 | 852 |
| floating-point value `a'. |
... | ... | |
1118 | 1110 |
|
1119 | 1111 |
} |
1120 | 1112 |
|
1121 |
#endif |
|
1122 |
|
|
1123 | 1113 |
/*---------------------------------------------------------------------------- |
1124 | 1114 |
| Returns the result of converting the 32-bit two's complement integer `a' |
1125 | 1115 |
| to the single-precision floating-point format. The conversion is performed |
... | ... | |
1159 | 1149 |
|
1160 | 1150 |
} |
1161 | 1151 |
|
1162 |
#ifdef FLOATX80 |
|
1163 |
|
|
1164 | 1152 |
/*---------------------------------------------------------------------------- |
1165 | 1153 |
| Returns the result of converting the 32-bit two's complement integer `a' |
1166 | 1154 |
| to the extended double-precision floating-point format. The conversion |
... | ... | |
1184 | 1172 |
|
1185 | 1173 |
} |
1186 | 1174 |
|
1187 |
#endif |
|
1188 |
|
|
1189 |
#ifdef FLOAT128 |
|
1190 |
|
|
1191 | 1175 |
/*---------------------------------------------------------------------------- |
1192 | 1176 |
| Returns the result of converting the 32-bit two's complement integer `a' to |
1193 | 1177 |
| the quadruple-precision floating-point format. The conversion is performed |
... | ... | |
1210 | 1194 |
|
1211 | 1195 |
} |
1212 | 1196 |
|
1213 |
#endif |
|
1214 |
|
|
1215 | 1197 |
/*---------------------------------------------------------------------------- |
1216 | 1198 |
| Returns the result of converting the 64-bit two's complement integer `a' |
1217 | 1199 |
| to the single-precision floating-point format. The conversion is performed |
... | ... | |
1291 | 1273 |
|
1292 | 1274 |
} |
1293 | 1275 |
|
1294 |
#ifdef FLOATX80 |
|
1295 |
|
|
1296 | 1276 |
/*---------------------------------------------------------------------------- |
1297 | 1277 |
| Returns the result of converting the 64-bit two's complement integer `a' |
1298 | 1278 |
| to the extended double-precision floating-point format. The conversion |
... | ... | |
1314 | 1294 |
|
1315 | 1295 |
} |
1316 | 1296 |
|
1317 |
#endif |
|
1318 |
|
|
1319 |
#ifdef FLOAT128 |
|
1320 |
|
|
1321 | 1297 |
/*---------------------------------------------------------------------------- |
1322 | 1298 |
| Returns the result of converting the 64-bit two's complement integer `a' to |
1323 | 1299 |
| the quadruple-precision floating-point format. The conversion is performed |
... | ... | |
1351 | 1327 |
|
1352 | 1328 |
} |
1353 | 1329 |
|
1354 |
#endif |
|
1355 |
|
|
1356 | 1330 |
/*---------------------------------------------------------------------------- |
1357 | 1331 |
| Returns the result of converting the single-precision floating-point value |
1358 | 1332 |
| `a' to the 32-bit two's complement integer format. The conversion is |
... | ... | |
1590 | 1564 |
|
1591 | 1565 |
} |
1592 | 1566 |
|
1593 |
#ifdef FLOATX80 |
|
1594 |
|
|
1595 | 1567 |
/*---------------------------------------------------------------------------- |
1596 | 1568 |
| Returns the result of converting the single-precision floating-point value |
1597 | 1569 |
| `a' to the extended double-precision floating-point format. The conversion |
... | ... | |
1622 | 1594 |
|
1623 | 1595 |
} |
1624 | 1596 |
|
1625 |
#endif |
|
1626 |
|
|
1627 |
#ifdef FLOAT128 |
|
1628 |
|
|
1629 | 1597 |
/*---------------------------------------------------------------------------- |
1630 | 1598 |
| Returns the result of converting the single-precision floating-point value |
1631 | 1599 |
| `a' to the double-precision floating-point format. The conversion is |
... | ... | |
1656 | 1624 |
|
1657 | 1625 |
} |
1658 | 1626 |
|
1659 |
#endif |
|
1660 |
|
|
1661 | 1627 |
/*---------------------------------------------------------------------------- |
1662 | 1628 |
| Rounds the single-precision floating-point value `a' to an integer, and |
1663 | 1629 |
| returns the result as a single-precision floating-point value. The |
... | ... | |
2939 | 2905 |
return packFloat16(aSign, aExp + 14, aSig >> 13); |
2940 | 2906 |
} |
2941 | 2907 |
|
2942 |
#ifdef FLOATX80 |
|
2943 |
|
|
2944 | 2908 |
/*---------------------------------------------------------------------------- |
2945 | 2909 |
| Returns the result of converting the double-precision floating-point value |
2946 | 2910 |
| `a' to the extended double-precision floating-point format. The conversion |
... | ... | |
2972 | 2936 |
|
2973 | 2937 |
} |
2974 | 2938 |
|
2975 |
#endif |
|
2976 |
|
|
2977 |
#ifdef FLOAT128 |
|
2978 |
|
|
2979 | 2939 |
/*---------------------------------------------------------------------------- |
2980 | 2940 |
| Returns the result of converting the double-precision floating-point value |
2981 | 2941 |
| `a' to the quadruple-precision floating-point format. The conversion is |
... | ... | |
3007 | 2967 |
|
3008 | 2968 |
} |
3009 | 2969 |
|
3010 |
#endif |
|
3011 |
|
|
3012 | 2970 |
/*---------------------------------------------------------------------------- |
3013 | 2971 |
| Rounds the double-precision floating-point value `a' to an integer, and |
3014 | 2972 |
| returns the result as a double-precision floating-point value. The |
... | ... | |
3816 | 3774 |
return 0; |
3817 | 3775 |
} |
3818 | 3776 |
|
3819 |
#ifdef FLOATX80 |
|
3820 |
|
|
3821 | 3777 |
/*---------------------------------------------------------------------------- |
3822 | 3778 |
| Returns the result of converting the extended double-precision floating- |
3823 | 3779 |
| point value `a' to the 32-bit two's complement integer format. The |
... | ... | |
4030 | 3986 |
|
4031 | 3987 |
} |
4032 | 3988 |
|
4033 |
#ifdef FLOAT128 |
|
4034 |
|
|
4035 | 3989 |
/*---------------------------------------------------------------------------- |
4036 | 3990 |
| Returns the result of converting the extended double-precision floating- |
4037 | 3991 |
| point value `a' to the quadruple-precision floating-point format. The |
... | ... | |
4056 | 4010 |
|
4057 | 4011 |
} |
4058 | 4012 |
|
4059 |
#endif |
|
4060 |
|
|
4061 | 4013 |
/*---------------------------------------------------------------------------- |
4062 | 4014 |
| Rounds the extended double-precision floating-point value `a' to an integer, |
4063 | 4015 |
| and returns the result as an extended quadruple-precision floating-point |
... | ... | |
4849 | 4801 |
return 0; |
4850 | 4802 |
} |
4851 | 4803 |
|
4852 |
#endif |
|
4853 |
|
|
4854 |
#ifdef FLOAT128 |
|
4855 |
|
|
4856 | 4804 |
/*---------------------------------------------------------------------------- |
4857 | 4805 |
| Returns the result of converting the quadruple-precision floating-point |
4858 | 4806 |
| value `a' to the 32-bit two's complement integer format. The conversion |
... | ... | |
5102 | 5050 |
|
5103 | 5051 |
} |
5104 | 5052 |
|
5105 |
#ifdef FLOATX80 |
|
5106 |
|
|
5107 | 5053 |
/*---------------------------------------------------------------------------- |
5108 | 5054 |
| Returns the result of converting the quadruple-precision floating-point |
5109 | 5055 |
| value `a' to the extended double-precision floating-point format. The |
... | ... | |
5139 | 5085 |
|
5140 | 5086 |
} |
5141 | 5087 |
|
5142 |
#endif |
|
5143 |
|
|
5144 | 5088 |
/*---------------------------------------------------------------------------- |
5145 | 5089 |
| Rounds the quadruple-precision floating-point value `a' to an integer, and |
5146 | 5090 |
| returns the result as a quadruple-precision floating-point value. The |
... | ... | |
6020 | 5964 |
return 0; |
6021 | 5965 |
} |
6022 | 5966 |
|
6023 |
#endif |
|
6024 |
|
|
6025 | 5967 |
/* misc functions */ |
6026 | 5968 |
float32 uint32_to_float32( unsigned int a STATUS_PARAM ) |
6027 | 5969 |
{ |
... | ... | |
6423 | 6365 |
return normalizeRoundAndPackFloat64( aSign, aExp, aSig STATUS_VAR ); |
6424 | 6366 |
} |
6425 | 6367 |
|
6426 |
#ifdef FLOATX80 |
|
6427 | 6368 |
floatx80 floatx80_scalbn( floatx80 a, int n STATUS_PARAM ) |
6428 | 6369 |
{ |
6429 | 6370 |
flag aSign; |
... | ... | |
6454 | 6395 |
return normalizeRoundAndPackFloatx80( STATUS(floatx80_rounding_precision), |
6455 | 6396 |
aSign, aExp, aSig, 0 STATUS_VAR ); |
6456 | 6397 |
} |
6457 |
#endif |
|
6458 | 6398 |
|
6459 |
#ifdef FLOAT128 |
|
6460 | 6399 |
float128 float128_scalbn( float128 a, int n STATUS_PARAM ) |
6461 | 6400 |
{ |
6462 | 6401 |
flag aSign; |
... | ... | |
6489 | 6428 |
STATUS_VAR ); |
6490 | 6429 |
|
6491 | 6430 |
} |
6492 |
#endif |
Also available in: Unified diff