Lines Matching refs:fp
83 fpround(struct fpemu *fe, struct fpn *fp) in fpround() argument
88 m0 = fp->fp_mant[0]; in fpround()
89 m1 = fp->fp_mant[1]; in fpround()
90 m2 = fp->fp_mant[2]; in fpround()
91 m3 = fp->fp_mant[3]; in fpround()
93 s = fp->fp_sticky; in fpround()
117 if ((gr & 1) || fp->fp_sticky || (m3 & 1)) in fpround()
127 if (fp->fp_sign) in fpround()
133 if (!fp->fp_sign) in fpround()
143 fp->fp_mant[0] = m0; in fpround()
144 fp->fp_mant[1] = m1; in fpround()
145 fp->fp_mant[2] = m2; in fpround()
146 fp->fp_mant[3] = m3; in fpround()
150 fp->fp_mant[0] = m0; in fpround()
151 fp->fp_mant[1] = m1; in fpround()
152 fp->fp_mant[2] = m2; in fpround()
153 fp->fp_mant[3] = m3; in fpround()
196 __fpu_ftoi(fe, fp) in __fpu_ftoi() argument
198 struct fpn *fp;
203 sign = fp->fp_sign;
204 switch (fp->fp_class) {
219 if ((exp = fp->fp_exp) >= 32)
222 if (__fpu_shr(fp, FP_NMANT - 1 - exp) != 0)
224 i = fp->fp_mant[3];
244 __fpu_ftox(fe, fp, res) in __fpu_ftox() argument
246 struct fpn *fp;
252 sign = fp->fp_sign;
253 switch (fp->fp_class) {
270 if ((exp = fp->fp_exp) >= 64)
273 if (__fpu_shr(fp, FP_NMANT - 1 - exp) != 0)
275 i = ((u_int64_t)fp->fp_mant[2]<<32)|fp->fp_mant[3];
298 __fpu_ftos(fe, fp) in __fpu_ftos() argument
300 struct fpn *fp;
302 u_int sign = fp->fp_sign << 31;
309 if (ISNAN(fp)) {
315 (void) __fpu_shr(fp, FP_NMANT - 1 - SNG_FRACBITS);
319 if (ISINF(fp))
321 if (ISZERO(fp))
346 if ((exp = fp->fp_exp + SNG_EXP_BIAS) <= 0) { /* subnormal */
348 (void) __fpu_shr(fp, FP_NMANT - FP_NG - SNG_FRACBITS - exp);
349 if (fpround(fe, fp) && fp->fp_mant[3] == SNG_EXP(1)) {
356 return (sign | SNG_EXP(0) | fp->fp_mant[3]);
359 (void) __fpu_shr(fp, FP_NMANT - FP_NG - 1 - SNG_FRACBITS);
361 if ((fp->fp_mant[3] & SNG_EXP(1 << FP_NG)) == 0)
364 if (fpround(fe, fp) && fp->fp_mant[3] == SNG_EXP(2))
375 return (sign | SNG_EXP(exp) | (fp->fp_mant[3] & SNG_MASK));
385 __fpu_ftod(fe, fp, res) in __fpu_ftod() argument
387 struct fpn *fp;
390 u_int sign = fp->fp_sign << 31;
396 if (ISNAN(fp)) {
397 (void) __fpu_shr(fp, FP_NMANT - 1 - DBL_FRACBITS);
401 if (ISINF(fp)) {
405 if (ISZERO(fp)) {
410 if ((exp = fp->fp_exp + DBL_EXP_BIAS) <= 0) {
411 (void) __fpu_shr(fp, FP_NMANT - FP_NG - DBL_FRACBITS - exp);
412 if (fpround(fe, fp) && fp->fp_mant[2] == DBL_EXP(1)) {
423 (void) __fpu_shr(fp, FP_NMANT - FP_NG - 1 - DBL_FRACBITS);
424 if (fpround(fe, fp) && fp->fp_mant[2] == DBL_EXP(2))
436 res[1] = fp->fp_mant[3];
437 return (sign | DBL_EXP(exp) | (fp->fp_mant[2] & DBL_MASK));
447 __fpu_ftoq(fe, fp, res) in __fpu_ftoq() argument
449 struct fpn *fp;
452 u_int sign = fp->fp_sign << 31;
458 if (ISNAN(fp)) {
459 (void) __fpu_shr(fp, 2); /* since we are not rounding */
463 if (ISINF(fp)) {
467 if (ISZERO(fp)) {
472 if ((exp = fp->fp_exp + EXT_EXP_BIAS) <= 0) {
473 (void) __fpu_shr(fp, FP_NMANT - FP_NG - EXT_FRACBITS - exp);
474 if (fpround(fe, fp) && fp->fp_mant[0] == EXT_EXP(1)) {
486 if (fpround(fe, fp) && fp->fp_mant[0] == EXT_EXP(2))
498 res[1] = fp->fp_mant[1];
499 res[2] = fp->fp_mant[2];
500 res[3] = fp->fp_mant[3];
501 return (sign | EXT_EXP(exp) | (fp->fp_mant[0] & EXT_MASK));
508 __fpu_implode(fe, fp, type, space) in __fpu_implode() argument
510 struct fpn *fp;
517 space[0] = __fpu_ftox(fe, fp, space);
521 space[0] = __fpu_ftoi(fe, fp);
525 space[0] = __fpu_ftos(fe, fp);
529 space[0] = __fpu_ftod(fe, fp, space);
534 space[0] = __fpu_ftoq(fe, fp, space);