arm: add ff_int32_to_float_fmul_array8_neon
authorJanne Grunau <janne-libav@jannau.net>
Thu, 3 Dec 2015 15:17:32 +0000 (16:17 +0100)
committerJanne Grunau <janne-libav@jannau.net>
Mon, 14 Dec 2015 15:45:02 +0000 (16:45 +0100)
commit90b1b9350c0a97c4065ae9054b83e57f48a0de1f
tree96a67450ae3b647de6c9da7de87f9724d8b834b3
parenta0fc780a2093784e8664f88205ee1b215e109cee
arm: add ff_int32_to_float_fmul_array8_neon

Quite a bit faster than int32_to_float_fmul_array8_c calling
ff_int32_to_float_fmul_scalar_neon through FmtConvertContext.
Number of cycles per int32_to_float_fmul_array8 call while decoding
padded.dts on exynos5422:

               before  after   change
cortex-a7:     1270     951    -25%
cortex-a15:     434     285    -34%

checkasm --bench cycle counts:     cortex-a15   cortex-a7
int32_to_float_fmul_array8_c:      1730.4       4384.5
int32_to_float_fmul_array8_neon_c:  571.5       1694.3
int32_to_float_fmul_array8_neon:    374.0       1448.8

Interesting are the differences between
int32_to_float_fmul_array8_neon_c and int32_to_float_fmul_array8_neon.
The former is current behaviour of calling
ff_int32_to_float_fmul_scalar_neon repeatedly from the c function,
The raw numbers differ since checkasm uses different lengths than the
dca decoder.
libavcodec/arm/fmtconvert_init_arm.c
libavcodec/arm/fmtconvert_neon.S