|
This was my first time writing ARM assembly, so it may not be the
best; but they're still significantly faster than the optimized
C versions[1] of the functions replace.
An knowledgable ARM coder should be able to make better
optimizations, but nobody has done so for FLAC yet (at least not
publicly, to my knowledge), so I decided to take a stab at it.
Also tweaked configure.in a bit to better support
cross-compilation. no longer enable 3dnow, sse, or altivec
optimizations unless our CPU supports them. (note: sse and
3dnow are supported by 64-bit chips, but the code is currently
only optimized for 32-bit sse and 3dnow).
FLAC__fixed_restore_signal_asm_arm and
FLAC__lpc_restore_signal_asm_arm are pretty well-tested from
tracks in my music collection. I do not think I have any music
that can exersises FLAC__lpc_restore_signal_asm_arm_wide
(especially the 64-bit ASR macro).
These optimizations changes result in an approximately 20%
reduction in decoding time on my 3rd generation ipod (running
ipodlinux).
[1] - I still have them at hand, but they're not probably not
worth it for the non-ASM optimized architectures.
|