| Index: include/libyuv/macros_msa.h
|
| diff --git a/include/libyuv/macros_msa.h b/include/libyuv/macros_msa.h
|
| index 9be804e11cb3514a32170cbb6274a88dbf8990da..a2704ba79e65ee339688c2cbcafd756ee8a88c09 100644
|
| --- a/include/libyuv/macros_msa.h
|
| +++ b/include/libyuv/macros_msa.h
|
| @@ -16,25 +16,25 @@
|
| #include <stdint.h>
|
|
|
| #if (__mips_isa_rev >= 6)
|
| -#define LW(psrc) \
|
| - ({ \
|
| - uint8* psrc_lw_m = (uint8*)(psrc); /* NOLINT */ \
|
| - uint32 val_m; \
|
| - asm volatile("lw %[val_m], %[psrc_lw_m] \n\t" \
|
| - : [val_m] "=r"(val_m) \
|
| - : [psrc_lw_m] "m"(*psrc_lw_m)); \
|
| - val_m; \
|
| +#define LW(psrc) \
|
| + ({ \
|
| + uint8* psrc_lw_m = (uint8*)(psrc); /* NOLINT */ \
|
| + uint32 val_m; \
|
| + asm volatile("lw %[val_m], %[psrc_lw_m] \n" \
|
| + : [val_m] "=r"(val_m) \
|
| + : [psrc_lw_m] "m"(*psrc_lw_m)); \
|
| + val_m; \
|
| })
|
|
|
| #if (__mips == 64)
|
| -#define LD(psrc) \
|
| - ({ \
|
| - uint8* psrc_ld_m = (uint8*)(psrc); /* NOLINT */ \
|
| - uint64 val_m = 0; \
|
| - asm volatile("ld %[val_m], %[psrc_ld_m] \n\t" \
|
| - : [val_m] "=r"(val_m) \
|
| - : [psrc_ld_m] "m"(*psrc_ld_m)); \
|
| - val_m; \
|
| +#define LD(psrc) \
|
| + ({ \
|
| + uint8* psrc_ld_m = (uint8*)(psrc); /* NOLINT */ \
|
| + uint64 val_m = 0; \
|
| + asm volatile("ld %[val_m], %[psrc_ld_m] \n" \
|
| + : [val_m] "=r"(val_m) \
|
| + : [psrc_ld_m] "m"(*psrc_ld_m)); \
|
| + val_m; \
|
| })
|
| #else // !(__mips == 64)
|
| #define LD(psrc) \
|
| @@ -50,26 +50,58 @@
|
| val_m; \
|
| })
|
| #endif // (__mips == 64)
|
| +
|
| +#define SW(val, pdst) \
|
| + ({ \
|
| + uint8_t* pdst_sw_m = (uint8_t*)(pdst); \
|
| + uint32_t val_m = (val); \
|
| + asm volatile("sw %[val_m], %[pdst_sw_m] \n" \
|
| + \
|
| + : [pdst_sw_m] "=m"(*pdst_sw_m) \
|
| + : [val_m] "r"(val_m)); \
|
| + })
|
| +
|
| +#if (__mips == 64)
|
| +#define SD(val, pdst) \
|
| + ({ \
|
| + uint8_t* pdst_sd_m = (uint8_t*)(pdst); \
|
| + uint64_t val_m = (val); \
|
| + asm volatile("sd %[val_m], %[pdst_sd_m] \n" \
|
| + \
|
| + : [pdst_sd_m] "=m"(*pdst_sd_m) \
|
| + : [val_m] "r"(val_m)); \
|
| + })
|
| +#else // !(__mips == 64)
|
| +#define SD(val, pdst) \
|
| + ({ \
|
| + uint8_t* pdst_sd_m = (uint8_t*)(pdst); \
|
| + uint32_t val0_m, val1_m; \
|
| + val0_m = (uint32_t)((val)&0x00000000FFFFFFFF); \
|
| + val1_m = (uint32_t)(((val) >> 32) & 0x00000000FFFFFFFF); \
|
| + SW(val0_m, pdst_sd_m); \
|
| + SW(val1_m, pdst_sd_m + 4); \
|
| + })
|
| +#endif // !(__mips == 64)
|
| #else // !(__mips_isa_rev >= 6)
|
| -#define LW(psrc) \
|
| - ({ \
|
| - uint8* psrc_lw_m = (uint8*)(psrc); /* NOLINT */ \
|
| - uint32 val_m; \
|
| - asm volatile("ulw %[val_m], %[psrc_lw_m] \n\t" \
|
| - : [val_m] "=r"(val_m) \
|
| - : [psrc_lw_m] "m"(*psrc_lw_m)); \
|
| - val_m; \
|
| +#define LW(psrc) \
|
| + ({ \
|
| + uint8* psrc_lw_m = (uint8*)(psrc); /* NOLINT */ \
|
| + uint32 val_m; \
|
| + asm volatile("ulw %[val_m], %[psrc_lw_m] \n" \
|
| + : [val_m] "=r"(val_m) \
|
| + : [psrc_lw_m] "m"(*psrc_lw_m)); \
|
| + val_m; \
|
| })
|
|
|
| #if (__mips == 64)
|
| -#define LD(psrc) \
|
| - ({ \
|
| - uint8* psrc_ld_m = (uint8*)(psrc); /* NOLINT */ \
|
| - uint64 val_m = 0; \
|
| - asm volatile("uld %[val_m], %[psrc_ld_m] \n\t" \
|
| - : [val_m] "=r"(val_m) \
|
| - : [psrc_ld_m] "m"(*psrc_ld_m)); \
|
| - val_m; \
|
| +#define LD(psrc) \
|
| + ({ \
|
| + uint8* psrc_ld_m = (uint8*)(psrc); /* NOLINT */ \
|
| + uint64 val_m = 0; \
|
| + asm volatile("uld %[val_m], %[psrc_ld_m] \n" \
|
| + : [val_m] "=r"(val_m) \
|
| + : [psrc_ld_m] "m"(*psrc_ld_m)); \
|
| + val_m; \
|
| })
|
| #else // !(__mips == 64)
|
| #define LD(psrc) \
|
| @@ -85,6 +117,25 @@
|
| val_m; \
|
| })
|
| #endif // (__mips == 64)
|
| +
|
| +#define SW(val, pdst) \
|
| + ({ \
|
| + uint8_t* pdst_sw_m = (uint8_t*)(pdst); \
|
| + uint32_t val_m = (val); \
|
| + asm volatile("usw %[val_m], %[pdst_sw_m] \n" \
|
| + : [pdst_sw_m] "=m"(*pdst_sw_m) \
|
| + : [val_m] "r"(val_m)); \
|
| + })
|
| +
|
| +#define SD(val, pdst) \
|
| + ({ \
|
| + uint8_t* pdst_sd_m = (uint8_t*)(pdst); \
|
| + uint32_t val0_m, val1_m; \
|
| + val0_m = (uint32_t)((val)&0x00000000FFFFFFFF); \
|
| + val1_m = (uint32_t)(((val) >> 32) & 0x00000000FFFFFFFF); \
|
| + SW(val0_m, pdst_sd_m); \
|
| + SW(val1_m, pdst_sd_m + 4); \
|
| + })
|
| #endif // (__mips_isa_rev >= 6)
|
|
|
| // TODO(fbarchard): Consider removing __VAR_ARGS versions.
|
|
|