Lines Matching defs:fp

79  * 2 bits (a la fpu_shr(), but we do not bother with fp->fp_sticky).
82 * Note that we may leave the value 2.0 in fp->fp_mant; it is the caller's
86 fpround(struct fpemu *fe, struct fpn *fp)
91 m0 = fp->fp_mant[0];
92 m1 = fp->fp_mant[1];
93 m2 = fp->fp_mant[2];
94 m3 = fp->fp_mant[3];
96 s = fp->fp_sticky;
120 if ((gr & 1) || fp->fp_sticky || (m3 & 1))
130 if (fp->fp_sign)
136 if (!fp->fp_sign)
146 fp->fp_mant[0] = m0;
147 fp->fp_mant[1] = m1;
148 fp->fp_mant[2] = m2;
149 fp->fp_mant[3] = m3;
153 fp->fp_mant[0] = m0;
154 fp->fp_mant[1] = m1;
155 fp->fp_mant[2] = m2;
156 fp->fp_mant[3] = m3;
199 __fpu_ftoi(fe, fp)
201 struct fpn *fp;
206 sign = fp->fp_sign;
207 switch (fp->fp_class) {
222 if ((exp = fp->fp_exp) >= 32)
225 if (__fpu_shr(fp, FP_NMANT - 1 - exp) != 0)
227 i = fp->fp_mant[3];
247 __fpu_ftox(fe, fp, res)
249 struct fpn *fp;
255 sign = fp->fp_sign;
256 switch (fp->fp_class) {
273 if ((exp = fp->fp_exp) >= 64)
276 if (__fpu_shr(fp, FP_NMANT - 1 - exp) != 0)
278 i = ((uint64_t)fp->fp_mant[2]<<32)|fp->fp_mant[3];
301 __fpu_ftos(fe, fp)
303 struct fpn *fp;
305 uint32_t sign = fp->fp_sign << 31;
312 if (ISNAN(fp)) {
315 * Note that fp->fp_mant[0] has the quiet bit set,
318 (void) __fpu_shr(fp, FP_NMANT - 1 - SNG_FRACBITS);
322 if (ISINF(fp))
324 if (ISZERO(fp))
349 if ((exp = fp->fp_exp + SNG_EXP_BIAS) <= 0) { /* subnormal */
351 (void) __fpu_shr(fp, FP_NMANT - FP_NG - SNG_FRACBITS - exp);
352 if (fpround(fe, fp) && fp->fp_mant[3] == SNG_EXP(1)) {
359 return (sign | SNG_EXP(0) | fp->fp_mant[3]);
362 (void) __fpu_shr(fp, FP_NMANT - FP_NG - 1 - SNG_FRACBITS);
364 if ((fp->fp_mant[3] & SNG_EXP(1 << FP_NG)) == 0)
367 if (fpround(fe, fp) && fp->fp_mant[3] == SNG_EXP(2))
378 return (sign | SNG_EXP(exp) | (fp->fp_mant[3] & SNG_MASK));
388 __fpu_ftod(fe, fp, res)
390 struct fpn *fp;
393 uint32_t sign = fp->fp_sign << 31;
399 if (ISNAN(fp)) {
400 (void) __fpu_shr(fp, FP_NMANT - 1 - DBL_FRACBITS);
404 if (ISINF(fp)) {
408 if (ISZERO(fp)) {
413 if ((exp = fp->fp_exp + DBL_EXP_BIAS) <= 0) {
414 (void) __fpu_shr(fp, FP_NMANT - FP_NG - DBL_FRACBITS - exp);
415 if (fpround(fe, fp) && fp->fp_mant[2] == DBL_EXP(1)) {
426 (void) __fpu_shr(fp, FP_NMANT - FP_NG - 1 - DBL_FRACBITS);
427 if (fpround(fe, fp) && fp->fp_mant[2] == DBL_EXP(2))
439 res[1] = fp->fp_mant[3];
440 return (sign | DBL_EXP(exp) | (fp->fp_mant[2] & DBL_MASK));
450 __fpu_ftoq(fe, fp, res)
452 struct fpn *fp;
455 uint32_t sign = fp->fp_sign << 31;
461 if (ISNAN(fp)) {
462 (void) __fpu_shr(fp, 2); /* since we are not rounding */
466 if (ISINF(fp)) {
470 if (ISZERO(fp)) {
475 if ((exp = fp->fp_exp + EXT_EXP_BIAS) <= 0) {
476 (void) __fpu_shr(fp, FP_NMANT - FP_NG - EXT_FRACBITS - exp);
477 if (fpround(fe, fp) && fp->fp_mant[0] == EXT_EXP(1)) {
489 if (fpround(fe, fp) && fp->fp_mant[0] == EXT_EXP(2))
501 res[1] = fp->fp_mant[1];
502 res[2] = fp->fp_mant[2];
503 res[3] = fp->fp_mant[3];
504 return (sign | EXT_EXP(exp) | (fp->fp_mant[0] & EXT_MASK));
511 __fpu_implode(fe, fp, type, space)
513 struct fpn *fp;
520 space[0] = __fpu_ftox(fe, fp, space);
524 space[0] = __fpu_ftoi(fe, fp);
528 space[0] = __fpu_ftos(fe, fp);
532 space[0] = __fpu_ftod(fe, fp, space);
537 space[0] = __fpu_ftoq(fe, fp, space);