Lines Matching +full:left +full:- +full:shifted

1 // SPDX-License-Identifier: GPL-2.0-or-later
3 * Linux/PA-RISC Project (http://www.parisc-linux.org/)
5 * Floating-point emulation code
6 * Copyright (C) 2001 Hewlett-Packard (Paul Bame) <bame@debian.org>
15 * Double Floating-point Multiply Fused Add
16 * Double Floating-point Multiply Negate Fused Add
17 * Single Floating-point Multiply Fused Add
18 * Single Floating-point Multiply Negate Fused Add
41 * Double Floating-point Multiply Fused Add
77 mpy_exponent = Dbl_exponent(opnd1p1) + Dbl_exponent(opnd2p1) - DBL_BIAS; in dbl_fmpyfadd()
377 for (count = DBL_P-1; count >= 0; count -= 4) { in dbl_fmpyfadd()
432 /* Left can't be zero and must be result. in dbl_fmpyfadd()
476 * Set the left operand to the larger one by XOR swap. in dbl_fmpyfadd()
484 diff_exponent = add_exponent - mpy_exponent; in dbl_fmpyfadd()
488 diff_exponent = mpy_exponent - add_exponent; in dbl_fmpyfadd()
491 /* Invariant: left is not smaller than right. */ in dbl_fmpyfadd()
506 /*shifted by*/diff_exponent); in dbl_fmpyfadd()
522 * result and extension left until the hidden bit in dbl_fmpyfadd()
540 /* Must have been "x-x" or "x+(-x)". */ in dbl_fmpyfadd()
546 result_exponent--; in dbl_fmpyfadd()
556 * shifted the result one position right and still in dbl_fmpyfadd()
562 result_exponent -= 8; in dbl_fmpyfadd()
569 result_exponent -= 4; in dbl_fmpyfadd()
578 result_exponent -= 3; in dbl_fmpyfadd()
584 result_exponent -= 2; in dbl_fmpyfadd()
592 result_exponent -= 1; in dbl_fmpyfadd()
703 * Double Floating-point Multiply Negate Fused Add
737 mpy_exponent = Dbl_exponent(opnd1p1) + Dbl_exponent(opnd2p1) - DBL_BIAS;
1037 for (count = DBL_P-1; count >= 0; count -= 4) {
1092 /* Left can't be zero and must be result.
1136 * Set the left operand to the larger one by XOR swap.
1144 diff_exponent = add_exponent - mpy_exponent;
1148 diff_exponent = mpy_exponent - add_exponent;
1151 /* Invariant: left is not smaller than right. */
1166 /*shifted by*/diff_exponent);
1182 * result and extension left until the hidden bit
1200 /* Must have been "x-x" or "x+(-x)". */
1206 result_exponent--;
1216 * shifted the result one position right and still
1222 result_exponent -= 8;
1229 result_exponent -= 4;
1238 result_exponent -= 3;
1244 result_exponent -= 2;
1252 result_exponent -= 1;
1361 * Single Floating-point Multiply Fused Add
1394 mpy_exponent = Sgl_exponent(opnd1) + Sgl_exponent(opnd2) - SGL_BIAS;
1693 for (count = SGL_P-1; count >= 0; count -= 4) {
1746 /* Left can't be zero and must be result.
1789 * Set the left operand to the larger one by XOR swap.
1796 diff_exponent = add_exponent - mpy_exponent;
1800 diff_exponent = mpy_exponent - add_exponent;
1803 /* Invariant: left is not smaller than right. */
1817 Sglext_right_align(rightp1,rightp2,/*shifted by*/diff_exponent);
1832 * result and extension left until the hidden bit
1849 /* Must have been "x-x" or "x+(-x)". */
1855 result_exponent--;
1865 * shifted the result one position right and still
1871 result_exponent -= 8;
1878 result_exponent -= 4;
1886 result_exponent -= 3;
1891 result_exponent -= 2;
1898 result_exponent -= 1;
2002 * Single Floating-point Multiply Negate Fused Add
2036 mpy_exponent = Sgl_exponent(opnd1) + Sgl_exponent(opnd2) - SGL_BIAS;
2335 for (count = SGL_P-1; count >= 0; count -= 4) {
2388 /* Left can't be zero and must be result.
2431 * Set the left operand to the larger one by XOR swap.
2438 diff_exponent = add_exponent - mpy_exponent;
2442 diff_exponent = mpy_exponent - add_exponent;
2445 /* Invariant: left is not smaller than right. */
2459 Sglext_right_align(rightp1,rightp2,/*shifted by*/diff_exponent);
2474 * result and extension left until the hidden bit
2491 /* Must have been "x-x" or "x+(-x)". */
2497 result_exponent--;
2507 * shifted the result one position right and still
2513 result_exponent -= 8;
2520 result_exponent -= 4;
2528 result_exponent -= 3;
2533 result_exponent -= 2;
2540 result_exponent -= 1;