FPU: Add integer division logic to FPU
authorPaul Mackerras <paulus@ozlabs.org>
Sat, 7 May 2022 08:28:33 +0000 (18:28 +1000)
committerPaul Mackerras <paulus@ozlabs.org>
Fri, 22 Jul 2022 12:20:21 +0000 (22:20 +1000)
commita95f8aab385b05ba6f5b7bedd6fbe1e97669ebdb
treeff0f7a8aa2857db348b56b25c4513735336e91d4
parent23d5c4edc50bf64a7e675220c338671059ede0bf
FPU: Add integer division logic to FPU

This adds logic to the FPU to accomplish 64-bit integer divisions.
No instruction actually uses this yet.

The algorithm used is to obtain an estimate of the reciprocal of the
divisor using the lookup table and refine it by one to three
iterations of the Newton-Raphson algorithm (the number of iterations
depends on the number of significant bits in the dividend).  Then the
reciprocal is multiplied by the dividend to get the quotient estimate.
The remainder is calculated as dividend - quotient * divisor.  If the
remainder is greater than or equal to the divisor, the quotient is
incremented, or if a modulo operation is being done, the divisor is
subtracted from the remainder.  The inverse estimate after refinement
is good enough that the quotient estimate is always equal to or one
less than the true quotient.

Signed-off-by: Paul Mackerras <paulus@ozlabs.org>
common.vhdl
execute1.vhdl
fpu.vhdl