[FFmpeg-devel] [PATCH v3 1/4] avutil/mips: Use MMI_{L, S}QC1 macro in {SAVE, RECOVER}_REG

殷时友 yinshiyou-hf at loongson.cn
Wed Jul 28 04:44:34 EEST 2021



> 2021年7月23日 下午1:53,Jiaxun Yang <jiaxun.yang at flygoat.com> 写道:
> 
> {SAVE,RECOVER}_REG will be available for Loongson2 again,
> also comment about the magic.
> 
> Signed-off-by: Jiaxun Yang <jiaxun.yang at flygoat.com>
> Reviewed-by: Shiyou Yin <yinshiyou-hf at loongson.cn>
> ---
> libavutil/mips/mmiutils.h | 32 +++++++++++++++++---------------
> 1 file changed, 17 insertions(+), 15 deletions(-)
> 
> diff --git a/libavutil/mips/mmiutils.h b/libavutil/mips/mmiutils.h
> index 6a82caa908..41715c6490 100644
> --- a/libavutil/mips/mmiutils.h
> +++ b/libavutil/mips/mmiutils.h
> @@ -204,25 +204,27 @@
> #endif /* HAVE_LOONGSON2 */
> 
> /**
> - * backup register
> + * Backup saved registers
> + * We're not using compiler's clobber list as it's not smart enough
> + * to take advantage of quad word load/store.
>  */
> #define BACKUP_REG \
>   LOCAL_ALIGNED_16(double, temp_backup_reg, [8]);               \
>   if (_MIPS_SIM == _ABI64)                                      \
>     __asm__ volatile (                                          \
> -      "gssqc1       $f25,      $f24,       0x00(%[temp])  \n\t" \
> -      "gssqc1       $f27,      $f26,       0x10(%[temp])  \n\t" \
> -      "gssqc1       $f29,      $f28,       0x20(%[temp])  \n\t" \
> -      "gssqc1       $f31,      $f30,       0x30(%[temp])  \n\t" \
> +      MMI_SQC1($f25, $f24, %[temp], 0x00)                       \
> +      MMI_SQC1($f27, $f26, %[temp], 0x10)                       \
> +      MMI_SQC1($f29, $f28, %[temp], 0x20)                       \
> +      MMI_SQC1($f31, $f30, %[temp], 0x30)                       \
>       :                                                         \
>       : [temp]"r"(temp_backup_reg)                              \
>       : "memory"                                                \
>     );                                                          \
>   else                                                          \
>     __asm__ volatile (                                          \
> -      "gssqc1       $f22,      $f20,       0x00(%[temp])  \n\t" \
> -      "gssqc1       $f26,      $f24,       0x10(%[temp])  \n\t" \
> -      "gssqc1       $f30,      $f28,       0x20(%[temp])  \n\t" \
> +      MMI_SQC1($f22, $f20, %[temp], 0x10)                       \
> +      MMI_SQC1($f26, $f24, %[temp], 0x10)                       \
> +      MMI_SQC1($f30, $f28, %[temp], 0x20)                       \
>       :                                                         \
>       : [temp]"r"(temp_backup_reg)                              \
>       : "memory"                                                \
> @@ -234,19 +236,19 @@
> #define RECOVER_REG \
>   if (_MIPS_SIM == _ABI64)                                      \
>     __asm__ volatile (                                          \
> -      "gslqc1       $f25,      $f24,       0x00(%[temp])  \n\t" \
> -      "gslqc1       $f27,      $f26,       0x10(%[temp])  \n\t" \
> -      "gslqc1       $f29,      $f28,       0x20(%[temp])  \n\t" \
> -      "gslqc1       $f31,      $f30,       0x30(%[temp])  \n\t" \
> +      MMI_LQC1($f25, $f24, %[temp], 0x00)                       \
> +      MMI_LQC1($f27, $f26, %[temp], 0x10)                       \
> +      MMI_LQC1($f29, $f28, %[temp], 0x20)                       \
> +      MMI_LQC1($f31, $f30, %[temp], 0x30)                       \
>       :                                                         \
>       : [temp]"r"(temp_backup_reg)                              \
>       : "memory"                                                \
>     );                                                          \
>   else                                                          \
>     __asm__ volatile (                                          \
> -      "gslqc1       $f22,      $f20,       0x00(%[temp])  \n\t" \
> -      "gslqc1       $f26,      $f24,       0x10(%[temp])  \n\t" \
> -      "gslqc1       $f30,      $f28,       0x20(%[temp])  \n\t" \
> +      MMI_LQC1($f22, $f20, %[temp], 0x10)                       \
> +      MMI_LQC1($f26, $f24, %[temp], 0x10)                       \
> +      MMI_LQC1($f30, $f28, %[temp], 0x20)                       \
>       :                                                         \
>       : [temp]"r"(temp_backup_reg)                              \
>       : "memory"                                                \
> -- 
> 2.32.0

LGTM


More information about the ffmpeg-devel mailing list