diff options
Diffstat (limited to 'gcc/config/fixunstfdi.c')
-rw-r--r-- | gcc/config/fixunstfdi.c | 35 |
1 files changed, 0 insertions, 35 deletions
diff --git a/gcc/config/fixunstfdi.c b/gcc/config/fixunstfdi.c deleted file mode 100644 index 4a0012a..0000000 --- a/gcc/config/fixunstfdi.c +++ /dev/null @@ -1,35 +0,0 @@ -/* Public domain. */ -#if __LDBL_MANT_DIG__ == 106 || __LDBL_MANT_DIG__ == 113 -typedef int DItype __attribute__ ((mode (DI))); -typedef int SItype __attribute__ ((mode (SI))); -typedef unsigned int UDItype __attribute__ ((mode (DI))); -typedef unsigned int USItype __attribute__ ((mode (SI))); -typedef float TFtype __attribute__ ((mode (TF))); - -DItype __fixunstfdi (TFtype); - -DItype -__fixunstfdi (TFtype a) -{ - if (a < 0) - return 0; - - /* Compute high word of result, as a flonum. */ - const TFtype b = (a / (((UDItype) 1) << (sizeof (SItype) * 8))); - /* Convert that to fixed (but not to DItype!), - and shift it into the high word. */ - UDItype v = (USItype) b; - v <<= (sizeof (SItype) * 8); - /* Remove high part from the TFtype, leaving the low part as flonum. */ - a -= (TFtype) v; - /* Convert that to fixed (but not to DItype!) and add it in. - Sometimes A comes out negative. This is significant, since - A has more bits than a long int does. */ - if (a < 0) - v -= (USItype) (-a); - else - v += (USItype) a; - return v; -} - -#endif |