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/source/scale_any.cc

    r5358 r5633  
    2020 
    2121// Definition for ScaleFilterCols, ScaleARGBCols and ScaleARGBFilterCols 
    22 #define CANY(NAMEANY, TERP_SIMD, TERP_C, BPP, MASK)                            \ 
    23     void NAMEANY(uint8* dst_ptr, const uint8* src_ptr,                        \ 
    24                  int dst_width, int x, int dx) {                               \ 
    25       int n = dst_width & ~MASK;                                               \ 
    26       if (n > 0) {                                                             \ 
    27         TERP_SIMD(dst_ptr, src_ptr, n, x, dx);                                 \ 
    28       }                                                                        \ 
    29       TERP_C(dst_ptr + n * BPP, src_ptr,                                       \ 
    30              dst_width & MASK, x + n * dx, dx);                                \ 
    31     } 
     22#define CANY(NAMEANY, TERP_SIMD, TERP_C, BPP, MASK)                        \ 
     23  void NAMEANY(uint8* dst_ptr, const uint8* src_ptr, int dst_width, int x, \ 
     24               int dx) {                                                   \ 
     25    int r = dst_width & MASK;                                              \ 
     26    int n = dst_width & ~MASK;                                             \ 
     27    if (n > 0) {                                                           \ 
     28      TERP_SIMD(dst_ptr, src_ptr, n, x, dx);                               \ 
     29    }                                                                      \ 
     30    TERP_C(dst_ptr + n * BPP, src_ptr, r, x + n * dx, dx);                 \ 
     31  } 
    3232 
    3333#ifdef HAS_SCALEFILTERCOLS_NEON 
     
    3838#endif 
    3939#ifdef HAS_SCALEARGBFILTERCOLS_NEON 
    40 CANY(ScaleARGBFilterCols_Any_NEON, ScaleARGBFilterCols_NEON, 
    41      ScaleARGBFilterCols_C, 4, 3) 
     40CANY(ScaleARGBFilterCols_Any_NEON, 
     41     ScaleARGBFilterCols_NEON, 
     42     ScaleARGBFilterCols_C, 
     43     4, 
     44     3) 
    4245#endif 
    4346#undef CANY 
    4447 
    4548// Fixed scale down. 
    46 #define SDANY(NAMEANY, SCALEROWDOWN_SIMD, SCALEROWDOWN_C, FACTOR, BPP, MASK)   \ 
    47     void NAMEANY(const uint8* src_ptr, ptrdiff_t src_stride,                   \ 
    48                  uint8* dst_ptr, int dst_width) {                              \ 
    49       int r = (int)((unsigned int)dst_width % (MASK + 1));                     \ 
    50       int n = dst_width - r;                                                   \ 
    51       if (n > 0) {                                                             \ 
    52         SCALEROWDOWN_SIMD(src_ptr, src_stride, dst_ptr, n);                    \ 
    53       }                                                                        \ 
    54       SCALEROWDOWN_C(src_ptr + (n * FACTOR) * BPP, src_stride,                 \ 
    55                      dst_ptr + n * BPP, r);                                    \ 
    56     } 
     49// Mask may be non-power of 2, so use MOD 
     50#define SDANY(NAMEANY, SCALEROWDOWN_SIMD, SCALEROWDOWN_C, FACTOR, BPP, MASK) \ 
     51  void NAMEANY(const uint8* src_ptr, ptrdiff_t src_stride, uint8* dst_ptr,   \ 
     52               int dst_width) {                                              \ 
     53    int r = (int)((unsigned int)dst_width % (MASK + 1)); /* NOLINT */        \ 
     54    int n = dst_width - r;                                                   \ 
     55    if (n > 0) {                                                             \ 
     56      SCALEROWDOWN_SIMD(src_ptr, src_stride, dst_ptr, n);                    \ 
     57    }                                                                        \ 
     58    SCALEROWDOWN_C(src_ptr + (n * FACTOR) * BPP, src_stride,                 \ 
     59                   dst_ptr + n * BPP, r);                                    \ 
     60  } 
    5761 
    5862// Fixed scale down for odd source width.  Used by I420Blend subsampling. 
    5963// Since dst_width is (width + 1) / 2, this function scales one less pixel 
    6064// and copies the last pixel. 
    61 #define SDODD(NAMEANY, SCALEROWDOWN_SIMD, SCALEROWDOWN_C, FACTOR, BPP, MASK)   \ 
    62     void NAMEANY(const uint8* src_ptr, ptrdiff_t src_stride,                   \ 
    63                  uint8* dst_ptr, int dst_width) {                              \ 
    64       int r = (int)((unsigned int)(dst_width - 1) % (MASK + 1));               \ 
    65       int n = dst_width - r;                                                   \ 
    66       if (n > 0) {                                                             \ 
    67         SCALEROWDOWN_SIMD(src_ptr, src_stride, dst_ptr, n);                    \ 
    68       }                                                                        \ 
    69       SCALEROWDOWN_C(src_ptr + (n * FACTOR) * BPP, src_stride,                 \ 
    70                      dst_ptr + n * BPP, r);                                    \ 
    71     } 
     65#define SDODD(NAMEANY, SCALEROWDOWN_SIMD, SCALEROWDOWN_C, FACTOR, BPP, MASK) \ 
     66  void NAMEANY(const uint8* src_ptr, ptrdiff_t src_stride, uint8* dst_ptr,   \ 
     67               int dst_width) {                                              \ 
     68    int r = (int)((unsigned int)(dst_width - 1) % (MASK + 1)); /* NOLINT */  \ 
     69    int n = (dst_width - 1) - r;                                             \ 
     70    if (n > 0) {                                                             \ 
     71      SCALEROWDOWN_SIMD(src_ptr, src_stride, dst_ptr, n);                    \ 
     72    }                                                                        \ 
     73    SCALEROWDOWN_C(src_ptr + (n * FACTOR) * BPP, src_stride,                 \ 
     74                   dst_ptr + n * BPP, r + 1);                                \ 
     75  } 
    7276 
    7377#ifdef HAS_SCALEROWDOWN2_SSSE3 
    7478SDANY(ScaleRowDown2_Any_SSSE3, ScaleRowDown2_SSSE3, ScaleRowDown2_C, 2, 1, 15) 
    75 SDANY(ScaleRowDown2Linear_Any_SSSE3, ScaleRowDown2Linear_SSSE3, 
    76       ScaleRowDown2Linear_C, 2, 1, 15) 
    77 SDANY(ScaleRowDown2Box_Any_SSSE3, ScaleRowDown2Box_SSSE3, ScaleRowDown2Box_C, 
    78       2, 1, 15) 
    79 SDODD(ScaleRowDown2Box_Odd_SSSE3, ScaleRowDown2Box_SSSE3, 
    80       ScaleRowDown2Box_Odd_C, 2, 1, 15) 
     79SDANY(ScaleRowDown2Linear_Any_SSSE3, 
     80      ScaleRowDown2Linear_SSSE3, 
     81      ScaleRowDown2Linear_C, 
     82      2, 
     83      1, 
     84      15) 
     85SDANY(ScaleRowDown2Box_Any_SSSE3, 
     86      ScaleRowDown2Box_SSSE3, 
     87      ScaleRowDown2Box_C, 
     88      2, 
     89      1, 
     90      15) 
     91SDODD(ScaleRowDown2Box_Odd_SSSE3, 
     92      ScaleRowDown2Box_SSSE3, 
     93      ScaleRowDown2Box_Odd_C, 
     94      2, 
     95      1, 
     96      15) 
    8197#endif 
    8298#ifdef HAS_SCALEROWDOWN2_AVX2 
    8399SDANY(ScaleRowDown2_Any_AVX2, ScaleRowDown2_AVX2, ScaleRowDown2_C, 2, 1, 31) 
    84 SDANY(ScaleRowDown2Linear_Any_AVX2, ScaleRowDown2Linear_AVX2, 
    85       ScaleRowDown2Linear_C, 2, 1, 31) 
    86 SDANY(ScaleRowDown2Box_Any_AVX2, ScaleRowDown2Box_AVX2, ScaleRowDown2Box_C, 
    87       2, 1, 31) 
    88 SDODD(ScaleRowDown2Box_Odd_AVX2, ScaleRowDown2Box_AVX2, ScaleRowDown2Box_Odd_C, 
    89       2, 1, 31) 
     100SDANY(ScaleRowDown2Linear_Any_AVX2, 
     101      ScaleRowDown2Linear_AVX2, 
     102      ScaleRowDown2Linear_C, 
     103      2, 
     104      1, 
     105      31) 
     106SDANY(ScaleRowDown2Box_Any_AVX2, 
     107      ScaleRowDown2Box_AVX2, 
     108      ScaleRowDown2Box_C, 
     109      2, 
     110      1, 
     111      31) 
     112SDODD(ScaleRowDown2Box_Odd_AVX2, 
     113      ScaleRowDown2Box_AVX2, 
     114      ScaleRowDown2Box_Odd_C, 
     115      2, 
     116      1, 
     117      31) 
    90118#endif 
    91119#ifdef HAS_SCALEROWDOWN2_NEON 
    92120SDANY(ScaleRowDown2_Any_NEON, ScaleRowDown2_NEON, ScaleRowDown2_C, 2, 1, 15) 
    93 SDANY(ScaleRowDown2Linear_Any_NEON, ScaleRowDown2Linear_NEON, 
    94       ScaleRowDown2Linear_C, 2, 1, 15) 
    95 SDANY(ScaleRowDown2Box_Any_NEON, ScaleRowDown2Box_NEON, 
    96       ScaleRowDown2Box_C, 2, 1, 15) 
    97 SDODD(ScaleRowDown2Box_Odd_NEON, ScaleRowDown2Box_NEON, 
    98       ScaleRowDown2Box_Odd_C, 2, 1, 15) 
     121SDANY(ScaleRowDown2Linear_Any_NEON, 
     122      ScaleRowDown2Linear_NEON, 
     123      ScaleRowDown2Linear_C, 
     124      2, 
     125      1, 
     126      15) 
     127SDANY(ScaleRowDown2Box_Any_NEON, 
     128      ScaleRowDown2Box_NEON, 
     129      ScaleRowDown2Box_C, 
     130      2, 
     131      1, 
     132      15) 
     133SDODD(ScaleRowDown2Box_Odd_NEON, 
     134      ScaleRowDown2Box_NEON, 
     135      ScaleRowDown2Box_Odd_C, 
     136      2, 
     137      1, 
     138      15) 
     139#endif 
     140#ifdef HAS_SCALEROWDOWN2_MSA 
     141SDANY(ScaleRowDown2_Any_MSA, ScaleRowDown2_MSA, ScaleRowDown2_C, 2, 1, 31) 
     142SDANY(ScaleRowDown2Linear_Any_MSA, 
     143      ScaleRowDown2Linear_MSA, 
     144      ScaleRowDown2Linear_C, 
     145      2, 
     146      1, 
     147      31) 
     148SDANY(ScaleRowDown2Box_Any_MSA, 
     149      ScaleRowDown2Box_MSA, 
     150      ScaleRowDown2Box_C, 
     151      2, 
     152      1, 
     153      31) 
    99154#endif 
    100155#ifdef HAS_SCALEROWDOWN4_SSSE3 
    101156SDANY(ScaleRowDown4_Any_SSSE3, ScaleRowDown4_SSSE3, ScaleRowDown4_C, 4, 1, 7) 
    102 SDANY(ScaleRowDown4Box_Any_SSSE3, ScaleRowDown4Box_SSSE3, ScaleRowDown4Box_C, 
    103       4, 1, 7) 
     157SDANY(ScaleRowDown4Box_Any_SSSE3, 
     158      ScaleRowDown4Box_SSSE3, 
     159      ScaleRowDown4Box_C, 
     160      4, 
     161      1, 
     162      7) 
    104163#endif 
    105164#ifdef HAS_SCALEROWDOWN4_AVX2 
    106165SDANY(ScaleRowDown4_Any_AVX2, ScaleRowDown4_AVX2, ScaleRowDown4_C, 4, 1, 15) 
    107 SDANY(ScaleRowDown4Box_Any_AVX2, ScaleRowDown4Box_AVX2, ScaleRowDown4Box_C, 
    108       4, 1, 15) 
     166SDANY(ScaleRowDown4Box_Any_AVX2, 
     167      ScaleRowDown4Box_AVX2, 
     168      ScaleRowDown4Box_C, 
     169      4, 
     170      1, 
     171      15) 
    109172#endif 
    110173#ifdef HAS_SCALEROWDOWN4_NEON 
    111174SDANY(ScaleRowDown4_Any_NEON, ScaleRowDown4_NEON, ScaleRowDown4_C, 4, 1, 7) 
    112 SDANY(ScaleRowDown4Box_Any_NEON, ScaleRowDown4Box_NEON, ScaleRowDown4Box_C, 
    113       4, 1, 7) 
     175SDANY(ScaleRowDown4Box_Any_NEON, 
     176      ScaleRowDown4Box_NEON, 
     177      ScaleRowDown4Box_C, 
     178      4, 
     179      1, 
     180      7) 
     181#endif 
     182#ifdef HAS_SCALEROWDOWN4_MSA 
     183SDANY(ScaleRowDown4_Any_MSA, ScaleRowDown4_MSA, ScaleRowDown4_C, 4, 1, 15) 
     184SDANY(ScaleRowDown4Box_Any_MSA, 
     185      ScaleRowDown4Box_MSA, 
     186      ScaleRowDown4Box_C, 
     187      4, 
     188      1, 
     189      15) 
    114190#endif 
    115191#ifdef HAS_SCALEROWDOWN34_SSSE3 
    116 SDANY(ScaleRowDown34_Any_SSSE3, ScaleRowDown34_SSSE3, 
    117       ScaleRowDown34_C, 4 / 3, 1, 23) 
    118 SDANY(ScaleRowDown34_0_Box_Any_SSSE3, ScaleRowDown34_0_Box_SSSE3, 
    119       ScaleRowDown34_0_Box_C, 4 / 3, 1, 23) 
    120 SDANY(ScaleRowDown34_1_Box_Any_SSSE3, ScaleRowDown34_1_Box_SSSE3, 
    121       ScaleRowDown34_1_Box_C, 4 / 3, 1, 23) 
     192SDANY(ScaleRowDown34_Any_SSSE3, 
     193      ScaleRowDown34_SSSE3, 
     194      ScaleRowDown34_C, 
     195      4 / 3, 
     196      1, 
     197      23) 
     198SDANY(ScaleRowDown34_0_Box_Any_SSSE3, 
     199      ScaleRowDown34_0_Box_SSSE3, 
     200      ScaleRowDown34_0_Box_C, 
     201      4 / 3, 
     202      1, 
     203      23) 
     204SDANY(ScaleRowDown34_1_Box_Any_SSSE3, 
     205      ScaleRowDown34_1_Box_SSSE3, 
     206      ScaleRowDown34_1_Box_C, 
     207      4 / 3, 
     208      1, 
     209      23) 
    122210#endif 
    123211#ifdef HAS_SCALEROWDOWN34_NEON 
    124 SDANY(ScaleRowDown34_Any_NEON, ScaleRowDown34_NEON, 
    125       ScaleRowDown34_C, 4 / 3, 1, 23) 
    126 SDANY(ScaleRowDown34_0_Box_Any_NEON, ScaleRowDown34_0_Box_NEON, 
    127       ScaleRowDown34_0_Box_C, 4 / 3, 1, 23) 
    128 SDANY(ScaleRowDown34_1_Box_Any_NEON, ScaleRowDown34_1_Box_NEON, 
    129       ScaleRowDown34_1_Box_C, 4 / 3, 1, 23) 
     212SDANY(ScaleRowDown34_Any_NEON, 
     213      ScaleRowDown34_NEON, 
     214      ScaleRowDown34_C, 
     215      4 / 3, 
     216      1, 
     217      23) 
     218SDANY(ScaleRowDown34_0_Box_Any_NEON, 
     219      ScaleRowDown34_0_Box_NEON, 
     220      ScaleRowDown34_0_Box_C, 
     221      4 / 3, 
     222      1, 
     223      23) 
     224SDANY(ScaleRowDown34_1_Box_Any_NEON, 
     225      ScaleRowDown34_1_Box_NEON, 
     226      ScaleRowDown34_1_Box_C, 
     227      4 / 3, 
     228      1, 
     229      23) 
    130230#endif 
    131231#ifdef HAS_SCALEROWDOWN38_SSSE3 
    132 SDANY(ScaleRowDown38_Any_SSSE3, ScaleRowDown38_SSSE3, 
    133       ScaleRowDown38_C, 8 / 3, 1, 11) 
    134 SDANY(ScaleRowDown38_3_Box_Any_SSSE3, ScaleRowDown38_3_Box_SSSE3, 
    135       ScaleRowDown38_3_Box_C, 8 / 3, 1, 5) 
    136 SDANY(ScaleRowDown38_2_Box_Any_SSSE3, ScaleRowDown38_2_Box_SSSE3, 
    137       ScaleRowDown38_2_Box_C, 8 / 3, 1, 5) 
     232SDANY(ScaleRowDown38_Any_SSSE3, 
     233      ScaleRowDown38_SSSE3, 
     234      ScaleRowDown38_C, 
     235      8 / 3, 
     236      1, 
     237      11) 
     238SDANY(ScaleRowDown38_3_Box_Any_SSSE3, 
     239      ScaleRowDown38_3_Box_SSSE3, 
     240      ScaleRowDown38_3_Box_C, 
     241      8 / 3, 
     242      1, 
     243      5) 
     244SDANY(ScaleRowDown38_2_Box_Any_SSSE3, 
     245      ScaleRowDown38_2_Box_SSSE3, 
     246      ScaleRowDown38_2_Box_C, 
     247      8 / 3, 
     248      1, 
     249      5) 
    138250#endif 
    139251#ifdef HAS_SCALEROWDOWN38_NEON 
    140 SDANY(ScaleRowDown38_Any_NEON, ScaleRowDown38_NEON, 
    141       ScaleRowDown38_C, 8 / 3, 1, 11) 
    142 SDANY(ScaleRowDown38_3_Box_Any_NEON, ScaleRowDown38_3_Box_NEON, 
    143       ScaleRowDown38_3_Box_C, 8 / 3, 1, 11) 
    144 SDANY(ScaleRowDown38_2_Box_Any_NEON, ScaleRowDown38_2_Box_NEON, 
    145       ScaleRowDown38_2_Box_C, 8 / 3, 1, 11) 
     252SDANY(ScaleRowDown38_Any_NEON, 
     253      ScaleRowDown38_NEON, 
     254      ScaleRowDown38_C, 
     255      8 / 3, 
     256      1, 
     257      11) 
     258SDANY(ScaleRowDown38_3_Box_Any_NEON, 
     259      ScaleRowDown38_3_Box_NEON, 
     260      ScaleRowDown38_3_Box_C, 
     261      8 / 3, 
     262      1, 
     263      11) 
     264SDANY(ScaleRowDown38_2_Box_Any_NEON, 
     265      ScaleRowDown38_2_Box_NEON, 
     266      ScaleRowDown38_2_Box_C, 
     267      8 / 3, 
     268      1, 
     269      11) 
     270#endif 
     271#ifdef HAS_SCALEROWDOWN38_MSA 
     272SDANY(ScaleRowDown38_Any_MSA, 
     273      ScaleRowDown38_MSA, 
     274      ScaleRowDown38_C, 
     275      8 / 3, 
     276      1, 
     277      11) 
     278SDANY(ScaleRowDown38_3_Box_Any_MSA, 
     279      ScaleRowDown38_3_Box_MSA, 
     280      ScaleRowDown38_3_Box_C, 
     281      8 / 3, 
     282      1, 
     283      11) 
     284SDANY(ScaleRowDown38_2_Box_Any_MSA, 
     285      ScaleRowDown38_2_Box_MSA, 
     286      ScaleRowDown38_2_Box_C, 
     287      8 / 3, 
     288      1, 
     289      11) 
    146290#endif 
    147291 
    148292#ifdef HAS_SCALEARGBROWDOWN2_SSE2 
    149 SDANY(ScaleARGBRowDown2_Any_SSE2, ScaleARGBRowDown2_SSE2, 
    150       ScaleARGBRowDown2_C, 2, 4, 3) 
    151 SDANY(ScaleARGBRowDown2Linear_Any_SSE2, ScaleARGBRowDown2Linear_SSE2, 
    152       ScaleARGBRowDown2Linear_C, 2, 4, 3) 
    153 SDANY(ScaleARGBRowDown2Box_Any_SSE2, ScaleARGBRowDown2Box_SSE2, 
    154       ScaleARGBRowDown2Box_C, 2, 4, 3) 
     293SDANY(ScaleARGBRowDown2_Any_SSE2, 
     294      ScaleARGBRowDown2_SSE2, 
     295      ScaleARGBRowDown2_C, 
     296      2, 
     297      4, 
     298      3) 
     299SDANY(ScaleARGBRowDown2Linear_Any_SSE2, 
     300      ScaleARGBRowDown2Linear_SSE2, 
     301      ScaleARGBRowDown2Linear_C, 
     302      2, 
     303      4, 
     304      3) 
     305SDANY(ScaleARGBRowDown2Box_Any_SSE2, 
     306      ScaleARGBRowDown2Box_SSE2, 
     307      ScaleARGBRowDown2Box_C, 
     308      2, 
     309      4, 
     310      3) 
    155311#endif 
    156312#ifdef HAS_SCALEARGBROWDOWN2_NEON 
    157 SDANY(ScaleARGBRowDown2_Any_NEON, ScaleARGBRowDown2_NEON, 
    158       ScaleARGBRowDown2_C, 2, 4, 7) 
    159 SDANY(ScaleARGBRowDown2Linear_Any_NEON, ScaleARGBRowDown2Linear_NEON, 
    160       ScaleARGBRowDown2Linear_C, 2, 4, 7) 
    161 SDANY(ScaleARGBRowDown2Box_Any_NEON, ScaleARGBRowDown2Box_NEON, 
    162       ScaleARGBRowDown2Box_C, 2, 4, 7) 
     313SDANY(ScaleARGBRowDown2_Any_NEON, 
     314      ScaleARGBRowDown2_NEON, 
     315      ScaleARGBRowDown2_C, 
     316      2, 
     317      4, 
     318      7) 
     319SDANY(ScaleARGBRowDown2Linear_Any_NEON, 
     320      ScaleARGBRowDown2Linear_NEON, 
     321      ScaleARGBRowDown2Linear_C, 
     322      2, 
     323      4, 
     324      7) 
     325SDANY(ScaleARGBRowDown2Box_Any_NEON, 
     326      ScaleARGBRowDown2Box_NEON, 
     327      ScaleARGBRowDown2Box_C, 
     328      2, 
     329      4, 
     330      7) 
     331#endif 
     332#ifdef HAS_SCALEARGBROWDOWN2_MSA 
     333SDANY(ScaleARGBRowDown2_Any_MSA, 
     334      ScaleARGBRowDown2_MSA, 
     335      ScaleARGBRowDown2_C, 
     336      2, 
     337      4, 
     338      3) 
     339SDANY(ScaleARGBRowDown2Linear_Any_MSA, 
     340      ScaleARGBRowDown2Linear_MSA, 
     341      ScaleARGBRowDown2Linear_C, 
     342      2, 
     343      4, 
     344      3) 
     345SDANY(ScaleARGBRowDown2Box_Any_MSA, 
     346      ScaleARGBRowDown2Box_MSA, 
     347      ScaleARGBRowDown2Box_C, 
     348      2, 
     349      4, 
     350      3) 
    163351#endif 
    164352#undef SDANY 
    165353 
    166354// Scale down by even scale factor. 
    167 #define SDAANY(NAMEANY, SCALEROWDOWN_SIMD, SCALEROWDOWN_C, BPP, MASK)          \ 
    168     void NAMEANY(const uint8* src_ptr, ptrdiff_t src_stride, int src_stepx,    \ 
    169                  uint8* dst_ptr, int dst_width) {                              \ 
    170       int r = (int)((unsigned int)dst_width % (MASK + 1));                     \ 
    171       int n = dst_width - r;                                                   \ 
    172       if (n > 0) {                                                             \ 
    173         SCALEROWDOWN_SIMD(src_ptr, src_stride, src_stepx, dst_ptr, n);         \ 
    174       }                                                                        \ 
    175       SCALEROWDOWN_C(src_ptr + (n * src_stepx) * BPP, src_stride,              \ 
    176                      src_stepx, dst_ptr + n * BPP, r);                         \ 
    177     } 
     355#define SDAANY(NAMEANY, SCALEROWDOWN_SIMD, SCALEROWDOWN_C, BPP, MASK)      \ 
     356  void NAMEANY(const uint8* src_ptr, ptrdiff_t src_stride, int src_stepx,  \ 
     357               uint8* dst_ptr, int dst_width) {                            \ 
     358    int r = dst_width & MASK;                                              \ 
     359    int n = dst_width & ~MASK;                                             \ 
     360    if (n > 0) {                                                           \ 
     361      SCALEROWDOWN_SIMD(src_ptr, src_stride, src_stepx, dst_ptr, n);       \ 
     362    }                                                                      \ 
     363    SCALEROWDOWN_C(src_ptr + (n * src_stepx) * BPP, src_stride, src_stepx, \ 
     364                   dst_ptr + n * BPP, r);                                  \ 
     365  } 
    178366 
    179367#ifdef HAS_SCALEARGBROWDOWNEVEN_SSE2 
    180 SDAANY(ScaleARGBRowDownEven_Any_SSE2, ScaleARGBRowDownEven_SSE2, 
    181        ScaleARGBRowDownEven_C, 4, 3) 
    182 SDAANY(ScaleARGBRowDownEvenBox_Any_SSE2, ScaleARGBRowDownEvenBox_SSE2, 
    183        ScaleARGBRowDownEvenBox_C, 4, 3) 
     368SDAANY(ScaleARGBRowDownEven_Any_SSE2, 
     369       ScaleARGBRowDownEven_SSE2, 
     370       ScaleARGBRowDownEven_C, 
     371       4, 
     372       3) 
     373SDAANY(ScaleARGBRowDownEvenBox_Any_SSE2, 
     374       ScaleARGBRowDownEvenBox_SSE2, 
     375       ScaleARGBRowDownEvenBox_C, 
     376       4, 
     377       3) 
    184378#endif 
    185379#ifdef HAS_SCALEARGBROWDOWNEVEN_NEON 
    186 SDAANY(ScaleARGBRowDownEven_Any_NEON, ScaleARGBRowDownEven_NEON, 
    187        ScaleARGBRowDownEven_C, 4, 3) 
    188 SDAANY(ScaleARGBRowDownEvenBox_Any_NEON, ScaleARGBRowDownEvenBox_NEON, 
    189        ScaleARGBRowDownEvenBox_C, 4, 3) 
     380SDAANY(ScaleARGBRowDownEven_Any_NEON, 
     381       ScaleARGBRowDownEven_NEON, 
     382       ScaleARGBRowDownEven_C, 
     383       4, 
     384       3) 
     385SDAANY(ScaleARGBRowDownEvenBox_Any_NEON, 
     386       ScaleARGBRowDownEvenBox_NEON, 
     387       ScaleARGBRowDownEvenBox_C, 
     388       4, 
     389       3) 
     390#endif 
     391#ifdef HAS_SCALEARGBROWDOWNEVEN_MSA 
     392SDAANY(ScaleARGBRowDownEven_Any_MSA, 
     393       ScaleARGBRowDownEven_MSA, 
     394       ScaleARGBRowDownEven_C, 
     395       4, 
     396       3) 
     397SDAANY(ScaleARGBRowDownEvenBox_Any_MSA, 
     398       ScaleARGBRowDownEvenBox_MSA, 
     399       ScaleARGBRowDownEvenBox_C, 
     400       4, 
     401       3) 
    190402#endif 
    191403 
    192404// Add rows box filter scale down. 
    193 #define SAANY(NAMEANY, SCALEADDROW_SIMD, SCALEADDROW_C, MASK)                  \ 
    194   void NAMEANY(const uint8* src_ptr, uint16* dst_ptr, int src_width) {         \ 
    195       int n = src_width & ~MASK;                                               \ 
    196       if (n > 0) {                                                             \ 
    197         SCALEADDROW_SIMD(src_ptr, dst_ptr, n);                                 \ 
    198       }                                                                        \ 
    199       SCALEADDROW_C(src_ptr + n, dst_ptr + n, src_width & MASK);               \ 
    200     } 
     405#define SAANY(NAMEANY, SCALEADDROW_SIMD, SCALEADDROW_C, MASK)          \ 
     406  void NAMEANY(const uint8* src_ptr, uint16* dst_ptr, int src_width) { \ 
     407    int n = src_width & ~MASK;                                         \ 
     408    if (n > 0) {                                                       \ 
     409      SCALEADDROW_SIMD(src_ptr, dst_ptr, n);                           \ 
     410    }                                                                  \ 
     411    SCALEADDROW_C(src_ptr + n, dst_ptr + n, src_width & MASK);         \ 
     412  } 
    201413 
    202414#ifdef HAS_SCALEADDROW_SSE2 
     
    208420#ifdef HAS_SCALEADDROW_NEON 
    209421SAANY(ScaleAddRow_Any_NEON, ScaleAddRow_NEON, ScaleAddRow_C, 15) 
     422#endif 
     423#ifdef HAS_SCALEADDROW_MSA 
     424SAANY(ScaleAddRow_Any_MSA, ScaleAddRow_MSA, ScaleAddRow_C, 15) 
     425#endif 
     426#ifdef HAS_SCALEADDROW_DSPR2 
     427SAANY(ScaleAddRow_Any_DSPR2, ScaleAddRow_DSPR2, ScaleAddRow_C, 15) 
    210428#endif 
    211429#undef SAANY 
     
    215433}  // namespace libyuv 
    216434#endif 
    217  
    218  
    219  
    220  
    221  
Note: See TracChangeset for help on using the changeset viewer.