FS#10943 - Optimized replacements for libgcc dividers, clz on ARM.

Attached to Project: Rockbox
Opened by Andrew Mahone (Unhelpful) - Saturday, 30 January 2010, 09:25 GMT
Last edited by Andrew Mahone (Unhelpful) - Monday, 01 February 2010, 01:37 GMT
Task Type Patches
Category Operating System/Drivers
Status Closed
Assigned To No-one
Operating System All players
Severity Low
Priority Normal
Reported Version Release 3.4
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No


This patch aims to replace libgcc's signed and unsigned 32-bit division functions on ARM with faster (and on ARMv5+, also smaller) functions. CLZ is also replaced on ARMv4. Binsize increases about 300B on ARMv4, decreases about 600B on ARMv5+. Deltas will be better with EABI, which uses a div and a divmod support funtion, as divmod performs well enough for div to be aliased to it. The functions are included in libfirmware, libplugin, and libcodec, causing them to replace libgcc functions. As the new divider is the same as the one used by the APE codec on ARMv5+, APE no longer uses a specialized divider on these targets unless iram is used.
This task depends upon

Closed by  Andrew Mahone (Unhelpful)
Monday, 01 February 2010, 01:37 GMT
Reason for closing:  Accepted
Additional comments about closing:  Committed as r24432.