* config/sh/lib1funcs.asm (udivdi3): Make first divide step
commit79c2c2aa6364d7b4a17e353eff4b8b58085c468a
authoramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 25 Jun 2002 20:39:18 +0000 (25 20:39 +0000)
committeramylaar <amylaar@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 25 Jun 2002 20:39:18 +0000 (25 20:39 +0000)
tree36fecfa562a5580522328656aed4a9f40a513966
parentdaae790854914325c68681f7f852f5964689adc5
* config/sh/lib1funcs.asm (udivdi3): Make first divide step
produce a 32 bit result before normalization, then normalize with a
left shift.  Compute approximative error of 2nd reciprocal
approximation in 2's complement.  Fix mask generation from upper
longword of second divide stage result.
For large divisor, fix shift count used to truncate first stage
divide result; make decision if to adjust upwards based on comparison
of higher parts of normalized values.
(udivdi): Likewise.  Undo normalization of result for large divisor
case.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@54993 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/config/sh/lib1funcs.asm