• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/arch/m68k/math-emu/

Lines Matching defs:dest

34 fp_fabs(struct fp_ext *dest, struct fp_ext *src)
38 fp_monadic_check(dest, src);
40 dest->sign = 0;
42 return dest;
46 fp_fneg(struct fp_ext *dest, struct fp_ext *src)
50 fp_monadic_check(dest, src);
52 dest->sign = !dest->sign;
54 return dest;
63 fp_fadd(struct fp_ext *dest, struct fp_ext *src)
69 fp_dyadic_check(dest, src);
71 if (IS_INF(dest)) {
73 if (IS_INF(src) && (src->sign != dest->sign))
74 fp_set_nan(dest);
75 return dest;
78 fp_copy_ext(dest, src);
79 return dest;
82 if (IS_ZERO(dest)) {
84 if (src->sign != dest->sign) {
86 dest->sign = 1;
88 dest->sign = 0;
91 fp_copy_ext(dest, src);
92 return dest;
95 dest->lowmant = src->lowmant = 0;
97 if ((diff = dest->exp - src->exp) > 0)
100 fp_denormalize(dest, diff);
102 if (dest->sign == src->sign) {
103 if (fp_addmant(dest, src))
104 if (!fp_addcarry(dest))
105 return dest;
107 if (dest->mant.m64 < src->mant.m64) {
108 fp_submant(dest, src, dest);
109 dest->sign = !dest->sign;
111 fp_submant(dest, dest, src);
114 return dest;
123 fp_fsub(struct fp_ext *dest, struct fp_ext *src)
128 return fp_fadd(dest, src);
133 fp_fcmp(struct fp_ext *dest, struct fp_ext *src)
137 FPDATA->temp[1] = *dest;
143 fp_ftst(struct fp_ext *dest, struct fp_ext *src)
147 (void)dest;
153 fp_fmul(struct fp_ext *dest, struct fp_ext *src)
160 fp_dyadic_check(dest, src);
163 dest->sign = src->sign ^ dest->sign;
166 if (IS_INF(dest)) {
168 fp_set_nan(dest);
169 return dest;
172 if (IS_ZERO(dest))
173 fp_set_nan(dest);
175 fp_copy_ext(dest, src);
176 return dest;
182 if (IS_ZERO(dest) || IS_ZERO(src)) {
183 dest->exp = 0;
184 dest->mant.m64 = 0;
185 dest->lowmant = 0;
187 return dest;
190 exp = dest->exp + src->exp - 0x3ffe;
195 if ((long)dest->mant.m32[0] >= 0)
196 exp -= fp_overnormalize(dest);
201 fp_multiplymant(&temp, dest, src);
207 fp_putmant128(dest, &temp, 1);
209 fp_putmant128(dest, &temp, 0);
212 fp_set_ovrflw(dest);
213 return dest;
215 dest->exp = exp;
218 fp_denormalize(dest, -exp);
221 return dest;
228 of src / dest, the result is actually dest / src. */
231 fp_fdiv(struct fp_ext *dest, struct fp_ext *src)
238 fp_dyadic_check(dest, src);
241 dest->sign = src->sign ^ dest->sign;
244 if (IS_INF(dest)) {
247 fp_set_nan(dest);
249 return dest;
253 dest->exp = 0;
254 dest->mant.m64 = 0;
255 dest->lowmant = 0;
257 return dest;
261 if (IS_ZERO(dest)) {
264 fp_set_nan(dest);
266 return dest;
271 dest->exp = 0x7fff;
272 dest->mant.m64 = 0;
274 return dest;
277 exp = dest->exp - src->exp + 0x3fff;
282 if ((long)dest->mant.m32[0] >= 0)
283 exp -= fp_overnormalize(dest);
288 fp_dividemant(&temp, dest, src);
294 fp_putmant128(dest, &temp, 32);
296 fp_putmant128(dest, &temp, 31);
299 fp_set_ovrflw(dest);
300 return dest;
302 dest->exp = exp;
305 fp_denormalize(dest, -exp);
308 return dest;
312 fp_fsglmul(struct fp_ext *dest, struct fp_ext *src)
318 fp_dyadic_check(dest, src);
321 dest->sign = src->sign ^ dest->sign;
324 if (IS_INF(dest)) {
326 fp_set_nan(dest);
327 return dest;
330 if (IS_ZERO(dest))
331 fp_set_nan(dest);
333 fp_copy_ext(dest, src);
334 return dest;
340 if (IS_ZERO(dest) || IS_ZERO(src)) {
341 dest->exp = 0;
342 dest->mant.m64 = 0;
343 dest->lowmant = 0;
345 return dest;
348 exp = dest->exp + src->exp - 0x3ffe;
351 fp_mul64(dest->mant.m32[0], dest->mant.m32[1],
352 dest->mant.m32[0] & 0xffffff00,
356 fp_set_ovrflw(dest);
357 return dest;
359 dest->exp = exp;
362 fp_denormalize(dest, -exp);
365 return dest;
369 fp_fsgldiv(struct fp_ext *dest, struct fp_ext *src)
376 fp_dyadic_check(dest, src);
379 dest->sign = src->sign ^ dest->sign;
382 if (IS_INF(dest)) {
385 fp_set_nan(dest);
387 return dest;
391 dest->exp = 0;
392 dest->mant.m64 = 0;
393 dest->lowmant = 0;
395 return dest;
399 if (IS_ZERO(dest)) {
402 fp_set_nan(dest);
404 return dest;
409 dest->exp = 0x7fff;
410 dest->mant.m64 = 0;
412 return dest;
415 exp = dest->exp - src->exp + 0x3fff;
417 dest->mant.m32[0] &= 0xffffff00;
421 if (dest->mant.m32[0] >= src->mant.m32[0]) {
422 fp_sub64(dest->mant, src->mant);
423 fp_div64(quot, rem, dest->mant.m32[0], 0, src->mant.m32[0]);
424 dest->mant.m32[0] = 0x80000000 | (quot >> 1);
425 dest->mant.m32[1] = (quot & 1) | rem; /* only for rounding */
427 fp_div64(quot, rem, dest->mant.m32[0], 0, src->mant.m32[0]);
428 dest->mant.m32[0] = quot;
429 dest->mant.m32[1] = rem; /* only for rounding */
434 fp_set_ovrflw(dest);
435 return dest;
437 dest->exp = exp;
440 fp_denormalize(dest, -exp);
443 return dest;
452 static void fp_roundint(struct fp_ext *dest, int mode)
457 if (!fp_normalize_ext(dest))
461 if (IS_INF(dest) || IS_ZERO(dest))
465 oldmant = dest->mant;
466 switch (dest->exp) {
468 dest->mant.m64 = 0;
471 dest->mant.m32[0] &= 0xffffffffU << (0x401e - dest->exp);
472 dest->mant.m32[1] = 0;
473 if (oldmant.m64 == dest->mant.m64)
477 dest->mant.m32[1] &= 0xffffffffU << (0x403e - dest->exp);
478 if (oldmant.m32[1] == dest->mant.m32[1])
500 switch (dest->exp) {
512 mask = 1 << (0x401d - dest->exp);
517 if (!(oldmant.m32[0] << (dest->exp - 0x3ffd)) &&
530 mask = 1 << (0x403d - dest->exp);
535 if (!(oldmant.m32[1] << (dest->exp - 0x401d)))
545 if (dest->sign ^ (mode - FPCR_ROUND_RM))
550 switch (dest->exp) {
552 dest->exp = 0x3fff;
553 dest->mant.m64 = 1ULL << 63;
556 mask = 1 << (0x401e - dest->exp);
557 if (dest->mant.m32[0] += mask)
559 dest->mant.m32[0] = 0x80000000;
560 dest->exp++;
563 mask = 1 << (0x403e - dest->exp);
564 if (dest->mant.m32[1] += mask)
566 if (dest->mant.m32[0] += 1)
568 dest->mant.m32[0] = 0x80000000;
569 dest->exp++;
579 modrem_kernel(struct fp_ext *dest, struct fp_ext *src, int mode)
583 fp_dyadic_check(dest, src);
586 if (IS_INF(dest) || IS_ZERO(src)) {
587 fp_set_nan(dest);
588 return dest;
590 if (IS_ZERO(dest) || IS_INF(src))
591 return dest;
593 fp_copy_ext(&tmp, dest);
597 fp_fsub(dest, &tmp);
600 fp_set_quotient((dest->mant.m64 & 0x7f) | (dest->sign << 7));
601 return dest;
609 fmod(src,dest) = (dest - (src * floor(dest / src))) */
612 fp_fmod(struct fp_ext *dest, struct fp_ext *src)
615 return modrem_kernel(dest, src, FPCR_ROUND_RZ);
620 frem(src,dest) = (dest - (src * round(dest / src)))
624 fp_frem(struct fp_ext *dest, struct fp_ext *src)
627 return modrem_kernel(dest, src, FPCR_ROUND_RN);
631 fp_fint(struct fp_ext *dest, struct fp_ext *src)
635 fp_copy_ext(dest, src);
637 fp_roundint(dest, FPDATA->rnd);
639 return dest;
643 fp_fintrz(struct fp_ext *dest, struct fp_ext *src)
647 fp_copy_ext(dest, src);
649 fp_roundint(dest, FPCR_ROUND_RZ);
651 return dest;
655 fp_fscale(struct fp_ext *dest, struct fp_ext *src)
661 fp_dyadic_check(dest, src);
665 fp_set_nan(dest);
666 return dest;
668 if (IS_INF(dest))
669 return dest;
672 if (IS_ZERO(src) || IS_ZERO(dest))
673 return dest;
677 fp_set_ovrflw(dest);
678 return dest;
688 scale += dest->exp;
691 fp_set_ovrflw(dest);
694 fp_denormalize(dest, -scale);
696 dest->exp = scale;
698 return dest;