1## 2## Copyright (c) 2017 The WebM project authors. All Rights Reserved. 3## 4## Use of this source code is governed by a BSD-style license 5## that can be found in the LICENSE file in the root of the source 6## tree. An additional intellectual property rights grant can be found 7## in the file PATENTS. All contributing project authors may 8## be found in the AUTHORS file in the root of the source tree. 9## 10 11sub vpx_dsp_forward_decls() { 12print <<EOF 13/* 14 * DSP 15 */ 16 17#include "vpx/vpx_integer.h" 18#include "vpx_dsp/vpx_dsp_common.h" 19#include "vpx_dsp/vpx_filter.h" 20 21EOF 22} 23forward_decls qw/vpx_dsp_forward_decls/; 24 25# functions that are 64 bit only. 26$mmx_x86_64 = $sse2_x86_64 = $ssse3_x86_64 = $avx_x86_64 = $avx2_x86_64 = ''; 27if ($opts{arch} eq "x86_64") { 28 $mmx_x86_64 = 'mmx'; 29 $sse2_x86_64 = 'sse2'; 30 $ssse3_x86_64 = 'ssse3'; 31 $avx_x86_64 = 'avx'; 32 $avx2_x86_64 = 'avx2'; 33 $avx512_x86_64 = 'avx512'; 34} 35 36# 37# Intra prediction 38# 39 40add_proto qw/void vpx_d207_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 41specialize qw/vpx_d207_predictor_4x4 sse2/; 42 43add_proto qw/void vpx_d45_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 44specialize qw/vpx_d45_predictor_4x4 neon sse2/; 45 46add_proto qw/void vpx_d45e_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 47 48add_proto qw/void vpx_d63_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 49specialize qw/vpx_d63_predictor_4x4 ssse3/; 50 51add_proto qw/void vpx_d63e_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 52 53add_proto qw/void vpx_h_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 54# TODO(crbug.com/webm/1522): Re-enable vsx implementation. 55specialize qw/vpx_h_predictor_4x4 neon dspr2 msa sse2/; 56 57add_proto qw/void vpx_he_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 58 59add_proto qw/void vpx_d117_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 60 61add_proto qw/void vpx_d135_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 62specialize qw/vpx_d135_predictor_4x4 neon/; 63 64add_proto qw/void vpx_d153_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 65specialize qw/vpx_d153_predictor_4x4 ssse3/; 66 67add_proto qw/void vpx_v_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 68specialize qw/vpx_v_predictor_4x4 neon msa sse2/; 69 70add_proto qw/void vpx_ve_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 71 72add_proto qw/void vpx_tm_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 73# TODO(crbug.com/webm/1522): Re-enable vsx implementation. 74specialize qw/vpx_tm_predictor_4x4 neon dspr2 msa sse2/; 75 76add_proto qw/void vpx_dc_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 77specialize qw/vpx_dc_predictor_4x4 dspr2 msa neon sse2/; 78 79add_proto qw/void vpx_dc_top_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 80specialize qw/vpx_dc_top_predictor_4x4 msa neon sse2/; 81 82add_proto qw/void vpx_dc_left_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 83specialize qw/vpx_dc_left_predictor_4x4 msa neon sse2/; 84 85add_proto qw/void vpx_dc_128_predictor_4x4/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 86specialize qw/vpx_dc_128_predictor_4x4 msa neon sse2/; 87 88add_proto qw/void vpx_d207_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 89specialize qw/vpx_d207_predictor_8x8 ssse3/; 90 91add_proto qw/void vpx_d45_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 92# TODO(crbug.com/webm/1522): Re-enable vsx implementation. 93specialize qw/vpx_d45_predictor_8x8 neon sse2/; 94 95add_proto qw/void vpx_d63_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 96# TODO(crbug.com/webm/1522): Re-enable vsx implementation. 97specialize qw/vpx_d63_predictor_8x8 ssse3/; 98 99add_proto qw/void vpx_h_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 100# TODO(crbug.com/webm/1522): Re-enable vsx implementation. 101specialize qw/vpx_h_predictor_8x8 neon dspr2 msa sse2/; 102 103add_proto qw/void vpx_d117_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 104 105add_proto qw/void vpx_d135_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 106specialize qw/vpx_d135_predictor_8x8 neon/; 107 108add_proto qw/void vpx_d153_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 109specialize qw/vpx_d153_predictor_8x8 ssse3/; 110 111add_proto qw/void vpx_v_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 112specialize qw/vpx_v_predictor_8x8 neon msa sse2/; 113 114add_proto qw/void vpx_tm_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 115# TODO(crbug.com/webm/1522): Re-enable vsx implementation. 116specialize qw/vpx_tm_predictor_8x8 neon dspr2 msa sse2/; 117 118add_proto qw/void vpx_dc_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 119# TODO(crbug.com/webm/1522): Re-enable vsx implementation. 120specialize qw/vpx_dc_predictor_8x8 dspr2 neon msa sse2 lsx/; 121 122add_proto qw/void vpx_dc_top_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 123specialize qw/vpx_dc_top_predictor_8x8 neon msa sse2/; 124 125add_proto qw/void vpx_dc_left_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 126specialize qw/vpx_dc_left_predictor_8x8 neon msa sse2/; 127 128add_proto qw/void vpx_dc_128_predictor_8x8/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 129specialize qw/vpx_dc_128_predictor_8x8 neon msa sse2/; 130 131add_proto qw/void vpx_d207_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 132specialize qw/vpx_d207_predictor_16x16 ssse3/; 133 134add_proto qw/void vpx_d45_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 135specialize qw/vpx_d45_predictor_16x16 neon ssse3 vsx/; 136 137add_proto qw/void vpx_d63_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 138specialize qw/vpx_d63_predictor_16x16 ssse3 vsx/; 139 140add_proto qw/void vpx_h_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 141specialize qw/vpx_h_predictor_16x16 neon dspr2 msa sse2 vsx/; 142 143add_proto qw/void vpx_d117_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 144 145add_proto qw/void vpx_d135_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 146specialize qw/vpx_d135_predictor_16x16 neon/; 147 148add_proto qw/void vpx_d153_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 149specialize qw/vpx_d153_predictor_16x16 ssse3/; 150 151add_proto qw/void vpx_v_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 152specialize qw/vpx_v_predictor_16x16 neon msa sse2 vsx/; 153 154add_proto qw/void vpx_tm_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 155specialize qw/vpx_tm_predictor_16x16 neon msa sse2 vsx/; 156 157add_proto qw/void vpx_dc_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 158specialize qw/vpx_dc_predictor_16x16 dspr2 neon msa sse2 vsx lsx/; 159 160add_proto qw/void vpx_dc_top_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 161specialize qw/vpx_dc_top_predictor_16x16 neon msa sse2 vsx/; 162 163add_proto qw/void vpx_dc_left_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 164specialize qw/vpx_dc_left_predictor_16x16 neon msa sse2 vsx/; 165 166add_proto qw/void vpx_dc_128_predictor_16x16/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 167specialize qw/vpx_dc_128_predictor_16x16 neon msa sse2 vsx/; 168 169add_proto qw/void vpx_d207_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 170specialize qw/vpx_d207_predictor_32x32 ssse3/; 171 172add_proto qw/void vpx_d45_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 173specialize qw/vpx_d45_predictor_32x32 neon ssse3 vsx/; 174 175add_proto qw/void vpx_d63_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 176specialize qw/vpx_d63_predictor_32x32 ssse3 vsx/; 177 178add_proto qw/void vpx_h_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 179specialize qw/vpx_h_predictor_32x32 neon msa sse2 vsx/; 180 181add_proto qw/void vpx_d117_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 182 183add_proto qw/void vpx_d135_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 184specialize qw/vpx_d135_predictor_32x32 neon/; 185 186add_proto qw/void vpx_d153_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 187specialize qw/vpx_d153_predictor_32x32 ssse3/; 188 189add_proto qw/void vpx_v_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 190specialize qw/vpx_v_predictor_32x32 neon msa sse2 vsx/; 191 192add_proto qw/void vpx_tm_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 193specialize qw/vpx_tm_predictor_32x32 neon msa sse2 vsx/; 194 195add_proto qw/void vpx_dc_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 196specialize qw/vpx_dc_predictor_32x32 msa neon sse2 vsx/; 197 198add_proto qw/void vpx_dc_top_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 199specialize qw/vpx_dc_top_predictor_32x32 msa neon sse2 vsx/; 200 201add_proto qw/void vpx_dc_left_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 202specialize qw/vpx_dc_left_predictor_32x32 msa neon sse2 vsx/; 203 204add_proto qw/void vpx_dc_128_predictor_32x32/, "uint8_t *dst, ptrdiff_t stride, const uint8_t *above, const uint8_t *left"; 205specialize qw/vpx_dc_128_predictor_32x32 msa neon sse2 vsx/; 206 207# High bitdepth functions 208if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 209 add_proto qw/void vpx_highbd_d207_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 210 specialize qw/vpx_highbd_d207_predictor_4x4 sse2/; 211 212 add_proto qw/void vpx_highbd_d45_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 213 specialize qw/vpx_highbd_d45_predictor_4x4 neon ssse3/; 214 215 add_proto qw/void vpx_highbd_d63_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 216 specialize qw/vpx_highbd_d63_predictor_4x4 sse2/; 217 218 add_proto qw/void vpx_highbd_h_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 219 specialize qw/vpx_highbd_h_predictor_4x4 neon sse2/; 220 221 add_proto qw/void vpx_highbd_d117_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 222 specialize qw/vpx_highbd_d117_predictor_4x4 sse2/; 223 224 add_proto qw/void vpx_highbd_d135_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 225 specialize qw/vpx_highbd_d135_predictor_4x4 neon sse2/; 226 227 add_proto qw/void vpx_highbd_d153_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 228 specialize qw/vpx_highbd_d153_predictor_4x4 sse2/; 229 230 add_proto qw/void vpx_highbd_v_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 231 specialize qw/vpx_highbd_v_predictor_4x4 neon sse2/; 232 233 add_proto qw/void vpx_highbd_tm_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 234 specialize qw/vpx_highbd_tm_predictor_4x4 neon sse2/; 235 236 add_proto qw/void vpx_highbd_dc_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 237 specialize qw/vpx_highbd_dc_predictor_4x4 neon sse2/; 238 239 add_proto qw/void vpx_highbd_dc_top_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 240 specialize qw/vpx_highbd_dc_top_predictor_4x4 neon sse2/; 241 242 add_proto qw/void vpx_highbd_dc_left_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 243 specialize qw/vpx_highbd_dc_left_predictor_4x4 neon sse2/; 244 245 add_proto qw/void vpx_highbd_dc_128_predictor_4x4/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 246 specialize qw/vpx_highbd_dc_128_predictor_4x4 neon sse2/; 247 248 add_proto qw/void vpx_highbd_d207_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 249 specialize qw/vpx_highbd_d207_predictor_8x8 ssse3/; 250 251 add_proto qw/void vpx_highbd_d45_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 252 specialize qw/vpx_highbd_d45_predictor_8x8 neon ssse3/; 253 254 add_proto qw/void vpx_highbd_d63_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 255 specialize qw/vpx_highbd_d63_predictor_8x8 ssse3/; 256 257 add_proto qw/void vpx_highbd_h_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 258 specialize qw/vpx_highbd_h_predictor_8x8 neon sse2/; 259 260 add_proto qw/void vpx_highbd_d117_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 261 specialize qw/vpx_highbd_d117_predictor_8x8 ssse3/; 262 263 add_proto qw/void vpx_highbd_d135_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 264 specialize qw/vpx_highbd_d135_predictor_8x8 neon ssse3/; 265 266 add_proto qw/void vpx_highbd_d153_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 267 specialize qw/vpx_highbd_d153_predictor_8x8 ssse3/; 268 269 add_proto qw/void vpx_highbd_v_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 270 specialize qw/vpx_highbd_v_predictor_8x8 neon sse2/; 271 272 add_proto qw/void vpx_highbd_tm_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 273 specialize qw/vpx_highbd_tm_predictor_8x8 neon sse2/; 274 275 add_proto qw/void vpx_highbd_dc_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 276 specialize qw/vpx_highbd_dc_predictor_8x8 neon sse2/; 277 278 add_proto qw/void vpx_highbd_dc_top_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 279 specialize qw/vpx_highbd_dc_top_predictor_8x8 neon sse2/; 280 281 add_proto qw/void vpx_highbd_dc_left_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 282 specialize qw/vpx_highbd_dc_left_predictor_8x8 neon sse2/; 283 284 add_proto qw/void vpx_highbd_dc_128_predictor_8x8/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 285 specialize qw/vpx_highbd_dc_128_predictor_8x8 neon sse2/; 286 287 add_proto qw/void vpx_highbd_d207_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 288 specialize qw/vpx_highbd_d207_predictor_16x16 ssse3/; 289 290 add_proto qw/void vpx_highbd_d45_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 291 specialize qw/vpx_highbd_d45_predictor_16x16 neon ssse3/; 292 293 add_proto qw/void vpx_highbd_d63_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 294 specialize qw/vpx_highbd_d63_predictor_16x16 ssse3/; 295 296 add_proto qw/void vpx_highbd_h_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 297 specialize qw/vpx_highbd_h_predictor_16x16 neon sse2/; 298 299 add_proto qw/void vpx_highbd_d117_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 300 specialize qw/vpx_highbd_d117_predictor_16x16 ssse3/; 301 302 add_proto qw/void vpx_highbd_d135_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 303 specialize qw/vpx_highbd_d135_predictor_16x16 neon ssse3/; 304 305 add_proto qw/void vpx_highbd_d153_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 306 specialize qw/vpx_highbd_d153_predictor_16x16 ssse3/; 307 308 add_proto qw/void vpx_highbd_v_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 309 specialize qw/vpx_highbd_v_predictor_16x16 neon sse2/; 310 311 add_proto qw/void vpx_highbd_tm_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 312 specialize qw/vpx_highbd_tm_predictor_16x16 neon sse2/; 313 314 add_proto qw/void vpx_highbd_dc_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 315 specialize qw/vpx_highbd_dc_predictor_16x16 neon sse2/; 316 317 add_proto qw/void vpx_highbd_dc_top_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 318 specialize qw/vpx_highbd_dc_top_predictor_16x16 neon sse2/; 319 320 add_proto qw/void vpx_highbd_dc_left_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 321 specialize qw/vpx_highbd_dc_left_predictor_16x16 neon sse2/; 322 323 add_proto qw/void vpx_highbd_dc_128_predictor_16x16/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 324 specialize qw/vpx_highbd_dc_128_predictor_16x16 neon sse2/; 325 326 add_proto qw/void vpx_highbd_d207_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 327 specialize qw/vpx_highbd_d207_predictor_32x32 ssse3/; 328 329 add_proto qw/void vpx_highbd_d45_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 330 specialize qw/vpx_highbd_d45_predictor_32x32 neon ssse3/; 331 332 add_proto qw/void vpx_highbd_d63_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 333 specialize qw/vpx_highbd_d63_predictor_32x32 ssse3/; 334 335 add_proto qw/void vpx_highbd_h_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 336 specialize qw/vpx_highbd_h_predictor_32x32 neon sse2/; 337 338 add_proto qw/void vpx_highbd_d117_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 339 specialize qw/vpx_highbd_d117_predictor_32x32 ssse3/; 340 341 add_proto qw/void vpx_highbd_d135_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 342 specialize qw/vpx_highbd_d135_predictor_32x32 neon ssse3/; 343 344 add_proto qw/void vpx_highbd_d153_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 345 specialize qw/vpx_highbd_d153_predictor_32x32 ssse3/; 346 347 add_proto qw/void vpx_highbd_v_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 348 specialize qw/vpx_highbd_v_predictor_32x32 neon sse2/; 349 350 add_proto qw/void vpx_highbd_tm_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 351 specialize qw/vpx_highbd_tm_predictor_32x32 neon sse2/; 352 353 add_proto qw/void vpx_highbd_dc_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 354 specialize qw/vpx_highbd_dc_predictor_32x32 neon sse2/; 355 356 add_proto qw/void vpx_highbd_dc_top_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 357 specialize qw/vpx_highbd_dc_top_predictor_32x32 neon sse2/; 358 359 add_proto qw/void vpx_highbd_dc_left_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 360 specialize qw/vpx_highbd_dc_left_predictor_32x32 neon sse2/; 361 362 add_proto qw/void vpx_highbd_dc_128_predictor_32x32/, "uint16_t *dst, ptrdiff_t stride, const uint16_t *above, const uint16_t *left, int bd"; 363 specialize qw/vpx_highbd_dc_128_predictor_32x32 neon sse2/; 364} # CONFIG_VP9_HIGHBITDEPTH 365 366if (vpx_config("CONFIG_VP9") eq "yes") { 367# 368# Sub Pixel Filters 369# 370add_proto qw/void vpx_convolve_copy/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 371specialize qw/vpx_convolve_copy neon dspr2 msa sse2 vsx lsx/; 372 373add_proto qw/void vpx_convolve_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 374specialize qw/vpx_convolve_avg neon dspr2 msa sse2 vsx mmi lsx/; 375 376add_proto qw/void vpx_convolve8/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 377specialize qw/vpx_convolve8 sse2 ssse3 avx2 neon dspr2 msa vsx mmi lsx/; 378 379add_proto qw/void vpx_convolve8_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 380specialize qw/vpx_convolve8_horiz sse2 ssse3 avx2 neon dspr2 msa vsx mmi lsx/; 381 382add_proto qw/void vpx_convolve8_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 383specialize qw/vpx_convolve8_vert sse2 ssse3 avx2 neon dspr2 msa vsx mmi lsx/; 384 385add_proto qw/void vpx_convolve8_avg/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 386specialize qw/vpx_convolve8_avg sse2 ssse3 avx2 neon dspr2 msa vsx mmi lsx/; 387 388add_proto qw/void vpx_convolve8_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 389specialize qw/vpx_convolve8_avg_horiz sse2 ssse3 avx2 neon dspr2 msa vsx mmi lsx/; 390 391add_proto qw/void vpx_convolve8_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 392specialize qw/vpx_convolve8_avg_vert sse2 ssse3 avx2 neon dspr2 msa vsx mmi lsx/; 393 394add_proto qw/void vpx_scaled_2d/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 395specialize qw/vpx_scaled_2d ssse3 neon msa/; 396 397add_proto qw/void vpx_scaled_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 398 399add_proto qw/void vpx_scaled_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 400 401add_proto qw/void vpx_scaled_avg_2d/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 402 403add_proto qw/void vpx_scaled_avg_horiz/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 404 405add_proto qw/void vpx_scaled_avg_vert/, "const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h"; 406} #CONFIG_VP9 407 408if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 409 # 410 # Sub Pixel Filters 411 # 412 add_proto qw/void vpx_highbd_convolve_copy/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd"; 413 specialize qw/vpx_highbd_convolve_copy sse2 avx2 neon/; 414 415 add_proto qw/void vpx_highbd_convolve_avg/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd"; 416 specialize qw/vpx_highbd_convolve_avg sse2 avx2 neon/; 417 418 add_proto qw/void vpx_highbd_convolve8/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd"; 419 specialize qw/vpx_highbd_convolve8 avx2 neon/, "$sse2_x86_64"; 420 421 add_proto qw/void vpx_highbd_convolve8_horiz/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd"; 422 specialize qw/vpx_highbd_convolve8_horiz avx2 neon/, "$sse2_x86_64"; 423 424 add_proto qw/void vpx_highbd_convolve8_vert/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd"; 425 specialize qw/vpx_highbd_convolve8_vert avx2 neon/, "$sse2_x86_64"; 426 427 add_proto qw/void vpx_highbd_convolve8_avg/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd"; 428 specialize qw/vpx_highbd_convolve8_avg avx2 neon/, "$sse2_x86_64"; 429 430 add_proto qw/void vpx_highbd_convolve8_avg_horiz/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd"; 431 specialize qw/vpx_highbd_convolve8_avg_horiz avx2 neon/, "$sse2_x86_64"; 432 433 add_proto qw/void vpx_highbd_convolve8_avg_vert/, "const uint16_t *src, ptrdiff_t src_stride, uint16_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h, int bd"; 434 specialize qw/vpx_highbd_convolve8_avg_vert avx2 neon/, "$sse2_x86_64"; 435} # CONFIG_VP9_HIGHBITDEPTH 436 437if (vpx_config("CONFIG_VP9") eq "yes") { 438# 439# Loopfilter 440# 441add_proto qw/void vpx_lpf_vertical_16/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh"; 442specialize qw/vpx_lpf_vertical_16 sse2 neon dspr2 msa/; 443 444add_proto qw/void vpx_lpf_vertical_16_dual/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh"; 445specialize qw/vpx_lpf_vertical_16_dual sse2 neon dspr2 msa lsx/; 446 447add_proto qw/void vpx_lpf_vertical_8/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh"; 448specialize qw/vpx_lpf_vertical_8 sse2 neon dspr2 msa lsx/; 449 450add_proto qw/void vpx_lpf_vertical_8_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1"; 451specialize qw/vpx_lpf_vertical_8_dual sse2 neon dspr2 msa lsx/; 452 453add_proto qw/void vpx_lpf_vertical_4/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh"; 454specialize qw/vpx_lpf_vertical_4 sse2 neon dspr2 msa lsx/; 455 456add_proto qw/void vpx_lpf_vertical_4_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1"; 457specialize qw/vpx_lpf_vertical_4_dual sse2 neon dspr2 msa lsx/; 458 459add_proto qw/void vpx_lpf_horizontal_16/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh"; 460specialize qw/vpx_lpf_horizontal_16 sse2 avx2 neon dspr2 msa/; 461 462add_proto qw/void vpx_lpf_horizontal_16_dual/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh"; 463specialize qw/vpx_lpf_horizontal_16_dual sse2 avx2 neon dspr2 msa lsx/; 464 465add_proto qw/void vpx_lpf_horizontal_8/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh"; 466specialize qw/vpx_lpf_horizontal_8 sse2 neon dspr2 msa lsx/; 467 468add_proto qw/void vpx_lpf_horizontal_8_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1"; 469specialize qw/vpx_lpf_horizontal_8_dual sse2 neon dspr2 msa lsx/; 470 471add_proto qw/void vpx_lpf_horizontal_4/, "uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh"; 472specialize qw/vpx_lpf_horizontal_4 sse2 neon dspr2 msa lsx/; 473 474add_proto qw/void vpx_lpf_horizontal_4_dual/, "uint8_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1"; 475specialize qw/vpx_lpf_horizontal_4_dual sse2 neon dspr2 msa lsx/; 476} #CONFIG_VP9 477 478if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 479 add_proto qw/void vpx_highbd_lpf_vertical_16/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd"; 480 specialize qw/vpx_highbd_lpf_vertical_16 sse2 neon/; 481 482 add_proto qw/void vpx_highbd_lpf_vertical_16_dual/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd"; 483 specialize qw/vpx_highbd_lpf_vertical_16_dual sse2 neon/; 484 485 add_proto qw/void vpx_highbd_lpf_vertical_8/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd"; 486 specialize qw/vpx_highbd_lpf_vertical_8 sse2 neon/; 487 488 add_proto qw/void vpx_highbd_lpf_vertical_8_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd"; 489 specialize qw/vpx_highbd_lpf_vertical_8_dual sse2 neon/; 490 491 add_proto qw/void vpx_highbd_lpf_vertical_4/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd"; 492 specialize qw/vpx_highbd_lpf_vertical_4 sse2 neon/; 493 494 add_proto qw/void vpx_highbd_lpf_vertical_4_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd"; 495 specialize qw/vpx_highbd_lpf_vertical_4_dual sse2 neon/; 496 497 add_proto qw/void vpx_highbd_lpf_horizontal_16/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd"; 498 specialize qw/vpx_highbd_lpf_horizontal_16 sse2 neon/; 499 500 add_proto qw/void vpx_highbd_lpf_horizontal_16_dual/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd"; 501 specialize qw/vpx_highbd_lpf_horizontal_16_dual sse2 neon/; 502 503 add_proto qw/void vpx_highbd_lpf_horizontal_8/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd"; 504 specialize qw/vpx_highbd_lpf_horizontal_8 sse2 neon/; 505 506 add_proto qw/void vpx_highbd_lpf_horizontal_8_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd"; 507 specialize qw/vpx_highbd_lpf_horizontal_8_dual sse2 neon/; 508 509 add_proto qw/void vpx_highbd_lpf_horizontal_4/, "uint16_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int bd"; 510 specialize qw/vpx_highbd_lpf_horizontal_4 sse2 neon/; 511 512 add_proto qw/void vpx_highbd_lpf_horizontal_4_dual/, "uint16_t *s, int pitch, const uint8_t *blimit0, const uint8_t *limit0, const uint8_t *thresh0, const uint8_t *blimit1, const uint8_t *limit1, const uint8_t *thresh1, int bd"; 513 specialize qw/vpx_highbd_lpf_horizontal_4_dual sse2 neon/; 514} # CONFIG_VP9_HIGHBITDEPTH 515 516# 517# Encoder functions. 518# 519 520# 521# Forward transform 522# 523if (vpx_config("CONFIG_VP9_ENCODER") eq "yes") { 524if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 525 add_proto qw/void vpx_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride"; 526 specialize qw/vpx_fdct4x4 neon sse2/; 527 528 add_proto qw/void vpx_fdct4x4_1/, "const int16_t *input, tran_low_t *output, int stride"; 529 specialize qw/vpx_fdct4x4_1 sse2 neon/; 530 specialize qw/vpx_highbd_fdct4x4_1 neon/; 531 $vpx_highbd_fdct4x4_1_neon=vpx_fdct4x4_1_neon; 532 533 add_proto qw/void vpx_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride"; 534 specialize qw/vpx_fdct8x8 neon sse2/; 535 536 add_proto qw/void vpx_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride"; 537 specialize qw/vpx_fdct8x8_1 neon sse2 msa/; 538 539 add_proto qw/void vpx_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride"; 540 specialize qw/vpx_fdct16x16 neon sse2/; 541 542 add_proto qw/void vpx_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride"; 543 specialize qw/vpx_fdct16x16_1 sse2 neon/; 544 545 add_proto qw/void vpx_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride"; 546 specialize qw/vpx_fdct32x32 neon sse2/; 547 548 add_proto qw/void vpx_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride"; 549 specialize qw/vpx_fdct32x32_rd neon sse2/; 550 551 add_proto qw/void vpx_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride"; 552 specialize qw/vpx_fdct32x32_1 sse2 neon/; 553 554 add_proto qw/void vpx_highbd_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride"; 555 specialize qw/vpx_highbd_fdct4x4 sse2 neon/; 556 557 add_proto qw/void vpx_highbd_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride"; 558 specialize qw/vpx_highbd_fdct8x8 sse2 neon/; 559 560 add_proto qw/void vpx_highbd_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride"; 561 specialize qw/vpx_highbd_fdct8x8_1 neon/; 562 $vpx_highbd_fdct8x8_1_neon=vpx_fdct8x8_1_neon; 563 564 add_proto qw/void vpx_highbd_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride"; 565 specialize qw/vpx_highbd_fdct16x16 sse2 neon/; 566 567 add_proto qw/void vpx_highbd_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride"; 568 specialize qw/vpx_highbd_fdct16x16_1 neon/; 569 570 add_proto qw/void vpx_highbd_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride"; 571 specialize qw/vpx_highbd_fdct32x32 sse2 neon/; 572 573 add_proto qw/void vpx_highbd_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride"; 574 specialize qw/vpx_highbd_fdct32x32_rd sse2 neon/; 575 576 add_proto qw/void vpx_highbd_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride"; 577 specialize qw/vpx_highbd_fdct32x32_1 neon/; 578} else { 579 add_proto qw/void vpx_fdct4x4/, "const int16_t *input, tran_low_t *output, int stride"; 580 specialize qw/vpx_fdct4x4 neon sse2 msa lsx/; 581 582 add_proto qw/void vpx_fdct4x4_1/, "const int16_t *input, tran_low_t *output, int stride"; 583 specialize qw/vpx_fdct4x4_1 sse2 neon/; 584 585 add_proto qw/void vpx_fdct8x8/, "const int16_t *input, tran_low_t *output, int stride"; 586 specialize qw/vpx_fdct8x8 sse2 neon msa lsx/, "$ssse3_x86_64"; 587 588 add_proto qw/void vpx_fdct8x8_1/, "const int16_t *input, tran_low_t *output, int stride"; 589 specialize qw/vpx_fdct8x8_1 sse2 neon msa/; 590 591 add_proto qw/void vpx_fdct16x16/, "const int16_t *input, tran_low_t *output, int stride"; 592 specialize qw/vpx_fdct16x16 neon sse2 msa lsx/; 593 594 add_proto qw/void vpx_fdct16x16_1/, "const int16_t *input, tran_low_t *output, int stride"; 595 specialize qw/vpx_fdct16x16_1 sse2 neon msa/; 596 597 add_proto qw/void vpx_fdct32x32/, "const int16_t *input, tran_low_t *output, int stride"; 598 specialize qw/vpx_fdct32x32 neon sse2 avx2 msa lsx/; 599 600 add_proto qw/void vpx_fdct32x32_rd/, "const int16_t *input, tran_low_t *output, int stride"; 601 specialize qw/vpx_fdct32x32_rd sse2 avx2 neon msa vsx lsx/; 602 603 add_proto qw/void vpx_fdct32x32_1/, "const int16_t *input, tran_low_t *output, int stride"; 604 specialize qw/vpx_fdct32x32_1 sse2 neon msa/; 605} # CONFIG_VP9_HIGHBITDEPTH 606} # CONFIG_VP9_ENCODER 607 608# 609# Inverse transform 610if (vpx_config("CONFIG_VP9") eq "yes") { 611 612add_proto qw/void vpx_idct4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 613add_proto qw/void vpx_idct4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 614add_proto qw/void vpx_idct8x8_64_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 615add_proto qw/void vpx_idct8x8_12_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 616add_proto qw/void vpx_idct8x8_1_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 617add_proto qw/void vpx_idct16x16_256_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 618add_proto qw/void vpx_idct16x16_38_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 619add_proto qw/void vpx_idct16x16_10_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 620add_proto qw/void vpx_idct16x16_1_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 621add_proto qw/void vpx_idct32x32_1024_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 622add_proto qw/void vpx_idct32x32_135_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 623add_proto qw/void vpx_idct32x32_34_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 624add_proto qw/void vpx_idct32x32_1_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 625add_proto qw/void vpx_iwht4x4_16_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 626add_proto qw/void vpx_iwht4x4_1_add/, "const tran_low_t *input, uint8_t *dest, int stride"; 627 628if (vpx_config("CONFIG_EMULATE_HARDWARE") ne "yes") { 629 # Note that there are more specializations appended when 630 # CONFIG_VP9_HIGHBITDEPTH is off. 631 specialize qw/vpx_idct4x4_16_add neon sse2 vsx/; 632 specialize qw/vpx_idct4x4_1_add neon sse2/; 633 specialize qw/vpx_idct8x8_64_add neon sse2 vsx/; 634 specialize qw/vpx_idct8x8_12_add neon sse2 ssse3/; 635 specialize qw/vpx_idct8x8_1_add neon sse2/; 636 specialize qw/vpx_idct16x16_256_add neon sse2 vsx/; 637 specialize qw/vpx_idct16x16_38_add neon sse2/; 638 specialize qw/vpx_idct16x16_10_add neon sse2/; 639 specialize qw/vpx_idct16x16_1_add neon sse2/; 640 specialize qw/vpx_idct32x32_1024_add neon sse2 vsx/; 641 specialize qw/vpx_idct32x32_135_add neon sse2 ssse3/; 642 specialize qw/vpx_idct32x32_34_add neon sse2 ssse3/; 643 specialize qw/vpx_idct32x32_1_add neon sse2/; 644 specialize qw/vpx_iwht4x4_16_add sse2 vsx/; 645 646 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") ne "yes") { 647 # Note that these specializations are appended to the above ones. 648 specialize qw/vpx_idct4x4_16_add dspr2 msa/; 649 specialize qw/vpx_idct4x4_1_add dspr2 msa/; 650 specialize qw/vpx_idct8x8_64_add dspr2 msa/; 651 specialize qw/vpx_idct8x8_12_add dspr2 msa/; 652 specialize qw/vpx_idct8x8_1_add dspr2 msa/; 653 specialize qw/vpx_idct16x16_256_add dspr2 msa/; 654 specialize qw/vpx_idct16x16_38_add dspr2 msa/; 655 $vpx_idct16x16_38_add_dspr2=vpx_idct16x16_256_add_dspr2; 656 $vpx_idct16x16_38_add_msa=vpx_idct16x16_256_add_msa; 657 specialize qw/vpx_idct16x16_10_add dspr2 msa/; 658 specialize qw/vpx_idct16x16_1_add dspr2 msa/; 659 specialize qw/vpx_idct32x32_1024_add dspr2 msa lsx/; 660 specialize qw/vpx_idct32x32_135_add dspr2 msa/; 661 $vpx_idct32x32_135_add_dspr2=vpx_idct32x32_1024_add_dspr2; 662 $vpx_idct32x32_135_add_msa=vpx_idct32x32_1024_add_msa; 663 $vpx_idct32x32_135_add_lsx=vpx_idct32x32_1024_add_lsx; 664 specialize qw/vpx_idct32x32_34_add dspr2 msa lsx/; 665 specialize qw/vpx_idct32x32_1_add dspr2 msa lsx/; 666 specialize qw/vpx_iwht4x4_16_add msa/; 667 specialize qw/vpx_iwht4x4_1_add msa/; 668 } # !CONFIG_VP9_HIGHBITDEPTH 669} # !CONFIG_EMULATE_HARDWARE 670 671if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 672 # Note as optimized versions of these functions are added we need to add a check to ensure 673 # that when CONFIG_EMULATE_HARDWARE is on, it defaults to the C versions only. 674 675 add_proto qw/void vpx_highbd_idct4x4_16_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 676 add_proto qw/void vpx_highbd_idct4x4_1_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 677 specialize qw/vpx_highbd_idct4x4_1_add neon sse2/; 678 679 add_proto qw/void vpx_highbd_idct8x8_64_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 680 add_proto qw/void vpx_highbd_idct8x8_12_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 681 add_proto qw/void vpx_highbd_idct8x8_1_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 682 specialize qw/vpx_highbd_idct8x8_1_add neon sse2/; 683 684 add_proto qw/void vpx_highbd_idct16x16_256_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 685 add_proto qw/void vpx_highbd_idct16x16_38_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 686 add_proto qw/void vpx_highbd_idct16x16_10_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 687 add_proto qw/void vpx_highbd_idct16x16_1_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 688 specialize qw/vpx_highbd_idct16x16_1_add neon sse2/; 689 690 add_proto qw/void vpx_highbd_idct32x32_1024_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 691 add_proto qw/void vpx_highbd_idct32x32_135_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 692 add_proto qw/void vpx_highbd_idct32x32_34_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 693 add_proto qw/void vpx_highbd_idct32x32_1_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 694 specialize qw/vpx_highbd_idct32x32_1_add neon sse2/; 695 696 add_proto qw/void vpx_highbd_iwht4x4_16_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 697 add_proto qw/void vpx_highbd_iwht4x4_1_add/, "const tran_low_t *input, uint16_t *dest, int stride, int bd"; 698 699 if (vpx_config("CONFIG_EMULATE_HARDWARE") ne "yes") { 700 specialize qw/vpx_highbd_idct4x4_16_add neon sse2 sse4_1/; 701 specialize qw/vpx_highbd_idct8x8_64_add neon sse2 sse4_1/; 702 specialize qw/vpx_highbd_idct8x8_12_add neon sse2 sse4_1/; 703 specialize qw/vpx_highbd_idct16x16_256_add neon sse2 sse4_1/; 704 specialize qw/vpx_highbd_idct16x16_38_add neon sse2 sse4_1/; 705 specialize qw/vpx_highbd_idct16x16_10_add neon sse2 sse4_1/; 706 specialize qw/vpx_highbd_idct32x32_1024_add neon sse2 sse4_1/; 707 specialize qw/vpx_highbd_idct32x32_135_add neon sse2 sse4_1/; 708 specialize qw/vpx_highbd_idct32x32_34_add neon sse2 sse4_1/; 709 } # !CONFIG_EMULATE_HARDWARE 710} # CONFIG_VP9_HIGHBITDEPTH 711} # CONFIG_VP9 712 713# 714# Quantization 715# 716if (vpx_config("CONFIG_VP9_ENCODER") eq "yes") { 717 add_proto qw/void vpx_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 718 specialize qw/vpx_quantize_b neon sse2 ssse3 avx avx2 vsx lsx/; 719 720 add_proto qw/void vpx_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 721 specialize qw/vpx_quantize_b_32x32 neon ssse3 avx avx2 vsx lsx/; 722 723 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 724 add_proto qw/void vpx_highbd_quantize_b/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 725 specialize qw/vpx_highbd_quantize_b neon sse2 avx2/; 726 727 add_proto qw/void vpx_highbd_quantize_b_32x32/, "const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan"; 728 specialize qw/vpx_highbd_quantize_b_32x32 neon sse2 avx2/; 729 } # CONFIG_VP9_HIGHBITDEPTH 730} # CONFIG_VP9_ENCODER 731 732if (vpx_config("CONFIG_ENCODERS") eq "yes") { 733# 734# Block subtraction 735# 736add_proto qw/void vpx_subtract_block/, "int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src_ptr, ptrdiff_t src_stride, const uint8_t *pred_ptr, ptrdiff_t pred_stride"; 737specialize qw/vpx_subtract_block neon msa mmi sse2 avx2 vsx lsx/; 738 739# 740# Single block SAD 741# 742add_proto qw/unsigned int vpx_sad64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 743specialize qw/vpx_sad64x64 neon avx2 msa sse2 vsx mmi lsx/; 744 745add_proto qw/unsigned int vpx_sad64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 746specialize qw/vpx_sad64x32 neon avx2 msa sse2 vsx mmi/; 747 748add_proto qw/unsigned int vpx_sad32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 749specialize qw/vpx_sad32x64 neon avx2 msa sse2 vsx mmi/; 750 751add_proto qw/unsigned int vpx_sad32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 752specialize qw/vpx_sad32x32 neon avx2 msa sse2 vsx mmi lsx/; 753 754add_proto qw/unsigned int vpx_sad32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 755specialize qw/vpx_sad32x16 neon avx2 msa sse2 vsx mmi/; 756 757add_proto qw/unsigned int vpx_sad16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 758specialize qw/vpx_sad16x32 neon msa sse2 vsx mmi/; 759 760add_proto qw/unsigned int vpx_sad16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 761specialize qw/vpx_sad16x16 neon msa sse2 vsx mmi lsx/; 762 763add_proto qw/unsigned int vpx_sad16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 764specialize qw/vpx_sad16x8 neon msa sse2 vsx mmi/; 765 766add_proto qw/unsigned int vpx_sad8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 767specialize qw/vpx_sad8x16 neon msa sse2 vsx mmi/; 768 769add_proto qw/unsigned int vpx_sad8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 770specialize qw/vpx_sad8x8 neon msa sse2 vsx mmi lsx/; 771 772add_proto qw/unsigned int vpx_sad8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 773specialize qw/vpx_sad8x4 neon msa sse2 vsx mmi/; 774 775add_proto qw/unsigned int vpx_sad4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 776specialize qw/vpx_sad4x8 neon msa sse2 mmi/; 777 778add_proto qw/unsigned int vpx_sad4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 779specialize qw/vpx_sad4x4 neon msa sse2 mmi/; 780 781# 782# Avg 783# 784if (vpx_config("CONFIG_VP9_ENCODER") eq "yes") { 785 add_proto qw/unsigned int vpx_avg_8x8/, "const uint8_t *, int p"; 786 specialize qw/vpx_avg_8x8 sse2 neon msa/; 787 788 add_proto qw/unsigned int vpx_avg_4x4/, "const uint8_t *, int p"; 789 specialize qw/vpx_avg_4x4 sse2 neon msa/; 790 791 add_proto qw/void vpx_minmax_8x8/, "const uint8_t *s, int p, const uint8_t *d, int dp, int *min, int *max"; 792 specialize qw/vpx_minmax_8x8 sse2 neon msa/; 793 794 if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 795 add_proto qw/void vpx_hadamard_8x8/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff"; 796 specialize qw/vpx_hadamard_8x8 sse2 neon vsx lsx/, "$ssse3_x86_64"; 797 798 add_proto qw/void vpx_hadamard_16x16/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff"; 799 specialize qw/vpx_hadamard_16x16 avx2 sse2 neon vsx lsx/; 800 801 add_proto qw/void vpx_hadamard_32x32/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff"; 802 specialize qw/vpx_hadamard_32x32 sse2 avx2 neon/; 803 804 add_proto qw/void vpx_highbd_hadamard_8x8/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff"; 805 specialize qw/vpx_highbd_hadamard_8x8 avx2/; 806 807 add_proto qw/void vpx_highbd_hadamard_16x16/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff"; 808 specialize qw/vpx_highbd_hadamard_16x16 avx2/; 809 810 add_proto qw/void vpx_highbd_hadamard_32x32/, "const int16_t *src_diff, ptrdiff_t src_stride, tran_low_t *coeff"; 811 specialize qw/vpx_highbd_hadamard_32x32 avx2/; 812 813 add_proto qw/int vpx_satd/, "const tran_low_t *coeff, int length"; 814 specialize qw/vpx_satd avx2 sse2 neon/; 815 816 add_proto qw/int vpx_highbd_satd/, "const tran_low_t *coeff, int length"; 817 specialize qw/vpx_highbd_satd avx2/; 818 } else { 819 add_proto qw/void vpx_hadamard_8x8/, "const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff"; 820 specialize qw/vpx_hadamard_8x8 sse2 neon msa vsx lsx/, "$ssse3_x86_64"; 821 822 add_proto qw/void vpx_hadamard_16x16/, "const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff"; 823 specialize qw/vpx_hadamard_16x16 avx2 sse2 neon msa vsx lsx/; 824 825 add_proto qw/void vpx_hadamard_32x32/, "const int16_t *src_diff, ptrdiff_t src_stride, int16_t *coeff"; 826 specialize qw/vpx_hadamard_32x32 sse2 avx2 neon/; 827 828 add_proto qw/int vpx_satd/, "const int16_t *coeff, int length"; 829 specialize qw/vpx_satd avx2 sse2 neon msa/; 830 } 831 832 add_proto qw/void vpx_int_pro_row/, "int16_t hbuf[16], const uint8_t *ref, const int ref_stride, const int height"; 833 specialize qw/vpx_int_pro_row sse2 neon msa/; 834 835 add_proto qw/int16_t vpx_int_pro_col/, "const uint8_t *ref, const int width"; 836 specialize qw/vpx_int_pro_col sse2 neon msa/; 837 838 add_proto qw/int vpx_vector_var/, "const int16_t *ref, const int16_t *src, const int bwl"; 839 specialize qw/vpx_vector_var neon sse2 msa/; 840} # CONFIG_VP9_ENCODER 841 842add_proto qw/unsigned int vpx_sad64x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 843specialize qw/vpx_sad64x64_avg neon avx2 msa sse2 vsx mmi lsx/; 844 845add_proto qw/unsigned int vpx_sad64x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 846specialize qw/vpx_sad64x32_avg neon avx2 msa sse2 vsx mmi/; 847 848add_proto qw/unsigned int vpx_sad32x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 849specialize qw/vpx_sad32x64_avg neon avx2 msa sse2 vsx mmi/; 850 851add_proto qw/unsigned int vpx_sad32x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 852specialize qw/vpx_sad32x32_avg neon avx2 msa sse2 vsx mmi lsx/; 853 854add_proto qw/unsigned int vpx_sad32x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 855specialize qw/vpx_sad32x16_avg neon avx2 msa sse2 vsx mmi/; 856 857add_proto qw/unsigned int vpx_sad16x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 858specialize qw/vpx_sad16x32_avg neon msa sse2 vsx mmi/; 859 860add_proto qw/unsigned int vpx_sad16x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 861specialize qw/vpx_sad16x16_avg neon msa sse2 vsx mmi/; 862 863add_proto qw/unsigned int vpx_sad16x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 864specialize qw/vpx_sad16x8_avg neon msa sse2 vsx mmi/; 865 866add_proto qw/unsigned int vpx_sad8x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 867specialize qw/vpx_sad8x16_avg neon msa sse2 mmi/; 868 869add_proto qw/unsigned int vpx_sad8x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 870specialize qw/vpx_sad8x8_avg neon msa sse2 mmi/; 871 872add_proto qw/unsigned int vpx_sad8x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 873specialize qw/vpx_sad8x4_avg neon msa sse2 mmi/; 874 875add_proto qw/unsigned int vpx_sad4x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 876specialize qw/vpx_sad4x8_avg neon msa sse2 mmi/; 877 878add_proto qw/unsigned int vpx_sad4x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 879specialize qw/vpx_sad4x4_avg neon msa sse2 mmi/; 880 881# 882# Multi-block SAD, comparing a reference to N independent blocks 883# 884add_proto qw/void vpx_sad64x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 885specialize qw/vpx_sad64x64x4d avx512 avx2 neon msa sse2 vsx mmi lsx/; 886 887add_proto qw/void vpx_sad64x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 888specialize qw/vpx_sad64x32x4d neon msa sse2 vsx mmi lsx/; 889 890add_proto qw/void vpx_sad32x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 891specialize qw/vpx_sad32x64x4d neon msa sse2 vsx mmi lsx/; 892 893add_proto qw/void vpx_sad32x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 894specialize qw/vpx_sad32x32x4d avx2 neon msa sse2 vsx mmi lsx/; 895 896add_proto qw/void vpx_sad32x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 897specialize qw/vpx_sad32x16x4d neon msa sse2 vsx mmi/; 898 899add_proto qw/void vpx_sad16x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 900specialize qw/vpx_sad16x32x4d neon msa sse2 vsx mmi/; 901 902add_proto qw/void vpx_sad16x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 903specialize qw/vpx_sad16x16x4d neon msa sse2 vsx mmi lsx/; 904 905add_proto qw/void vpx_sad16x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 906specialize qw/vpx_sad16x8x4d neon msa sse2 vsx mmi/; 907 908add_proto qw/void vpx_sad8x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 909specialize qw/vpx_sad8x16x4d neon msa sse2 mmi/; 910 911add_proto qw/void vpx_sad8x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 912specialize qw/vpx_sad8x8x4d neon msa sse2 mmi lsx/; 913 914add_proto qw/void vpx_sad8x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 915specialize qw/vpx_sad8x4x4d neon msa sse2 mmi/; 916 917add_proto qw/void vpx_sad4x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 918specialize qw/vpx_sad4x8x4d neon msa sse2 mmi/; 919 920add_proto qw/void vpx_sad4x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t * const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 921specialize qw/vpx_sad4x4x4d neon msa sse2 mmi/; 922 923add_proto qw/uint64_t vpx_sum_squares_2d_i16/, "const int16_t *src, int stride, int size"; 924specialize qw/vpx_sum_squares_2d_i16 neon sse2 msa/; 925 926# 927# Structured Similarity (SSIM) 928# 929if (vpx_config("CONFIG_INTERNAL_STATS") eq "yes") { 930 add_proto qw/void vpx_ssim_parms_8x8/, "const uint8_t *s, int sp, const uint8_t *r, int rp, uint32_t *sum_s, uint32_t *sum_r, uint32_t *sum_sq_s, uint32_t *sum_sq_r, uint32_t *sum_sxr"; 931 specialize qw/vpx_ssim_parms_8x8/, "$sse2_x86_64"; 932 933 add_proto qw/void vpx_ssim_parms_16x16/, "const uint8_t *s, int sp, const uint8_t *r, int rp, uint32_t *sum_s, uint32_t *sum_r, uint32_t *sum_sq_s, uint32_t *sum_sq_r, uint32_t *sum_sxr"; 934 specialize qw/vpx_ssim_parms_16x16/, "$sse2_x86_64"; 935} 936 937if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 938 # 939 # Block subtraction 940 # 941 add_proto qw/void vpx_highbd_subtract_block/, "int rows, int cols, int16_t *diff_ptr, ptrdiff_t diff_stride, const uint8_t *src8_ptr, ptrdiff_t src_stride, const uint8_t *pred8_ptr, ptrdiff_t pred_stride, int bd"; 942 specialize qw/vpx_highbd_subtract_block neon avx2/; 943 944 # 945 # Single block SAD 946 # 947 add_proto qw/unsigned int vpx_highbd_sad64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 948 specialize qw/vpx_highbd_sad64x64 sse2 neon avx2/; 949 950 add_proto qw/unsigned int vpx_highbd_sad64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 951 specialize qw/vpx_highbd_sad64x32 sse2 neon avx2/; 952 953 add_proto qw/unsigned int vpx_highbd_sad32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 954 specialize qw/vpx_highbd_sad32x64 sse2 neon avx2/; 955 956 add_proto qw/unsigned int vpx_highbd_sad32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 957 specialize qw/vpx_highbd_sad32x32 sse2 neon avx2/; 958 959 add_proto qw/unsigned int vpx_highbd_sad32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 960 specialize qw/vpx_highbd_sad32x16 sse2 neon avx2/; 961 962 add_proto qw/unsigned int vpx_highbd_sad16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 963 specialize qw/vpx_highbd_sad16x32 sse2 neon avx2/; 964 965 add_proto qw/unsigned int vpx_highbd_sad16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 966 specialize qw/vpx_highbd_sad16x16 sse2 neon avx2/; 967 968 add_proto qw/unsigned int vpx_highbd_sad16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 969 specialize qw/vpx_highbd_sad16x8 sse2 neon avx2/; 970 971 add_proto qw/unsigned int vpx_highbd_sad8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 972 specialize qw/vpx_highbd_sad8x16 sse2 neon/; 973 974 add_proto qw/unsigned int vpx_highbd_sad8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 975 specialize qw/vpx_highbd_sad8x8 sse2 neon/; 976 977 add_proto qw/unsigned int vpx_highbd_sad8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 978 specialize qw/vpx_highbd_sad8x4 sse2 neon/; 979 980 add_proto qw/unsigned int vpx_highbd_sad4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 981 specialize qw/vpx_highbd_sad4x8 neon/; 982 983 add_proto qw/unsigned int vpx_highbd_sad4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride"; 984 specialize qw/vpx_highbd_sad4x4 neon/; 985 986 # 987 # Avg 988 # 989 add_proto qw/unsigned int vpx_highbd_avg_8x8/, "const uint8_t *s8, int p"; 990 specialize qw/vpx_highbd_avg_8x8 sse2/; 991 992 add_proto qw/unsigned int vpx_highbd_avg_4x4/, "const uint8_t *s8, int p"; 993 specialize qw/vpx_highbd_avg_4x4 sse2/; 994 995 add_proto qw/void vpx_highbd_minmax_8x8/, "const uint8_t *s8, int p, const uint8_t *d8, int dp, int *min, int *max"; 996 997 add_proto qw/unsigned int vpx_highbd_sad64x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 998 specialize qw/vpx_highbd_sad64x64_avg sse2 neon avx2/; 999 1000 add_proto qw/unsigned int vpx_highbd_sad64x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1001 specialize qw/vpx_highbd_sad64x32_avg sse2 neon avx2/; 1002 1003 add_proto qw/unsigned int vpx_highbd_sad32x64_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1004 specialize qw/vpx_highbd_sad32x64_avg sse2 neon avx2/; 1005 1006 add_proto qw/unsigned int vpx_highbd_sad32x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1007 specialize qw/vpx_highbd_sad32x32_avg sse2 neon avx2/; 1008 1009 add_proto qw/unsigned int vpx_highbd_sad32x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1010 specialize qw/vpx_highbd_sad32x16_avg sse2 neon avx2/; 1011 1012 add_proto qw/unsigned int vpx_highbd_sad16x32_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1013 specialize qw/vpx_highbd_sad16x32_avg sse2 neon avx2/; 1014 1015 add_proto qw/unsigned int vpx_highbd_sad16x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1016 specialize qw/vpx_highbd_sad16x16_avg sse2 neon avx2/; 1017 1018 add_proto qw/unsigned int vpx_highbd_sad16x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1019 specialize qw/vpx_highbd_sad16x8_avg sse2 neon avx2/; 1020 1021 add_proto qw/unsigned int vpx_highbd_sad8x16_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1022 specialize qw/vpx_highbd_sad8x16_avg sse2 neon/; 1023 1024 add_proto qw/unsigned int vpx_highbd_sad8x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1025 specialize qw/vpx_highbd_sad8x8_avg sse2 neon/; 1026 1027 add_proto qw/unsigned int vpx_highbd_sad8x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1028 specialize qw/vpx_highbd_sad8x4_avg sse2 neon/; 1029 1030 add_proto qw/unsigned int vpx_highbd_sad4x8_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1031 specialize qw/vpx_highbd_sad4x8_avg neon/; 1032 1033 add_proto qw/unsigned int vpx_highbd_sad4x4_avg/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, const uint8_t *second_pred"; 1034 specialize qw/vpx_highbd_sad4x4_avg neon/; 1035 1036 # 1037 # Multi-block SAD, comparing a reference to N independent blocks 1038 # 1039 add_proto qw/void vpx_highbd_sad64x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1040 specialize qw/vpx_highbd_sad64x64x4d sse2 neon avx2/; 1041 1042 add_proto qw/void vpx_highbd_sad64x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1043 specialize qw/vpx_highbd_sad64x32x4d sse2 neon avx2/; 1044 1045 add_proto qw/void vpx_highbd_sad32x64x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1046 specialize qw/vpx_highbd_sad32x64x4d sse2 neon avx2/; 1047 1048 add_proto qw/void vpx_highbd_sad32x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1049 specialize qw/vpx_highbd_sad32x32x4d sse2 neon avx2/; 1050 1051 add_proto qw/void vpx_highbd_sad32x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1052 specialize qw/vpx_highbd_sad32x16x4d sse2 neon avx2/; 1053 1054 add_proto qw/void vpx_highbd_sad16x32x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1055 specialize qw/vpx_highbd_sad16x32x4d sse2 neon avx2/; 1056 1057 add_proto qw/void vpx_highbd_sad16x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1058 specialize qw/vpx_highbd_sad16x16x4d sse2 neon avx2/; 1059 1060 add_proto qw/void vpx_highbd_sad16x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1061 specialize qw/vpx_highbd_sad16x8x4d sse2 neon avx2/; 1062 1063 add_proto qw/void vpx_highbd_sad8x16x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1064 specialize qw/vpx_highbd_sad8x16x4d sse2 neon/; 1065 1066 add_proto qw/void vpx_highbd_sad8x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1067 specialize qw/vpx_highbd_sad8x8x4d sse2 neon/; 1068 1069 add_proto qw/void vpx_highbd_sad8x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1070 specialize qw/vpx_highbd_sad8x4x4d sse2 neon/; 1071 1072 add_proto qw/void vpx_highbd_sad4x8x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1073 specialize qw/vpx_highbd_sad4x8x4d sse2 neon/; 1074 1075 add_proto qw/void vpx_highbd_sad4x4x4d/, "const uint8_t *src_ptr, int src_stride, const uint8_t* const ref_array[4], int ref_stride, uint32_t sad_array[4]"; 1076 specialize qw/vpx_highbd_sad4x4x4d sse2 neon/; 1077 1078 # 1079 # Structured Similarity (SSIM) 1080 # 1081 if (vpx_config("CONFIG_INTERNAL_STATS") eq "yes") { 1082 add_proto qw/void vpx_highbd_ssim_parms_8x8/, "const uint16_t *s, int sp, const uint16_t *r, int rp, uint32_t *sum_s, uint32_t *sum_r, uint32_t *sum_sq_s, uint32_t *sum_sq_r, uint32_t *sum_sxr"; 1083 } 1084} # CONFIG_VP9_HIGHBITDEPTH 1085} # CONFIG_ENCODERS 1086 1087if (vpx_config("CONFIG_ENCODERS") eq "yes" || vpx_config("CONFIG_POSTPROC") eq "yes" || vpx_config("CONFIG_VP9_POSTPROC") eq "yes") { 1088 1089# 1090# Variance 1091# 1092add_proto qw/unsigned int vpx_variance64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1093 specialize qw/vpx_variance64x64 sse2 avx2 neon msa mmi vsx lsx/; 1094 1095add_proto qw/unsigned int vpx_variance64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1096 specialize qw/vpx_variance64x32 sse2 avx2 neon msa mmi vsx/; 1097 1098add_proto qw/unsigned int vpx_variance32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1099 specialize qw/vpx_variance32x64 sse2 avx2 neon msa mmi vsx/; 1100 1101add_proto qw/unsigned int vpx_variance32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1102 specialize qw/vpx_variance32x32 sse2 avx2 neon msa mmi vsx lsx/; 1103 1104add_proto qw/unsigned int vpx_variance32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1105 specialize qw/vpx_variance32x16 sse2 avx2 neon msa mmi vsx/; 1106 1107add_proto qw/unsigned int vpx_variance16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1108 specialize qw/vpx_variance16x32 sse2 avx2 neon msa mmi vsx/; 1109 1110add_proto qw/unsigned int vpx_variance16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1111 specialize qw/vpx_variance16x16 sse2 avx2 neon msa mmi vsx lsx/; 1112 1113add_proto qw/unsigned int vpx_variance16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1114 specialize qw/vpx_variance16x8 sse2 avx2 neon msa mmi vsx/; 1115 1116add_proto qw/unsigned int vpx_variance8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1117 specialize qw/vpx_variance8x16 sse2 neon msa mmi vsx/; 1118 1119add_proto qw/unsigned int vpx_variance8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1120 specialize qw/vpx_variance8x8 sse2 neon msa mmi vsx lsx/; 1121 1122add_proto qw/unsigned int vpx_variance8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1123 specialize qw/vpx_variance8x4 sse2 neon msa mmi vsx/; 1124 1125add_proto qw/unsigned int vpx_variance4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1126 specialize qw/vpx_variance4x8 sse2 neon msa mmi vsx/; 1127 1128add_proto qw/unsigned int vpx_variance4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1129 specialize qw/vpx_variance4x4 sse2 neon msa mmi vsx/; 1130 1131# 1132# Specialty Variance 1133# 1134add_proto qw/void vpx_get16x16var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum"; 1135 specialize qw/vpx_get16x16var sse2 avx2 neon msa vsx lsx/; 1136 1137add_proto qw/void vpx_get8x8var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum"; 1138 specialize qw/vpx_get8x8var sse2 neon msa vsx/; 1139 1140add_proto qw/unsigned int vpx_mse16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1141 specialize qw/vpx_mse16x16 sse2 avx2 neon msa mmi vsx lsx/; 1142 1143add_proto qw/unsigned int vpx_mse16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1144 specialize qw/vpx_mse16x8 sse2 avx2 msa mmi vsx/; 1145 1146add_proto qw/unsigned int vpx_mse8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1147 specialize qw/vpx_mse8x16 sse2 msa mmi vsx/; 1148 1149add_proto qw/unsigned int vpx_mse8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1150 specialize qw/vpx_mse8x8 sse2 msa mmi vsx/; 1151 1152add_proto qw/unsigned int vpx_get_mb_ss/, "const int16_t *"; 1153 specialize qw/vpx_get_mb_ss sse2 msa vsx/; 1154 1155add_proto qw/unsigned int vpx_get4x4sse_cs/, "const unsigned char *src_ptr, int src_stride, const unsigned char *ref_ptr, int ref_stride"; 1156 specialize qw/vpx_get4x4sse_cs neon msa vsx/; 1157 1158add_proto qw/void vpx_comp_avg_pred/, "uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride"; 1159 specialize qw/vpx_comp_avg_pred neon sse2 vsx lsx/; 1160 1161# 1162# Subpixel Variance 1163# 1164add_proto qw/uint32_t vpx_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1165 specialize qw/vpx_sub_pixel_variance64x64 avx2 neon msa mmi sse2 ssse3/; 1166 1167add_proto qw/uint32_t vpx_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1168 specialize qw/vpx_sub_pixel_variance64x32 neon msa mmi sse2 ssse3/; 1169 1170add_proto qw/uint32_t vpx_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1171 specialize qw/vpx_sub_pixel_variance32x64 neon msa mmi sse2 ssse3/; 1172 1173add_proto qw/uint32_t vpx_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1174 specialize qw/vpx_sub_pixel_variance32x32 avx2 neon msa mmi sse2 ssse3 lsx/; 1175 1176add_proto qw/uint32_t vpx_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1177 specialize qw/vpx_sub_pixel_variance32x16 neon msa mmi sse2 ssse3/; 1178 1179add_proto qw/uint32_t vpx_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1180 specialize qw/vpx_sub_pixel_variance16x32 neon msa mmi sse2 ssse3/; 1181 1182add_proto qw/uint32_t vpx_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1183 specialize qw/vpx_sub_pixel_variance16x16 neon msa mmi sse2 ssse3 lsx/; 1184 1185add_proto qw/uint32_t vpx_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1186 specialize qw/vpx_sub_pixel_variance16x8 neon msa mmi sse2 ssse3/; 1187 1188add_proto qw/uint32_t vpx_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1189 specialize qw/vpx_sub_pixel_variance8x16 neon msa mmi sse2 ssse3/; 1190 1191add_proto qw/uint32_t vpx_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1192 specialize qw/vpx_sub_pixel_variance8x8 neon msa mmi sse2 ssse3 lsx/; 1193 1194add_proto qw/uint32_t vpx_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1195 specialize qw/vpx_sub_pixel_variance8x4 neon msa mmi sse2 ssse3/; 1196 1197add_proto qw/uint32_t vpx_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1198 specialize qw/vpx_sub_pixel_variance4x8 neon msa mmi sse2 ssse3/; 1199 1200add_proto qw/uint32_t vpx_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1201 specialize qw/vpx_sub_pixel_variance4x4 neon msa mmi sse2 ssse3/; 1202 1203add_proto qw/uint32_t vpx_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1204 specialize qw/vpx_sub_pixel_avg_variance64x64 neon avx2 msa mmi sse2 ssse3 lsx/; 1205 1206add_proto qw/uint32_t vpx_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1207 specialize qw/vpx_sub_pixel_avg_variance64x32 neon msa mmi sse2 ssse3/; 1208 1209add_proto qw/uint32_t vpx_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1210 specialize qw/vpx_sub_pixel_avg_variance32x64 neon msa mmi sse2 ssse3/; 1211 1212add_proto qw/uint32_t vpx_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1213 specialize qw/vpx_sub_pixel_avg_variance32x32 neon avx2 msa mmi sse2 ssse3/; 1214 1215add_proto qw/uint32_t vpx_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1216 specialize qw/vpx_sub_pixel_avg_variance32x16 neon msa mmi sse2 ssse3/; 1217 1218add_proto qw/uint32_t vpx_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1219 specialize qw/vpx_sub_pixel_avg_variance16x32 neon msa mmi sse2 ssse3/; 1220 1221add_proto qw/uint32_t vpx_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1222 specialize qw/vpx_sub_pixel_avg_variance16x16 neon msa mmi sse2 ssse3/; 1223 1224add_proto qw/uint32_t vpx_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1225 specialize qw/vpx_sub_pixel_avg_variance16x8 neon msa mmi sse2 ssse3/; 1226 1227add_proto qw/uint32_t vpx_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1228 specialize qw/vpx_sub_pixel_avg_variance8x16 neon msa mmi sse2 ssse3/; 1229 1230add_proto qw/uint32_t vpx_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1231 specialize qw/vpx_sub_pixel_avg_variance8x8 neon msa mmi sse2 ssse3/; 1232 1233add_proto qw/uint32_t vpx_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1234 specialize qw/vpx_sub_pixel_avg_variance8x4 neon msa mmi sse2 ssse3/; 1235 1236add_proto qw/uint32_t vpx_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1237 specialize qw/vpx_sub_pixel_avg_variance4x8 neon msa mmi sse2 ssse3/; 1238 1239add_proto qw/uint32_t vpx_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1240 specialize qw/vpx_sub_pixel_avg_variance4x4 neon msa mmi sse2 ssse3/; 1241 1242if (vpx_config("CONFIG_VP9_HIGHBITDEPTH") eq "yes") { 1243 add_proto qw/unsigned int vpx_highbd_12_variance64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1244 specialize qw/vpx_highbd_12_variance64x64 sse2 neon/; 1245 1246 add_proto qw/unsigned int vpx_highbd_12_variance64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1247 specialize qw/vpx_highbd_12_variance64x32 sse2 neon/; 1248 1249 add_proto qw/unsigned int vpx_highbd_12_variance32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1250 specialize qw/vpx_highbd_12_variance32x64 sse2 neon/; 1251 1252 add_proto qw/unsigned int vpx_highbd_12_variance32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1253 specialize qw/vpx_highbd_12_variance32x32 sse2 neon/; 1254 1255 add_proto qw/unsigned int vpx_highbd_12_variance32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1256 specialize qw/vpx_highbd_12_variance32x16 sse2 neon/; 1257 1258 add_proto qw/unsigned int vpx_highbd_12_variance16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1259 specialize qw/vpx_highbd_12_variance16x32 sse2 neon/; 1260 1261 add_proto qw/unsigned int vpx_highbd_12_variance16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1262 specialize qw/vpx_highbd_12_variance16x16 sse2 neon/; 1263 1264 add_proto qw/unsigned int vpx_highbd_12_variance16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1265 specialize qw/vpx_highbd_12_variance16x8 sse2 neon/; 1266 1267 add_proto qw/unsigned int vpx_highbd_12_variance8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1268 specialize qw/vpx_highbd_12_variance8x16 sse2 neon/; 1269 1270 add_proto qw/unsigned int vpx_highbd_12_variance8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1271 specialize qw/vpx_highbd_12_variance8x8 sse2 neon/; 1272 1273 add_proto qw/unsigned int vpx_highbd_12_variance8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1274 specialize qw/vpx_highbd_12_variance8x4 neon/; 1275 add_proto qw/unsigned int vpx_highbd_12_variance4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1276 specialize qw/vpx_highbd_12_variance4x8 neon/; 1277 add_proto qw/unsigned int vpx_highbd_12_variance4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1278 specialize qw/vpx_highbd_12_variance4x4 neon/; 1279 1280 add_proto qw/unsigned int vpx_highbd_10_variance64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1281 specialize qw/vpx_highbd_10_variance64x64 sse2 neon/; 1282 1283 add_proto qw/unsigned int vpx_highbd_10_variance64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1284 specialize qw/vpx_highbd_10_variance64x32 sse2 neon/; 1285 1286 add_proto qw/unsigned int vpx_highbd_10_variance32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1287 specialize qw/vpx_highbd_10_variance32x64 sse2 neon/; 1288 1289 add_proto qw/unsigned int vpx_highbd_10_variance32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1290 specialize qw/vpx_highbd_10_variance32x32 sse2 neon/; 1291 1292 add_proto qw/unsigned int vpx_highbd_10_variance32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1293 specialize qw/vpx_highbd_10_variance32x16 sse2 neon/; 1294 1295 add_proto qw/unsigned int vpx_highbd_10_variance16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1296 specialize qw/vpx_highbd_10_variance16x32 sse2 neon/; 1297 1298 add_proto qw/unsigned int vpx_highbd_10_variance16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1299 specialize qw/vpx_highbd_10_variance16x16 sse2 neon/; 1300 1301 add_proto qw/unsigned int vpx_highbd_10_variance16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1302 specialize qw/vpx_highbd_10_variance16x8 sse2 neon/; 1303 1304 add_proto qw/unsigned int vpx_highbd_10_variance8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1305 specialize qw/vpx_highbd_10_variance8x16 sse2 neon/; 1306 1307 add_proto qw/unsigned int vpx_highbd_10_variance8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1308 specialize qw/vpx_highbd_10_variance8x8 sse2 neon/; 1309 1310 add_proto qw/unsigned int vpx_highbd_10_variance8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1311 specialize qw/vpx_highbd_10_variance8x4 neon/; 1312 add_proto qw/unsigned int vpx_highbd_10_variance4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1313 specialize qw/vpx_highbd_10_variance4x8 neon/; 1314 add_proto qw/unsigned int vpx_highbd_10_variance4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1315 specialize qw/vpx_highbd_10_variance4x4 neon/; 1316 1317 add_proto qw/unsigned int vpx_highbd_8_variance64x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1318 specialize qw/vpx_highbd_8_variance64x64 sse2 neon/; 1319 1320 add_proto qw/unsigned int vpx_highbd_8_variance64x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1321 specialize qw/vpx_highbd_8_variance64x32 sse2 neon/; 1322 1323 add_proto qw/unsigned int vpx_highbd_8_variance32x64/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1324 specialize qw/vpx_highbd_8_variance32x64 sse2 neon/; 1325 1326 add_proto qw/unsigned int vpx_highbd_8_variance32x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1327 specialize qw/vpx_highbd_8_variance32x32 sse2 neon/; 1328 1329 add_proto qw/unsigned int vpx_highbd_8_variance32x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1330 specialize qw/vpx_highbd_8_variance32x16 sse2 neon/; 1331 1332 add_proto qw/unsigned int vpx_highbd_8_variance16x32/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1333 specialize qw/vpx_highbd_8_variance16x32 sse2 neon/; 1334 1335 add_proto qw/unsigned int vpx_highbd_8_variance16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1336 specialize qw/vpx_highbd_8_variance16x16 sse2 neon/; 1337 1338 add_proto qw/unsigned int vpx_highbd_8_variance16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1339 specialize qw/vpx_highbd_8_variance16x8 sse2 neon/; 1340 1341 add_proto qw/unsigned int vpx_highbd_8_variance8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1342 specialize qw/vpx_highbd_8_variance8x16 sse2 neon/; 1343 1344 add_proto qw/unsigned int vpx_highbd_8_variance8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1345 specialize qw/vpx_highbd_8_variance8x8 sse2 neon/; 1346 1347 add_proto qw/unsigned int vpx_highbd_8_variance8x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1348 specialize qw/vpx_highbd_8_variance8x4 neon/; 1349 add_proto qw/unsigned int vpx_highbd_8_variance4x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1350 specialize qw/vpx_highbd_8_variance4x8 neon/; 1351 add_proto qw/unsigned int vpx_highbd_8_variance4x4/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1352 specialize qw/vpx_highbd_8_variance4x4 neon/; 1353 1354 add_proto qw/void vpx_highbd_8_get16x16var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum"; 1355 specialize qw/vpx_highbd_8_get16x16var sse2 neon/; 1356 1357 add_proto qw/void vpx_highbd_8_get8x8var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum"; 1358 specialize qw/vpx_highbd_8_get8x8var sse2 neon/; 1359 1360 add_proto qw/void vpx_highbd_10_get16x16var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum"; 1361 specialize qw/vpx_highbd_10_get16x16var sse2 neon/; 1362 1363 add_proto qw/void vpx_highbd_10_get8x8var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum"; 1364 specialize qw/vpx_highbd_10_get8x8var sse2 neon/; 1365 1366 add_proto qw/void vpx_highbd_12_get16x16var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum"; 1367 specialize qw/vpx_highbd_12_get16x16var sse2 neon/; 1368 1369 add_proto qw/void vpx_highbd_12_get8x8var/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse, int *sum"; 1370 specialize qw/vpx_highbd_12_get8x8var sse2 neon/; 1371 1372 add_proto qw/unsigned int vpx_highbd_8_mse16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1373 specialize qw/vpx_highbd_8_mse16x16 sse2 neon/; 1374 1375 add_proto qw/unsigned int vpx_highbd_8_mse16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1376 specialize qw/vpx_highbd_8_mse16x8 neon/; 1377 add_proto qw/unsigned int vpx_highbd_8_mse8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1378 specialize qw/vpx_highbd_8_mse8x16 neon/; 1379 add_proto qw/unsigned int vpx_highbd_8_mse8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1380 specialize qw/vpx_highbd_8_mse8x8 sse2 neon/; 1381 1382 add_proto qw/unsigned int vpx_highbd_10_mse16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1383 specialize qw/vpx_highbd_10_mse16x16 sse2 neon/; 1384 1385 add_proto qw/unsigned int vpx_highbd_10_mse16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1386 specialize qw/vpx_highbd_10_mse16x8 neon/; 1387 add_proto qw/unsigned int vpx_highbd_10_mse8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1388 specialize qw/vpx_highbd_10_mse8x16 neon/; 1389 add_proto qw/unsigned int vpx_highbd_10_mse8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1390 specialize qw/vpx_highbd_10_mse8x8 sse2 neon/; 1391 1392 add_proto qw/unsigned int vpx_highbd_12_mse16x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1393 specialize qw/vpx_highbd_12_mse16x16 sse2 neon/; 1394 1395 add_proto qw/unsigned int vpx_highbd_12_mse16x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1396 specialize qw/vpx_highbd_12_mse16x8 neon/; 1397 add_proto qw/unsigned int vpx_highbd_12_mse8x16/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1398 specialize qw/vpx_highbd_12_mse8x16 neon/; 1399 add_proto qw/unsigned int vpx_highbd_12_mse8x8/, "const uint8_t *src_ptr, int src_stride, const uint8_t *ref_ptr, int ref_stride, unsigned int *sse"; 1400 specialize qw/vpx_highbd_12_mse8x8 sse2 neon/; 1401 1402 add_proto qw/void vpx_highbd_comp_avg_pred/, "uint16_t *comp_pred, const uint16_t *pred, int width, int height, const uint16_t *ref, int ref_stride"; 1403 specialize qw/vpx_highbd_comp_avg_pred neon sse2/; 1404 1405 # 1406 # Subpixel Variance 1407 # 1408 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1409 specialize qw/vpx_highbd_12_sub_pixel_variance64x64 sse2 neon/; 1410 1411 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1412 specialize qw/vpx_highbd_12_sub_pixel_variance64x32 sse2 neon/; 1413 1414 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1415 specialize qw/vpx_highbd_12_sub_pixel_variance32x64 sse2 neon/; 1416 1417 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1418 specialize qw/vpx_highbd_12_sub_pixel_variance32x32 sse2 neon/; 1419 1420 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1421 specialize qw/vpx_highbd_12_sub_pixel_variance32x16 sse2 neon/; 1422 1423 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1424 specialize qw/vpx_highbd_12_sub_pixel_variance16x32 sse2 neon/; 1425 1426 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1427 specialize qw/vpx_highbd_12_sub_pixel_variance16x16 sse2 neon/; 1428 1429 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1430 specialize qw/vpx_highbd_12_sub_pixel_variance16x8 sse2 neon/; 1431 1432 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1433 specialize qw/vpx_highbd_12_sub_pixel_variance8x16 sse2 neon/; 1434 1435 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1436 specialize qw/vpx_highbd_12_sub_pixel_variance8x8 sse2 neon/; 1437 1438 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1439 specialize qw/vpx_highbd_12_sub_pixel_variance8x4 sse2 neon/; 1440 1441 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1442 specialize qw/vpx_highbd_12_sub_pixel_variance4x8 neon/; 1443 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1444 specialize qw/vpx_highbd_12_sub_pixel_variance4x4 neon/; 1445 1446 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1447 specialize qw/vpx_highbd_10_sub_pixel_variance64x64 sse2 neon/; 1448 1449 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1450 specialize qw/vpx_highbd_10_sub_pixel_variance64x32 sse2 neon/; 1451 1452 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1453 specialize qw/vpx_highbd_10_sub_pixel_variance32x64 sse2 neon/; 1454 1455 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1456 specialize qw/vpx_highbd_10_sub_pixel_variance32x32 sse2 neon/; 1457 1458 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1459 specialize qw/vpx_highbd_10_sub_pixel_variance32x16 sse2 neon/; 1460 1461 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1462 specialize qw/vpx_highbd_10_sub_pixel_variance16x32 sse2 neon/; 1463 1464 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1465 specialize qw/vpx_highbd_10_sub_pixel_variance16x16 sse2 neon/; 1466 1467 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1468 specialize qw/vpx_highbd_10_sub_pixel_variance16x8 sse2 neon/; 1469 1470 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1471 specialize qw/vpx_highbd_10_sub_pixel_variance8x16 sse2 neon/; 1472 1473 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1474 specialize qw/vpx_highbd_10_sub_pixel_variance8x8 sse2 neon/; 1475 1476 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1477 specialize qw/vpx_highbd_10_sub_pixel_variance8x4 sse2 neon/; 1478 1479 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1480 specialize qw/vpx_highbd_10_sub_pixel_variance4x8 neon/; 1481 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1482 specialize qw/vpx_highbd_10_sub_pixel_variance4x4 neon/; 1483 1484 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1485 specialize qw/vpx_highbd_8_sub_pixel_variance64x64 sse2 neon/; 1486 1487 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1488 specialize qw/vpx_highbd_8_sub_pixel_variance64x32 sse2 neon/; 1489 1490 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1491 specialize qw/vpx_highbd_8_sub_pixel_variance32x64 sse2 neon/; 1492 1493 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1494 specialize qw/vpx_highbd_8_sub_pixel_variance32x32 sse2 neon/; 1495 1496 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1497 specialize qw/vpx_highbd_8_sub_pixel_variance32x16 sse2 neon/; 1498 1499 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1500 specialize qw/vpx_highbd_8_sub_pixel_variance16x32 sse2 neon/; 1501 1502 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1503 specialize qw/vpx_highbd_8_sub_pixel_variance16x16 sse2 neon/; 1504 1505 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1506 specialize qw/vpx_highbd_8_sub_pixel_variance16x8 sse2 neon/; 1507 1508 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1509 specialize qw/vpx_highbd_8_sub_pixel_variance8x16 sse2 neon/; 1510 1511 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1512 specialize qw/vpx_highbd_8_sub_pixel_variance8x8 sse2 neon/; 1513 1514 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1515 specialize qw/vpx_highbd_8_sub_pixel_variance8x4 sse2 neon/; 1516 1517 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1518 specialize qw/vpx_highbd_8_sub_pixel_variance4x8 neon/; 1519 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse"; 1520 specialize qw/vpx_highbd_8_sub_pixel_variance4x4 neon/; 1521 1522 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1523 specialize qw/vpx_highbd_12_sub_pixel_avg_variance64x64 sse2 neon/; 1524 1525 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1526 specialize qw/vpx_highbd_12_sub_pixel_avg_variance64x32 sse2 neon/; 1527 1528 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1529 specialize qw/vpx_highbd_12_sub_pixel_avg_variance32x64 sse2 neon/; 1530 1531 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1532 specialize qw/vpx_highbd_12_sub_pixel_avg_variance32x32 sse2 neon/; 1533 1534 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1535 specialize qw/vpx_highbd_12_sub_pixel_avg_variance32x16 sse2 neon/; 1536 1537 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1538 specialize qw/vpx_highbd_12_sub_pixel_avg_variance16x32 sse2 neon/; 1539 1540 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1541 specialize qw/vpx_highbd_12_sub_pixel_avg_variance16x16 sse2 neon/; 1542 1543 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1544 specialize qw/vpx_highbd_12_sub_pixel_avg_variance16x8 sse2 neon/; 1545 1546 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1547 specialize qw/vpx_highbd_12_sub_pixel_avg_variance8x16 sse2 neon/; 1548 1549 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1550 specialize qw/vpx_highbd_12_sub_pixel_avg_variance8x8 sse2 neon/; 1551 1552 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1553 specialize qw/vpx_highbd_12_sub_pixel_avg_variance8x4 sse2 neon/; 1554 1555 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1556 specialize qw/vpx_highbd_12_sub_pixel_avg_variance4x8 neon/; 1557 add_proto qw/uint32_t vpx_highbd_12_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1558 specialize qw/vpx_highbd_12_sub_pixel_avg_variance4x4 neon/; 1559 1560 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1561 specialize qw/vpx_highbd_10_sub_pixel_avg_variance64x64 sse2 neon/; 1562 1563 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1564 specialize qw/vpx_highbd_10_sub_pixel_avg_variance64x32 sse2 neon/; 1565 1566 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1567 specialize qw/vpx_highbd_10_sub_pixel_avg_variance32x64 sse2 neon/; 1568 1569 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1570 specialize qw/vpx_highbd_10_sub_pixel_avg_variance32x32 sse2 neon/; 1571 1572 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1573 specialize qw/vpx_highbd_10_sub_pixel_avg_variance32x16 sse2 neon/; 1574 1575 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1576 specialize qw/vpx_highbd_10_sub_pixel_avg_variance16x32 sse2 neon/; 1577 1578 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1579 specialize qw/vpx_highbd_10_sub_pixel_avg_variance16x16 sse2 neon/; 1580 1581 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1582 specialize qw/vpx_highbd_10_sub_pixel_avg_variance16x8 sse2 neon/; 1583 1584 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1585 specialize qw/vpx_highbd_10_sub_pixel_avg_variance8x16 sse2 neon/; 1586 1587 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1588 specialize qw/vpx_highbd_10_sub_pixel_avg_variance8x8 sse2 neon/; 1589 1590 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1591 specialize qw/vpx_highbd_10_sub_pixel_avg_variance8x4 sse2 neon/; 1592 1593 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1594 specialize qw/vpx_highbd_10_sub_pixel_avg_variance4x8 neon/; 1595 add_proto qw/uint32_t vpx_highbd_10_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1596 specialize qw/vpx_highbd_10_sub_pixel_avg_variance4x4 neon/; 1597 1598 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance64x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1599 specialize qw/vpx_highbd_8_sub_pixel_avg_variance64x64 sse2 neon/; 1600 1601 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance64x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1602 specialize qw/vpx_highbd_8_sub_pixel_avg_variance64x32 sse2 neon/; 1603 1604 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance32x64/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1605 specialize qw/vpx_highbd_8_sub_pixel_avg_variance32x64 sse2 neon/; 1606 1607 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance32x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1608 specialize qw/vpx_highbd_8_sub_pixel_avg_variance32x32 sse2 neon/; 1609 1610 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance32x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1611 specialize qw/vpx_highbd_8_sub_pixel_avg_variance32x16 sse2 neon/; 1612 1613 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance16x32/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1614 specialize qw/vpx_highbd_8_sub_pixel_avg_variance16x32 sse2 neon/; 1615 1616 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance16x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1617 specialize qw/vpx_highbd_8_sub_pixel_avg_variance16x16 sse2 neon/; 1618 1619 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance16x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1620 specialize qw/vpx_highbd_8_sub_pixel_avg_variance16x8 sse2 neon/; 1621 1622 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance8x16/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1623 specialize qw/vpx_highbd_8_sub_pixel_avg_variance8x16 sse2 neon/; 1624 1625 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance8x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1626 specialize qw/vpx_highbd_8_sub_pixel_avg_variance8x8 sse2 neon/; 1627 1628 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance8x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1629 specialize qw/vpx_highbd_8_sub_pixel_avg_variance8x4 sse2 neon/; 1630 1631 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance4x8/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1632 specialize qw/vpx_highbd_8_sub_pixel_avg_variance4x8 neon/; 1633 add_proto qw/uint32_t vpx_highbd_8_sub_pixel_avg_variance4x4/, "const uint8_t *src_ptr, int src_stride, int x_offset, int y_offset, const uint8_t *ref_ptr, int ref_stride, uint32_t *sse, const uint8_t *second_pred"; 1634 specialize qw/vpx_highbd_8_sub_pixel_avg_variance4x4 neon/; 1635 1636} # CONFIG_VP9_HIGHBITDEPTH 1637 1638# 1639# Post Processing 1640# 1641if (vpx_config("CONFIG_POSTPROC") eq "yes" || vpx_config("CONFIG_VP9_POSTPROC") eq "yes") { 1642 add_proto qw/void vpx_plane_add_noise/, "uint8_t *start, const int8_t *noise, int blackclamp, int whiteclamp, int width, int height, int pitch"; 1643 specialize qw/vpx_plane_add_noise sse2 msa/; 1644 1645 add_proto qw/void vpx_mbpost_proc_down/, "unsigned char *dst, int pitch, int rows, int cols,int flimit"; 1646 specialize qw/vpx_mbpost_proc_down sse2 neon msa vsx/; 1647 1648 add_proto qw/void vpx_mbpost_proc_across_ip/, "unsigned char *src, int pitch, int rows, int cols,int flimit"; 1649 specialize qw/vpx_mbpost_proc_across_ip sse2 neon msa vsx/; 1650 1651 add_proto qw/void vpx_post_proc_down_and_across_mb_row/, "unsigned char *src, unsigned char *dst, int src_pitch, int dst_pitch, int cols, unsigned char *flimits, int size"; 1652 specialize qw/vpx_post_proc_down_and_across_mb_row sse2 neon msa vsx/; 1653 1654} 1655 1656} # CONFIG_ENCODERS || CONFIG_POSTPROC || CONFIG_VP9_POSTPROC 1657 16581; 1659