Lines Matching refs:fp
80 round(struct fpemu *fe, struct fpn *fp) in round() argument
86 m0 = fp->fp_mant[0]; in round()
87 m1 = fp->fp_mant[1]; in round()
88 m2 = fp->fp_mant[2]; in round()
89 m3 = fp->fp_mant[3]; in round()
91 s = fp->fp_sticky; in round()
116 if ((gr & 1) || fp->fp_sticky || (m3 & 1)) in round()
126 if (fp->fp_sign) in round()
132 if (!fp->fp_sign) in round()
144 fp->fp_mant[0] = m0; in round()
145 fp->fp_mant[1] = m1; in round()
146 fp->fp_mant[2] = m2; in round()
147 fp->fp_mant[3] = m3; in round()
151 fp->fp_mant[0] = m0; in round()
152 fp->fp_mant[1] = m1; in round()
153 fp->fp_mant[2] = m2; in round()
154 fp->fp_mant[3] = m3; in round()
200 fpu_ftoi(struct fpemu *fe, struct fpn *fp) in fpu_ftoi() argument
205 sign = fp->fp_sign; in fpu_ftoi()
206 switch (fp->fp_class) { in fpu_ftoi()
222 if ((exp = fp->fp_exp) >= 32) in fpu_ftoi()
225 if (fpu_shr(fp, FP_NMANT - 1 - exp) != 0) in fpu_ftoi()
227 i = fp->fp_mant[3]; in fpu_ftoi()
247 fpu_ftox(struct fpemu *fe, struct fpn *fp, u_int *res) in fpu_ftox() argument
252 sign = fp->fp_sign; in fpu_ftox()
253 switch (fp->fp_class) { in fpu_ftox()
270 if ((exp = fp->fp_exp) >= 64) in fpu_ftox()
273 if (fpu_shr(fp, FP_NMANT - 1 - exp) != 0) in fpu_ftox()
275 i = ((u_int64_t)fp->fp_mant[2]<<32)|fp->fp_mant[3]; in fpu_ftox()
293 fpu_ftos(struct fpemu *fe, struct fpn *fp) in fpu_ftos() argument
295 u_int sign = fp->fp_sign << 31; in fpu_ftos()
302 if (ISNAN(fp)) { in fpu_ftos()
308 (void) fpu_shr(fp, FP_NMANT - 1 - SNG_FRACBITS); in fpu_ftos()
312 if (ISINF(fp)) in fpu_ftos()
314 if (ISZERO(fp)) in fpu_ftos()
338 if ((exp = fp->fp_exp + SNG_EXP_BIAS) <= 0) { /* subnormal */ in fpu_ftos()
340 (void) fpu_shr(fp, FP_NMANT - FP_NG - SNG_FRACBITS - exp); in fpu_ftos()
341 if (round(fe, fp) && fp->fp_mant[3] == SNG_EXP(1)) in fpu_ftos()
346 return (sign | SNG_EXP(0) | fp->fp_mant[3]); in fpu_ftos()
349 (void) fpu_shr(fp, FP_NMANT - FP_NG - 1 - SNG_FRACBITS); in fpu_ftos()
351 if ((fp->fp_mant[3] & SNG_EXP(1 << FP_NG)) == 0) in fpu_ftos()
354 if (round(fe, fp) && fp->fp_mant[3] == SNG_EXP(2)) in fpu_ftos()
364 return (sign | SNG_EXP(exp) | (fp->fp_mant[3] & SNG_MASK)); in fpu_ftos()
374 fpu_ftod(struct fpemu *fe, struct fpn *fp, u_int *res) in fpu_ftod() argument
376 u_int sign = fp->fp_sign << 31; in fpu_ftod()
382 if (ISNAN(fp)) { in fpu_ftod()
383 (void) fpu_shr(fp, FP_NMANT - 1 - DBL_FRACBITS); in fpu_ftod()
387 if (ISINF(fp)) { in fpu_ftod()
391 if (ISZERO(fp)) { in fpu_ftod()
396 if ((exp = fp->fp_exp + DBL_EXP_BIAS) <= 0) { in fpu_ftod()
397 (void) fpu_shr(fp, FP_NMANT - FP_NG - DBL_FRACBITS - exp); in fpu_ftod()
398 if (round(fe, fp) && fp->fp_mant[2] == DBL_EXP(1)) { in fpu_ftod()
408 (void) fpu_shr(fp, FP_NMANT - FP_NG - 1 - DBL_FRACBITS); in fpu_ftod()
409 if (round(fe, fp) && fp->fp_mant[2] == DBL_EXP(2)) in fpu_ftod()
421 res[1] = fp->fp_mant[3]; in fpu_ftod()
422 return (sign | DBL_EXP(exp) | (fp->fp_mant[2] & DBL_MASK)); in fpu_ftod()
429 fpu_implode(struct fpemu *fe, struct fpn *fp, int type, u_int *space) in fpu_implode() argument
435 space[0] = fpu_ftox(fe, fp, space); in fpu_implode()
442 space[1] = fpu_ftoi(fe, fp); in fpu_implode()
448 space[0] = fpu_ftos(fe, fp); in fpu_implode()
454 space[0] = fpu_ftod(fe, fp, space); in fpu_implode()