[FFmpeg-devel] [PATCH 6/6] truehd: add hand-scheduled ARM asm version of ff_mlp_pack_output.

Clément Bœsch u at pkh.me
Thu Mar 20 10:41:59 CET 2014


On Wed, Mar 19, 2014 at 05:26:21PM +0000, Ben Avison wrote:
> Profiling results for overall decode and the output_data function in
> particular are as follows:
> 
>               Before          After
>               Mean   StdDev   Mean   StdDev  Confidence  Change
> 6:2 total     339.6  15.1     329.3  16.0    95.8%       +3.1%  (insignificant)
> 6:2 function  24.6   6.0      9.9    3.1     100.0%      +148.5%
> 8:2 total     324.5  15.5     323.6  14.3    15.2%       +0.3%  (insignificant)
> 8:2 function  20.4   3.9      9.9    3.4     100.0%      +104.7%
> 6:6 total     572.8  20.6     539.9  24.2    100.0%      +6.1%
> 6:6 function  54.5   5.6      16.0   3.8     100.0%      +240.9%
> 8:8 total     741.5  21.2     702.5  18.5    100.0%      +5.6%
> 8:8 function  63.9   7.6      18.4   4.8     100.0%      +247.3%
> 
> The assembly version has also been tested with a fuzz tester to ensure that
> any combinations of inputs not exercised by my available test streams still
> generate mathematically identical results to the C version.
> ---
>  libavcodec/arm/mlpdsp_arm.S      |  503 ++++++++++++++++++++++++++++++++++++++
>  libavcodec/arm/mlpdsp_init_arm.c |   64 +++++
>  2 files changed, 567 insertions(+), 0 deletions(-)
> 
> diff --git a/libavcodec/arm/mlpdsp_arm.S b/libavcodec/arm/mlpdsp_arm.S
> index 8d84b00..85524b1 100644
> --- a/libavcodec/arm/mlpdsp_arm.S
> +++ b/libavcodec/arm/mlpdsp_arm.S
> @@ -98,6 +98,26 @@ A .endif
>   .endif
>  .endm
>  
> +.macro loadregoffsh2  group, index, base, offgroup, offindex
> +       .altmacro
> +       loadregoffsh2_ \group, %(\index), \base, \offgroup, %(\offindex)
> +       .noaltmacro
> +.endm
> +
> +.macro loadregoffsh2_ group, index, base, offgroup, offindex
> +        ldr     \group\index, [\base, \offgroup\offindex, lsl #2]
> +.endm
> +
> +.macro eorlslreg  check, data, group, index
> +        .altmacro
> +        eorlslreg_ \check, \data, \group, %(\index)
> +        .noaltmacro
> +.endm
> +
> +.macro eorlslreg_ check, data, group, index
> +        eor     \check, \check, \data, lsl \group\index
> +.endm
> +

These 2 macros look like they are just 1 instruction each. They should be
inlined if possible, it's really unnecessary obfuscation.

[...]

-- 
Clément B.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20140320/8889f0b2/attachment.asc>


More information about the ffmpeg-devel mailing list