Eliminate unused C DSP functions at compile time
By inlining dav1d_get_cpu_flags()
and the arch-specific DSP init functions in combination with assigning baseline CPU flags at compile time to match the compiler flags we can have the compiler perform dead code elimination of redundant C functions and function pointer assignments.
Requires use of __attribute__((always_inline))
to ensure that inlining decisions are performed prior to dead code elimination.
Enabled by default when compiling in release mode, but can be explicitly enabled or disabled.
One caveat is that this feature needs to be disabled for checkasm to function, as it requires having the C DSP functions available as references in order to verify the correctness of the assembly code.
Binary size comparison of the stripped shared library on x86-64:
Clang GCC
x86
old 1923584 2009088
sse2 1883136 1967616
ssse3 1698304 1717760
avx2 1658368 1672704
aarch64
old 876856
neon 700728
armv7
old 664068
neon 586212
Partially addresses #391.