From 0eb6ae938ea11e3db28b98be0dd524aee31a8dd3 Mon Sep 17 00:00:00 2001 From: Jens Arnold Date: Wed, 5 Nov 2008 07:36:39 +0000 Subject: 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 --- apps/codecs/lib/udiv32_armv4.S | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'apps') 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 @@ .macro ARM_DIV_BODY dividend, divisor, result, curbit mov \result, \dividend - mov \curbit, #90 @ 3 * 30, (calculating branch dest) + mov \curbit, #93 @ 3 * 31, (calculating branch dest) cmp \divisor, \result, lsr #16 movls \result,\result, lsr #16 subls \curbit, \curbit, #48 @@ -44,9 +44,10 @@ movls \result,\result, lsr #4 subls \curbit, \curbit, #12 cmp \divisor, \result, lsr #2 + movls \result,\result, lsr #2 subls \curbit, \curbit, #6 - @ calculation is only done down to shift=2, because the shift=1 step - @ would need 3 more cycles, but would only gain 1.5 cycles on average + cmp \divisor, \result, lsr #1 + subls \curbit, \curbit, #3 mov \result, #0 add pc, pc, \curbit, lsl #2 nop -- cgit v1.2.3