1208737Sjmallett/* Public domain. */ 2208737Sjmalletttypedef unsigned int USItype __attribute__ ((mode (SI))); 3208737Sjmalletttypedef int DItype __attribute__ ((mode (DI))); 4208737Sjmalletttypedef unsigned int UDItype __attribute__ ((mode (DI))); 5208737Sjmalletttypedef float DFtype __attribute__ ((mode (DF))); 6208737Sjmallett 7208737SjmallettDItype __fixdfdi (DFtype); 8208737Sjmallett 9208737Sjmallett/* This version is needed to prevent recursion; fixunsdfdi in libgcc 10208737Sjmallett calls fixdfdi, which in turn calls calls fixunsdfdi. */ 11208737Sjmallett 12208737Sjmallettstatic DItype 13208737Sjmallettlocal_fixunsdfdi (DFtype a) 14208737Sjmallett{ 15208737Sjmallett USItype hi, lo; 16208737Sjmallett 17208737Sjmallett hi = a / (((UDItype) 1) << (sizeof (USItype) * 8)); 18208737Sjmallett lo = a - ((DFtype) hi) * (((UDItype) 1) << (sizeof (USItype) * 8)); 19208737Sjmallett return ((UDItype) hi << (sizeof (USItype) * 8)) | lo; 20208737Sjmallett} 21208737Sjmallett 22208737SjmallettDItype 23208737Sjmallett__fixdfdi (DFtype a) 24208737Sjmallett{ 25208737Sjmallett if (a < 0) 26208737Sjmallett return - local_fixunsdfdi (-a); 27208737Sjmallett return local_fixunsdfdi (a); 28208737Sjmallett} 29