Chromium Code Reviews| Index: include/libyuv/macros_msa.h |
| diff --git a/include/libyuv/macros_msa.h b/include/libyuv/macros_msa.h |
| index 9be804e11cb3514a32170cbb6274a88dbf8990da..53de2b8a39599f934282e4a62bdbff82100a8f95 100644 |
| --- a/include/libyuv/macros_msa.h |
| +++ b/include/libyuv/macros_msa.h |
| @@ -50,6 +50,42 @@ |
| val_m; \ |
| }) |
| #endif // (__mips == 64) |
| + |
| +#define SW(val, pdst) \ |
| + ({ \ |
| + uint8_t* pdst_sw_m = (uint8_t*)(pdst); \ |
| + uint32_t val_m = (val); \ |
| + \ |
|
fbarchard1
2016/12/12 19:59:18
remove blank lines from macros.
manojkumar.bhosale
2016/12/13 08:52:22
Done.
|
| + asm volatile("sw %[val_m], %[pdst_sw_m] \n\t" \ |
| + \ |
| + : [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\t" \ |
| + \ |
| + : [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) \ |
| ({ \ |
| @@ -85,6 +121,29 @@ |
| 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\t" \ |
|
fbarchard1
2016/12/12 19:59:18
remove \t ? I've never found it necessary.
manojkumar.bhosale
2016/12/13 08:52:22
Done.
|
| + \ |
| + : [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. |