From 0e0a9ca04822f7d3ce0792f5cec3be7b2c738f9a Mon Sep 17 00:00:00 2001 From: Shiyou Yin Date: Wed, 29 Jul 2020 18:10:59 +0800 Subject: [PATCH] avutil/mips/generic_macros_msa: Fix prob that 'ulw' and 'uld' unsupported by clang. GCC support these two synthesized instruction, but clang does not yet. Use machine instruction instead to adapt clang compiler. Signed-off-by: Michael Niedermayer --- libavutil/mips/generic_macros_msa.h | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/libavutil/mips/generic_macros_msa.h b/libavutil/mips/generic_macros_msa.h index 267d4e6ca5..bb25e9fd74 100644 --- a/libavutil/mips/generic_macros_msa.h +++ b/libavutil/mips/generic_macros_msa.h @@ -111,10 +111,11 @@ uint32_t val_lw_m; \ \ __asm__ volatile ( \ - "ulw %[val_lw_m], %[psrc_lw_m] \n\t" \ + "lwr %[val_lw_m], 0(%[psrc_lw_m]) \n\t" \ + "lwl %[val_lw_m], 3(%[psrc_lw_m]) \n\t" \ \ - : [val_lw_m] "=r" (val_lw_m) \ - : [psrc_lw_m] "m" (*psrc_lw_m) \ + : [val_lw_m] "=&r"(val_lw_m) \ + : [psrc_lw_m] "r"(psrc_lw_m) \ ); \ \ val_lw_m; \ @@ -127,10 +128,11 @@ uint64_t val_ld_m = 0; \ \ __asm__ volatile ( \ - "uld %[val_ld_m], %[psrc_ld_m] \n\t" \ + "ldr %[val_ld_m], 0(%[psrc_ld_m]) \n\t" \ + "ldl %[val_ld_m], 7(%[psrc_ld_m]) \n\t" \ \ - : [val_ld_m] "=r" (val_ld_m) \ - : [psrc_ld_m] "m" (*psrc_ld_m) \ + : [val_ld_m] "=&r" (val_ld_m) \ + : [psrc_ld_m] "r" (psrc_ld_m) \ ); \ \ val_ld_m; \