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:
parent
4af26e7e98
commit
0eb6ae938e
1 changed files with 4 additions and 3 deletions
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue