1
0
Fork 0
forked from len0rd/rockbox

This optimisation breaks for very large divisors (MSB set), so remove it.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19012 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Jens Arnold 2008-11-05 07:36:39 +00:00
parent 4af26e7e98
commit 0eb6ae938e

View file

@ -33,7 +33,7 @@
.macro ARM_DIV_BODY dividend, divisor, result, curbit .macro ARM_DIV_BODY dividend, divisor, result, curbit
mov \result, \dividend mov \result, \dividend
mov \curbit, #90 @ 3 * 30, (calculating branch dest) mov \curbit, #93 @ 3 * 31, (calculating branch dest)
cmp \divisor, \result, lsr #16 cmp \divisor, \result, lsr #16
movls \result,\result, lsr #16 movls \result,\result, lsr #16
subls \curbit, \curbit, #48 subls \curbit, \curbit, #48
@ -44,9 +44,10 @@
movls \result,\result, lsr #4 movls \result,\result, lsr #4
subls \curbit, \curbit, #12 subls \curbit, \curbit, #12
cmp \divisor, \result, lsr #2 cmp \divisor, \result, lsr #2
movls \result,\result, lsr #2
subls \curbit, \curbit, #6 subls \curbit, \curbit, #6
@ calculation is only done down to shift=2, because the shift=1 step cmp \divisor, \result, lsr #1
@ would need 3 more cycles, but would only gain 1.5 cycles on average subls \curbit, \curbit, #3
mov \result, #0 mov \result, #0
add pc, pc, \curbit, lsl #2 add pc, pc, \curbit, lsl #2
nop nop