<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rockbox/apps/codecs/lib/udiv32_armv4.S, branch master</title>
<subtitle>My Rockbox tree</subtitle>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/'/>
<entry>
<title>Improvements to specialized dividers for APE codec:</title>
<updated>2010-01-28T02:28:52+00:00</updated>
<author>
<name>Andrew Mahone</name>
<email>andrew.mahone@gmail.com</email>
</author>
<published>2010-01-28T02:28:52+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=e76f30a57c25a3ae762fc48218e57bc46dff4410'/>
<id>e76f30a57c25a3ae762fc48218e57bc46dff4410</id>
<content type='text'>
* Use Newton-Raphson divider on ARMv5e and ARMv6, about 7% speedup on Gigabeat S.
* On ARMv4 targets using IRAM, remove insane filter buffer from IRAM, fill available IRAM with LUT of reciprocals for small divisors - speedup varies according to target and available IRAM, APE normal sample is approx. 109% RT on e200.
* Rename apps/codecs/lib/udiv32_armv4.S to apps/codecs/lib/udiv32_arm.S, which includes dividers for all ARM targets specialized for APE.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24354 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Use Newton-Raphson divider on ARMv5e and ARMv6, about 7% speedup on Gigabeat S.
* On ARMv4 targets using IRAM, remove insane filter buffer from IRAM, fill available IRAM with LUT of reciprocals for small divisors - speedup varies according to target and available IRAM, APE normal sample is approx. 109% RT on e200.
* Rename apps/codecs/lib/udiv32_armv4.S to apps/codecs/lib/udiv32_arm.S, which includes dividers for all ARM targets specialized for APE.


git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24354 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>Invert divisor earlier in udiv32_arm, allowing the div0 test to be done before entering the 32-bit divide portion of the code, and making the handling of div0 simpler.</title>
<updated>2010-01-03T15:57:03+00:00</updated>
<author>
<name>Andrew Mahone</name>
<email>andrew.mahone@gmail.com</email>
</author>
<published>2010-01-03T15:57:03+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=5313bf52b54c7a02222b1787f8432f43a76e0056'/>
<id>5313bf52b54c7a02222b1787f8432f43a76e0056</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24166 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24166 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>Use long jump to reach __div0 from udiv32_arm if building with IRAM and without EABI.</title>
<updated>2010-01-03T04:48:19+00:00</updated>
<author>
<name>Andrew Mahone</name>
<email>andrew.mahone@gmail.com</email>
</author>
<published>2010-01-03T04:48:19+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=686c4e53ceaa3932224ed512b37b1e4fb10a247e'/>
<id>686c4e53ceaa3932224ed512b37b1e4fb10a247e</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24152 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24152 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>More comments for udiv32_armv4.S, reduce zero divisor test to one cycle for the skipped branch by setting flags when inverting divisor, 32-bit numerators are handled by calling the 31-bit divider and fixing the results.</title>
<updated>2010-01-03T04:30:13+00:00</updated>
<author>
<name>Andrew Mahone</name>
<email>andrew.mahone@gmail.com</email>
</author>
<published>2010-01-03T04:30:13+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=c1f4d4037a8be88ebb94a5c28eba0f394efe623a'/>
<id>c1f4d4037a8be88ebb94a5c28eba0f394efe623a</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24151 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24151 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>Add missing EOF newline.</title>
<updated>2010-01-02T15:25:34+00:00</updated>
<author>
<name>Andrew Mahone</name>
<email>andrew.mahone@gmail.com</email>
</author>
<published>2010-01-02T15:25:34+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=d03768bc14da12f940f01993bb6df1ffd8935fe7'/>
<id>d03768bc14da12f940f01993bb6df1ffd8935fe7</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24143 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24143 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove special cases from udiv32_armv4.S, except for zero divisor and large numerator. Improvement of 1.23MHz on e200 with ape normal.</title>
<updated>2010-01-02T15:15:21+00:00</updated>
<author>
<name>Andrew Mahone</name>
<email>andrew.mahone@gmail.com</email>
</author>
<published>2010-01-02T15:15:21+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=934514558b685ebd82681a07b4e25c61207af0a7'/>
<id>934514558b685ebd82681a07b4e25c61207af0a7</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24142 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24142 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>Add 31/31-bit unsigned division in apps/codecs/lib/udiv_arm.S, with 2 cycles / iteration, falling back to previous 32-bit, 3 cycle / iteration code when needed (well under 1% of divisions in sample file). APE normal sample is now 96.90% realtime, approx 1.3% improved vs svn. TODO: unify divisor normalization for both trial subtraction routines, possibly use divisor bits to select 31- vs 32-bit division.</title>
<updated>2009-12-31T08:32:15+00:00</updated>
<author>
<name>Andrew Mahone</name>
<email>andrew.mahone@gmail.com</email>
</author>
<published>2009-12-31T08:32:15+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=822abc12360900030323560b92a440f425b5641a'/>
<id>822abc12360900030323560b92a440f425b5641a</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24130 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24130 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>ARMv4 unsigned integer division: Using an overflow-safe comparison method in the main calculation allows to put back the 1.5 cyle (average) optimisation. Shaved off another instruction, as we don't need the remainder. * Use the very efficient ffs algorithm from ffs-arm.S for dividing by a power of 2.</title>
<updated>2008-11-06T21:21:33+00:00</updated>
<author>
<name>Jens Arnold</name>
<email>amiconn@rockbox.org</email>
</author>
<published>2008-11-06T21:21:33+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=545b51e2e46db6e9c6dd59ef45f73cc86529bace'/>
<id>545b51e2e46db6e9c6dd59ef45f73cc86529bace</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19032 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19032 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>This optimisation breaks for very large divisors (MSB set), so remove it.</title>
<updated>2008-11-05T07:36:39+00:00</updated>
<author>
<name>Jens Arnold</name>
<email>amiconn@rockbox.org</email>
</author>
<published>2008-11-05T07:36:39+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=0eb6ae938ea11e3db28b98be0dd524aee31a8dd3'/>
<id>0eb6ae938ea11e3db28b98be0dd524aee31a8dd3</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19012 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19012 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
<entry>
<title>Further optimised (vs. libgcc) unsigned 32 bit division for ARMv4 (based on the ARMv5(+) version from libgcc), in IRAM on PP for better performance on PP5002, and put into the codeclib for possible reuse. APE -c1000 is now usable on both PP502x and PP5002 (~138% realtime, they're on par now). Gigabeat F/X should also see an APE speedup.</title>
<updated>2008-11-05T00:10:05+00:00</updated>
<author>
<name>Jens Arnold</name>
<email>amiconn@rockbox.org</email>
</author>
<published>2008-11-05T00:10:05+00:00</published>
<link rel='alternate' type='text/html' href='https://www.franklinwei.com/cgit/rockbox/commit/?id=fe04e40be7a26c758a82e410e58be63c1f3d571c'/>
<id>fe04e40be7a26c758a82e410e58be63c1f3d571c</id>
<content type='text'>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19009 a1c6a512-1295-4272-9138-f99709370657
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@19009 a1c6a512-1295-4272-9138-f99709370657
</pre>
</div>
</content>
</entry>
</feed>
