diff options
author | Lexyan <lexyan@lexyan.fr> | 2016-09-03 15:38:08 +0200 |
---|---|---|
committer | Martin Storsjo <martin@martin.st> | 2016-09-10 14:33:39 +0300 |
commit | 1d686c3a23f3ae286ef964ab62199be96e4ad1dc (patch) | |
tree | 34cda9b76dedb7b366ee82f563853a3ca7299ec4 /libFDK/include/fixmul.h | |
parent | a0bd8aa3b6339082fbe9d830264839fa50c0a4b7 (diff) | |
download | fdk-aac-1d686c3a23f3ae286ef964ab62199be96e4ad1dc.tar.gz fdk-aac-1d686c3a23f3ae286ef964ab62199be96e4ad1dc.tar.bz2 fdk-aac-1d686c3a23f3ae286ef964ab62199be96e4ad1dc.zip |
Add aarch64 assembly optimization (ARMv8a 64 bits)
The fixmuldiv functions don't need inline assembly to be fast
in this architecture; the compiler (both clang and GCC) figure
out to use the optimal instructions for this (which is 2 instruction
sequence), and when letting the compiler emit the instructions
instead of using inline assembly, the compiler is able to
interleave those instructions with other instructions,
improving scheduling, making it even faster than when using
inline assembly.
Overall, this gives about 50% speedup.
Diffstat (limited to 'libFDK/include/fixmul.h')
-rw-r--r-- | libFDK/include/fixmul.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libFDK/include/fixmul.h b/libFDK/include/fixmul.h index 39b8d6c..ab978c9 100644 --- a/libFDK/include/fixmul.h +++ b/libFDK/include/fixmul.h @@ -98,6 +98,9 @@ amm-info@iis.fraunhofer.de #if defined(__arm__) #include "arm/fixmul_arm.h" +#elif defined(__aarch64__) || defined(__AARCH64EL__) +#include "aarch64/fixmul_aarch64.h" + #elif defined(__mips__) /* cppp replaced: elif */ #include "mips/fixmul_mips.h" |