> 2021年7月23日 下午1:53,Jiaxun Yang <jiaxun.y...@flygoat.com> 写道:
> 
> wsbh is only avilable for MIPS R2+.
> Provide a fallback for older processors.
> 
> Signed-off-by: Jiaxun Yang <jiaxun.y...@flygoat.com>
> Reviewed-by: Shiyou Yin <yinshiyou...@loongson.cn>
> ---
> libavcodec/mips/cabac.h | 24 ++++++++++++++++++++++++
> 1 file changed, 24 insertions(+)
> 
> diff --git a/libavcodec/mips/cabac.h b/libavcodec/mips/cabac.h
> index f1e953dabe..39c308c7e0 100644
> --- a/libavcodec/mips/cabac.h
> +++ b/libavcodec/mips/cabac.h
> @@ -77,7 +77,15 @@ static av_always_inline int 
> get_cabac_inline_mips(CABACContext *c,
>         "lhu          %[tmp0],       0(%[c_bytestream])            \n\t"
> #else
>         "lhu          %[tmp0],       0(%[c_bytestream])            \n\t"
> +#if HAVE_MIPS32R2 || HAVE_MIPS64R2
>         "wsbh         %[tmp0],       %[tmp0]                       \n\t"
> +#else
> +        "and          %[tmp1],      %[tmp0],         0xff00ff00    \n\t"
> +        "srl          %[tmp1],      %[tmp1],         8             \n\t"
> +        "and          %[tmp0],      %[tmp0],         0x00ff00ff    \n\t"
> +        "sll          %[tmp0],      %[tmp0],         8             \n\t"
> +        "or           %[tmp0],      %[tmp0],         %[tmp1]       \n\t"
> +#endif
> #endif
>         PTR_SLL      "%[tmp0],       %[tmp0],        0x01          \n\t"
>         PTR_SUBU     "%[tmp0],       %[tmp0],        %[cabac_mask] \n\t"
> @@ -125,7 +133,15 @@ static av_always_inline int 
> get_cabac_bypass_mips(CABACContext *c)
>         "lhu        %[tmp1],         0(%[c_bytestream])                   
> \n\t"
> #else
>         "lhu        %[tmp1],         0(%[c_bytestream])                   
> \n\t"
> +#if HAVE_MIPS32R2 || HAVE_MIPS64R2
>         "wsbh       %[tmp1],         %[tmp1]                              
> \n\t"
> +#else
> +        "and        %[tmp0],         %[tmp1],         0xff00ff00          
> \n\t"
> +        "srl        %[tmp0],         %[tmp0],         8                   
> \n\t"
> +        "and        %[tmp1],         %[tmp1],         0x00ff00ff          
> \n\t"
> +        "sll        %[tmp1],         %[tmp1],         8                   
> \n\t"
> +        "or         %[tmp1],         %[tmp1],         %[tmp0]             
> \n\t"
> +#endif
> #endif
>         PTR_SLL    "%[tmp1],         %[tmp1],         0x01                
> \n\t"
>         PTR_SUBU   "%[tmp1],         %[tmp1],         %[cabac_mask]       
> \n\t"
> @@ -169,7 +185,15 @@ static av_always_inline int 
> get_cabac_bypass_sign_mips(CABACContext *c, int val)
>         "lhu        %[tmp1],         0(%[c_bytestream])                   
> \n\t"
> #else
>         "lhu        %[tmp1],         0(%[c_bytestream])                   
> \n\t"
> +#if HAVE_MIPS32R2 || HAVE_MIPS64R2
>         "wsbh       %[tmp1],         %[tmp1]                              
> \n\t"
> +#else
> +        "and        %[tmp0],         %[tmp1],         0xff00ff00          
> \n\t"
> +        "srl        %[tmp0],         %[tmp0],         8                   
> \n\t"
> +        "and        %[tmp1],         %[tmp1],         0x00ff00ff          
> \n\t"
> +        "sll        %[tmp1],         %[tmp1],         8                   
> \n\t"
> +        "or         %[tmp1],         %[tmp1],         %[tmp0]             
> \n\t"
> +#endif
> #endif
>         PTR_SLL    "%[tmp1],         %[tmp1],         0x01                
> \n\t"
>         PTR_SUBU   "%[tmp1],         %[tmp1],         %[cabac_mask]       
> \n\t"
> -- 
> 2.32.0

LGTM
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to