Ignore:
Timestamp:
Jul 28, 2017 2:51:44 AM (7 years ago)
Author:
nanang
Message:

Re #2004: Update libyuv version from libyuv git master repo dated 27 July 2017, the compile errors on old gcc versions issue persists though.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/third_party/yuv/include/libyuv/row.h

    r5358 r5633  
    99 */ 
    1010 
    11 #ifndef INCLUDE_LIBYUV_ROW_H_  // NOLINT 
     11#ifndef INCLUDE_LIBYUV_ROW_H_ 
    1212#define INCLUDE_LIBYUV_ROW_H_ 
    1313 
     
    2121#endif 
    2222 
    23 #define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a) - 1))) 
    24  
    25 #ifdef __cplusplus 
    26 #define align_buffer_64(var, size)                                             \ 
    27   uint8* var##_mem = reinterpret_cast<uint8*>(malloc((size) + 63));            \ 
    28   uint8* var = reinterpret_cast<uint8*>                                        \ 
    29       ((reinterpret_cast<intptr_t>(var##_mem) + 63) & ~63) 
    30 #else 
    31 #define align_buffer_64(var, size)                                             \ 
    32   uint8* var##_mem = (uint8*)(malloc((size) + 63));               /* NOLINT */ \ 
    33   uint8* var = (uint8*)(((intptr_t)(var##_mem) + 63) & ~63)       /* NOLINT */ 
    34 #endif 
     23#define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a)-1))) 
     24 
     25#define align_buffer_64(var, size)                                       \ 
     26  uint8* var##_mem = (uint8*)(malloc((size) + 63));         /* NOLINT */ \ 
     27  uint8* var = (uint8*)(((intptr_t)(var##_mem) + 63) & ~63) /* NOLINT */ 
    3528 
    3629#define free_aligned_buffer_64(var) \ 
    37   free(var##_mem);  \ 
     30  free(var##_mem);                  \ 
    3831  var = 0 
    3932 
     
    7871 
    7972// Visual C 2012 required for AVX2. 
    80 #if defined(_M_IX86) && !defined(__clang__) && \ 
    81     defined(_MSC_VER) && _MSC_VER >= 1700 
     73#if defined(_M_IX86) && !defined(__clang__) && defined(_MSC_VER) && \ 
     74    _MSC_VER >= 1700 
    8275#define VISUALC_HAS_AVX2 1 
    8376#endif  // VisualStudio >= 2012 
     
    9184#define HAS_ARGB1555TOARGBROW_SSE2 
    9285#define HAS_ARGB4444TOARGBROW_SSE2 
     86#define HAS_ARGBEXTRACTALPHAROW_SSE2 
    9387#define HAS_ARGBSETROW_X86 
    9488#define HAS_ARGBSHUFFLEROW_SSE2 
     
    10599#define HAS_ARGBTOYJROW_SSSE3 
    106100#define HAS_ARGBTOYROW_SSSE3 
    107 #define HAS_ARGBEXTRACTALPHAROW_SSE2 
    108101#define HAS_BGRATOUVROW_SSSE3 
    109102#define HAS_BGRATOYROW_SSSE3 
     
    111104#define HAS_COPYROW_SSE2 
    112105#define HAS_H422TOARGBROW_SSSE3 
     106#define HAS_HALFFLOATROW_SSE2 
    113107#define HAS_I400TOARGBROW_SSE2 
    114108#define HAS_I422TOARGB1555ROW_SSSE3 
     
    181175// The following functions fail on gcc/clang 32 bit with fpic and framepointer. 
    182176// caveat: clangcl uses row_win.cc which works. 
    183 #if defined(NDEBUG) || !(defined(_DEBUG) && defined(__i386__)) || \ 
    184     !defined(__i386__) || defined(_MSC_VER) 
    185 // TODO(fbarchard): fix build error on x86 debug 
    186 // https://code.google.com/p/libyuv/issues/detail?id=524 
    187 #define HAS_I411TOARGBROW_SSSE3 
     177#if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \ 
     178    defined(_MSC_VER) 
    188179// TODO(fbarchard): fix build error on android_full_debug=1 
    189180// https://code.google.com/p/libyuv/issues/detail?id=517 
     
    195186// require VS2012, clang 3.4 or gcc 4.7. 
    196187// The code supports NaCL but requires a new compiler and validator. 
    197 #if !defined(LIBYUV_DISABLE_X86) && (defined(VISUALC_HAS_AVX2) || \ 
    198     defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2)) 
     188#if !defined(LIBYUV_DISABLE_X86) &&                          \ 
     189    (defined(VISUALC_HAS_AVX2) || defined(CLANG_HAS_AVX2) || \ 
     190     defined(GCC_HAS_AVX2)) 
    199191#define HAS_ARGBCOPYALPHAROW_AVX2 
    200192#define HAS_ARGBCOPYYTOALPHAROW_AVX2 
     193#define HAS_ARGBEXTRACTALPHAROW_AVX2 
    201194#define HAS_ARGBMIRRORROW_AVX2 
    202195#define HAS_ARGBPOLYNOMIALROW_AVX2 
     
    209202#define HAS_COPYROW_AVX 
    210203#define HAS_H422TOARGBROW_AVX2 
     204#define HAS_HALFFLOATROW_AVX2 
     205//  #define HAS_HALFFLOATROW_F16C  // Enable to test halffloat cast 
    211206#define HAS_I400TOARGBROW_AVX2 
    212 #if !(defined(_DEBUG) && defined(__i386__)) 
    213 // TODO(fbarchard): fix build error on android_full_debug=1 
    214 // https://code.google.com/p/libyuv/issues/detail?id=517 
    215 #define HAS_I422ALPHATOARGBROW_AVX2 
    216 #endif 
    217 #define HAS_I411TOARGBROW_AVX2 
    218207#define HAS_I422TOARGB1555ROW_AVX2 
    219208#define HAS_I422TOARGB4444ROW_AVX2 
     
    247236#define HAS_ARGBUNATTENUATEROW_AVX2 
    248237#define HAS_BLENDPLANEROW_AVX2 
     238 
     239#if defined(__x86_64__) || !defined(__pic__) || defined(__clang__) || \ 
     240    defined(_MSC_VER) 
     241// TODO(fbarchard): fix build error on android_full_debug=1 
     242// https://code.google.com/p/libyuv/issues/detail?id=517 
     243#define HAS_I422ALPHATOARGBROW_AVX2 
     244#endif 
    249245#endif 
    250246 
     
    263259 
    264260// The following are also available on x64 Visual C. 
    265 #if !defined(LIBYUV_DISABLE_X86) && defined (_M_X64) && \ 
     261#if !defined(LIBYUV_DISABLE_X86) && defined(_MSC_VER) && defined(_M_X64) && \ 
    266262    (!defined(__clang__) || defined(__SSSE3__)) 
    267263#define HAS_I422ALPHATOARGBROW_SSSE3 
     
    280276#define HAS_ARGB4444TOUVROW_NEON 
    281277#define HAS_ARGB4444TOYROW_NEON 
     278#define HAS_ARGBEXTRACTALPHAROW_NEON 
    282279#define HAS_ARGBSETROW_NEON 
    283280#define HAS_ARGBTOARGB1555ROW_NEON 
     
    287284#define HAS_ARGBTORGB565DITHERROW_NEON 
    288285#define HAS_ARGBTORGB565ROW_NEON 
    289 #define HAS_ARGBTOUV411ROW_NEON 
    290286#define HAS_ARGBTOUV444ROW_NEON 
    291287#define HAS_ARGBTOUVJROW_NEON 
     
    293289#define HAS_ARGBTOYJROW_NEON 
    294290#define HAS_ARGBTOYROW_NEON 
    295 #define HAS_ARGBEXTRACTALPHAROW_NEON 
    296291#define HAS_BGRATOUVROW_NEON 
    297292#define HAS_BGRATOYROW_NEON 
    298293#define HAS_COPYROW_NEON 
     294#define HAS_HALFFLOATROW_NEON 
    299295#define HAS_I400TOARGBROW_NEON 
    300 #define HAS_I411TOARGBROW_NEON 
    301296#define HAS_I422ALPHATOARGBROW_NEON 
    302297#define HAS_I422TOARGB1555ROW_NEON 
     
    361356 
    362357// The following are available on Mips platforms: 
    363 #if !defined(LIBYUV_DISABLE_MIPS) && defined(__mips__) && \ 
     358#if !defined(LIBYUV_DISABLE_DSPR2) && defined(__mips__) && \ 
    364359    (_MIPS_SIM == _MIPS_SIM_ABI32) && (__mips_isa_rev < 6) 
    365360#define HAS_COPYROW_MIPS 
     
    370365#define HAS_MIRRORUVROW_DSPR2 
    371366#define HAS_SPLITUVROW_DSPR2 
     367#define HAS_RGB24TOARGBROW_DSPR2 
     368#define HAS_RAWTOARGBROW_DSPR2 
     369#define HAS_RGB565TOARGBROW_DSPR2 
     370#define HAS_ARGB1555TOARGBROW_DSPR2 
     371#define HAS_ARGB4444TOARGBROW_DSPR2 
     372#define HAS_I444TOARGBROW_DSPR2 
     373#define HAS_I422TOARGB4444ROW_DSPR2 
     374#define HAS_I422TOARGB1555ROW_DSPR2 
     375#define HAS_NV12TOARGBROW_DSPR2 
     376#define HAS_BGRATOUVROW_DSPR2 
     377#define HAS_BGRATOYROW_DSPR2 
     378#define HAS_ABGRTOUVROW_DSPR2 
     379#define HAS_ARGBTOYROW_DSPR2 
     380#define HAS_ABGRTOYROW_DSPR2 
     381#define HAS_RGBATOUVROW_DSPR2 
     382#define HAS_RGBATOYROW_DSPR2 
     383#define HAS_ARGBTOUVROW_DSPR2 
    372384#endif 
    373385#endif 
    374386 
    375 #if defined(_MSC_VER) && !defined(__CLR_VER) 
     387#if !defined(LIBYUV_DISABLE_MSA) && defined(__mips_msa) 
     388#define HAS_ARGBMIRRORROW_MSA 
     389#define HAS_I422TOUYVYROW_MSA 
     390#define HAS_I422TOYUY2ROW_MSA 
     391#define HAS_MIRRORROW_MSA 
     392#define HAS_UYVYTOUVROW_MSA 
     393#define HAS_UYVYTOYROW_MSA 
     394#define HAS_YUY2TOUV422ROW_MSA 
     395#define HAS_YUY2TOUVROW_MSA 
     396#define HAS_YUY2TOYROW_MSA 
     397#define HAS_ARGB4444TOARGBROW_MSA 
     398#define HAS_ARGBTOYROW_MSA 
     399#define HAS_ARGBTOUVROW_MSA 
     400#define HAS_I422TOARGBROW_MSA 
     401#define HAS_I422TORGBAROW_MSA 
     402#define HAS_I422ALPHATOARGBROW_MSA 
     403#define HAS_I422TORGB24ROW_MSA 
     404#define HAS_ARGBTORGB24ROW_MSA 
     405#define HAS_ARGBTORAWROW_MSA 
     406#define HAS_ARGBTORGB565ROW_MSA 
     407#define HAS_ARGBTOARGB1555ROW_MSA 
     408#define HAS_ARGBTOARGB4444ROW_MSA 
     409#define HAS_ARGBTOUV444ROW_MSA 
     410#define HAS_ARGBMULTIPLYROW_MSA 
     411#define HAS_ARGBADDROW_MSA 
     412#define HAS_ARGBSUBTRACTROW_MSA 
     413#define HAS_ARGBATTENUATEROW_MSA 
     414#define HAS_ARGBTORGB565DITHERROW_MSA 
     415#define HAS_ARGBSHUFFLEROW_MSA 
     416#define HAS_ARGBSHADEROW_MSA 
     417#define HAS_ARGBGRAYROW_MSA 
     418#define HAS_ARGBSEPIAROW_MSA 
     419#define HAS_ARGB1555TOARGBROW_MSA 
     420#define HAS_RGB565TOARGBROW_MSA 
     421#define HAS_RGB24TOARGBROW_MSA 
     422#define HAS_RAWTOARGBROW_MSA 
     423#define HAS_ARGB1555TOYROW_MSA 
     424#define HAS_RGB565TOYROW_MSA 
     425#define HAS_RGB24TOYROW_MSA 
     426#define HAS_RAWTOYROW_MSA 
     427#define HAS_ARGB1555TOUVROW_MSA 
     428#define HAS_RGB565TOUVROW_MSA 
     429#define HAS_RGB24TOUVROW_MSA 
     430#define HAS_RAWTOUVROW_MSA 
     431#define HAS_NV12TOARGBROW_MSA 
     432#define HAS_NV12TORGB565ROW_MSA 
     433#define HAS_NV21TOARGBROW_MSA 
     434#define HAS_SOBELROW_MSA 
     435#define HAS_SOBELTOPLANEROW_MSA 
     436#define HAS_SOBELXYROW_MSA 
     437#define HAS_ARGBTOYJROW_MSA 
     438#define HAS_BGRATOYROW_MSA 
     439#define HAS_ABGRTOYROW_MSA 
     440#define HAS_RGBATOYROW_MSA 
     441#define HAS_ARGBTOUVJROW_MSA 
     442#define HAS_BGRATOUVROW_MSA 
     443#define HAS_ABGRTOUVROW_MSA 
     444#define HAS_RGBATOUVROW_MSA 
     445#define HAS_I444TOARGBROW_MSA 
     446#define HAS_I400TOARGBROW_MSA 
     447#define HAS_J400TOARGBROW_MSA 
     448#define HAS_YUY2TOARGBROW_MSA 
     449#define HAS_UYVYTOARGBROW_MSA 
     450#define HAS_INTERPOLATEROW_MSA 
     451#define HAS_ARGBSETROW_MSA 
     452#define HAS_RAWTORGB24ROW_MSA 
     453#define HAS_MERGEUVROW_MSA 
     454#endif 
     455 
     456#if defined(_MSC_VER) && !defined(__CLR_VER) && !defined(__clang__) 
     457#if defined(VISUALC_HAS_AVX2) 
     458#define SIMD_ALIGNED(var) __declspec(align(32)) var 
     459#else 
    376460#define SIMD_ALIGNED(var) __declspec(align(16)) var 
    377 #define SIMD_ALIGNED32(var) __declspec(align(64)) var 
     461#endif 
    378462typedef __declspec(align(16)) int16 vec16[8]; 
    379463typedef __declspec(align(16)) int32 vec32[4]; 
     
    388472typedef __declspec(align(32)) uint32 ulvec32[8]; 
    389473typedef __declspec(align(32)) uint8 ulvec8[32]; 
    390 #elif defined(__GNUC__) && !defined(__pnacl__) 
     474#elif !defined(__pnacl__) && (defined(__GNUC__) || defined(__clang__)) 
    391475// Caveat GCC 4.2 to 4.7 have a known issue using vectors with const. 
     476#if defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2) 
     477#define SIMD_ALIGNED(var) var __attribute__((aligned(32))) 
     478#else 
    392479#define SIMD_ALIGNED(var) var __attribute__((aligned(16))) 
    393 #define SIMD_ALIGNED32(var) var __attribute__((aligned(64))) 
     480#endif 
    394481typedef int16 __attribute__((vector_size(16))) vec16; 
    395482typedef int32 __attribute__((vector_size(16))) vec32; 
     
    406493#else 
    407494#define SIMD_ALIGNED(var) var 
    408 #define SIMD_ALIGNED32(var) var 
    409495typedef int16 vec16[8]; 
    410496typedef int32 vec32[4]; 
     
    442528// This struct is for Intel color conversion. 
    443529struct YuvConstants { 
    444   lvec8 kUVToB; 
    445   lvec8 kUVToG; 
    446   lvec8 kUVToR; 
    447   lvec16 kUVBiasB; 
    448   lvec16 kUVBiasG; 
    449   lvec16 kUVBiasR; 
    450   lvec16 kYToRgb; 
     530  int8 kUVToB[32]; 
     531  int8 kUVToG[32]; 
     532  int8 kUVToR[32]; 
     533  int16 kUVBiasB[16]; 
     534  int16 kUVBiasG[16]; 
     535  int16 kUVBiasR[16]; 
     536  int16 kYToRgb[16]; 
    451537}; 
    452538 
    453539// Offsets into YuvConstants structure 
    454 #define KUVTOB   0 
    455 #define KUVTOG   32 
    456 #define KUVTOR   64 
     540#define KUVTOB 0 
     541#define KUVTOG 32 
     542#define KUVTOR 64 
    457543#define KUVBIASB 96 
    458544#define KUVBIASG 128 
    459545#define KUVBIASR 160 
    460 #define KYTORGB  192 
     546#define KYTORGB 192 
    461547#endif 
    462548 
    463549// Conversion matrix for YUV to RGB 
    464 extern const struct YuvConstants kYuvI601Constants;  // BT.601 
    465 extern const struct YuvConstants kYuvJPEGConstants;  // JPeg color space 
    466 extern const struct YuvConstants kYuvH709Constants;  // BT.709 
     550extern const struct YuvConstants SIMD_ALIGNED(kYuvI601Constants);  // BT.601 
     551extern const struct YuvConstants SIMD_ALIGNED(kYuvJPEGConstants);  // JPeg 
     552extern const struct YuvConstants SIMD_ALIGNED(kYuvH709Constants);  // BT.709 
    467553 
    468554// Conversion matrix for YVU to BGR 
    469 extern const struct YuvConstants kYvuI601Constants;  // BT.601 
    470 extern const struct YuvConstants kYvuJPEGConstants;  // JPeg color space 
    471 extern const struct YuvConstants kYvuH709Constants;  // BT.709 
     555extern const struct YuvConstants SIMD_ALIGNED(kYvuI601Constants);  // BT.601 
     556extern const struct YuvConstants SIMD_ALIGNED(kYvuJPEGConstants);  // JPeg 
     557extern const struct YuvConstants SIMD_ALIGNED(kYvuH709Constants);  // BT.709 
    472558 
    473559#if defined(__APPLE__) || defined(__x86_64__) || defined(__llvm__) 
     
    491577#define MEMACCESS2(offset, base) "%%nacl:" #offset "(%%r15,%q" #base ")" 
    492578#define MEMLEA(offset, base) #offset "(%q" #base ")" 
    493 #define MEMLEA3(offset, index, scale) \ 
    494     #offset "(,%q" #index "," #scale ")" 
     579#define MEMLEA3(offset, index, scale) #offset "(,%q" #index "," #scale ")" 
    495580#define MEMLEA4(offset, base, index, scale) \ 
    496     #offset "(%q" #base ",%q" #index "," #scale ")" 
     581  #offset "(%q" #base ",%q" #index "," #scale ")" 
    497582#define MEMMOVESTRING(s, d) "%%nacl:(%q" #s "),%%nacl:(%q" #d "), %%r15" 
    498583#define MEMSTORESTRING(reg, d) "%%" #reg ",%%nacl:(%q" #d "), %%r15" 
    499 #define MEMOPREG(opcode, offset, base, index, scale, reg) \ 
    500     BUNDLELOCK \ 
    501     "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ 
    502     #opcode " (%%r15,%%r14),%%" #reg "\n" \ 
    503     BUNDLEUNLOCK 
    504 #define MEMOPMEM(opcode, reg, offset, base, index, scale) \ 
    505     BUNDLELOCK \ 
    506     "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ 
    507     #opcode " %%" #reg ",(%%r15,%%r14)\n" \ 
    508     BUNDLEUNLOCK 
    509 #define MEMOPARG(opcode, offset, base, index, scale, arg) \ 
    510     BUNDLELOCK \ 
    511     "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ 
    512     #opcode " (%%r15,%%r14),%" #arg "\n" \ 
    513     BUNDLEUNLOCK 
    514 #define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2) \ 
    515     BUNDLELOCK \ 
    516     "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ 
    517     #opcode " (%%r15,%%r14),%%" #reg1 ",%%" #reg2 "\n" \ 
    518     BUNDLEUNLOCK 
    519 #define VEXTOPMEM(op, sel, reg, offset, base, index, scale) \ 
    520     BUNDLELOCK \ 
    521     "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ 
    522     #op " $" #sel ",%%" #reg ",(%%r15,%%r14)\n" \ 
    523     BUNDLEUNLOCK 
     584#define MEMOPREG(opcode, offset, base, index, scale, reg)                 \ 
     585  BUNDLELOCK                                                              \ 
     586  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \ 
     587  " (%%r15,%%r14),%%" #reg "\n" BUNDLEUNLOCK 
     588#define MEMOPMEM(opcode, reg, offset, base, index, scale)                 \ 
     589  BUNDLELOCK                                                              \ 
     590  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \ 
     591  " %%" #reg ",(%%r15,%%r14)\n" BUNDLEUNLOCK 
     592#define MEMOPARG(opcode, offset, base, index, scale, arg)                 \ 
     593  BUNDLELOCK                                                              \ 
     594  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \ 
     595  " (%%r15,%%r14),%" #arg "\n" BUNDLEUNLOCK 
     596#define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2)         \ 
     597  BUNDLELOCK                                                              \ 
     598  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #opcode \ 
     599  " (%%r15,%%r14),%%" #reg1 ",%%" #reg2 "\n" BUNDLEUNLOCK 
     600#define VEXTOPMEM(op, sel, reg, offset, base, index, scale)           \ 
     601  BUNDLELOCK                                                          \ 
     602  "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" #op \ 
     603  " $" #sel ",%%" #reg ",(%%r15,%%r14)\n" BUNDLEUNLOCK 
    524604#else  // defined(__native_client__) && defined(__x86_64__) 
    525605#define NACL_R14 
     
    528608#define MEMACCESS2(offset, base) #offset "(%" #base ")" 
    529609#define MEMLEA(offset, base) #offset "(%" #base ")" 
    530 #define MEMLEA3(offset, index, scale) \ 
    531     #offset "(,%" #index "," #scale ")" 
     610#define MEMLEA3(offset, index, scale) #offset "(,%" #index "," #scale ")" 
    532611#define MEMLEA4(offset, base, index, scale) \ 
    533     #offset "(%" #base ",%" #index "," #scale ")" 
     612  #offset "(%" #base ",%" #index "," #scale ")" 
    534613#define MEMMOVESTRING(s, d) 
    535614#define MEMSTORESTRING(reg, d) 
    536615#define MEMOPREG(opcode, offset, base, index, scale, reg) \ 
    537     #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg "\n" 
     616  #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg "\n" 
    538617#define MEMOPMEM(opcode, reg, offset, base, index, scale) \ 
    539     #opcode " %%" #reg ","#offset "(%" #base ",%" #index "," #scale ")\n" 
     618  #opcode " %%" #reg "," #offset "(%" #base ",%" #index "," #scale ")\n" 
    540619#define MEMOPARG(opcode, offset, base, index, scale, arg) \ 
    541     #opcode " " #offset "(%" #base ",%" #index "," #scale "),%" #arg "\n" 
    542 #define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2) \ 
    543     #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg1 ",%%" \ 
    544     #reg2 "\n" 
     620  #opcode " " #offset "(%" #base ",%" #index "," #scale "),%" #arg "\n" 
     621#define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2)    \ 
     622  #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg1 \ 
     623          ",%%" #reg2 "\n" 
    545624#define VEXTOPMEM(op, sel, reg, offset, base, index, scale) \ 
    546     #op " $" #sel ",%%" #reg ","#offset "(%" #base ",%" #index "," #scale ")\n" 
     625  #op " $" #sel ",%%" #reg "," #offset "(%" #base ",%" #index "," #scale ")\n" 
    547626#endif  // defined(__native_client__) && defined(__x86_64__) 
    548627 
    549 #if defined(__arm__) || defined(__aarch64__) 
    550 #undef MEMACCESS 
    551 #if defined(__native_client__) 
    552 #define MEMACCESS(base) ".p2align 3\nbic %" #base ", #0xc0000000\n" 
    553 #else 
    554 #define MEMACCESS(base) 
     628// Intel Code Analizer markers.  Insert IACA_START IACA_END around code to be 
     629// measured and then run with iaca -64 libyuv_unittest. 
     630// IACA_ASM_START amd IACA_ASM_END are equivalents that can be used within 
     631// inline assembly blocks. 
     632// example of iaca: 
     633// ~/iaca-lin64/bin/iaca.sh -64 -analysis LATENCY out/Release/libyuv_unittest 
     634 
     635#if defined(__x86_64__) || defined(__i386__) 
     636 
     637#define IACA_ASM_START  \ 
     638  ".byte 0x0F, 0x0B\n"  \ 
     639  " movl $111, %%ebx\n" \ 
     640  ".byte 0x64, 0x67, 0x90\n" 
     641 
     642#define IACA_ASM_END         \ 
     643  " movl $222, %%ebx\n"      \ 
     644  ".byte 0x64, 0x67, 0x90\n" \ 
     645  ".byte 0x0F, 0x0B\n" 
     646 
     647#define IACA_SSC_MARK(MARK_ID)                        \ 
     648  __asm__ __volatile__("\n\t  movl $" #MARK_ID        \ 
     649                       ", %%ebx"                      \ 
     650                       "\n\t  .byte 0x64, 0x67, 0x90" \ 
     651                       :                              \ 
     652                       :                              \ 
     653                       : "memory"); 
     654 
     655#define IACA_UD_BYTES __asm__ __volatile__("\n\t .byte 0x0F, 0x0B"); 
     656 
     657#else /* Visual C */ 
     658#define IACA_UD_BYTES \ 
     659  { __asm _emit 0x0F __asm _emit 0x0B } 
     660 
     661#define IACA_SSC_MARK(x) \ 
     662  { __asm mov ebx, x __asm _emit 0x64 __asm _emit 0x67 __asm _emit 0x90 } 
     663 
     664#define IACA_VC64_START __writegsbyte(111, 111); 
     665#define IACA_VC64_END __writegsbyte(222, 222); 
    555666#endif 
    556 #endif 
     667 
     668#define IACA_START     \ 
     669  {                    \ 
     670    IACA_UD_BYTES      \ 
     671    IACA_SSC_MARK(111) \ 
     672  } 
     673#define IACA_END       \ 
     674  {                    \ 
     675    IACA_SSC_MARK(222) \ 
     676    IACA_UD_BYTES      \ 
     677  } 
    557678 
    558679void I444ToARGBRow_NEON(const uint8* src_y, 
     
    581702                        const struct YuvConstants* yuvconstants, 
    582703                        int width); 
    583 void I411ToARGBRow_NEON(const uint8* src_y, 
    584                         const uint8* src_u, 
    585                         const uint8* src_v, 
    586                         uint8* dst_argb, 
    587                         const struct YuvConstants* yuvconstants, 
    588                         int width); 
    589704void I422ToRGBARow_NEON(const uint8* src_y, 
    590705                        const uint8* src_u, 
     
    640755                        const struct YuvConstants* yuvconstants, 
    641756                        int width); 
     757void I444ToARGBRow_MSA(const uint8* src_y, 
     758                       const uint8* src_u, 
     759                       const uint8* src_v, 
     760                       uint8* dst_argb, 
     761                       const struct YuvConstants* yuvconstants, 
     762                       int width); 
     763void I444ToARGBRow_DSPR2(const uint8* src_y, 
     764                         const uint8* src_u, 
     765                         const uint8* src_v, 
     766                         uint8* dst_argb, 
     767                         const struct YuvConstants* yuvconstants, 
     768                         int width); 
     769void I422ToARGB4444Row_DSPR2(const uint8* src_y, 
     770                             const uint8* src_u, 
     771                             const uint8* src_v, 
     772                             uint8* dst_argb4444, 
     773                             const struct YuvConstants* yuvconstants, 
     774                             int width); 
     775void I422ToARGB1555Row_DSPR2(const uint8* src_y, 
     776                             const uint8* src_u, 
     777                             const uint8* src_v, 
     778                             uint8* dst_argb1555, 
     779                             const struct YuvConstants* yuvconstants, 
     780                             int width); 
     781void NV12ToARGBRow_DSPR2(const uint8* src_y, 
     782                         const uint8* src_uv, 
     783                         uint8* dst_argb, 
     784                         const struct YuvConstants* yuvconstants, 
     785                         int width); 
     786 
     787void I422ToARGBRow_MSA(const uint8* src_y, 
     788                       const uint8* src_u, 
     789                       const uint8* src_v, 
     790                       uint8* dst_argb, 
     791                       const struct YuvConstants* yuvconstants, 
     792                       int width); 
     793void I422ToRGBARow_MSA(const uint8* src_y, 
     794                       const uint8* src_u, 
     795                       const uint8* src_v, 
     796                       uint8* dst_rgba, 
     797                       const struct YuvConstants* yuvconstants, 
     798                       int width); 
     799void I422AlphaToARGBRow_MSA(const uint8* y_buf, 
     800                            const uint8* u_buf, 
     801                            const uint8* v_buf, 
     802                            const uint8* a_buf, 
     803                            uint8* dst_argb, 
     804                            const struct YuvConstants* yuvconstants, 
     805                            int width); 
     806void I422ToRGB24Row_MSA(const uint8* src_y, 
     807                        const uint8* src_u, 
     808                        const uint8* src_v, 
     809                        uint8* dst_rgb24, 
     810                        const struct YuvConstants* yuvconstants, 
     811                        int width); 
     812void I422ToRGB565Row_MSA(const uint8* src_y, 
     813                         const uint8* src_u, 
     814                         const uint8* src_v, 
     815                         uint8* dst_rgb565, 
     816                         const struct YuvConstants* yuvconstants, 
     817                         int width); 
     818void I422ToARGB4444Row_MSA(const uint8* src_y, 
     819                           const uint8* src_u, 
     820                           const uint8* src_v, 
     821                           uint8* dst_argb4444, 
     822                           const struct YuvConstants* yuvconstants, 
     823                           int width); 
     824void I422ToARGB1555Row_MSA(const uint8* src_y, 
     825                           const uint8* src_u, 
     826                           const uint8* src_v, 
     827                           uint8* dst_argb1555, 
     828                           const struct YuvConstants* yuvconstants, 
     829                           int width); 
     830void NV12ToARGBRow_MSA(const uint8* src_y, 
     831                       const uint8* src_uv, 
     832                       uint8* dst_argb, 
     833                       const struct YuvConstants* yuvconstants, 
     834                       int width); 
     835void NV12ToRGB565Row_MSA(const uint8* src_y, 
     836                         const uint8* src_uv, 
     837                         uint8* dst_rgb565, 
     838                         const struct YuvConstants* yuvconstants, 
     839                         int width); 
     840void NV21ToARGBRow_MSA(const uint8* src_y, 
     841                       const uint8* src_vu, 
     842                       uint8* dst_argb, 
     843                       const struct YuvConstants* yuvconstants, 
     844                       int width); 
     845void YUY2ToARGBRow_MSA(const uint8* src_yuy2, 
     846                       uint8* dst_argb, 
     847                       const struct YuvConstants* yuvconstants, 
     848                       int width); 
     849void UYVYToARGBRow_MSA(const uint8* src_uyvy, 
     850                       uint8* dst_argb, 
     851                       const struct YuvConstants* yuvconstants, 
     852                       int width); 
    642853 
    643854void ARGBToYRow_AVX2(const uint8* src_argb, uint8* dst_y, int width); 
     
    654865void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int width); 
    655866void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int width); 
    656 void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, 
    657                          int width); 
    658 void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, 
    659                          int width); 
    660 void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb, 
    661                       uint8* dst_u, uint8* dst_v, int width); 
    662 void ARGBToUVJRow_NEON(const uint8* src_argb, int src_stride_argb, 
    663                        uint8* dst_u, uint8* dst_v, int width); 
    664 void BGRAToUVRow_NEON(const uint8* src_bgra, int src_stride_bgra, 
    665                       uint8* dst_u, uint8* dst_v, int width); 
    666 void ABGRToUVRow_NEON(const uint8* src_abgr, int src_stride_abgr, 
    667                       uint8* dst_u, uint8* dst_v, int width); 
    668 void RGBAToUVRow_NEON(const uint8* src_rgba, int src_stride_rgba, 
    669                       uint8* dst_u, uint8* dst_v, int width); 
    670 void RGB24ToUVRow_NEON(const uint8* src_rgb24, int src_stride_rgb24, 
    671                        uint8* dst_u, uint8* dst_v, int width); 
    672 void RAWToUVRow_NEON(const uint8* src_raw, int src_stride_raw, 
    673                      uint8* dst_u, uint8* dst_v, int width); 
    674 void RGB565ToUVRow_NEON(const uint8* src_rgb565, int src_stride_rgb565, 
    675                         uint8* dst_u, uint8* dst_v, int width); 
    676 void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, int src_stride_argb1555, 
    677                           uint8* dst_u, uint8* dst_v, int width); 
    678 void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, int src_stride_argb4444, 
    679                           uint8* dst_u, uint8* dst_v, int width); 
     867void ARGBToYRow_MSA(const uint8* src_argb, uint8* dst_y, int width); 
     868void ARGBToYJRow_MSA(const uint8* src_argb, uint8* dst_y, int width); 
     869void ARGBToUV444Row_NEON(const uint8* src_argb, 
     870                         uint8* dst_u, 
     871                         uint8* dst_v, 
     872                         int width); 
     873void ARGBToUVRow_NEON(const uint8* src_argb, 
     874                      int src_stride_argb, 
     875                      uint8* dst_u, 
     876                      uint8* dst_v, 
     877                      int width); 
     878void ARGBToUV444Row_MSA(const uint8* src_argb, 
     879                        uint8* dst_u, 
     880                        uint8* dst_v, 
     881                        int width); 
     882void ARGBToUVRow_MSA(const uint8* src_argb, 
     883                     int src_stride_argb, 
     884                     uint8* dst_u, 
     885                     uint8* dst_v, 
     886                     int width); 
     887void ARGBToUVJRow_NEON(const uint8* src_argb, 
     888                       int src_stride_argb, 
     889                       uint8* dst_u, 
     890                       uint8* dst_v, 
     891                       int width); 
     892void BGRAToUVRow_NEON(const uint8* src_bgra, 
     893                      int src_stride_bgra, 
     894                      uint8* dst_u, 
     895                      uint8* dst_v, 
     896                      int width); 
     897void ABGRToUVRow_NEON(const uint8* src_abgr, 
     898                      int src_stride_abgr, 
     899                      uint8* dst_u, 
     900                      uint8* dst_v, 
     901                      int width); 
     902void RGBAToUVRow_NEON(const uint8* src_rgba, 
     903                      int src_stride_rgba, 
     904                      uint8* dst_u, 
     905                      uint8* dst_v, 
     906                      int width); 
     907void RGB24ToUVRow_NEON(const uint8* src_rgb24, 
     908                       int src_stride_rgb24, 
     909                       uint8* dst_u, 
     910                       uint8* dst_v, 
     911                       int width); 
     912void RAWToUVRow_NEON(const uint8* src_raw, 
     913                     int src_stride_raw, 
     914                     uint8* dst_u, 
     915                     uint8* dst_v, 
     916                     int width); 
     917void RGB565ToUVRow_NEON(const uint8* src_rgb565, 
     918                        int src_stride_rgb565, 
     919                        uint8* dst_u, 
     920                        uint8* dst_v, 
     921                        int width); 
     922void ARGB1555ToUVRow_NEON(const uint8* src_argb1555, 
     923                          int src_stride_argb1555, 
     924                          uint8* dst_u, 
     925                          uint8* dst_v, 
     926                          int width); 
     927void ARGB4444ToUVRow_NEON(const uint8* src_argb4444, 
     928                          int src_stride_argb4444, 
     929                          uint8* dst_u, 
     930                          uint8* dst_v, 
     931                          int width); 
     932void ARGBToUVJRow_MSA(const uint8* src_argb, 
     933                      int src_stride_argb, 
     934                      uint8* dst_u, 
     935                      uint8* dst_v, 
     936                      int width); 
     937void BGRAToUVRow_MSA(const uint8* src_bgra, 
     938                     int src_stride_bgra, 
     939                     uint8* dst_u, 
     940                     uint8* dst_v, 
     941                     int width); 
     942void ABGRToUVRow_MSA(const uint8* src_abgr, 
     943                     int src_stride_abgr, 
     944                     uint8* dst_u, 
     945                     uint8* dst_v, 
     946                     int width); 
     947void RGBAToUVRow_MSA(const uint8* src_rgba, 
     948                     int src_stride_rgba, 
     949                     uint8* dst_u, 
     950                     uint8* dst_v, 
     951                     int width); 
     952void RGB24ToUVRow_MSA(const uint8* src_rgb24, 
     953                      int src_stride_rgb24, 
     954                      uint8* dst_u, 
     955                      uint8* dst_v, 
     956                      int width); 
     957void RAWToUVRow_MSA(const uint8* src_raw, 
     958                    int src_stride_raw, 
     959                    uint8* dst_u, 
     960                    uint8* dst_v, 
     961                    int width); 
     962void RGB565ToUVRow_MSA(const uint8* src_rgb565, 
     963                       int src_stride_rgb565, 
     964                       uint8* dst_u, 
     965                       uint8* dst_v, 
     966                       int width); 
     967void ARGB1555ToUVRow_MSA(const uint8* src_argb1555, 
     968                         int src_stride_argb1555, 
     969                         uint8* dst_u, 
     970                         uint8* dst_v, 
     971                         int width); 
    680972void BGRAToYRow_NEON(const uint8* src_bgra, uint8* dst_y, int width); 
    681973void ABGRToYRow_NEON(const uint8* src_abgr, uint8* dst_y, int width); 
     
    686978void ARGB1555ToYRow_NEON(const uint8* src_argb1555, uint8* dst_y, int width); 
    687979void ARGB4444ToYRow_NEON(const uint8* src_argb4444, uint8* dst_y, int width); 
     980void BGRAToYRow_MSA(const uint8* src_bgra, uint8* dst_y, int width); 
     981void ABGRToYRow_MSA(const uint8* src_abgr, uint8* dst_y, int width); 
     982void RGBAToYRow_MSA(const uint8* src_rgba, uint8* dst_y, int width); 
     983void RGB24ToYRow_MSA(const uint8* src_rgb24, uint8* dst_y, int width); 
     984void RAWToYRow_MSA(const uint8* src_raw, uint8* dst_y, int width); 
     985void RGB565ToYRow_MSA(const uint8* src_rgb565, uint8* dst_y, int width); 
     986void ARGB1555ToYRow_MSA(const uint8* src_argb1555, uint8* dst_y, int width); 
     987void BGRAToUVRow_DSPR2(const uint8* src_bgra, 
     988                       int src_stride_bgra, 
     989                       uint8* dst_u, 
     990                       uint8* dst_v, 
     991                       int width); 
     992void BGRAToYRow_DSPR2(const uint8* src_bgra, uint8* dst_y, int width); 
     993void ABGRToUVRow_DSPR2(const uint8* src_abgr, 
     994                       int src_stride_abgr, 
     995                       uint8* dst_u, 
     996                       uint8* dst_v, 
     997                       int width); 
     998void ARGBToYRow_DSPR2(const uint8* src_argb, uint8* dst_y, int width); 
     999void ABGRToYRow_DSPR2(const uint8* src_abgr, uint8* dst_y, int width); 
     1000void RGBAToUVRow_DSPR2(const uint8* src_rgba, 
     1001                       int src_stride_rgba, 
     1002                       uint8* dst_u, 
     1003                       uint8* dst_v, 
     1004                       int width); 
     1005void RGBAToYRow_DSPR2(const uint8* src_rgba, uint8* dst_y, int width); 
     1006void ARGBToUVRow_DSPR2(const uint8* src_argb, 
     1007                       int src_stride_argb, 
     1008                       uint8* dst_u, 
     1009                       uint8* dst_v, 
     1010                       int width); 
    6881011void ARGBToYRow_C(const uint8* src_argb, uint8* dst_y, int width); 
    6891012void ARGBToYJRow_C(const uint8* src_argb, uint8* dst_y, int width); 
     
    7111034void RAWToYRow_Any_NEON(const uint8* src_raw, uint8* dst_y, int width); 
    7121035void RGB565ToYRow_Any_NEON(const uint8* src_rgb565, uint8* dst_y, int width); 
    713 void ARGB1555ToYRow_Any_NEON(const uint8* src_argb1555, uint8* dst_y, 
    714                              int width); 
    715 void ARGB4444ToYRow_Any_NEON(const uint8* src_argb4444, uint8* dst_y, 
    716                              int width); 
    717  
    718 void ARGBToUVRow_AVX2(const uint8* src_argb, int src_stride_argb, 
    719                       uint8* dst_u, uint8* dst_v, int width); 
    720 void ARGBToUVJRow_AVX2(const uint8* src_argb, int src_stride_argb, 
    721                        uint8* dst_u, uint8* dst_v, int width); 
    722 void ARGBToUVRow_SSSE3(const uint8* src_argb, int src_stride_argb, 
    723                        uint8* dst_u, uint8* dst_v, int width); 
    724 void ARGBToUVJRow_SSSE3(const uint8* src_argb, int src_stride_argb, 
    725                         uint8* dst_u, uint8* dst_v, int width); 
    726 void BGRAToUVRow_SSSE3(const uint8* src_bgra, int src_stride_bgra, 
    727                        uint8* dst_u, uint8* dst_v, int width); 
    728 void ABGRToUVRow_SSSE3(const uint8* src_abgr, int src_stride_abgr, 
    729                        uint8* dst_u, uint8* dst_v, int width); 
    730 void RGBAToUVRow_SSSE3(const uint8* src_rgba, int src_stride_rgba, 
    731                        uint8* dst_u, uint8* dst_v, int width); 
    732 void ARGBToUVRow_Any_AVX2(const uint8* src_argb, int src_stride_argb, 
    733                           uint8* dst_u, uint8* dst_v, int width); 
    734 void ARGBToUVJRow_Any_AVX2(const uint8* src_argb, int src_stride_argb, 
    735                            uint8* dst_u, uint8* dst_v, int width); 
    736 void ARGBToUVRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb, 
    737                            uint8* dst_u, uint8* dst_v, int width); 
    738 void ARGBToUVJRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb, 
    739                             uint8* dst_u, uint8* dst_v, int width); 
    740 void BGRAToUVRow_Any_SSSE3(const uint8* src_bgra, int src_stride_bgra, 
    741                            uint8* dst_u, uint8* dst_v, int width); 
    742 void ABGRToUVRow_Any_SSSE3(const uint8* src_abgr, int src_stride_abgr, 
    743                            uint8* dst_u, uint8* dst_v, int width); 
    744 void RGBAToUVRow_Any_SSSE3(const uint8* src_rgba, int src_stride_rgba, 
    745                            uint8* dst_u, uint8* dst_v, int width); 
    746 void ARGBToUV444Row_Any_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, 
    747                              int width); 
    748 void ARGBToUV411Row_Any_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, 
    749                              int width); 
    750 void ARGBToUVRow_Any_NEON(const uint8* src_argb, int src_stride_argb, 
    751                           uint8* dst_u, uint8* dst_v, int width); 
    752 void ARGBToUVJRow_Any_NEON(const uint8* src_argb, int src_stride_argb, 
    753                            uint8* dst_u, uint8* dst_v, int width); 
    754 void BGRAToUVRow_Any_NEON(const uint8* src_bgra, int src_stride_bgra, 
    755                           uint8* dst_u, uint8* dst_v, int width); 
    756 void ABGRToUVRow_Any_NEON(const uint8* src_abgr, int src_stride_abgr, 
    757                           uint8* dst_u, uint8* dst_v, int width); 
    758 void RGBAToUVRow_Any_NEON(const uint8* src_rgba, int src_stride_rgba, 
    759                           uint8* dst_u, uint8* dst_v, int width); 
    760 void RGB24ToUVRow_Any_NEON(const uint8* src_rgb24, int src_stride_rgb24, 
    761                            uint8* dst_u, uint8* dst_v, int width); 
    762 void RAWToUVRow_Any_NEON(const uint8* src_raw, int src_stride_raw, 
    763                          uint8* dst_u, uint8* dst_v, int width); 
    764 void RGB565ToUVRow_Any_NEON(const uint8* src_rgb565, int src_stride_rgb565, 
    765                             uint8* dst_u, uint8* dst_v, int width); 
     1036void ARGB1555ToYRow_Any_NEON(const uint8* src_argb1555, 
     1037                             uint8* dst_y, 
     1038                             int width); 
     1039void BGRAToYRow_Any_DSPR2(const uint8* src_bgra, uint8* dst_y, int width); 
     1040void ARGBToYRow_Any_DSPR2(const uint8* src_argb, uint8* dst_y, int width); 
     1041void ABGRToYRow_Any_DSPR2(const uint8* src_abgr, uint8* dst_y, int width); 
     1042void RGBAToYRow_Any_DSPR2(const uint8* src_rgba, uint8* dst_y, int width); 
     1043void ARGB4444ToYRow_Any_NEON(const uint8* src_argb4444, 
     1044                             uint8* dst_y, 
     1045                             int width); 
     1046void BGRAToYRow_Any_MSA(const uint8* src_bgra, uint8* dst_y, int width); 
     1047void ABGRToYRow_Any_MSA(const uint8* src_abgr, uint8* dst_y, int width); 
     1048void RGBAToYRow_Any_MSA(const uint8* src_rgba, uint8* dst_y, int width); 
     1049void ARGBToYJRow_Any_MSA(const uint8* src_argb, uint8* dst_y, int width); 
     1050void ARGBToYRow_Any_MSA(const uint8* src_argb, uint8* dst_y, int width); 
     1051void RGB24ToYRow_Any_MSA(const uint8* src_rgb24, uint8* dst_y, int width); 
     1052void RAWToYRow_Any_MSA(const uint8* src_raw, uint8* dst_y, int width); 
     1053void RGB565ToYRow_Any_MSA(const uint8* src_rgb565, uint8* dst_y, int width); 
     1054void ARGB1555ToYRow_Any_MSA(const uint8* src_argb1555, uint8* dst_y, int width); 
     1055 
     1056void ARGBToUVRow_AVX2(const uint8* src_argb, 
     1057                      int src_stride_argb, 
     1058                      uint8* dst_u, 
     1059                      uint8* dst_v, 
     1060                      int width); 
     1061void ARGBToUVJRow_AVX2(const uint8* src_argb, 
     1062                       int src_stride_argb, 
     1063                       uint8* dst_u, 
     1064                       uint8* dst_v, 
     1065                       int width); 
     1066void ARGBToUVRow_SSSE3(const uint8* src_argb, 
     1067                       int src_stride_argb, 
     1068                       uint8* dst_u, 
     1069                       uint8* dst_v, 
     1070                       int width); 
     1071void ARGBToUVJRow_SSSE3(const uint8* src_argb, 
     1072                        int src_stride_argb, 
     1073                        uint8* dst_u, 
     1074                        uint8* dst_v, 
     1075                        int width); 
     1076void BGRAToUVRow_SSSE3(const uint8* src_bgra, 
     1077                       int src_stride_bgra, 
     1078                       uint8* dst_u, 
     1079                       uint8* dst_v, 
     1080                       int width); 
     1081void ABGRToUVRow_SSSE3(const uint8* src_abgr, 
     1082                       int src_stride_abgr, 
     1083                       uint8* dst_u, 
     1084                       uint8* dst_v, 
     1085                       int width); 
     1086void RGBAToUVRow_SSSE3(const uint8* src_rgba, 
     1087                       int src_stride_rgba, 
     1088                       uint8* dst_u, 
     1089                       uint8* dst_v, 
     1090                       int width); 
     1091void ARGBToUVRow_Any_AVX2(const uint8* src_argb, 
     1092                          int src_stride_argb, 
     1093                          uint8* dst_u, 
     1094                          uint8* dst_v, 
     1095                          int width); 
     1096void ARGBToUVJRow_Any_AVX2(const uint8* src_argb, 
     1097                           int src_stride_argb, 
     1098                           uint8* dst_u, 
     1099                           uint8* dst_v, 
     1100                           int width); 
     1101void ARGBToUVRow_Any_SSSE3(const uint8* src_argb, 
     1102                           int src_stride_argb, 
     1103                           uint8* dst_u, 
     1104                           uint8* dst_v, 
     1105                           int width); 
     1106void ARGBToUVJRow_Any_SSSE3(const uint8* src_argb, 
     1107                            int src_stride_argb, 
     1108                            uint8* dst_u, 
     1109                            uint8* dst_v, 
     1110                            int width); 
     1111void BGRAToUVRow_Any_SSSE3(const uint8* src_bgra, 
     1112                           int src_stride_bgra, 
     1113                           uint8* dst_u, 
     1114                           uint8* dst_v, 
     1115                           int width); 
     1116void ABGRToUVRow_Any_SSSE3(const uint8* src_abgr, 
     1117                           int src_stride_abgr, 
     1118                           uint8* dst_u, 
     1119                           uint8* dst_v, 
     1120                           int width); 
     1121void RGBAToUVRow_Any_SSSE3(const uint8* src_rgba, 
     1122                           int src_stride_rgba, 
     1123                           uint8* dst_u, 
     1124                           uint8* dst_v, 
     1125                           int width); 
     1126void ARGBToUV444Row_Any_NEON(const uint8* src_argb, 
     1127                             uint8* dst_u, 
     1128                             uint8* dst_v, 
     1129                             int width); 
     1130void ARGBToUVRow_Any_NEON(const uint8* src_argb, 
     1131                          int src_stride_argb, 
     1132                          uint8* dst_u, 
     1133                          uint8* dst_v, 
     1134                          int width); 
     1135void ARGBToUV444Row_Any_MSA(const uint8* src_argb, 
     1136                            uint8* dst_u, 
     1137                            uint8* dst_v, 
     1138                            int width); 
     1139void ARGBToUVRow_Any_MSA(const uint8* src_argb, 
     1140                         int src_stride_argb, 
     1141                         uint8* dst_u, 
     1142                         uint8* dst_v, 
     1143                         int width); 
     1144void ARGBToUVJRow_Any_NEON(const uint8* src_argb, 
     1145                           int src_stride_argb, 
     1146                           uint8* dst_u, 
     1147                           uint8* dst_v, 
     1148                           int width); 
     1149void BGRAToUVRow_Any_NEON(const uint8* src_bgra, 
     1150                          int src_stride_bgra, 
     1151                          uint8* dst_u, 
     1152                          uint8* dst_v, 
     1153                          int width); 
     1154void ABGRToUVRow_Any_NEON(const uint8* src_abgr, 
     1155                          int src_stride_abgr, 
     1156                          uint8* dst_u, 
     1157                          uint8* dst_v, 
     1158                          int width); 
     1159void RGBAToUVRow_Any_NEON(const uint8* src_rgba, 
     1160                          int src_stride_rgba, 
     1161                          uint8* dst_u, 
     1162                          uint8* dst_v, 
     1163                          int width); 
     1164void RGB24ToUVRow_Any_NEON(const uint8* src_rgb24, 
     1165                           int src_stride_rgb24, 
     1166                           uint8* dst_u, 
     1167                           uint8* dst_v, 
     1168                           int width); 
     1169void RAWToUVRow_Any_NEON(const uint8* src_raw, 
     1170                         int src_stride_raw, 
     1171                         uint8* dst_u, 
     1172                         uint8* dst_v, 
     1173                         int width); 
     1174void RGB565ToUVRow_Any_NEON(const uint8* src_rgb565, 
     1175                            int src_stride_rgb565, 
     1176                            uint8* dst_u, 
     1177                            uint8* dst_v, 
     1178                            int width); 
    7661179void ARGB1555ToUVRow_Any_NEON(const uint8* src_argb1555, 
    7671180                              int src_stride_argb1555, 
    768                               uint8* dst_u, uint8* dst_v, int width); 
     1181                              uint8* dst_u, 
     1182                              uint8* dst_v, 
     1183                              int width); 
    7691184void ARGB4444ToUVRow_Any_NEON(const uint8* src_argb4444, 
    7701185                              int src_stride_argb4444, 
    771                               uint8* dst_u, uint8* dst_v, int width); 
    772 void ARGBToUVRow_C(const uint8* src_argb, int src_stride_argb, 
    773                    uint8* dst_u, uint8* dst_v, int width); 
    774 void ARGBToUVJRow_C(const uint8* src_argb, int src_stride_argb, 
    775                     uint8* dst_u, uint8* dst_v, int width); 
    776 void BGRAToUVRow_C(const uint8* src_bgra, int src_stride_bgra, 
    777                    uint8* dst_u, uint8* dst_v, int width); 
    778 void ABGRToUVRow_C(const uint8* src_abgr, int src_stride_abgr, 
    779                    uint8* dst_u, uint8* dst_v, int width); 
    780 void RGBAToUVRow_C(const uint8* src_rgba, int src_stride_rgba, 
    781                    uint8* dst_u, uint8* dst_v, int width); 
    782 void RGB24ToUVRow_C(const uint8* src_rgb24, int src_stride_rgb24, 
    783                     uint8* dst_u, uint8* dst_v, int width); 
    784 void RAWToUVRow_C(const uint8* src_raw, int src_stride_raw, 
    785                   uint8* dst_u, uint8* dst_v, int width); 
    786 void RGB565ToUVRow_C(const uint8* src_rgb565, int src_stride_rgb565, 
    787                      uint8* dst_u, uint8* dst_v, int width); 
    788 void ARGB1555ToUVRow_C(const uint8* src_argb1555, int src_stride_argb1555, 
    789                        uint8* dst_u, uint8* dst_v, int width); 
    790 void ARGB4444ToUVRow_C(const uint8* src_argb4444, int src_stride_argb4444, 
    791                        uint8* dst_u, uint8* dst_v, int width); 
     1186                              uint8* dst_u, 
     1187                              uint8* dst_v, 
     1188                              int width); 
     1189void ARGBToUVJRow_Any_MSA(const uint8* src_argb, 
     1190                          int src_stride_argb, 
     1191                          uint8* dst_u, 
     1192                          uint8* dst_v, 
     1193                          int width); 
     1194void BGRAToUVRow_Any_MSA(const uint8* src_bgra, 
     1195                         int src_stride_bgra, 
     1196                         uint8* dst_u, 
     1197                         uint8* dst_v, 
     1198                         int width); 
     1199void ABGRToUVRow_Any_MSA(const uint8* src_abgr, 
     1200                         int src_stride_abgr, 
     1201                         uint8* dst_u, 
     1202                         uint8* dst_v, 
     1203                         int width); 
     1204void RGBAToUVRow_Any_MSA(const uint8* src_rgba, 
     1205                         int src_stride_rgba, 
     1206                         uint8* dst_u, 
     1207                         uint8* dst_v, 
     1208                         int width); 
     1209void RGB24ToUVRow_Any_MSA(const uint8* src_rgb24, 
     1210                          int src_stride_rgb24, 
     1211                          uint8* dst_u, 
     1212                          uint8* dst_v, 
     1213                          int width); 
     1214void RAWToUVRow_Any_MSA(const uint8* src_raw, 
     1215                        int src_stride_raw, 
     1216                        uint8* dst_u, 
     1217                        uint8* dst_v, 
     1218                        int width); 
     1219void RGB565ToUVRow_Any_MSA(const uint8* src_rgb565, 
     1220                           int src_stride_rgb565, 
     1221                           uint8* dst_u, 
     1222                           uint8* dst_v, 
     1223                           int width); 
     1224void ARGB1555ToUVRow_Any_MSA(const uint8* src_argb1555, 
     1225                             int src_stride_argb1555, 
     1226                             uint8* dst_u, 
     1227                             uint8* dst_v, 
     1228                             int width); 
     1229void BGRAToUVRow_Any_DSPR2(const uint8* src_bgra, 
     1230                           int src_stride_bgra, 
     1231                           uint8* dst_u, 
     1232                           uint8* dst_v, 
     1233                           int width); 
     1234void ABGRToUVRow_Any_DSPR2(const uint8* src_abgr, 
     1235                           int src_stride_abgr, 
     1236                           uint8* dst_u, 
     1237                           uint8* dst_v, 
     1238                           int width); 
     1239void RGBAToUVRow_Any_DSPR2(const uint8* src_rgba, 
     1240                           int src_stride_rgba, 
     1241                           uint8* dst_u, 
     1242                           uint8* dst_v, 
     1243                           int width); 
     1244void ARGBToUVRow_Any_DSPR2(const uint8* src_argb, 
     1245                           int src_stride_argb, 
     1246                           uint8* dst_u, 
     1247                           uint8* dst_v, 
     1248                           int width); 
     1249void ARGBToUVRow_C(const uint8* src_argb, 
     1250                   int src_stride_argb, 
     1251                   uint8* dst_u, 
     1252                   uint8* dst_v, 
     1253                   int width); 
     1254void ARGBToUVJRow_C(const uint8* src_argb, 
     1255                    int src_stride_argb, 
     1256                    uint8* dst_u, 
     1257                    uint8* dst_v, 
     1258                    int width); 
     1259void ARGBToUVRow_C(const uint8* src_argb, 
     1260                   int src_stride_argb, 
     1261                   uint8* dst_u, 
     1262                   uint8* dst_v, 
     1263                   int width); 
     1264void ARGBToUVJRow_C(const uint8* src_argb, 
     1265                    int src_stride_argb, 
     1266                    uint8* dst_u, 
     1267                    uint8* dst_v, 
     1268                    int width); 
     1269void BGRAToUVRow_C(const uint8* src_bgra, 
     1270                   int src_stride_bgra, 
     1271                   uint8* dst_u, 
     1272                   uint8* dst_v, 
     1273                   int width); 
     1274void ABGRToUVRow_C(const uint8* src_abgr, 
     1275                   int src_stride_abgr, 
     1276                   uint8* dst_u, 
     1277                   uint8* dst_v, 
     1278                   int width); 
     1279void RGBAToUVRow_C(const uint8* src_rgba, 
     1280                   int src_stride_rgba, 
     1281                   uint8* dst_u, 
     1282                   uint8* dst_v, 
     1283                   int width); 
     1284void RGB24ToUVRow_C(const uint8* src_rgb24, 
     1285                    int src_stride_rgb24, 
     1286                    uint8* dst_u, 
     1287                    uint8* dst_v, 
     1288                    int width); 
     1289void RAWToUVRow_C(const uint8* src_raw, 
     1290                  int src_stride_raw, 
     1291                  uint8* dst_u, 
     1292                  uint8* dst_v, 
     1293                  int width); 
     1294void RGB565ToUVRow_C(const uint8* src_rgb565, 
     1295                     int src_stride_rgb565, 
     1296                     uint8* dst_u, 
     1297                     uint8* dst_v, 
     1298                     int width); 
     1299void ARGB1555ToUVRow_C(const uint8* src_argb1555, 
     1300                       int src_stride_argb1555, 
     1301                       uint8* dst_u, 
     1302                       uint8* dst_v, 
     1303                       int width); 
     1304void ARGB4444ToUVRow_C(const uint8* src_argb4444, 
     1305                       int src_stride_argb4444, 
     1306                       uint8* dst_u, 
     1307                       uint8* dst_v, 
     1308                       int width); 
    7921309 
    7931310void ARGBToUV444Row_SSSE3(const uint8* src_argb, 
    794                           uint8* dst_u, uint8* dst_v, int width); 
     1311                          uint8* dst_u, 
     1312                          uint8* dst_v, 
     1313                          int width); 
    7951314void ARGBToUV444Row_Any_SSSE3(const uint8* src_argb, 
    796                               uint8* dst_u, uint8* dst_v, int width); 
     1315                              uint8* dst_u, 
     1316                              uint8* dst_v, 
     1317                              int width); 
    7971318 
    7981319void ARGBToUV444Row_C(const uint8* src_argb, 
    799                       uint8* dst_u, uint8* dst_v, int width); 
    800 void ARGBToUV411Row_C(const uint8* src_argb, 
    801                       uint8* dst_u, uint8* dst_v, int width); 
     1320                      uint8* dst_u, 
     1321                      uint8* dst_v, 
     1322                      int width); 
    8021323 
    8031324void MirrorRow_AVX2(const uint8* src, uint8* dst, int width); 
     
    8051326void MirrorRow_NEON(const uint8* src, uint8* dst, int width); 
    8061327void MirrorRow_DSPR2(const uint8* src, uint8* dst, int width); 
     1328void MirrorRow_MSA(const uint8* src, uint8* dst, int width); 
    8071329void MirrorRow_C(const uint8* src, uint8* dst, int width); 
    8081330void MirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width); 
     
    8101332void MirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width); 
    8111333void MirrorRow_Any_NEON(const uint8* src, uint8* dst, int width); 
    812  
    813 void MirrorUVRow_SSSE3(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 
    814                        int width); 
    815 void MirrorUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 
     1334void MirrorRow_Any_MSA(const uint8* src, uint8* dst, int width); 
     1335 
     1336void MirrorUVRow_SSSE3(const uint8* src_uv, 
     1337                       uint8* dst_u, 
     1338                       uint8* dst_v, 
     1339                       int width); 
     1340void MirrorUVRow_NEON(const uint8* src_uv, 
     1341                      uint8* dst_u, 
     1342                      uint8* dst_v, 
    8161343                      int width); 
    817 void MirrorUVRow_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 
     1344void MirrorUVRow_DSPR2(const uint8* src_uv, 
     1345                       uint8* dst_u, 
     1346                       uint8* dst_v, 
    8181347                       int width); 
    8191348void MirrorUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width); 
     
    8221351void ARGBMirrorRow_SSE2(const uint8* src, uint8* dst, int width); 
    8231352void ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width); 
     1353void ARGBMirrorRow_MSA(const uint8* src, uint8* dst, int width); 
    8241354void ARGBMirrorRow_C(const uint8* src, uint8* dst, int width); 
    8251355void ARGBMirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width); 
    8261356void ARGBMirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width); 
    8271357void ARGBMirrorRow_Any_NEON(const uint8* src, uint8* dst, int width); 
     1358void ARGBMirrorRow_Any_MSA(const uint8* src, uint8* dst, int width); 
    8281359 
    8291360void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int width); 
    830 void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 
     1361void SplitUVRow_SSE2(const uint8* src_uv, 
     1362                     uint8* dst_u, 
     1363                     uint8* dst_v, 
    8311364                     int width); 
    832 void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 
     1365void SplitUVRow_AVX2(const uint8* src_uv, 
     1366                     uint8* dst_u, 
     1367                     uint8* dst_v, 
    8331368                     int width); 
    834 void SplitUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 
     1369void SplitUVRow_NEON(const uint8* src_uv, 
     1370                     uint8* dst_u, 
     1371                     uint8* dst_v, 
    8351372                     int width); 
    836 void SplitUVRow_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 
     1373void SplitUVRow_DSPR2(const uint8* src_uv, 
     1374                      uint8* dst_u, 
     1375                      uint8* dst_v, 
    8371376                      int width); 
    838 void SplitUVRow_Any_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 
    839                          int width); 
    840 void SplitUVRow_Any_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 
    841                          int width); 
    842 void SplitUVRow_Any_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 
    843                          int width); 
    844 void SplitUVRow_Any_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 
    845                           int width); 
    846  
    847 void MergeUVRow_C(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 
     1377void SplitUVRow_Any_SSE2(const uint8* src_uv, 
     1378                         uint8* dst_u, 
     1379                         uint8* dst_v, 
     1380                         int width); 
     1381void SplitUVRow_Any_AVX2(const uint8* src_uv, 
     1382                         uint8* dst_u, 
     1383                         uint8* dst_v, 
     1384                         int width); 
     1385void SplitUVRow_Any_NEON(const uint8* src_uv, 
     1386                         uint8* dst_u, 
     1387                         uint8* dst_v, 
     1388                         int width); 
     1389void SplitUVRow_Any_DSPR2(const uint8* src_uv, 
     1390                          uint8* dst_u, 
     1391                          uint8* dst_v, 
     1392                          int width); 
     1393 
     1394void MergeUVRow_C(const uint8* src_u, 
     1395                  const uint8* src_v, 
     1396                  uint8* dst_uv, 
    8481397                  int width); 
    849 void MergeUVRow_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 
     1398void MergeUVRow_SSE2(const uint8* src_u, 
     1399                     const uint8* src_v, 
     1400                     uint8* dst_uv, 
    8501401                     int width); 
    851 void MergeUVRow_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 
     1402void MergeUVRow_AVX2(const uint8* src_u, 
     1403                     const uint8* src_v, 
     1404                     uint8* dst_uv, 
    8521405                     int width); 
    853 void MergeUVRow_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 
     1406void MergeUVRow_NEON(const uint8* src_u, 
     1407                     const uint8* src_v, 
     1408                     uint8* dst_uv, 
    8541409                     int width); 
    855 void MergeUVRow_Any_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 
    856                          int width); 
    857 void MergeUVRow_Any_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 
    858                          int width); 
    859 void MergeUVRow_Any_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 
    860                          int width); 
     1410void MergeUVRow_MSA(const uint8* src_u, 
     1411                    const uint8* src_v, 
     1412                    uint8* dst_uv, 
     1413                    int width); 
     1414void MergeUVRow_Any_SSE2(const uint8* src_u, 
     1415                         const uint8* src_v, 
     1416                         uint8* dst_uv, 
     1417                         int width); 
     1418void MergeUVRow_Any_AVX2(const uint8* src_u, 
     1419                         const uint8* src_v, 
     1420                         uint8* dst_uv, 
     1421                         int width); 
     1422void MergeUVRow_Any_NEON(const uint8* src_u, 
     1423                         const uint8* src_v, 
     1424                         uint8* dst_uv, 
     1425                         int width); 
     1426void MergeUVRow_Any_MSA(const uint8* src_u, 
     1427                        const uint8* src_v, 
     1428                        uint8* dst_uv, 
     1429                        int width); 
    8611430 
    8621431void CopyRow_SSE2(const uint8* src, uint8* dst, int count); 
     
    8751444void ARGBCopyAlphaRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width); 
    8761445void ARGBCopyAlphaRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width); 
    877 void ARGBCopyAlphaRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb, 
     1446void ARGBCopyAlphaRow_Any_SSE2(const uint8* src_argb, 
     1447                               uint8* dst_argb, 
    8781448                               int width); 
    879 void ARGBCopyAlphaRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb, 
     1449void ARGBCopyAlphaRow_Any_AVX2(const uint8* src_argb, 
     1450                               uint8* dst_argb, 
    8801451                               int width); 
    8811452 
    8821453void ARGBExtractAlphaRow_C(const uint8* src_argb, uint8* dst_a, int width); 
    8831454void ARGBExtractAlphaRow_SSE2(const uint8* src_argb, uint8* dst_a, int width); 
     1455void ARGBExtractAlphaRow_AVX2(const uint8* src_argb, uint8* dst_a, int width); 
    8841456void ARGBExtractAlphaRow_NEON(const uint8* src_argb, uint8* dst_a, int width); 
    885 void ARGBExtractAlphaRow_Any_SSE2(const uint8* src_argb, uint8* dst_a, 
     1457void ARGBExtractAlphaRow_Any_SSE2(const uint8* src_argb, 
     1458                                  uint8* dst_a, 
    8861459                                  int width); 
    887 void ARGBExtractAlphaRow_Any_NEON(const uint8* src_argb, uint8* dst_a, 
     1460void ARGBExtractAlphaRow_Any_AVX2(const uint8* src_argb, 
     1461                                  uint8* dst_a, 
     1462                                  int width); 
     1463void ARGBExtractAlphaRow_Any_NEON(const uint8* src_argb, 
     1464                                  uint8* dst_a, 
    8881465                                  int width); 
    8891466 
     
    8911468void ARGBCopyYToAlphaRow_SSE2(const uint8* src_y, uint8* dst_argb, int width); 
    8921469void ARGBCopyYToAlphaRow_AVX2(const uint8* src_y, uint8* dst_argb, int width); 
    893 void ARGBCopyYToAlphaRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, 
     1470void ARGBCopyYToAlphaRow_Any_SSE2(const uint8* src_y, 
     1471                                  uint8* dst_argb, 
    8941472                                  int width); 
    895 void ARGBCopyYToAlphaRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, 
     1473void ARGBCopyYToAlphaRow_Any_AVX2(const uint8* src_y, 
     1474                                  uint8* dst_argb, 
    8961475                                  int width); 
    8971476 
     
    9071486void ARGBSetRow_NEON(uint8* dst_argb, uint32 v32, int count); 
    9081487void ARGBSetRow_Any_NEON(uint8* dst_argb, uint32 v32, int count); 
     1488void ARGBSetRow_MSA(uint8* dst_argb, uint32 v32, int count); 
     1489void ARGBSetRow_Any_MSA(uint8* dst_argb, uint32 v32, int count); 
    9091490 
    9101491// ARGBShufflers for BGRAToARGB etc. 
    911 void ARGBShuffleRow_C(const uint8* src_argb, uint8* dst_argb, 
    912                       const uint8* shuffler, int width); 
    913 void ARGBShuffleRow_SSE2(const uint8* src_argb, uint8* dst_argb, 
    914                          const uint8* shuffler, int width); 
    915 void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb, 
    916                           const uint8* shuffler, int width); 
    917 void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb, 
    918                          const uint8* shuffler, int width); 
    919 void ARGBShuffleRow_NEON(const uint8* src_argb, uint8* dst_argb, 
    920                          const uint8* shuffler, int width); 
    921 void ARGBShuffleRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb, 
    922                              const uint8* shuffler, int width); 
    923 void ARGBShuffleRow_Any_SSSE3(const uint8* src_argb, uint8* dst_argb, 
    924                               const uint8* shuffler, int width); 
    925 void ARGBShuffleRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb, 
    926                              const uint8* shuffler, int width); 
    927 void ARGBShuffleRow_Any_NEON(const uint8* src_argb, uint8* dst_argb, 
    928                              const uint8* shuffler, int width); 
     1492void ARGBShuffleRow_C(const uint8* src_argb, 
     1493                      uint8* dst_argb, 
     1494                      const uint8* shuffler, 
     1495                      int width); 
     1496void ARGBShuffleRow_SSE2(const uint8* src_argb, 
     1497                         uint8* dst_argb, 
     1498                         const uint8* shuffler, 
     1499                         int width); 
     1500void ARGBShuffleRow_SSSE3(const uint8* src_argb, 
     1501                          uint8* dst_argb, 
     1502                          const uint8* shuffler, 
     1503                          int width); 
     1504void ARGBShuffleRow_AVX2(const uint8* src_argb, 
     1505                         uint8* dst_argb, 
     1506                         const uint8* shuffler, 
     1507                         int width); 
     1508void ARGBShuffleRow_NEON(const uint8* src_argb, 
     1509                         uint8* dst_argb, 
     1510                         const uint8* shuffler, 
     1511                         int width); 
     1512void ARGBShuffleRow_MSA(const uint8* src_argb, 
     1513                        uint8* dst_argb, 
     1514                        const uint8* shuffler, 
     1515                        int width); 
     1516void ARGBShuffleRow_Any_SSE2(const uint8* src_argb, 
     1517                             uint8* dst_argb, 
     1518                             const uint8* shuffler, 
     1519                             int width); 
     1520void ARGBShuffleRow_Any_SSSE3(const uint8* src_argb, 
     1521                              uint8* dst_argb, 
     1522                              const uint8* shuffler, 
     1523                              int width); 
     1524void ARGBShuffleRow_Any_AVX2(const uint8* src_argb, 
     1525                             uint8* dst_argb, 
     1526                             const uint8* shuffler, 
     1527                             int width); 
     1528void ARGBShuffleRow_Any_NEON(const uint8* src_argb, 
     1529                             uint8* dst_argb, 
     1530                             const uint8* shuffler, 
     1531                             int width); 
     1532void ARGBShuffleRow_Any_MSA(const uint8* src_argb, 
     1533                            uint8* dst_argb, 
     1534                            const uint8* shuffler, 
     1535                            int width); 
    9291536 
    9301537void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int width); 
     
    9321539void RAWToRGB24Row_SSSE3(const uint8* src_raw, uint8* dst_rgb24, int width); 
    9331540void RGB565ToARGBRow_SSE2(const uint8* src_rgb565, uint8* dst_argb, int width); 
    934 void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, uint8* dst_argb, 
    935                             int width); 
    936 void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, uint8* dst_argb, 
     1541void ARGB1555ToARGBRow_SSE2(const uint8* src_argb1555, 
     1542                            uint8* dst_argb, 
     1543                            int width); 
     1544void ARGB4444ToARGBRow_SSE2(const uint8* src_argb4444, 
     1545                            uint8* dst_argb, 
    9371546                            int width); 
    9381547void RGB565ToARGBRow_AVX2(const uint8* src_rgb565, uint8* dst_argb, int width); 
    939 void ARGB1555ToARGBRow_AVX2(const uint8* src_argb1555, uint8* dst_argb, 
    940                             int width); 
    941 void ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444, uint8* dst_argb, 
     1548void ARGB1555ToARGBRow_AVX2(const uint8* src_argb1555, 
     1549                            uint8* dst_argb, 
     1550                            int width); 
     1551void ARGB4444ToARGBRow_AVX2(const uint8* src_argb4444, 
     1552                            uint8* dst_argb, 
    9421553                            int width); 
    9431554 
    9441555void RGB24ToARGBRow_NEON(const uint8* src_rgb24, uint8* dst_argb, int width); 
     1556void RGB24ToARGBRow_MSA(const uint8* src_rgb24, uint8* dst_argb, int width); 
    9451557void RAWToARGBRow_NEON(const uint8* src_raw, uint8* dst_argb, int width); 
     1558void RAWToARGBRow_MSA(const uint8* src_raw, uint8* dst_argb, int width); 
    9461559void RAWToRGB24Row_NEON(const uint8* src_raw, uint8* dst_rgb24, int width); 
     1560void RAWToRGB24Row_MSA(const uint8* src_raw, uint8* dst_rgb24, int width); 
    9471561void RGB565ToARGBRow_NEON(const uint8* src_rgb565, uint8* dst_argb, int width); 
    948 void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, uint8* dst_argb, 
    949                             int width); 
    950 void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, uint8* dst_argb, 
    951                             int width); 
     1562void RGB565ToARGBRow_MSA(const uint8* src_rgb565, uint8* dst_argb, int width); 
     1563void ARGB1555ToARGBRow_NEON(const uint8* src_argb1555, 
     1564                            uint8* dst_argb, 
     1565                            int width); 
     1566void ARGB1555ToARGBRow_MSA(const uint8* src_argb1555, 
     1567                           uint8* dst_argb, 
     1568                           int width); 
     1569void ARGB4444ToARGBRow_NEON(const uint8* src_argb4444, 
     1570                            uint8* dst_argb, 
     1571                            int width); 
     1572void RGB24ToARGBRow_DSPR2(const uint8* src_rgb24, uint8* dst_argb, int width); 
     1573void RAWToARGBRow_DSPR2(const uint8* src_raw, uint8* dst_argb, int width); 
     1574void RGB565ToARGBRow_DSPR2(const uint8* src_rgb565, uint8* dst_argb, int width); 
     1575void ARGB1555ToARGBRow_DSPR2(const uint8* src_argb1555, 
     1576                             uint8* dst_argb, 
     1577                             int width); 
     1578void ARGB4444ToARGBRow_DSPR2(const uint8* src_argb4444, 
     1579                             uint8* dst_argb, 
     1580                             int width); 
     1581void ARGB4444ToARGBRow_MSA(const uint8* src_argb4444, 
     1582                           uint8* dst_argb, 
     1583                           int width); 
    9521584void RGB24ToARGBRow_C(const uint8* src_rgb24, uint8* dst_argb, int width); 
    9531585void RAWToARGBRow_C(const uint8* src_raw, uint8* dst_argb, int width); 
     
    9561588void ARGB1555ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int width); 
    9571589void ARGB4444ToARGBRow_C(const uint8* src_argb, uint8* dst_argb, int width); 
    958 void RGB24ToARGBRow_Any_SSSE3(const uint8* src_rgb24, uint8* dst_argb, 
     1590void RGB24ToARGBRow_Any_SSSE3(const uint8* src_rgb24, 
     1591                              uint8* dst_argb, 
    9591592                              int width); 
    9601593void RAWToARGBRow_Any_SSSE3(const uint8* src_raw, uint8* dst_argb, int width); 
    9611594void RAWToRGB24Row_Any_SSSE3(const uint8* src_raw, uint8* dst_rgb24, int width); 
    9621595 
    963 void RGB565ToARGBRow_Any_SSE2(const uint8* src_rgb565, uint8* dst_argb, 
     1596void RGB565ToARGBRow_Any_SSE2(const uint8* src_rgb565, 
     1597                              uint8* dst_argb, 
    9641598                              int width); 
    965 void ARGB1555ToARGBRow_Any_SSE2(const uint8* src_argb1555, uint8* dst_argb, 
     1599void ARGB1555ToARGBRow_Any_SSE2(const uint8* src_argb1555, 
     1600                                uint8* dst_argb, 
    9661601                                int width); 
    967 void ARGB4444ToARGBRow_Any_SSE2(const uint8* src_argb4444, uint8* dst_argb, 
     1602void ARGB4444ToARGBRow_Any_SSE2(const uint8* src_argb4444, 
     1603                                uint8* dst_argb, 
    9681604                                int width); 
    969 void RGB565ToARGBRow_Any_AVX2(const uint8* src_rgb565, uint8* dst_argb, 
     1605void RGB565ToARGBRow_Any_AVX2(const uint8* src_rgb565, 
     1606                              uint8* dst_argb, 
    9701607                              int width); 
    971 void ARGB1555ToARGBRow_Any_AVX2(const uint8* src_argb1555, uint8* dst_argb, 
     1608void ARGB1555ToARGBRow_Any_AVX2(const uint8* src_argb1555, 
     1609                                uint8* dst_argb, 
    9721610                                int width); 
    973 void ARGB4444ToARGBRow_Any_AVX2(const uint8* src_argb4444, uint8* dst_argb, 
     1611void ARGB4444ToARGBRow_Any_AVX2(const uint8* src_argb4444, 
     1612                                uint8* dst_argb, 
    9741613                                int width); 
    9751614 
    976 void RGB24ToARGBRow_Any_NEON(const uint8* src_rgb24, uint8* dst_argb, 
    977                              int width); 
     1615void RGB24ToARGBRow_Any_NEON(const uint8* src_rgb24, 
     1616                             uint8* dst_argb, 
     1617                             int width); 
     1618void RGB24ToARGBRow_Any_MSA(const uint8* src_rgb24, uint8* dst_argb, int width); 
    9781619void RAWToARGBRow_Any_NEON(const uint8* src_raw, uint8* dst_argb, int width); 
     1620void RAWToARGBRow_Any_MSA(const uint8* src_raw, uint8* dst_argb, int width); 
    9791621void RAWToRGB24Row_Any_NEON(const uint8* src_raw, uint8* dst_rgb24, int width); 
    980 void RGB565ToARGBRow_Any_NEON(const uint8* src_rgb565, uint8* dst_argb, 
     1622void RAWToRGB24Row_Any_MSA(const uint8* src_raw, uint8* dst_rgb24, int width); 
     1623void RGB565ToARGBRow_Any_NEON(const uint8* src_rgb565, 
     1624                              uint8* dst_argb, 
    9811625                              int width); 
    982 void ARGB1555ToARGBRow_Any_NEON(const uint8* src_argb1555, uint8* dst_argb, 
     1626void RGB565ToARGBRow_Any_MSA(const uint8* src_rgb565, 
     1627                             uint8* dst_argb, 
     1628                             int width); 
     1629void ARGB1555ToARGBRow_Any_NEON(const uint8* src_argb1555, 
     1630                                uint8* dst_argb, 
    9831631                                int width); 
    984 void ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444, uint8* dst_argb, 
     1632void ARGB1555ToARGBRow_Any_MSA(const uint8* src_argb1555, 
     1633                               uint8* dst_argb, 
     1634                               int width); 
     1635void ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444, 
     1636                                uint8* dst_argb, 
    9851637                                int width); 
     1638void RGB24ToARGBRow_Any_DSPR2(const uint8* src_rgb24, 
     1639                              uint8* dst_argb, 
     1640                              int width); 
     1641void RAWToARGBRow_Any_DSPR2(const uint8* src_raw, uint8* dst_argb, int width); 
     1642void RGB565ToARGBRow_Any_DSPR2(const uint8* src_rgb565, 
     1643                               uint8* dst_argb, 
     1644                               int width); 
     1645void ARGB1555ToARGBRow_Any_DSPR2(const uint8* src_argb1555, 
     1646                                 uint8* dst_argb, 
     1647                                 int width); 
     1648void ARGB4444ToARGBRow_Any_DSPR2(const uint8* src_argb4444, 
     1649                                 uint8* dst_argb, 
     1650                                 int width); 
     1651 
     1652void ARGB4444ToARGBRow_Any_MSA(const uint8* src_argb4444, 
     1653                               uint8* dst_argb, 
     1654                               int width); 
    9861655 
    9871656void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width); 
     
    9911660void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int width); 
    9921661 
    993 void ARGBToRGB565DitherRow_C(const uint8* src_argb, uint8* dst_rgb, 
    994                              const uint32 dither4, int width); 
    995 void ARGBToRGB565DitherRow_SSE2(const uint8* src_argb, uint8* dst_rgb, 
    996                                 const uint32 dither4, int width); 
    997 void ARGBToRGB565DitherRow_AVX2(const uint8* src_argb, uint8* dst_rgb, 
    998                                 const uint32 dither4, int width); 
     1662void ARGBToRGB565DitherRow_C(const uint8* src_argb, 
     1663                             uint8* dst_rgb, 
     1664                             const uint32 dither4, 
     1665                             int width); 
     1666void ARGBToRGB565DitherRow_SSE2(const uint8* src_argb, 
     1667                                uint8* dst_rgb, 
     1668                                const uint32 dither4, 
     1669                                int width); 
     1670void ARGBToRGB565DitherRow_AVX2(const uint8* src_argb, 
     1671                                uint8* dst_rgb, 
     1672                                const uint32 dither4, 
     1673                                int width); 
    9991674 
    10001675void ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int width); 
     
    10071682void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 
    10081683void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 
    1009 void ARGBToRGB565DitherRow_NEON(const uint8* src_argb, uint8* dst_rgb, 
    1010                                 const uint32 dither4, int width); 
     1684void ARGBToRGB565DitherRow_NEON(const uint8* src_argb, 
     1685                                uint8* dst_rgb, 
     1686                                const uint32 dither4, 
     1687                                int width); 
     1688void ARGBToRGB24Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 
     1689void ARGBToRAWRow_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 
     1690void ARGBToRGB565Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 
     1691void ARGBToARGB1555Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 
     1692void ARGBToARGB4444Row_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 
     1693void ARGBToRGB565DitherRow_MSA(const uint8* src_argb, 
     1694                               uint8* dst_rgb, 
     1695                               const uint32 dither4, 
     1696                               int width); 
    10111697 
    10121698void ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int width); 
     
    10201706void J400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int width); 
    10211707void J400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int width); 
     1708void J400ToARGBRow_MSA(const uint8* src_y, uint8* dst_argb, int width); 
    10221709void J400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int width); 
    10231710void J400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int width); 
    10241711void J400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int width); 
    10251712void J400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int width); 
     1713void J400ToARGBRow_Any_MSA(const uint8* src_y, uint8* dst_argb, int width); 
    10261714 
    10271715void I444ToARGBRow_C(const uint8* src_y, 
     
    10501738                          const struct YuvConstants* yuvconstants, 
    10511739                          int width); 
    1052 void I411ToARGBRow_C(const uint8* src_y, 
    1053                      const uint8* src_u, 
    1054                      const uint8* src_v, 
    1055                      uint8* dst_argb, 
    1056                      const struct YuvConstants* yuvconstants, 
    1057                      int width); 
    10581740void NV12ToARGBRow_C(const uint8* src_y, 
    10591741                     const uint8* src_uv, 
     
    11771859                         const struct YuvConstants* yuvconstants, 
    11781860                         int width); 
    1179 void I411ToARGBRow_SSSE3(const uint8* src_y, 
    1180                          const uint8* src_u, 
    1181                          const uint8* src_v, 
    1182                          uint8* dst_argb, 
    1183                          const struct YuvConstants* yuvconstants, 
    1184                          int width); 
    1185 void I411ToARGBRow_AVX2(const uint8* src_y, 
    1186                         const uint8* src_u, 
    1187                         const uint8* src_v, 
    1188                         uint8* dst_argb, 
    1189                         const struct YuvConstants* yuvconstants, 
    1190                         int width); 
    11911861void NV12ToARGBRow_SSSE3(const uint8* src_y, 
    11921862                         const uint8* src_uv, 
     
    13332003                                 const struct YuvConstants* yuvconstants, 
    13342004                                 int width); 
    1335 void I411ToARGBRow_Any_SSSE3(const uint8* src_y, 
    1336                              const uint8* src_u, 
    1337                              const uint8* src_v, 
    1338                              uint8* dst_argb, 
    1339                              const struct YuvConstants* yuvconstants, 
    1340                              int width); 
    1341 void I411ToARGBRow_Any_AVX2(const uint8* src_y, 
    1342                             const uint8* src_u, 
    1343                             const uint8* src_v, 
    1344                             uint8* dst_argb, 
    1345                             const struct YuvConstants* yuvconstants, 
    1346                             int width); 
    13472005void NV12ToARGBRow_Any_SSSE3(const uint8* src_y, 
    13482006                             const uint8* src_uv, 
     
    14502108void I400ToARGBRow_AVX2(const uint8* src_y, uint8* dst_argb, int width); 
    14512109void I400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int width); 
     2110void I400ToARGBRow_MSA(const uint8* src_y, uint8* dst_argb, int width); 
    14522111void I400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int width); 
    14532112void I400ToARGBRow_Any_AVX2(const uint8* src_y, uint8* dst_argb, int width); 
    14542113void I400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int width); 
     2114void I400ToARGBRow_Any_MSA(const uint8* src_y, uint8* dst_argb, int width); 
    14552115 
    14562116// ARGB preattenuated alpha blend. 
    1457 void ARGBBlendRow_SSSE3(const uint8* src_argb, const uint8* src_argb1, 
    1458                         uint8* dst_argb, int width); 
    1459 void ARGBBlendRow_NEON(const uint8* src_argb, const uint8* src_argb1, 
    1460                        uint8* dst_argb, int width); 
    1461 void ARGBBlendRow_C(const uint8* src_argb, const uint8* src_argb1, 
    1462                     uint8* dst_argb, int width); 
     2117void ARGBBlendRow_SSSE3(const uint8* src_argb, 
     2118                        const uint8* src_argb1, 
     2119                        uint8* dst_argb, 
     2120                        int width); 
     2121void ARGBBlendRow_NEON(const uint8* src_argb, 
     2122                       const uint8* src_argb1, 
     2123                       uint8* dst_argb, 
     2124                       int width); 
     2125void ARGBBlendRow_C(const uint8* src_argb, 
     2126                    const uint8* src_argb1, 
     2127                    uint8* dst_argb, 
     2128                    int width); 
    14632129 
    14642130// Unattenuated planar alpha blend. 
    1465 void BlendPlaneRow_SSSE3(const uint8* src0, const uint8* src1, 
    1466                          const uint8* alpha, uint8* dst, int width); 
    1467 void BlendPlaneRow_Any_SSSE3(const uint8* src0, const uint8* src1, 
    1468                              const uint8* alpha, uint8* dst, int width); 
    1469 void BlendPlaneRow_AVX2(const uint8* src0, const uint8* src1, 
    1470                         const uint8* alpha, uint8* dst, int width); 
    1471 void BlendPlaneRow_Any_AVX2(const uint8* src0, const uint8* src1, 
    1472                             const uint8* alpha, uint8* dst, int width); 
    1473 void BlendPlaneRow_C(const uint8* src0, const uint8* src1, 
    1474                      const uint8* alpha, uint8* dst, int width); 
     2131void BlendPlaneRow_SSSE3(const uint8* src0, 
     2132                         const uint8* src1, 
     2133                         const uint8* alpha, 
     2134                         uint8* dst, 
     2135                         int width); 
     2136void BlendPlaneRow_Any_SSSE3(const uint8* src0, 
     2137                             const uint8* src1, 
     2138                             const uint8* alpha, 
     2139                             uint8* dst, 
     2140                             int width); 
     2141void BlendPlaneRow_AVX2(const uint8* src0, 
     2142                        const uint8* src1, 
     2143                        const uint8* alpha, 
     2144                        uint8* dst, 
     2145                        int width); 
     2146void BlendPlaneRow_Any_AVX2(const uint8* src0, 
     2147                            const uint8* src1, 
     2148                            const uint8* alpha, 
     2149                            uint8* dst, 
     2150                            int width); 
     2151void BlendPlaneRow_C(const uint8* src0, 
     2152                     const uint8* src1, 
     2153                     const uint8* alpha, 
     2154                     uint8* dst, 
     2155                     int width); 
    14752156 
    14762157// ARGB multiply images. Same API as Blend, but these require 
    14772158// pointer and width alignment for SSE2. 
    1478 void ARGBMultiplyRow_C(const uint8* src_argb, const uint8* src_argb1, 
    1479                        uint8* dst_argb, int width); 
    1480 void ARGBMultiplyRow_SSE2(const uint8* src_argb, const uint8* src_argb1, 
    1481                           uint8* dst_argb, int width); 
    1482 void ARGBMultiplyRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1, 
    1483                               uint8* dst_argb, int width); 
    1484 void ARGBMultiplyRow_AVX2(const uint8* src_argb, const uint8* src_argb1, 
    1485                           uint8* dst_argb, int width); 
    1486 void ARGBMultiplyRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1, 
    1487                               uint8* dst_argb, int width); 
    1488 void ARGBMultiplyRow_NEON(const uint8* src_argb, const uint8* src_argb1, 
    1489                           uint8* dst_argb, int width); 
    1490 void ARGBMultiplyRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1, 
    1491                               uint8* dst_argb, int width); 
     2159void ARGBMultiplyRow_C(const uint8* src_argb, 
     2160                       const uint8* src_argb1, 
     2161                       uint8* dst_argb, 
     2162                       int width); 
     2163void ARGBMultiplyRow_SSE2(const uint8* src_argb, 
     2164                          const uint8* src_argb1, 
     2165                          uint8* dst_argb, 
     2166                          int width); 
     2167void ARGBMultiplyRow_Any_SSE2(const uint8* src_argb, 
     2168                              const uint8* src_argb1, 
     2169                              uint8* dst_argb, 
     2170                              int width); 
     2171void ARGBMultiplyRow_AVX2(const uint8* src_argb, 
     2172                          const uint8* src_argb1, 
     2173                          uint8* dst_argb, 
     2174                          int width); 
     2175void ARGBMultiplyRow_Any_AVX2(const uint8* src_argb, 
     2176                              const uint8* src_argb1, 
     2177                              uint8* dst_argb, 
     2178                              int width); 
     2179void ARGBMultiplyRow_NEON(const uint8* src_argb, 
     2180                          const uint8* src_argb1, 
     2181                          uint8* dst_argb, 
     2182                          int width); 
     2183void ARGBMultiplyRow_Any_NEON(const uint8* src_argb, 
     2184                              const uint8* src_argb1, 
     2185                              uint8* dst_argb, 
     2186                              int width); 
     2187void ARGBMultiplyRow_MSA(const uint8* src_argb, 
     2188                         const uint8* src_argb1, 
     2189                         uint8* dst_argb, 
     2190                         int width); 
     2191void ARGBMultiplyRow_Any_MSA(const uint8* src_argb, 
     2192                             const uint8* src_argb1, 
     2193                             uint8* dst_argb, 
     2194                             int width); 
    14922195 
    14932196// ARGB add images. 
    1494 void ARGBAddRow_C(const uint8* src_argb, const uint8* src_argb1, 
    1495                   uint8* dst_argb, int width); 
    1496 void ARGBAddRow_SSE2(const uint8* src_argb, const uint8* src_argb1, 
    1497                      uint8* dst_argb, int width); 
    1498 void ARGBAddRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1, 
    1499                          uint8* dst_argb, int width); 
    1500 void ARGBAddRow_AVX2(const uint8* src_argb, const uint8* src_argb1, 
    1501                      uint8* dst_argb, int width); 
    1502 void ARGBAddRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1, 
    1503                          uint8* dst_argb, int width); 
    1504 void ARGBAddRow_NEON(const uint8* src_argb, const uint8* src_argb1, 
    1505                      uint8* dst_argb, int width); 
    1506 void ARGBAddRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1, 
    1507                          uint8* dst_argb, int width); 
     2197void ARGBAddRow_C(const uint8* src_argb, 
     2198                  const uint8* src_argb1, 
     2199                  uint8* dst_argb, 
     2200                  int width); 
     2201void ARGBAddRow_SSE2(const uint8* src_argb, 
     2202                     const uint8* src_argb1, 
     2203                     uint8* dst_argb, 
     2204                     int width); 
     2205void ARGBAddRow_Any_SSE2(const uint8* src_argb, 
     2206                         const uint8* src_argb1, 
     2207                         uint8* dst_argb, 
     2208                         int width); 
     2209void ARGBAddRow_AVX2(const uint8* src_argb, 
     2210                     const uint8* src_argb1, 
     2211                     uint8* dst_argb, 
     2212                     int width); 
     2213void ARGBAddRow_Any_AVX2(const uint8* src_argb, 
     2214                         const uint8* src_argb1, 
     2215                         uint8* dst_argb, 
     2216                         int width); 
     2217void ARGBAddRow_NEON(const uint8* src_argb, 
     2218                     const uint8* src_argb1, 
     2219                     uint8* dst_argb, 
     2220                     int width); 
     2221void ARGBAddRow_Any_NEON(const uint8* src_argb, 
     2222                         const uint8* src_argb1, 
     2223                         uint8* dst_argb, 
     2224                         int width); 
     2225void ARGBAddRow_MSA(const uint8* src_argb, 
     2226                    const uint8* src_argb1, 
     2227                    uint8* dst_argb, 
     2228                    int width); 
     2229void ARGBAddRow_Any_MSA(const uint8* src_argb, 
     2230                        const uint8* src_argb1, 
     2231                        uint8* dst_argb, 
     2232                        int width); 
    15082233 
    15092234// ARGB subtract images. Same API as Blend, but these require 
    15102235// pointer and width alignment for SSE2. 
    1511 void ARGBSubtractRow_C(const uint8* src_argb, const uint8* src_argb1, 
    1512                        uint8* dst_argb, int width); 
    1513 void ARGBSubtractRow_SSE2(const uint8* src_argb, const uint8* src_argb1, 
    1514                           uint8* dst_argb, int width); 
    1515 void ARGBSubtractRow_Any_SSE2(const uint8* src_argb, const uint8* src_argb1, 
    1516                               uint8* dst_argb, int width); 
    1517 void ARGBSubtractRow_AVX2(const uint8* src_argb, const uint8* src_argb1, 
    1518                           uint8* dst_argb, int width); 
    1519 void ARGBSubtractRow_Any_AVX2(const uint8* src_argb, const uint8* src_argb1, 
    1520                               uint8* dst_argb, int width); 
    1521 void ARGBSubtractRow_NEON(const uint8* src_argb, const uint8* src_argb1, 
    1522                           uint8* dst_argb, int width); 
    1523 void ARGBSubtractRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1, 
    1524                               uint8* dst_argb, int width); 
     2236void ARGBSubtractRow_C(const uint8* src_argb, 
     2237                       const uint8* src_argb1, 
     2238                       uint8* dst_argb, 
     2239                       int width); 
     2240void ARGBSubtractRow_SSE2(const uint8* src_argb, 
     2241                          const uint8* src_argb1, 
     2242                          uint8* dst_argb, 
     2243                          int width); 
     2244void ARGBSubtractRow_Any_SSE2(const uint8* src_argb, 
     2245                              const uint8* src_argb1, 
     2246                              uint8* dst_argb, 
     2247                              int width); 
     2248void ARGBSubtractRow_AVX2(const uint8* src_argb, 
     2249                          const uint8* src_argb1, 
     2250                          uint8* dst_argb, 
     2251                          int width); 
     2252void ARGBSubtractRow_Any_AVX2(const uint8* src_argb, 
     2253                              const uint8* src_argb1, 
     2254                              uint8* dst_argb, 
     2255                              int width); 
     2256void ARGBSubtractRow_NEON(const uint8* src_argb, 
     2257                          const uint8* src_argb1, 
     2258                          uint8* dst_argb, 
     2259                          int width); 
     2260void ARGBSubtractRow_Any_NEON(const uint8* src_argb, 
     2261                              const uint8* src_argb1, 
     2262                              uint8* dst_argb, 
     2263                              int width); 
     2264void ARGBSubtractRow_MSA(const uint8* src_argb, 
     2265                         const uint8* src_argb1, 
     2266                         uint8* dst_argb, 
     2267                         int width); 
     2268void ARGBSubtractRow_Any_MSA(const uint8* src_argb, 
     2269                             const uint8* src_argb1, 
     2270                             uint8* dst_argb, 
     2271                             int width); 
    15252272 
    15262273void ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width); 
    15272274void ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int width); 
    15282275void ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int width); 
    1529 void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, 
     2276void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, 
     2277                                uint8* dst_rgb, 
    15302278                                int width); 
    1531 void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, 
     2279void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, 
     2280                                uint8* dst_rgb, 
    15322281                                int width); 
    15332282 
    1534 void ARGBToRGB565DitherRow_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, 
    1535                                     const uint32 dither4, int width); 
    1536 void ARGBToRGB565DitherRow_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, 
    1537                                     const uint32 dither4, int width); 
     2283void ARGBToRGB565DitherRow_Any_SSE2(const uint8* src_argb, 
     2284                                    uint8* dst_rgb, 
     2285                                    const uint32 dither4, 
     2286                                    int width); 
     2287void ARGBToRGB565DitherRow_Any_AVX2(const uint8* src_argb, 
     2288                                    uint8* dst_rgb, 
     2289                                    const uint32 dither4, 
     2290                                    int width); 
    15382291 
    15392292void ARGBToRGB565Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int width); 
    1540 void ARGBToARGB1555Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, 
     2293void ARGBToARGB1555Row_Any_AVX2(const uint8* src_argb, 
     2294                                uint8* dst_rgb, 
    15412295                                int width); 
    1542 void ARGBToARGB4444Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, 
     2296void ARGBToARGB4444Row_Any_AVX2(const uint8* src_argb, 
     2297                                uint8* dst_rgb, 
    15432298                                int width); 
    15442299 
     
    15462301void ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 
    15472302void ARGBToRGB565Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int width); 
    1548 void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, 
     2303void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, 
     2304                                uint8* dst_rgb, 
    15492305                                int width); 
    1550 void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, 
     2306void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, 
     2307                                uint8* dst_rgb, 
    15512308                                int width); 
    1552 void ARGBToRGB565DitherRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, 
    1553                                     const uint32 dither4, int width); 
     2309void ARGBToRGB565DitherRow_Any_NEON(const uint8* src_argb, 
     2310                                    uint8* dst_rgb, 
     2311                                    const uint32 dither4, 
     2312                                    int width); 
     2313void ARGBToRGB24Row_Any_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 
     2314void ARGBToRAWRow_Any_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 
     2315void ARGBToRGB565Row_Any_MSA(const uint8* src_argb, uint8* dst_rgb, int width); 
     2316void ARGBToARGB1555Row_Any_MSA(const uint8* src_argb, 
     2317                               uint8* dst_rgb, 
     2318                               int width); 
     2319void ARGBToARGB4444Row_Any_MSA(const uint8* src_argb, 
     2320                               uint8* dst_rgb, 
     2321                               int width); 
     2322void ARGBToRGB565DitherRow_Any_MSA(const uint8* src_argb, 
     2323                                   uint8* dst_rgb, 
     2324                                   const uint32 dither4, 
     2325                                   int width); 
    15542326 
    15552327void I444ToARGBRow_Any_NEON(const uint8* src_y, 
     
    15722344                                 const struct YuvConstants* yuvconstants, 
    15732345                                 int width); 
    1574 void I411ToARGBRow_Any_NEON(const uint8* src_y, 
    1575                             const uint8* src_u, 
    1576                             const uint8* src_v, 
    1577                             uint8* dst_argb, 
    1578                             const struct YuvConstants* yuvconstants, 
    1579                             int width); 
    15802346void I422ToRGBARow_Any_NEON(const uint8* src_y, 
    15812347                            const uint8* src_u, 
     
    16312397                            const struct YuvConstants* yuvconstants, 
    16322398                            int width); 
     2399void I444ToARGBRow_Any_DSPR2(const uint8* src_y, 
     2400                             const uint8* src_u, 
     2401                             const uint8* src_v, 
     2402                             uint8* dst_argb, 
     2403                             const struct YuvConstants* yuvconstants, 
     2404                             int width); 
     2405void I422ToARGB4444Row_Any_DSPR2(const uint8* src_y, 
     2406                                 const uint8* src_u, 
     2407                                 const uint8* src_v, 
     2408                                 uint8* dst_argb, 
     2409                                 const struct YuvConstants* yuvconstants, 
     2410                                 int width); 
     2411void I422ToARGBRow_Any_DSPR2(const uint8* src_y, 
     2412                             const uint8* src_u, 
     2413                             const uint8* src_v, 
     2414                             uint8* dst_argb, 
     2415                             const struct YuvConstants* yuvconstants, 
     2416                             int width); 
    16332417void I422ToARGBRow_DSPR2(const uint8* src_y, 
    16342418                         const uint8* src_u, 
     
    16372421                         const struct YuvConstants* yuvconstants, 
    16382422                         int width); 
     2423void I422ToARGB1555Row_Any_DSPR2(const uint8* src_y, 
     2424                                 const uint8* src_u, 
     2425                                 const uint8* src_v, 
     2426                                 uint8* dst_argb, 
     2427                                 const struct YuvConstants* yuvconstants, 
     2428                                 int width); 
     2429void I411ToARGBRow_Any_DSPR2(const uint8* src_y, 
     2430                             const uint8* src_u, 
     2431                             const uint8* src_v, 
     2432                             uint8* dst_argb, 
     2433                             const struct YuvConstants* yuvconstants, 
     2434                             int width); 
     2435void NV12ToARGBRow_Any_DSPR2(const uint8* src_y, 
     2436                             const uint8* src_uv, 
     2437                             uint8* dst_argb, 
     2438                             const struct YuvConstants* yuvconstants, 
     2439                             int width); 
    16392440void I422ToARGBRow_DSPR2(const uint8* src_y, 
    16402441                         const uint8* src_u, 
     
    16432444                         const struct YuvConstants* yuvconstants, 
    16442445                         int width); 
     2446void I444ToARGBRow_Any_MSA(const uint8* src_y, 
     2447                           const uint8* src_u, 
     2448                           const uint8* src_v, 
     2449                           uint8* dst_argb, 
     2450                           const struct YuvConstants* yuvconstants, 
     2451                           int width); 
     2452void I422ToARGBRow_Any_MSA(const uint8* src_y, 
     2453                           const uint8* src_u, 
     2454                           const uint8* src_v, 
     2455                           uint8* dst_argb, 
     2456                           const struct YuvConstants* yuvconstants, 
     2457                           int width); 
     2458void I422ToRGBARow_Any_MSA(const uint8* src_y, 
     2459                           const uint8* src_u, 
     2460                           const uint8* src_v, 
     2461                           uint8* dst_argb, 
     2462                           const struct YuvConstants* yuvconstants, 
     2463                           int width); 
     2464void I422AlphaToARGBRow_Any_MSA(const uint8* src_y, 
     2465                                const uint8* src_u, 
     2466                                const uint8* src_v, 
     2467                                const uint8* src_a, 
     2468                                uint8* dst_argb, 
     2469                                const struct YuvConstants* yuvconstants, 
     2470                                int width); 
     2471void I422ToRGB24Row_Any_MSA(const uint8* src_y, 
     2472                            const uint8* src_u, 
     2473                            const uint8* src_v, 
     2474                            uint8* dst_rgb24, 
     2475                            const struct YuvConstants* yuvconstants, 
     2476                            int width); 
     2477void I422ToRGB565Row_Any_MSA(const uint8* src_y, 
     2478                             const uint8* src_u, 
     2479                             const uint8* src_v, 
     2480                             uint8* dst_rgb565, 
     2481                             const struct YuvConstants* yuvconstants, 
     2482                             int width); 
     2483void I422ToARGB4444Row_Any_MSA(const uint8* src_y, 
     2484                               const uint8* src_u, 
     2485                               const uint8* src_v, 
     2486                               uint8* dst_argb4444, 
     2487                               const struct YuvConstants* yuvconstants, 
     2488                               int width); 
     2489void I422ToARGB1555Row_Any_MSA(const uint8* src_y, 
     2490                               const uint8* src_u, 
     2491                               const uint8* src_v, 
     2492                               uint8* dst_argb1555, 
     2493                               const struct YuvConstants* yuvconstants, 
     2494                               int width); 
     2495void NV12ToARGBRow_Any_MSA(const uint8* src_y, 
     2496                           const uint8* src_uv, 
     2497                           uint8* dst_argb, 
     2498                           const struct YuvConstants* yuvconstants, 
     2499                           int width); 
     2500void NV12ToRGB565Row_Any_MSA(const uint8* src_y, 
     2501                             const uint8* src_uv, 
     2502                             uint8* dst_argb, 
     2503                             const struct YuvConstants* yuvconstants, 
     2504                             int width); 
     2505void NV21ToARGBRow_Any_MSA(const uint8* src_y, 
     2506                           const uint8* src_vu, 
     2507                           uint8* dst_argb, 
     2508                           const struct YuvConstants* yuvconstants, 
     2509                           int width); 
     2510void YUY2ToARGBRow_Any_MSA(const uint8* src_yuy2, 
     2511                           uint8* dst_argb, 
     2512                           const struct YuvConstants* yuvconstants, 
     2513                           int width); 
     2514void UYVYToARGBRow_Any_MSA(const uint8* src_uyvy, 
     2515                           uint8* dst_argb, 
     2516                           const struct YuvConstants* yuvconstants, 
     2517                           int width); 
    16452518 
    16462519void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int width); 
    1647 void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2, 
    1648                       uint8* dst_u, uint8* dst_v, int width); 
     2520void YUY2ToUVRow_AVX2(const uint8* src_yuy2, 
     2521                      int stride_yuy2, 
     2522                      uint8* dst_u, 
     2523                      uint8* dst_v, 
     2524                      int width); 
    16492525void YUY2ToUV422Row_AVX2(const uint8* src_yuy2, 
    1650                          uint8* dst_u, uint8* dst_v, int width); 
     2526                         uint8* dst_u, 
     2527                         uint8* dst_v, 
     2528                         int width); 
    16512529void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int width); 
    1652 void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2, 
    1653                       uint8* dst_u, uint8* dst_v, int width); 
     2530void YUY2ToUVRow_SSE2(const uint8* src_yuy2, 
     2531                      int stride_yuy2, 
     2532                      uint8* dst_u, 
     2533                      uint8* dst_v, 
     2534                      int width); 
    16542535void YUY2ToUV422Row_SSE2(const uint8* src_yuy2, 
    1655                          uint8* dst_u, uint8* dst_v, int width); 
     2536                         uint8* dst_u, 
     2537                         uint8* dst_v, 
     2538                         int width); 
    16562539void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int width); 
    1657 void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2, 
    1658                       uint8* dst_u, uint8* dst_v, int width); 
     2540void YUY2ToUVRow_NEON(const uint8* src_yuy2, 
     2541                      int stride_yuy2, 
     2542                      uint8* dst_u, 
     2543                      uint8* dst_v, 
     2544                      int width); 
    16592545void YUY2ToUV422Row_NEON(const uint8* src_yuy2, 
    1660                          uint8* dst_u, uint8* dst_v, int width); 
     2546                         uint8* dst_u, 
     2547                         uint8* dst_v, 
     2548                         int width); 
     2549void YUY2ToYRow_MSA(const uint8* src_yuy2, uint8* dst_y, int width); 
     2550void YUY2ToUVRow_MSA(const uint8* src_yuy2, 
     2551                     int stride_yuy2, 
     2552                     uint8* dst_u, 
     2553                     uint8* dst_v, 
     2554                     int width); 
     2555void YUY2ToUV422Row_MSA(const uint8* src_yuy2, 
     2556                        uint8* dst_u, 
     2557                        uint8* dst_v, 
     2558                        int width); 
    16612559void YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int width); 
    1662 void YUY2ToUVRow_C(const uint8* src_yuy2, int stride_yuy2, 
    1663                    uint8* dst_u, uint8* dst_v, int width); 
     2560void YUY2ToUVRow_C(const uint8* src_yuy2, 
     2561                   int stride_yuy2, 
     2562                   uint8* dst_u, 
     2563                   uint8* dst_v, 
     2564                   int width); 
    16642565void YUY2ToUV422Row_C(const uint8* src_yuy2, 
    1665                       uint8* dst_u, uint8* dst_v, int width); 
     2566                      uint8* dst_u, 
     2567                      uint8* dst_v, 
     2568                      int width); 
    16662569void YUY2ToYRow_Any_AVX2(const uint8* src_yuy2, uint8* dst_y, int width); 
    1667 void YUY2ToUVRow_Any_AVX2(const uint8* src_yuy2, int stride_yuy2, 
    1668                           uint8* dst_u, uint8* dst_v, int width); 
     2570void YUY2ToUVRow_Any_AVX2(const uint8* src_yuy2, 
     2571                          int stride_yuy2, 
     2572                          uint8* dst_u, 
     2573                          uint8* dst_v, 
     2574                          int width); 
    16692575void YUY2ToUV422Row_Any_AVX2(const uint8* src_yuy2, 
    1670                              uint8* dst_u, uint8* dst_v, int width); 
     2576                             uint8* dst_u, 
     2577                             uint8* dst_v, 
     2578                             int width); 
    16712579void YUY2ToYRow_Any_SSE2(const uint8* src_yuy2, uint8* dst_y, int width); 
    1672 void YUY2ToUVRow_Any_SSE2(const uint8* src_yuy2, int stride_yuy2, 
    1673                           uint8* dst_u, uint8* dst_v, int width); 
     2580void YUY2ToUVRow_Any_SSE2(const uint8* src_yuy2, 
     2581                          int stride_yuy2, 
     2582                          uint8* dst_u, 
     2583                          uint8* dst_v, 
     2584                          int width); 
    16742585void YUY2ToUV422Row_Any_SSE2(const uint8* src_yuy2, 
    1675                              uint8* dst_u, uint8* dst_v, int width); 
     2586                             uint8* dst_u, 
     2587                             uint8* dst_v, 
     2588                             int width); 
    16762589void YUY2ToYRow_Any_NEON(const uint8* src_yuy2, uint8* dst_y, int width); 
    1677 void YUY2ToUVRow_Any_NEON(const uint8* src_yuy2, int stride_yuy2, 
    1678                           uint8* dst_u, uint8* dst_v, int width); 
     2590void YUY2ToUVRow_Any_NEON(const uint8* src_yuy2, 
     2591                          int stride_yuy2, 
     2592                          uint8* dst_u, 
     2593                          uint8* dst_v, 
     2594                          int width); 
    16792595void YUY2ToUV422Row_Any_NEON(const uint8* src_yuy2, 
    1680                              uint8* dst_u, uint8* dst_v, int width); 
     2596                             uint8* dst_u, 
     2597                             uint8* dst_v, 
     2598                             int width); 
     2599void YUY2ToYRow_Any_MSA(const uint8* src_yuy2, uint8* dst_y, int width); 
     2600void YUY2ToUVRow_Any_MSA(const uint8* src_yuy2, 
     2601                         int stride_yuy2, 
     2602                         uint8* dst_u, 
     2603                         uint8* dst_v, 
     2604                         int width); 
     2605void YUY2ToUV422Row_Any_MSA(const uint8* src_yuy2, 
     2606                            uint8* dst_u, 
     2607                            uint8* dst_v, 
     2608                            int width); 
    16812609void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width); 
    1682 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy, 
    1683                       uint8* dst_u, uint8* dst_v, int width); 
     2610void UYVYToUVRow_AVX2(const uint8* src_uyvy, 
     2611                      int stride_uyvy, 
     2612                      uint8* dst_u, 
     2613                      uint8* dst_v, 
     2614                      int width); 
    16842615void UYVYToUV422Row_AVX2(const uint8* src_uyvy, 
    1685                          uint8* dst_u, uint8* dst_v, int width); 
     2616                         uint8* dst_u, 
     2617                         uint8* dst_v, 
     2618                         int width); 
    16862619void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int width); 
    1687 void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy, 
    1688                       uint8* dst_u, uint8* dst_v, int width); 
     2620void UYVYToUVRow_SSE2(const uint8* src_uyvy, 
     2621                      int stride_uyvy, 
     2622                      uint8* dst_u, 
     2623                      uint8* dst_v, 
     2624                      int width); 
    16892625void UYVYToUV422Row_SSE2(const uint8* src_uyvy, 
    1690                          uint8* dst_u, uint8* dst_v, int width); 
     2626                         uint8* dst_u, 
     2627                         uint8* dst_v, 
     2628                         int width); 
    16912629void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int width); 
    1692 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy, 
    1693                       uint8* dst_u, uint8* dst_v, int width); 
     2630void UYVYToUVRow_AVX2(const uint8* src_uyvy, 
     2631                      int stride_uyvy, 
     2632                      uint8* dst_u, 
     2633                      uint8* dst_v, 
     2634                      int width); 
    16942635void UYVYToUV422Row_AVX2(const uint8* src_uyvy, 
    1695                          uint8* dst_u, uint8* dst_v, int width); 
     2636                         uint8* dst_u, 
     2637                         uint8* dst_v, 
     2638                         int width); 
    16962639void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int width); 
    1697 void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy, 
    1698                       uint8* dst_u, uint8* dst_v, int width); 
     2640void UYVYToUVRow_NEON(const uint8* src_uyvy, 
     2641                      int stride_uyvy, 
     2642                      uint8* dst_u, 
     2643                      uint8* dst_v, 
     2644                      int width); 
    16992645void UYVYToUV422Row_NEON(const uint8* src_uyvy, 
    1700                          uint8* dst_u, uint8* dst_v, int width); 
     2646                         uint8* dst_u, 
     2647                         uint8* dst_v, 
     2648                         int width); 
     2649void UYVYToYRow_MSA(const uint8* src_uyvy, uint8* dst_y, int width); 
     2650void UYVYToUVRow_MSA(const uint8* src_uyvy, 
     2651                     int stride_uyvy, 
     2652                     uint8* dst_u, 
     2653                     uint8* dst_v, 
     2654                     int width); 
     2655void UYVYToUV422Row_MSA(const uint8* src_uyvy, 
     2656                        uint8* dst_u, 
     2657                        uint8* dst_v, 
     2658                        int width); 
    17012659 
    17022660void UYVYToYRow_C(const uint8* src_uyvy, uint8* dst_y, int width); 
    1703 void UYVYToUVRow_C(const uint8* src_uyvy, int stride_uyvy, 
    1704                    uint8* dst_u, uint8* dst_v, int width); 
     2661void UYVYToUVRow_C(const uint8* src_uyvy, 
     2662                   int stride_uyvy, 
     2663                   uint8* dst_u, 
     2664                   uint8* dst_v, 
     2665                   int width); 
    17052666void UYVYToUV422Row_C(const uint8* src_uyvy, 
    1706                       uint8* dst_u, uint8* dst_v, int width); 
     2667                      uint8* dst_u, 
     2668                      uint8* dst_v, 
     2669                      int width); 
    17072670void UYVYToYRow_Any_AVX2(const uint8* src_uyvy, uint8* dst_y, int width); 
    1708 void UYVYToUVRow_Any_AVX2(const uint8* src_uyvy, int stride_uyvy, 
    1709                           uint8* dst_u, uint8* dst_v, int width); 
     2671void UYVYToUVRow_Any_AVX2(const uint8* src_uyvy, 
     2672                          int stride_uyvy, 
     2673                          uint8* dst_u, 
     2674                          uint8* dst_v, 
     2675                          int width); 
    17102676void UYVYToUV422Row_Any_AVX2(const uint8* src_uyvy, 
    1711                              uint8* dst_u, uint8* dst_v, int width); 
     2677                             uint8* dst_u, 
     2678                             uint8* dst_v, 
     2679                             int width); 
    17122680void UYVYToYRow_Any_SSE2(const uint8* src_uyvy, uint8* dst_y, int width); 
    1713 void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy, 
    1714                           uint8* dst_u, uint8* dst_v, int width); 
     2681void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, 
     2682                          int stride_uyvy, 
     2683                          uint8* dst_u, 
     2684                          uint8* dst_v, 
     2685                          int width); 
    17152686void UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy, 
    1716                              uint8* dst_u, uint8* dst_v, int width); 
     2687                             uint8* dst_u, 
     2688                             uint8* dst_v, 
     2689                             int width); 
    17172690void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int width); 
    1718 void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy, 
    1719                           uint8* dst_u, uint8* dst_v, int width); 
     2691void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, 
     2692                          int stride_uyvy, 
     2693                          uint8* dst_u, 
     2694                          uint8* dst_v, 
     2695                          int width); 
    17202696void UYVYToUV422Row_Any_NEON(const uint8* src_uyvy, 
    1721                              uint8* dst_u, uint8* dst_v, int width); 
     2697                             uint8* dst_u, 
     2698                             uint8* dst_v, 
     2699                             int width); 
     2700void UYVYToYRow_Any_MSA(const uint8* src_uyvy, uint8* dst_y, int width); 
     2701void UYVYToUVRow_Any_MSA(const uint8* src_uyvy, 
     2702                         int stride_uyvy, 
     2703                         uint8* dst_u, 
     2704                         uint8* dst_v, 
     2705                         int width); 
     2706void UYVYToUV422Row_Any_MSA(const uint8* src_uyvy, 
     2707                            uint8* dst_u, 
     2708                            uint8* dst_v, 
     2709                            int width); 
    17222710 
    17232711void I422ToYUY2Row_C(const uint8* src_y, 
    17242712                     const uint8* src_u, 
    17252713                     const uint8* src_v, 
    1726                      uint8* dst_yuy2, int width); 
     2714                     uint8* dst_yuy2, 
     2715                     int width); 
    17272716void I422ToUYVYRow_C(const uint8* src_y, 
    17282717                     const uint8* src_u, 
    17292718                     const uint8* src_v, 
    1730                      uint8* dst_uyvy, int width); 
     2719                     uint8* dst_uyvy, 
     2720                     int width); 
    17312721void I422ToYUY2Row_SSE2(const uint8* src_y, 
    17322722                        const uint8* src_u, 
    17332723                        const uint8* src_v, 
    1734                         uint8* dst_yuy2, int width); 
     2724                        uint8* dst_yuy2, 
     2725                        int width); 
    17352726void I422ToUYVYRow_SSE2(const uint8* src_y, 
    17362727                        const uint8* src_u, 
    17372728                        const uint8* src_v, 
    1738                         uint8* dst_uyvy, int width); 
     2729                        uint8* dst_uyvy, 
     2730                        int width); 
    17392731void I422ToYUY2Row_Any_SSE2(const uint8* src_y, 
    17402732                            const uint8* src_u, 
    17412733                            const uint8* src_v, 
    1742                             uint8* dst_yuy2, int width); 
     2734                            uint8* dst_yuy2, 
     2735                            int width); 
    17432736void I422ToUYVYRow_Any_SSE2(const uint8* src_y, 
    17442737                            const uint8* src_u, 
    17452738                            const uint8* src_v, 
    1746                             uint8* dst_uyvy, int width); 
     2739                            uint8* dst_uyvy, 
     2740                            int width); 
    17472741void I422ToYUY2Row_NEON(const uint8* src_y, 
    17482742                        const uint8* src_u, 
    17492743                        const uint8* src_v, 
    1750                         uint8* dst_yuy2, int width); 
     2744                        uint8* dst_yuy2, 
     2745                        int width); 
    17512746void I422ToUYVYRow_NEON(const uint8* src_y, 
    17522747                        const uint8* src_u, 
    17532748                        const uint8* src_v, 
    1754                         uint8* dst_uyvy, int width); 
     2749                        uint8* dst_uyvy, 
     2750                        int width); 
    17552751void I422ToYUY2Row_Any_NEON(const uint8* src_y, 
    17562752                            const uint8* src_u, 
    17572753                            const uint8* src_v, 
    1758                             uint8* dst_yuy2, int width); 
     2754                            uint8* dst_yuy2, 
     2755                            int width); 
    17592756void I422ToUYVYRow_Any_NEON(const uint8* src_y, 
    17602757                            const uint8* src_u, 
    17612758                            const uint8* src_v, 
    1762                             uint8* dst_uyvy, int width); 
     2759                            uint8* dst_uyvy, 
     2760                            int width); 
     2761void I422ToYUY2Row_MSA(const uint8* src_y, 
     2762                       const uint8* src_u, 
     2763                       const uint8* src_v, 
     2764                       uint8* dst_yuy2, 
     2765                       int width); 
     2766void I422ToUYVYRow_MSA(const uint8* src_y, 
     2767                       const uint8* src_u, 
     2768                       const uint8* src_v, 
     2769                       uint8* dst_uyvy, 
     2770                       int width); 
     2771void I422ToYUY2Row_Any_MSA(const uint8* src_y, 
     2772                           const uint8* src_u, 
     2773                           const uint8* src_v, 
     2774                           uint8* dst_yuy2, 
     2775                           int width); 
     2776void I422ToUYVYRow_Any_MSA(const uint8* src_y, 
     2777                           const uint8* src_u, 
     2778                           const uint8* src_v, 
     2779                           uint8* dst_uyvy, 
     2780                           int width); 
    17632781 
    17642782// Effects related row functions. 
     
    17672785void ARGBAttenuateRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width); 
    17682786void ARGBAttenuateRow_NEON(const uint8* src_argb, uint8* dst_argb, int width); 
    1769 void ARGBAttenuateRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb, 
     2787void ARGBAttenuateRow_MSA(const uint8* src_argb, uint8* dst_argb, int width); 
     2788void ARGBAttenuateRow_Any_SSE2(const uint8* src_argb, 
     2789                               uint8* dst_argb, 
    17702790                               int width); 
    1771 void ARGBAttenuateRow_Any_SSSE3(const uint8* src_argb, uint8* dst_argb, 
     2791void ARGBAttenuateRow_Any_SSSE3(const uint8* src_argb, 
     2792                                uint8* dst_argb, 
    17722793                                int width); 
    1773 void ARGBAttenuateRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb, 
     2794void ARGBAttenuateRow_Any_AVX2(const uint8* src_argb, 
     2795                               uint8* dst_argb, 
    17742796                               int width); 
    1775 void ARGBAttenuateRow_Any_NEON(const uint8* src_argb, uint8* dst_argb, 
     2797void ARGBAttenuateRow_Any_NEON(const uint8* src_argb, 
     2798                               uint8* dst_argb, 
    17762799                               int width); 
     2800void ARGBAttenuateRow_Any_MSA(const uint8* src_argb, 
     2801                              uint8* dst_argb, 
     2802                              int width); 
    17772803 
    17782804// Inverse table for unattenuate, shared by C and SSE2. 
     
    17812807void ARGBUnattenuateRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width); 
    17822808void ARGBUnattenuateRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width); 
    1783 void ARGBUnattenuateRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb, 
     2809void ARGBUnattenuateRow_Any_SSE2(const uint8* src_argb, 
     2810                                 uint8* dst_argb, 
    17842811                                 int width); 
    1785 void ARGBUnattenuateRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb, 
     2812void ARGBUnattenuateRow_Any_AVX2(const uint8* src_argb, 
     2813                                 uint8* dst_argb, 
    17862814                                 int width); 
    17872815 
     
    17892817void ARGBGrayRow_SSSE3(const uint8* src_argb, uint8* dst_argb, int width); 
    17902818void ARGBGrayRow_NEON(const uint8* src_argb, uint8* dst_argb, int width); 
     2819void ARGBGrayRow_MSA(const uint8* src_argb, uint8* dst_argb, int width); 
    17912820 
    17922821void ARGBSepiaRow_C(uint8* dst_argb, int width); 
    17932822void ARGBSepiaRow_SSSE3(uint8* dst_argb, int width); 
    17942823void ARGBSepiaRow_NEON(uint8* dst_argb, int width); 
    1795  
    1796 void ARGBColorMatrixRow_C(const uint8* src_argb, uint8* dst_argb, 
    1797                           const int8* matrix_argb, int width); 
    1798 void ARGBColorMatrixRow_SSSE3(const uint8* src_argb, uint8* dst_argb, 
    1799                               const int8* matrix_argb, int width); 
    1800 void ARGBColorMatrixRow_NEON(const uint8* src_argb, uint8* dst_argb, 
    1801                              const int8* matrix_argb, int width); 
     2824void ARGBSepiaRow_MSA(uint8* dst_argb, int width); 
     2825 
     2826void ARGBColorMatrixRow_C(const uint8* src_argb, 
     2827                          uint8* dst_argb, 
     2828                          const int8* matrix_argb, 
     2829                          int width); 
     2830void ARGBColorMatrixRow_SSSE3(const uint8* src_argb, 
     2831                              uint8* dst_argb, 
     2832                              const int8* matrix_argb, 
     2833                              int width); 
     2834void ARGBColorMatrixRow_NEON(const uint8* src_argb, 
     2835                             uint8* dst_argb, 
     2836                             const int8* matrix_argb, 
     2837                             int width); 
    18022838 
    18032839void ARGBColorTableRow_C(uint8* dst_argb, const uint8* table_argb, int width); 
     
    18072843void RGBColorTableRow_X86(uint8* dst_argb, const uint8* table_argb, int width); 
    18082844 
    1809 void ARGBQuantizeRow_C(uint8* dst_argb, int scale, int interval_size, 
    1810                        int interval_offset, int width); 
    1811 void ARGBQuantizeRow_SSE2(uint8* dst_argb, int scale, int interval_size, 
    1812                           int interval_offset, int width); 
    1813 void ARGBQuantizeRow_NEON(uint8* dst_argb, int scale, int interval_size, 
    1814                           int interval_offset, int width); 
    1815  
    1816 void ARGBShadeRow_C(const uint8* src_argb, uint8* dst_argb, int width, 
     2845void ARGBQuantizeRow_C(uint8* dst_argb, 
     2846                       int scale, 
     2847                       int interval_size, 
     2848                       int interval_offset, 
     2849                       int width); 
     2850void ARGBQuantizeRow_SSE2(uint8* dst_argb, 
     2851                          int scale, 
     2852                          int interval_size, 
     2853                          int interval_offset, 
     2854                          int width); 
     2855void ARGBQuantizeRow_NEON(uint8* dst_argb, 
     2856                          int scale, 
     2857                          int interval_size, 
     2858                          int interval_offset, 
     2859                          int width); 
     2860 
     2861void ARGBShadeRow_C(const uint8* src_argb, 
     2862                    uint8* dst_argb, 
     2863                    int width, 
    18172864                    uint32 value); 
    1818 void ARGBShadeRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width, 
     2865void ARGBShadeRow_SSE2(const uint8* src_argb, 
     2866                       uint8* dst_argb, 
     2867                       int width, 
    18192868                       uint32 value); 
    1820 void ARGBShadeRow_NEON(const uint8* src_argb, uint8* dst_argb, int width, 
     2869void ARGBShadeRow_NEON(const uint8* src_argb, 
     2870                       uint8* dst_argb, 
     2871                       int width, 
    18212872                       uint32 value); 
     2873void ARGBShadeRow_MSA(const uint8* src_argb, 
     2874                      uint8* dst_argb, 
     2875                      int width, 
     2876                      uint32 value); 
    18222877 
    18232878// Used for blur. 
    1824 void CumulativeSumToAverageRow_SSE2(const int32* topleft, const int32* botleft, 
    1825                                     int width, int area, uint8* dst, int count); 
    1826 void ComputeCumulativeSumRow_SSE2(const uint8* row, int32* cumsum, 
    1827                                   const int32* previous_cumsum, int width); 
    1828  
    1829 void CumulativeSumToAverageRow_C(const int32* topleft, const int32* botleft, 
    1830                                  int width, int area, uint8* dst, int count); 
    1831 void ComputeCumulativeSumRow_C(const uint8* row, int32* cumsum, 
    1832                                const int32* previous_cumsum, int width); 
     2879void CumulativeSumToAverageRow_SSE2(const int32* topleft, 
     2880                                    const int32* botleft, 
     2881                                    int width, 
     2882                                    int area, 
     2883                                    uint8* dst, 
     2884                                    int count); 
     2885void ComputeCumulativeSumRow_SSE2(const uint8* row, 
     2886                                  int32* cumsum, 
     2887                                  const int32* previous_cumsum, 
     2888                                  int width); 
     2889 
     2890void CumulativeSumToAverageRow_C(const int32* topleft, 
     2891                                 const int32* botleft, 
     2892                                 int width, 
     2893                                 int area, 
     2894                                 uint8* dst, 
     2895                                 int count); 
     2896void ComputeCumulativeSumRow_C(const uint8* row, 
     2897                               int32* cumsum, 
     2898                               const int32* previous_cumsum, 
     2899                               int width); 
    18332900 
    18342901LIBYUV_API 
    1835 void ARGBAffineRow_C(const uint8* src_argb, int src_argb_stride, 
    1836                      uint8* dst_argb, const float* uv_dudv, int width); 
     2902void ARGBAffineRow_C(const uint8* src_argb, 
     2903                     int src_argb_stride, 
     2904                     uint8* dst_argb, 
     2905                     const float* uv_dudv, 
     2906                     int width); 
    18372907LIBYUV_API 
    1838 void ARGBAffineRow_SSE2(const uint8* src_argb, int src_argb_stride, 
    1839                         uint8* dst_argb, const float* uv_dudv, int width); 
     2908void ARGBAffineRow_SSE2(const uint8* src_argb, 
     2909                        int src_argb_stride, 
     2910                        uint8* dst_argb, 
     2911                        const float* uv_dudv, 
     2912                        int width); 
    18402913 
    18412914// Used for I420Scale, ARGBScale, and ARGBInterpolate. 
    1842 void InterpolateRow_C(uint8* dst_ptr, const uint8* src_ptr, 
     2915void InterpolateRow_C(uint8* dst_ptr, 
     2916                      const uint8* src_ptr, 
    18432917                      ptrdiff_t src_stride_ptr, 
    1844                       int width, int source_y_fraction); 
    1845 void InterpolateRow_SSSE3(uint8* dst_ptr, const uint8* src_ptr, 
    1846                           ptrdiff_t src_stride_ptr, int width, 
     2918                      int width, 
     2919                      int source_y_fraction); 
     2920void InterpolateRow_SSSE3(uint8* dst_ptr, 
     2921                          const uint8* src_ptr, 
     2922                          ptrdiff_t src_stride_ptr, 
     2923                          int width, 
    18472924                          int source_y_fraction); 
    1848 void InterpolateRow_AVX2(uint8* dst_ptr, const uint8* src_ptr, 
    1849                          ptrdiff_t src_stride_ptr, int width, 
     2925void InterpolateRow_AVX2(uint8* dst_ptr, 
     2926                         const uint8* src_ptr, 
     2927                         ptrdiff_t src_stride_ptr, 
     2928                         int width, 
    18502929                         int source_y_fraction); 
    1851 void InterpolateRow_NEON(uint8* dst_ptr, const uint8* src_ptr, 
    1852                          ptrdiff_t src_stride_ptr, int width, 
     2930void InterpolateRow_NEON(uint8* dst_ptr, 
     2931                         const uint8* src_ptr, 
     2932                         ptrdiff_t src_stride_ptr, 
     2933                         int width, 
    18532934                         int source_y_fraction); 
    1854 void InterpolateRow_DSPR2(uint8* dst_ptr, const uint8* src_ptr, 
    1855                           ptrdiff_t src_stride_ptr, int width, 
     2935void InterpolateRow_DSPR2(uint8* dst_ptr, 
     2936                          const uint8* src_ptr, 
     2937                          ptrdiff_t src_stride_ptr, 
     2938                          int width, 
    18562939                          int source_y_fraction); 
    1857 void InterpolateRow_Any_NEON(uint8* dst_ptr, const uint8* src_ptr, 
    1858                              ptrdiff_t src_stride_ptr, int width, 
     2940void InterpolateRow_MSA(uint8* dst_ptr, 
     2941                        const uint8* src_ptr, 
     2942                        ptrdiff_t src_stride_ptr, 
     2943                        int width, 
     2944                        int source_y_fraction); 
     2945void InterpolateRow_Any_NEON(uint8* dst_ptr, 
     2946                             const uint8* src_ptr, 
     2947                             ptrdiff_t src_stride_ptr, 
     2948                             int width, 
    18592949                             int source_y_fraction); 
    1860 void InterpolateRow_Any_SSSE3(uint8* dst_ptr, const uint8* src_ptr, 
    1861                               ptrdiff_t src_stride_ptr, int width, 
     2950void InterpolateRow_Any_SSSE3(uint8* dst_ptr, 
     2951                              const uint8* src_ptr, 
     2952                              ptrdiff_t src_stride_ptr, 
     2953                              int width, 
    18622954                              int source_y_fraction); 
    1863 void InterpolateRow_Any_AVX2(uint8* dst_ptr, const uint8* src_ptr, 
    1864                              ptrdiff_t src_stride_ptr, int width, 
     2955void InterpolateRow_Any_AVX2(uint8* dst_ptr, 
     2956                             const uint8* src_ptr, 
     2957                             ptrdiff_t src_stride_ptr, 
     2958                             int width, 
    18652959                             int source_y_fraction); 
    1866 void InterpolateRow_Any_DSPR2(uint8* dst_ptr, const uint8* src_ptr, 
    1867                               ptrdiff_t src_stride_ptr, int width, 
     2960void InterpolateRow_Any_DSPR2(uint8* dst_ptr, 
     2961                              const uint8* src_ptr, 
     2962                              ptrdiff_t src_stride_ptr, 
     2963                              int width, 
    18682964                              int source_y_fraction); 
    1869  
    1870 void InterpolateRow_16_C(uint16* dst_ptr, const uint16* src_ptr, 
     2965void InterpolateRow_Any_MSA(uint8* dst_ptr, 
     2966                            const uint8* src_ptr, 
     2967                            ptrdiff_t src_stride_ptr, 
     2968                            int width, 
     2969                            int source_y_fraction); 
     2970 
     2971void InterpolateRow_16_C(uint16* dst_ptr, 
     2972                         const uint16* src_ptr, 
    18712973                         ptrdiff_t src_stride_ptr, 
    1872                          int width, int source_y_fraction); 
     2974                         int width, 
     2975                         int source_y_fraction); 
    18732976 
    18742977// Sobel images. 
    1875 void SobelXRow_C(const uint8* src_y0, const uint8* src_y1, const uint8* src_y2, 
    1876                  uint8* dst_sobelx, int width); 
    1877 void SobelXRow_SSE2(const uint8* src_y0, const uint8* src_y1, 
    1878                     const uint8* src_y2, uint8* dst_sobelx, int width); 
    1879 void SobelXRow_NEON(const uint8* src_y0, const uint8* src_y1, 
    1880                     const uint8* src_y2, uint8* dst_sobelx, int width); 
    1881 void SobelYRow_C(const uint8* src_y0, const uint8* src_y1, 
    1882                  uint8* dst_sobely, int width); 
    1883 void SobelYRow_SSE2(const uint8* src_y0, const uint8* src_y1, 
    1884                     uint8* dst_sobely, int width); 
    1885 void SobelYRow_NEON(const uint8* src_y0, const uint8* src_y1, 
    1886                     uint8* dst_sobely, int width); 
    1887 void SobelRow_C(const uint8* src_sobelx, const uint8* src_sobely, 
    1888                 uint8* dst_argb, int width); 
    1889 void SobelRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely, 
    1890                    uint8* dst_argb, int width); 
    1891 void SobelRow_NEON(const uint8* src_sobelx, const uint8* src_sobely, 
    1892                    uint8* dst_argb, int width); 
    1893 void SobelToPlaneRow_C(const uint8* src_sobelx, const uint8* src_sobely, 
    1894                        uint8* dst_y, int width); 
    1895 void SobelToPlaneRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely, 
    1896                           uint8* dst_y, int width); 
    1897 void SobelToPlaneRow_NEON(const uint8* src_sobelx, const uint8* src_sobely, 
    1898                           uint8* dst_y, int width); 
    1899 void SobelXYRow_C(const uint8* src_sobelx, const uint8* src_sobely, 
    1900                   uint8* dst_argb, int width); 
    1901 void SobelXYRow_SSE2(const uint8* src_sobelx, const uint8* src_sobely, 
    1902                      uint8* dst_argb, int width); 
    1903 void SobelXYRow_NEON(const uint8* src_sobelx, const uint8* src_sobely, 
    1904                      uint8* dst_argb, int width); 
    1905 void SobelRow_Any_SSE2(const uint8* src_sobelx, const uint8* src_sobely, 
    1906                        uint8* dst_argb, int width); 
    1907 void SobelRow_Any_NEON(const uint8* src_sobelx, const uint8* src_sobely, 
    1908                        uint8* dst_argb, int width); 
    1909 void SobelToPlaneRow_Any_SSE2(const uint8* src_sobelx, const uint8* src_sobely, 
    1910                               uint8* dst_y, int width); 
    1911 void SobelToPlaneRow_Any_NEON(const uint8* src_sobelx, const uint8* src_sobely, 
    1912                               uint8* dst_y, int width); 
    1913 void SobelXYRow_Any_SSE2(const uint8* src_sobelx, const uint8* src_sobely, 
    1914                          uint8* dst_argb, int width); 
    1915 void SobelXYRow_Any_NEON(const uint8* src_sobelx, const uint8* src_sobely, 
    1916                          uint8* dst_argb, int width); 
     2978void SobelXRow_C(const uint8* src_y0, 
     2979                 const uint8* src_y1, 
     2980                 const uint8* src_y2, 
     2981                 uint8* dst_sobelx, 
     2982                 int width); 
     2983void SobelXRow_SSE2(const uint8* src_y0, 
     2984                    const uint8* src_y1, 
     2985                    const uint8* src_y2, 
     2986                    uint8* dst_sobelx, 
     2987                    int width); 
     2988void SobelXRow_NEON(const uint8* src_y0, 
     2989                    const uint8* src_y1, 
     2990                    const uint8* src_y2, 
     2991                    uint8* dst_sobelx, 
     2992                    int width); 
     2993void SobelYRow_C(const uint8* src_y0, 
     2994                 const uint8* src_y1, 
     2995                 uint8* dst_sobely, 
     2996                 int width); 
     2997void SobelYRow_SSE2(const uint8* src_y0, 
     2998                    const uint8* src_y1, 
     2999                    uint8* dst_sobely, 
     3000                    int width); 
     3001void SobelYRow_NEON(const uint8* src_y0, 
     3002                    const uint8* src_y1, 
     3003                    uint8* dst_sobely, 
     3004                    int width); 
     3005void SobelRow_C(const uint8* src_sobelx, 
     3006                const uint8* src_sobely, 
     3007                uint8* dst_argb, 
     3008                int width); 
     3009void SobelRow_SSE2(const uint8* src_sobelx, 
     3010                   const uint8* src_sobely, 
     3011                   uint8* dst_argb, 
     3012                   int width); 
     3013void SobelRow_NEON(const uint8* src_sobelx, 
     3014                   const uint8* src_sobely, 
     3015                   uint8* dst_argb, 
     3016                   int width); 
     3017void SobelRow_MSA(const uint8* src_sobelx, 
     3018                  const uint8* src_sobely, 
     3019                  uint8* dst_argb, 
     3020                  int width); 
     3021void SobelToPlaneRow_C(const uint8* src_sobelx, 
     3022                       const uint8* src_sobely, 
     3023                       uint8* dst_y, 
     3024                       int width); 
     3025void SobelToPlaneRow_SSE2(const uint8* src_sobelx, 
     3026                          const uint8* src_sobely, 
     3027                          uint8* dst_y, 
     3028                          int width); 
     3029void SobelToPlaneRow_NEON(const uint8* src_sobelx, 
     3030                          const uint8* src_sobely, 
     3031                          uint8* dst_y, 
     3032                          int width); 
     3033void SobelToPlaneRow_MSA(const uint8* src_sobelx, 
     3034                         const uint8* src_sobely, 
     3035                         uint8* dst_y, 
     3036                         int width); 
     3037void SobelXYRow_C(const uint8* src_sobelx, 
     3038                  const uint8* src_sobely, 
     3039                  uint8* dst_argb, 
     3040                  int width); 
     3041void SobelXYRow_SSE2(const uint8* src_sobelx, 
     3042                     const uint8* src_sobely, 
     3043                     uint8* dst_argb, 
     3044                     int width); 
     3045void SobelXYRow_NEON(const uint8* src_sobelx, 
     3046                     const uint8* src_sobely, 
     3047                     uint8* dst_argb, 
     3048                     int width); 
     3049void SobelXYRow_MSA(const uint8* src_sobelx, 
     3050                    const uint8* src_sobely, 
     3051                    uint8* dst_argb, 
     3052                    int width); 
     3053void SobelRow_Any_SSE2(const uint8* src_sobelx, 
     3054                       const uint8* src_sobely, 
     3055                       uint8* dst_argb, 
     3056                       int width); 
     3057void SobelRow_Any_NEON(const uint8* src_sobelx, 
     3058                       const uint8* src_sobely, 
     3059                       uint8* dst_argb, 
     3060                       int width); 
     3061void SobelRow_Any_MSA(const uint8* src_sobelx, 
     3062                      const uint8* src_sobely, 
     3063                      uint8* dst_argb, 
     3064                      int width); 
     3065void SobelToPlaneRow_Any_SSE2(const uint8* src_sobelx, 
     3066                              const uint8* src_sobely, 
     3067                              uint8* dst_y, 
     3068                              int width); 
     3069void SobelToPlaneRow_Any_NEON(const uint8* src_sobelx, 
     3070                              const uint8* src_sobely, 
     3071                              uint8* dst_y, 
     3072                              int width); 
     3073void SobelToPlaneRow_Any_MSA(const uint8* src_sobelx, 
     3074                             const uint8* src_sobely, 
     3075                             uint8* dst_y, 
     3076                             int width); 
     3077void SobelXYRow_Any_SSE2(const uint8* src_sobelx, 
     3078                         const uint8* src_sobely, 
     3079                         uint8* dst_argb, 
     3080                         int width); 
     3081void SobelXYRow_Any_NEON(const uint8* src_sobelx, 
     3082                         const uint8* src_sobely, 
     3083                         uint8* dst_argb, 
     3084                         int width); 
     3085void SobelXYRow_Any_MSA(const uint8* src_sobelx, 
     3086                        const uint8* src_sobely, 
     3087                        uint8* dst_argb, 
     3088                        int width); 
    19173089 
    19183090void ARGBPolynomialRow_C(const uint8* src_argb, 
    1919                          uint8* dst_argb, const float* poly, 
     3091                         uint8* dst_argb, 
     3092                         const float* poly, 
    19203093                         int width); 
    19213094void ARGBPolynomialRow_SSE2(const uint8* src_argb, 
    1922                             uint8* dst_argb, const float* poly, 
     3095                            uint8* dst_argb, 
     3096                            const float* poly, 
    19233097                            int width); 
    19243098void ARGBPolynomialRow_AVX2(const uint8* src_argb, 
    1925                             uint8* dst_argb, const float* poly, 
    1926                             int width); 
    1927  
    1928 void ARGBLumaColorTableRow_C(const uint8* src_argb, uint8* dst_argb, int width, 
    1929                              const uint8* luma, uint32 lumacoeff); 
    1930 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb, 
     3099                            uint8* dst_argb, 
     3100                            const float* poly, 
     3101                            int width); 
     3102 
     3103// Scale and convert to half float. 
     3104void HalfFloatRow_C(const uint16* src, uint16* dst, float scale, int width); 
     3105void HalfFloatRow_SSE2(const uint16* src, uint16* dst, float scale, int width); 
     3106void HalfFloatRow_Any_SSE2(const uint16* src, 
     3107                           uint16* dst, 
     3108                           float scale, 
     3109                           int width); 
     3110void HalfFloatRow_AVX2(const uint16* src, uint16* dst, float scale, int width); 
     3111void HalfFloatRow_Any_AVX2(const uint16* src, 
     3112                           uint16* dst, 
     3113                           float scale, 
     3114                           int width); 
     3115void HalfFloatRow_F16C(const uint16* src, uint16* dst, float scale, int width); 
     3116void HalfFloatRow_Any_F16C(const uint16* src, 
     3117                           uint16* dst, 
     3118                           float scale, 
     3119                           int width); 
     3120void HalfFloat1Row_F16C(const uint16* src, uint16* dst, float scale, int width); 
     3121void HalfFloat1Row_Any_F16C(const uint16* src, 
     3122                            uint16* dst, 
     3123                            float scale, 
     3124                            int width); 
     3125void HalfFloatRow_NEON(const uint16* src, uint16* dst, float scale, int width); 
     3126void HalfFloatRow_Any_NEON(const uint16* src, 
     3127                           uint16* dst, 
     3128                           float scale, 
     3129                           int width); 
     3130void HalfFloat1Row_NEON(const uint16* src, uint16* dst, float scale, int width); 
     3131void HalfFloat1Row_Any_NEON(const uint16* src, 
     3132                            uint16* dst, 
     3133                            float scale, 
     3134                            int width); 
     3135 
     3136void ARGBLumaColorTableRow_C(const uint8* src_argb, 
     3137                             uint8* dst_argb, 
     3138                             int width, 
     3139                             const uint8* luma, 
     3140                             uint32 lumacoeff); 
     3141void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, 
     3142                                 uint8* dst_argb, 
    19313143                                 int width, 
    1932                                  const uint8* luma, uint32 lumacoeff); 
     3144                                 const uint8* luma, 
     3145                                 uint32 lumacoeff); 
    19333146 
    19343147#ifdef __cplusplus 
     
    19373150#endif 
    19383151 
    1939 #endif  // INCLUDE_LIBYUV_ROW_H_  NOLINT 
     3152#endif  // INCLUDE_LIBYUV_ROW_H_ 
Note: See TracChangeset for help on using the changeset viewer.