summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2008-11-05 07:36:39 +0000
committerJens Arnold <amiconn@rockbox.org>2008-11-05 07:36:39 +0000
commit0eb6ae938ea11e3db28b98be0dd524aee31a8dd3 (patch)
tree606d4d77ff498688498b2e653976a02656152d0c /apps
parent4af26e7e98b6d4b2e1c94a54ad7ca02d55bb04cc (diff)
downloadrockbox-0eb6ae938ea11e3db28b98be0dd524aee31a8dd3.tar.gz
rockbox-0eb6ae938ea11e3db28b98be0dd524aee31a8dd3.zip
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
Diffstat (limited to 'apps')
-rw-r--r--apps/codecs/lib/udiv32_armv4.S7
1 files changed, 4 insertions, 3 deletions
diff --git a/apps/codecs/lib/udiv32_armv4.S b/apps/codecs/lib/udiv32_armv4.S
index a659a9eb8e..2cb6fc8088 100644
--- a/apps/codecs/lib/udiv32_armv4.S
+++ b/apps/codecs/lib/udiv32_armv4.S
@@ -33,7 +33,7 @@
33.macro ARM_DIV_BODY dividend, divisor, result, curbit 33.macro ARM_DIV_BODY dividend, divisor, result, curbit
34 34
35 mov \result, \dividend 35 mov \result, \dividend
36 mov \curbit, #90 @ 3 * 30, (calculating branch dest) 36 mov \curbit, #93 @ 3 * 31, (calculating branch dest)
37 cmp \divisor, \result, lsr #16 37 cmp \divisor, \result, lsr #16
38 movls \result,\result, lsr #16 38 movls \result,\result, lsr #16
39 subls \curbit, \curbit, #48 39 subls \curbit, \curbit, #48
@@ -44,9 +44,10 @@
44 movls \result,\result, lsr #4 44 movls \result,\result, lsr #4
45 subls \curbit, \curbit, #12 45 subls \curbit, \curbit, #12
46 cmp \divisor, \result, lsr #2 46 cmp \divisor, \result, lsr #2
47 movls \result,\result, lsr #2
47 subls \curbit, \curbit, #6 48 subls \curbit, \curbit, #6
48 @ calculation is only done down to shift=2, because the shift=1 step 49 cmp \divisor, \result, lsr #1
49 @ would need 3 more cycles, but would only gain 1.5 cycles on average 50 subls \curbit, \curbit, #3
50 mov \result, #0 51 mov \result, #0
51 add pc, pc, \curbit, lsl #2 52 add pc, pc, \curbit, lsl #2
52 nop 53 nop