[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