Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Unified Diff: include/libyuv/macros_msa.h

Issue 2430313005: Add MSA optimized I422ToARGBRow_MSA and I422ToRGBARow_MSA functions (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | include/libyuv/row.h » ('j') | source/row_msa.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: include/libyuv/macros_msa.h
diff --git a/include/libyuv/macros_msa.h b/include/libyuv/macros_msa.h
index 8a81e8213afba38737e1d8def52ac7c47b25139f..7109fbab111325254d796e570213458ff731a2d8 100644
--- a/include/libyuv/macros_msa.h
+++ b/include/libyuv/macros_msa.h
@@ -15,6 +15,98 @@
#include <stdint.h>
#include <msa.h>
+#if (__mips_isa_rev >= 6)
+ #define LW(psrc) ( { \
+ uint8 *psrc_lw_m = (uint8 *) (psrc); \
+ uint32 val_m; \
+ \
+ asm volatile ( \
+ "lw %[val_m], %[psrc_lw_m] \n\t" \
+ \
fbarchard1 2016/10/24 17:36:31 remove blank line
+ : [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); \
+ 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; \
+ } )
+ #else // !(__mips == 64)
+ #define LD(psrc) ( { \
+ uint8 *psrc_ld_m = (uint8 *) (psrc); \
+ uint32 val0_m, val1_m; \
+ uint64 val_m = 0; \
+ \
+ val0_m = LW(psrc_ld_m); \
+ val1_m = LW(psrc_ld_m + 4); \
+ \
+ val_m = (uint64) (val1_m); \
+ val_m = (uint64) ((val_m << 32) & 0xFFFFFFFF00000000); \
+ val_m = (uint64) (val_m | (uint64) val0_m); \
+ \
+ val_m; \
+ } )
+ #endif // (__mips == 64)
+#else // !(__mips_isa_rev >= 6)
+ #define LW(psrc) ( { \
+ uint8 *psrc_lw_m = (uint8 *) (psrc); \
+ 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; \
+ } )
+
+ #if (__mips == 64)
+ #define LD(psrc) ( { \
+ uint8 *psrc_ld_m = (uint8 *) (psrc); \
+ 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; \
+ } )
+ #else // !(__mips == 64)
+ #define LD(psrc) ( { \
+ uint8 *psrc_ld_m = (uint8 *) (psrc); \
+ uint32 val0_m, val1_m; \
+ uint64 val_m = 0; \
+ \
+ val0_m = LW(psrc_ld_m); \
+ val1_m = LW(psrc_ld_m + 4); \
+ \
+ val_m = (uint64) (val1_m); \
+ val_m = (uint64) ((val_m << 32) & 0xFFFFFFFF00000000); \
+ val_m = (uint64) (val_m | (uint64) val0_m); \
+ \
+ val_m; \
+ } )
+ #endif // (__mips == 64)
+#endif // (__mips_isa_rev >= 6)
+
#define LD_B(RTYPE, psrc) *((RTYPE*)(psrc)) /* NOLINT */
#define LD_UB(...) LD_B(v16u8, __VA_ARGS__)
« no previous file with comments | « no previous file | include/libyuv/row.h » ('j') | source/row_msa.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698