[FFmpeg-devel] [PATCH 3/5] x86: hevc_mc: save 1 gpr in epel filter loading

Christophe Gisquet christophe.gisquet at gmail.com
Mon Feb 16 10:43:26 CET 2015


Hi,

2015-02-16 4:51 GMT+01:00 Michael Niedermayer <michaelni at gmx.at>:
> On Sat, Feb 07, 2015 at 06:49:38PM +0000, Christophe Gisquet wrote:
>> The 3*stride value stored in r3src can be loaded much later,
>> so use r3src instead of a dedicated gpr when possible.
>> ---
>>  libavcodec/x86/hevc_mc.asm | 65 ++++++++++++++++++++++------------------------
>>  1 file changed, 31 insertions(+), 34 deletions(-)
>
> This seems to crash fate-hevc-conformance-AMP_D_Hisilicon and
> others, didnt had time to look at why

Can't test at the moment, but I guess the issue is in the !PIC case where:

>  %ifdef PIC
> -    lea         rfilterq, [%%table]
> +    lea           r3srcq, [%%table]
>  %else
>      %define rfilterq %%table
>  %endif
> @@ -187,9 +184,8 @@ QPEL_TABLE 10, 8, w, avx2
>      sub              myq, 1
>      shl              mxq, %%shift                ; multiply by 32
>      shl              myq, %%shift                ; multiply by 32
> -    mova             m14, [rfilterq + mxq]        ; get 2 first values of filters
> -    mova             m15, [rfilterq + mxq+%%offset]     ; get 2 last values of filters
> -    lea           r3srcq, [srcstrideq*3]
> +    mova             m14, [r3srcq + mxq]        ; get 2 first values of filters
> +    mova             m15, [r3srcq + mxq+%%offset]     ; get 2 last values of filters

Obviously I shouldn't unconditionally use r3srcq or equivalent, as
!PIC just directly access the %%table
I probably need to define an intermediate, say TABLE, which is either
r3srcq or %%table, and use it for loading the xmm regs.

-- 
Christophe


More information about the ffmpeg-devel mailing list