/* Public domain. */ typedef unsigned int USItype __attribute__ ((mode (SI))); typedef int DItype __attribute__ ((mode (DI))); typedef unsigned int UDItype __attribute__ ((mode (DI))); typedef float DFtype __attribute__ ((mode (DF))); DItype __fixdfdi (DFtype); /* This version is needed to prevent recursion; fixunsdfdi in libgcc calls fixdfdi, which in turn calls calls fixunsdfdi. */ static DItype local_fixunsdfdi (DFtype a) { USItype hi, lo; hi = a / (((UDItype) 1) << (sizeof (USItype) * 8)); lo = a - ((DFtype) hi) * (((UDItype) 1) << (sizeof (USItype) * 8)); return ((UDItype) hi << (sizeof (USItype) * 8)) | lo; } DItype __fixdfdi (DFtype a) { if (a < 0) return - local_fixunsdfdi (-a); return local_fixunsdfdi (a); }