Lines Matching refs:fp
79 round(struct fpemu *fe, struct fpn *fp) in round() argument
85 m0 = fp->fp_mant[0]; in round()
86 m1 = fp->fp_mant[1]; in round()
87 m2 = fp->fp_mant[2]; in round()
88 m3 = fp->fp_mant[3]; in round()
90 s = fp->fp_sticky; in round()
114 if ((gr & 1) || fp->fp_sticky || (m3 & 1)) in round()
124 if (fp->fp_sign) in round()
130 if (!fp->fp_sign) in round()
142 fp->fp_mant[0] = m0; in round()
143 fp->fp_mant[1] = m1; in round()
144 fp->fp_mant[2] = m2; in round()
145 fp->fp_mant[3] = m3; in round()
149 fp->fp_mant[0] = m0; in round()
150 fp->fp_mant[1] = m1; in round()
151 fp->fp_mant[2] = m2; in round()
152 fp->fp_mant[3] = m3; in round()
197 fpu_ftoi(struct fpemu *fe, struct fpn *fp) in fpu_ftoi() argument
202 sign = fp->fp_sign; in fpu_ftoi()
203 switch (fp->fp_class) { in fpu_ftoi()
218 if ((exp = fp->fp_exp) >= 32) in fpu_ftoi()
221 if (fpu_shr(fp, FP_NMANT - 1 - exp) != 0) in fpu_ftoi()
223 i = fp->fp_mant[3]; in fpu_ftoi()
243 fpu_ftox(struct fpemu *fe, struct fpn *fp, u_int *res) in fpu_ftox() argument
248 sign = fp->fp_sign; in fpu_ftox()
249 switch (fp->fp_class) { in fpu_ftox()
265 if ((exp = fp->fp_exp) >= 64) in fpu_ftox()
268 if (fpu_shr(fp, FP_NMANT - 1 - exp) != 0) in fpu_ftox()
270 i = ((u_int64_t)fp->fp_mant[2]<<32)|fp->fp_mant[3]; in fpu_ftox()
288 fpu_ftos(struct fpemu *fe, struct fpn *fp) in fpu_ftos() argument
290 u_int sign = fp->fp_sign << 31; in fpu_ftos()
297 if (ISNAN(fp)) { in fpu_ftos()
303 (void) fpu_shr(fp, FP_NMANT - 1 - SNG_FRACBITS); in fpu_ftos()
307 if (ISINF(fp)) in fpu_ftos()
309 if (ISZERO(fp)) in fpu_ftos()
333 if ((exp = fp->fp_exp + SNG_EXP_BIAS) <= 0) { /* subnormal */ in fpu_ftos()
335 (void) fpu_shr(fp, FP_NMANT - FP_NG - SNG_FRACBITS - exp); in fpu_ftos()
336 if (round(fe, fp) && fp->fp_mant[3] == SNG_EXP(1)) in fpu_ftos()
341 return (sign | SNG_EXP(0) | fp->fp_mant[3]); in fpu_ftos()
344 (void) fpu_shr(fp, FP_NMANT - FP_NG - 1 - SNG_FRACBITS); in fpu_ftos()
346 if ((fp->fp_mant[3] & SNG_EXP(1 << FP_NG)) == 0) in fpu_ftos()
349 if (round(fe, fp) && fp->fp_mant[3] == SNG_EXP(2)) in fpu_ftos()
359 return (sign | SNG_EXP(exp) | (fp->fp_mant[3] & SNG_MASK)); in fpu_ftos()
369 fpu_ftod(struct fpemu *fe, struct fpn *fp, u_int *res) in fpu_ftod() argument
371 u_int sign = fp->fp_sign << 31; in fpu_ftod()
377 if (ISNAN(fp)) { in fpu_ftod()
378 (void) fpu_shr(fp, FP_NMANT - 1 - DBL_FRACBITS); in fpu_ftod()
382 if (ISINF(fp)) { in fpu_ftod()
386 if (ISZERO(fp)) { in fpu_ftod()
391 if ((exp = fp->fp_exp + DBL_EXP_BIAS) <= 0) { in fpu_ftod()
392 (void) fpu_shr(fp, FP_NMANT - FP_NG - DBL_FRACBITS - exp); in fpu_ftod()
393 if (round(fe, fp) && fp->fp_mant[2] == DBL_EXP(1)) { in fpu_ftod()
403 (void) fpu_shr(fp, FP_NMANT - FP_NG - 1 - DBL_FRACBITS); in fpu_ftod()
404 if (round(fe, fp) && fp->fp_mant[2] == DBL_EXP(2)) in fpu_ftod()
416 res[1] = fp->fp_mant[3]; in fpu_ftod()
417 return (sign | DBL_EXP(exp) | (fp->fp_mant[2] & DBL_MASK)); in fpu_ftod()
424 fpu_implode(struct fpemu *fe, struct fpn *fp, int type, u_int *space) in fpu_implode() argument
429 space[0] = fpu_ftox(fe, fp, space); in fpu_implode()
436 space[1] = fpu_ftoi(fe, fp); in fpu_implode()
442 space[0] = fpu_ftos(fe, fp); in fpu_implode()
448 space[0] = fpu_ftod(fe, fp, space); in fpu_implode()