summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorAndrew Mahone <andrew.mahone@gmail.com>2010-02-20 06:29:23 +0000
committerAndrew Mahone <andrew.mahone@gmail.com>2010-02-20 06:29:23 +0000
commit950b2dfa2c42e6d8e0d1af546efb9368d5b89dc3 (patch)
tree992c34a5a572cf1a3ede22849a64c8e2f3405091 /apps
parent3716abba9274f544dd31cdf4e6c83a845bf2a801 (diff)
downloadrockbox-950b2dfa2c42e6d8e0d1af546efb9368d5b89dc3.tar.gz
rockbox-950b2dfa2c42e6d8e0d1af546efb9368d5b89dc3.zip
Clarify comments in ARMv6 divider regarding special-case handling of large (high bit set) numerators.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24783 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/codecs/demac/libdemac/udiv32_arm.S10
1 files changed, 6 insertions, 4 deletions
diff --git a/apps/codecs/demac/libdemac/udiv32_arm.S b/apps/codecs/demac/libdemac/udiv32_arm.S
index 939fce17d4..10c0731db1 100644
--- a/apps/codecs/demac/libdemac/udiv32_arm.S
+++ b/apps/codecs/demac/libdemac/udiv32_arm.S
@@ -234,10 +234,12 @@ udiv32_arm:
mul \inv, \divisor, \neg
smlawt \divisor, \divisor, \inv, \divisor
mul \inv, \divisor, \neg
- /* This will save a cycle on ARMv6, but does not produce a correct result
- if numerator sign bit is set. This case accounts for about 1 in 10^7 of
- divisions, done by the APE decoder, so we specialize for the more common
- case and handle the uncommon large-numerator separately */
+ /* This will save a cycle on ARMv6, but requires that the numerator sign
+ bit is not set (that of inv is guaranteed unset). The branch should
+ predict very well, making it typically 1 cycle, and thus both the branch
+ and test fill delay cycles for the multiplies. Based on logging of
+ numerator sizes in the APE codec, the branch is taken about 1/10^7 of
+ the time. */
#if ARM_ARCH >= 6
tst \numerator, \numerator
smmla \divisor, \divisor, \inv, \divisor