1233d2500723e5594f3e7c70896ffeeef32b9c950ywan#ifndef VP9_RTCD_H_
2233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define VP9_RTCD_H_
3233d2500723e5594f3e7c70896ffeeef32b9c950ywan
4233d2500723e5594f3e7c70896ffeeef32b9c950ywan#ifdef RTCD_C
5233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define RTCD_EXTERN
6233d2500723e5594f3e7c70896ffeeef32b9c950ywan#else
7233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define RTCD_EXTERN extern
8233d2500723e5594f3e7c70896ffeeef32b9c950ywan#endif
9233d2500723e5594f3e7c70896ffeeef32b9c950ywan
10233d2500723e5594f3e7c70896ffeeef32b9c950ywan/*
11233d2500723e5594f3e7c70896ffeeef32b9c950ywan * VP9
12233d2500723e5594f3e7c70896ffeeef32b9c950ywan */
13233d2500723e5594f3e7c70896ffeeef32b9c950ywan
14233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vpx/vpx_integer.h"
15233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vp9/common/vp9_enums.h"
16233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "trace_conf.h"
17233d2500723e5594f3e7c70896ffeeef32b9c950ywan
18233d2500723e5594f3e7c70896ffeeef32b9c950ywanstruct macroblockd;
19233d2500723e5594f3e7c70896ffeeef32b9c950ywan
20233d2500723e5594f3e7c70896ffeeef32b9c950ywan/* Encoder forward decls */
21233d2500723e5594f3e7c70896ffeeef32b9c950ywanstruct macroblock;
22233d2500723e5594f3e7c70896ffeeef32b9c950ywanstruct vp9_variance_vtable;
23233d2500723e5594f3e7c70896ffeeef32b9c950ywan
24233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define DEC_MVCOSTS int *mvjcost, int *mvcost[2]
25233d2500723e5594f3e7c70896ffeeef32b9c950ywanstruct mv;
26233d2500723e5594f3e7c70896ffeeef32b9c950ywanunion int_mv;
27233d2500723e5594f3e7c70896ffeeef32b9c950ywanstruct yv12_buffer_config;
28233d2500723e5594f3e7c70896ffeeef32b9c950ywan
29233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
30233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
31233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d207_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
32233d2500723e5594f3e7c70896ffeeef32b9c950ywan
33233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
34233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
35233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d45_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
36233d2500723e5594f3e7c70896ffeeef32b9c950ywan
37233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
38233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
39233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d63_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
40233d2500723e5594f3e7c70896ffeeef32b9c950ywan
41233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
42233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
43233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_h_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
44233d2500723e5594f3e7c70896ffeeef32b9c950ywan
45233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d117_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
46233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d117_predictor_4x4 vp9_d117_predictor_4x4_c
47233d2500723e5594f3e7c70896ffeeef32b9c950ywan
48233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d135_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
49233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d135_predictor_4x4 vp9_d135_predictor_4x4_c
50233d2500723e5594f3e7c70896ffeeef32b9c950ywan
51233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d153_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
52233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d153_predictor_4x4_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
53233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d153_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
54233d2500723e5594f3e7c70896ffeeef32b9c950ywan
55233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
56233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_4x4_sse(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
57233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_v_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
58233d2500723e5594f3e7c70896ffeeef32b9c950ywan
59233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_tm_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
60233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_tm_predictor_4x4_sse(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
61233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_tm_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
62233d2500723e5594f3e7c70896ffeeef32b9c950ywan
63233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
64233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_4x4_sse(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
65233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_dc_predictor_4x4)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
66233d2500723e5594f3e7c70896ffeeef32b9c950ywan
67233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_top_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
68233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_top_predictor_4x4 vp9_dc_top_predictor_4x4_c
69233d2500723e5594f3e7c70896ffeeef32b9c950ywan
70233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_left_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
71233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_left_predictor_4x4 vp9_dc_left_predictor_4x4_c
72233d2500723e5594f3e7c70896ffeeef32b9c950ywan
73233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_128_predictor_4x4_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
74233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_128_predictor_4x4 vp9_dc_128_predictor_4x4_c
75233d2500723e5594f3e7c70896ffeeef32b9c950ywan
76233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
77233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
78233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d207_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
79233d2500723e5594f3e7c70896ffeeef32b9c950ywan
80233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
81233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
82233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d45_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
83233d2500723e5594f3e7c70896ffeeef32b9c950ywan
84233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
85233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
86233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d63_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
87233d2500723e5594f3e7c70896ffeeef32b9c950ywan
88233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
89233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
90233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_h_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
91233d2500723e5594f3e7c70896ffeeef32b9c950ywan
92233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d117_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
93233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d117_predictor_8x8 vp9_d117_predictor_8x8_c
94233d2500723e5594f3e7c70896ffeeef32b9c950ywan
95233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d135_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
96233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d135_predictor_8x8 vp9_d135_predictor_8x8_c
97233d2500723e5594f3e7c70896ffeeef32b9c950ywan
98233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d153_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
99233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d153_predictor_8x8_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
100233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d153_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
101233d2500723e5594f3e7c70896ffeeef32b9c950ywan
102233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
103233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_8x8_sse(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
104233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_v_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
105233d2500723e5594f3e7c70896ffeeef32b9c950ywan
106233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_tm_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
107233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_tm_predictor_8x8_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
108233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_tm_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
109233d2500723e5594f3e7c70896ffeeef32b9c950ywan
110233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
111233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_8x8_sse(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
112233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_dc_predictor_8x8)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
113233d2500723e5594f3e7c70896ffeeef32b9c950ywan
114233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_top_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
115233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_top_predictor_8x8 vp9_dc_top_predictor_8x8_c
116233d2500723e5594f3e7c70896ffeeef32b9c950ywan
117233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_left_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
118233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_left_predictor_8x8 vp9_dc_left_predictor_8x8_c
119233d2500723e5594f3e7c70896ffeeef32b9c950ywan
120233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_128_predictor_8x8_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
121233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_128_predictor_8x8 vp9_dc_128_predictor_8x8_c
122233d2500723e5594f3e7c70896ffeeef32b9c950ywan
123233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
124233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
125233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d207_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
126233d2500723e5594f3e7c70896ffeeef32b9c950ywan
127233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
128233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
129233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d45_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
130233d2500723e5594f3e7c70896ffeeef32b9c950ywan
131233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
132233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
133233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d63_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
134233d2500723e5594f3e7c70896ffeeef32b9c950ywan
135233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
136233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
137233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_h_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
138233d2500723e5594f3e7c70896ffeeef32b9c950ywan
139233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d117_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
140233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d117_predictor_16x16 vp9_d117_predictor_16x16_c
141233d2500723e5594f3e7c70896ffeeef32b9c950ywan
142233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d135_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
143233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d135_predictor_16x16 vp9_d135_predictor_16x16_c
144233d2500723e5594f3e7c70896ffeeef32b9c950ywan
145233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d153_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
146233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d153_predictor_16x16_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
147233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d153_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
148233d2500723e5594f3e7c70896ffeeef32b9c950ywan
149233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
150233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
151233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_v_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
152233d2500723e5594f3e7c70896ffeeef32b9c950ywan
153233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_tm_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
154233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_tm_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
155233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_tm_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
156233d2500723e5594f3e7c70896ffeeef32b9c950ywan
157233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
158233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_16x16_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
159233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_dc_predictor_16x16)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
160233d2500723e5594f3e7c70896ffeeef32b9c950ywan
161233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_top_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
162233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_top_predictor_16x16 vp9_dc_top_predictor_16x16_c
163233d2500723e5594f3e7c70896ffeeef32b9c950ywan
164233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_left_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
165233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_left_predictor_16x16 vp9_dc_left_predictor_16x16_c
166233d2500723e5594f3e7c70896ffeeef32b9c950ywan
167233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_128_predictor_16x16_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
168233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_128_predictor_16x16 vp9_dc_128_predictor_16x16_c
169233d2500723e5594f3e7c70896ffeeef32b9c950ywan
170233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
171233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d207_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
172233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d207_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
173233d2500723e5594f3e7c70896ffeeef32b9c950ywan
174233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
175233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d45_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
176233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d45_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
177233d2500723e5594f3e7c70896ffeeef32b9c950ywan
178233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
179233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d63_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
180233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_d63_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
181233d2500723e5594f3e7c70896ffeeef32b9c950ywan
182233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
183233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_h_predictor_32x32_ssse3(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
184233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_h_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
185233d2500723e5594f3e7c70896ffeeef32b9c950ywan
186233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d117_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
187233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d117_predictor_32x32 vp9_d117_predictor_32x32_c
188233d2500723e5594f3e7c70896ffeeef32b9c950ywan
189233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d135_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
190233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d135_predictor_32x32 vp9_d135_predictor_32x32_c
191233d2500723e5594f3e7c70896ffeeef32b9c950ywan
192233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_d153_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
193233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_d153_predictor_32x32 vp9_d153_predictor_32x32_c
194233d2500723e5594f3e7c70896ffeeef32b9c950ywan
195233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
196233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_v_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
197233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_v_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
198233d2500723e5594f3e7c70896ffeeef32b9c950ywan
199233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_tm_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
200233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_tm_predictor_32x32 vp9_tm_predictor_32x32_c
201233d2500723e5594f3e7c70896ffeeef32b9c950ywan
202233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
203233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_predictor_32x32_sse2(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
204233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_dc_predictor_32x32)(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
205233d2500723e5594f3e7c70896ffeeef32b9c950ywan
206233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_top_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
207233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_top_predictor_32x32 vp9_dc_top_predictor_32x32_c
208233d2500723e5594f3e7c70896ffeeef32b9c950ywan
209233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_left_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
210233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_left_predictor_32x32 vp9_dc_left_predictor_32x32_c
211233d2500723e5594f3e7c70896ffeeef32b9c950ywan
212233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_dc_128_predictor_32x32_c(uint8_t *dst, ptrdiff_t y_stride, const uint8_t *above, const uint8_t *left);
213233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_dc_128_predictor_32x32 vp9_dc_128_predictor_32x32_c
214233d2500723e5594f3e7c70896ffeeef32b9c950ywan
215233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
216233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
217233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_lpf_vertical_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
218233d2500723e5594f3e7c70896ffeeef32b9c950ywan
219233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_16_dual_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
220233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_16_dual_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
221233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_lpf_vertical_16_dual)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh);
222233d2500723e5594f3e7c70896ffeeef32b9c950ywan
223233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
224233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
225233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_lpf_vertical_8)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
226233d2500723e5594f3e7c70896ffeeef32b9c950ywan
227233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_8_dual_c(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);
228233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_8_dual_sse2(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);
229233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_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);
230233d2500723e5594f3e7c70896ffeeef32b9c950ywan
231233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
232233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_4_mmx(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
233233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_lpf_vertical_4)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
234233d2500723e5594f3e7c70896ffeeef32b9c950ywan
235233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_4_dual_c(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);
236233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_vertical_4_dual_sse2(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);
237233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_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);
238233d2500723e5594f3e7c70896ffeeef32b9c950ywan
239233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_horizontal_16_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
240233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_horizontal_16_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
241233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_lpf_horizontal_16)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
242233d2500723e5594f3e7c70896ffeeef32b9c950ywan
243233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_horizontal_8_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
244233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_horizontal_8_sse2(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
245233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_lpf_horizontal_8)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
246233d2500723e5594f3e7c70896ffeeef32b9c950ywan
247233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_horizontal_8_dual_c(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);
248233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_horizontal_8_dual_sse2(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);
249233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_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);
250233d2500723e5594f3e7c70896ffeeef32b9c950ywan
251233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_horizontal_4_c(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
252233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_horizontal_4_mmx(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
253233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_lpf_horizontal_4)(uint8_t *s, int pitch, const uint8_t *blimit, const uint8_t *limit, const uint8_t *thresh, int count);
254233d2500723e5594f3e7c70896ffeeef32b9c950ywan
255233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_horizontal_4_dual_c(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);
256233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_lpf_horizontal_4_dual_sse2(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);
257233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_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);
258233d2500723e5594f3e7c70896ffeeef32b9c950ywan
259233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_blend_mb_inner_c(uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride);
260233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_blend_mb_inner vp9_blend_mb_inner_c
261233d2500723e5594f3e7c70896ffeeef32b9c950ywan
262233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_blend_mb_outer_c(uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride);
263233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_blend_mb_outer vp9_blend_mb_outer_c
264233d2500723e5594f3e7c70896ffeeef32b9c950ywan
265233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_blend_b_c(uint8_t *y, uint8_t *u, uint8_t *v, int y1, int u1, int v1, int alpha, int stride);
266233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_blend_b vp9_blend_b_c
267233d2500723e5594f3e7c70896ffeeef32b9c950ywan
268233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve_copy_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
269233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve_copy_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
270233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_convolve_copy)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
271233d2500723e5594f3e7c70896ffeeef32b9c950ywan
272233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
273233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
274233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_convolve_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
275233d2500723e5594f3e7c70896ffeeef32b9c950ywan
276233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
277233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
278233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
279233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_convolve8)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
280233d2500723e5594f3e7c70896ffeeef32b9c950ywan
281233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
282233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
283233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
284233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_convolve8_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
285233d2500723e5594f3e7c70896ffeeef32b9c950ywan
286233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
287233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
288233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
289233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_convolve8_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
290233d2500723e5594f3e7c70896ffeeef32b9c950ywan
291233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
292233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
293233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
294233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_convolve8_avg)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
295233d2500723e5594f3e7c70896ffeeef32b9c950ywan
296233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
297233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_horiz_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
298233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_horiz_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
299233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_convolve8_avg_horiz)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
300233d2500723e5594f3e7c70896ffeeef32b9c950ywan
301233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_vert_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
302233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_vert_sse2(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
303233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_convolve8_avg_vert_ssse3(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
304233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_convolve8_avg_vert)(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h);
305233d2500723e5594f3e7c70896ffeeef32b9c950ywan
306233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct4x4_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
307233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct4x4_1_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride);
308233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_idct4x4_1_add)(const int16_t *input, uint8_t *dest, int dest_stride);
309233d2500723e5594f3e7c70896ffeeef32b9c950ywan
310233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct4x4_16_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
311233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct4x4_16_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride);
312233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_idct4x4_16_add)(const int16_t *input, uint8_t *dest, int dest_stride);
313233d2500723e5594f3e7c70896ffeeef32b9c950ywan
314233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct8x8_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
315233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct8x8_1_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride);
316233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_idct8x8_1_add)(const int16_t *input, uint8_t *dest, int dest_stride);
317233d2500723e5594f3e7c70896ffeeef32b9c950ywan
318233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct8x8_64_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
319233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct8x8_64_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride);
320233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_idct8x8_64_add)(const int16_t *input, uint8_t *dest, int dest_stride);
321233d2500723e5594f3e7c70896ffeeef32b9c950ywan
322233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct8x8_10_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
323233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct8x8_10_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride);
324233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_idct8x8_10_add)(const int16_t *input, uint8_t *dest, int dest_stride);
325233d2500723e5594f3e7c70896ffeeef32b9c950ywan
326233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct16x16_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
327233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct16x16_1_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride);
328233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_idct16x16_1_add)(const int16_t *input, uint8_t *dest, int dest_stride);
329233d2500723e5594f3e7c70896ffeeef32b9c950ywan
330233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct16x16_256_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
331233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct16x16_256_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride);
332233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_idct16x16_256_add)(const int16_t *input, uint8_t *dest, int dest_stride);
333233d2500723e5594f3e7c70896ffeeef32b9c950ywan
334233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct16x16_10_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
335233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct16x16_10_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride);
336233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_idct16x16_10_add)(const int16_t *input, uint8_t *dest, int dest_stride);
337233d2500723e5594f3e7c70896ffeeef32b9c950ywan
338233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct32x32_1024_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
339233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct32x32_1024_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride);
340233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_idct32x32_1024_add)(const int16_t *input, uint8_t *dest, int dest_stride);
341233d2500723e5594f3e7c70896ffeeef32b9c950ywan
342233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct32x32_34_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
343233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct32x32_34_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride);
344233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_idct32x32_34_add)(const int16_t *input, uint8_t *dest, int dest_stride);
345233d2500723e5594f3e7c70896ffeeef32b9c950ywan
346233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct32x32_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
347233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_idct32x32_1_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride);
348233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_idct32x32_1_add)(const int16_t *input, uint8_t *dest, int dest_stride);
349233d2500723e5594f3e7c70896ffeeef32b9c950ywan
350233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iht4x4_16_add_c(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
351233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iht4x4_16_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
352233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_iht4x4_16_add)(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
353233d2500723e5594f3e7c70896ffeeef32b9c950ywan
354233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iht8x8_64_add_c(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
355233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iht8x8_64_add_sse2(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
356233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_iht8x8_64_add)(const int16_t *input, uint8_t *dest, int dest_stride, int tx_type);
357233d2500723e5594f3e7c70896ffeeef32b9c950ywan
358233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iht16x16_256_add_c(const int16_t *input, uint8_t *output, int pitch, int tx_type);
359233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iht16x16_256_add_sse2(const int16_t *input, uint8_t *output, int pitch, int tx_type);
360233d2500723e5594f3e7c70896ffeeef32b9c950ywanRTCD_EXTERN void (*vp9_iht16x16_256_add)(const int16_t *input, uint8_t *output, int pitch, int tx_type);
361233d2500723e5594f3e7c70896ffeeef32b9c950ywan
362233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iwht4x4_1_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
363233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_iwht4x4_1_add vp9_iwht4x4_1_add_c
364233d2500723e5594f3e7c70896ffeeef32b9c950ywan
365233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_iwht4x4_16_add_c(const int16_t *input, uint8_t *dest, int dest_stride);
366233d2500723e5594f3e7c70896ffeeef32b9c950ywan#define vp9_iwht4x4_16_add vp9_iwht4x4_16_add_c
367233d2500723e5594f3e7c70896ffeeef32b9c950ywan
368233d2500723e5594f3e7c70896ffeeef32b9c950ywanvoid vp9_rtcd(void);
369233d2500723e5594f3e7c70896ffeeef32b9c950ywan
370233d2500723e5594f3e7c70896ffeeef32b9c950ywan#ifdef RTCD_C
371233d2500723e5594f3e7c70896ffeeef32b9c950ywan#include "vpx_ports/x86.h"
372233d2500723e5594f3e7c70896ffeeef32b9c950ywanstatic void setup_rtcd_internal(void)
373233d2500723e5594f3e7c70896ffeeef32b9c950ywan{
374233d2500723e5594f3e7c70896ffeeef32b9c950ywan    int flags = x86_simd_caps();
375233d2500723e5594f3e7c70896ffeeef32b9c950ywan
376233d2500723e5594f3e7c70896ffeeef32b9c950ywan    (void)flags;
377233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) {
378233d2500723e5594f3e7c70896ffeeef32b9c950ywan        LOGD("HAS_SSSE3");
379233d2500723e5594f3e7c70896ffeeef32b9c950ywan    }
380233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE3) {
381233d2500723e5594f3e7c70896ffeeef32b9c950ywan        LOGD("HAS_SSE3");
382233d2500723e5594f3e7c70896ffeeef32b9c950ywan    }
383233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE) {
384233d2500723e5594f3e7c70896ffeeef32b9c950ywan        LOGD("HAS_SSE");
385233d2500723e5594f3e7c70896ffeeef32b9c950ywan    }
386233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) {
387233d2500723e5594f3e7c70896ffeeef32b9c950ywan        LOGD("HAS_SSE2");
388233d2500723e5594f3e7c70896ffeeef32b9c950ywan    }
389233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_MMX) {
390233d2500723e5594f3e7c70896ffeeef32b9c950ywan        LOGD("HAS_MMX");
391233d2500723e5594f3e7c70896ffeeef32b9c950ywan    }
392233d2500723e5594f3e7c70896ffeeef32b9c950ywan
393233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d207_predictor_4x4 = vp9_d207_predictor_4x4_c;
394233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d207_predictor_4x4 = vp9_d207_predictor_4x4_ssse3;
395233d2500723e5594f3e7c70896ffeeef32b9c950ywan
396233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d45_predictor_4x4 = vp9_d45_predictor_4x4_c;
397233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d45_predictor_4x4 = vp9_d45_predictor_4x4_ssse3;
398233d2500723e5594f3e7c70896ffeeef32b9c950ywan
399233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d63_predictor_4x4 = vp9_d63_predictor_4x4_c;
400233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d63_predictor_4x4 = vp9_d63_predictor_4x4_ssse3;
401233d2500723e5594f3e7c70896ffeeef32b9c950ywan
402233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_h_predictor_4x4 = vp9_h_predictor_4x4_c;
403233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_h_predictor_4x4 = vp9_h_predictor_4x4_ssse3;
404233d2500723e5594f3e7c70896ffeeef32b9c950ywan
405233d2500723e5594f3e7c70896ffeeef32b9c950ywan
406233d2500723e5594f3e7c70896ffeeef32b9c950ywan
407233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d153_predictor_4x4 = vp9_d153_predictor_4x4_c;
408233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d153_predictor_4x4 = vp9_d153_predictor_4x4_ssse3;
409233d2500723e5594f3e7c70896ffeeef32b9c950ywan
410233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_v_predictor_4x4 = vp9_v_predictor_4x4_c;
411233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE) vp9_v_predictor_4x4 = vp9_v_predictor_4x4_sse;
412233d2500723e5594f3e7c70896ffeeef32b9c950ywan
413233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_tm_predictor_4x4 = vp9_tm_predictor_4x4_c;
414233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE) vp9_tm_predictor_4x4 = vp9_tm_predictor_4x4_sse;
415233d2500723e5594f3e7c70896ffeeef32b9c950ywan
416233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_dc_predictor_4x4 = vp9_dc_predictor_4x4_c;
417233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE) vp9_dc_predictor_4x4 = vp9_dc_predictor_4x4_sse;
418233d2500723e5594f3e7c70896ffeeef32b9c950ywan
419233d2500723e5594f3e7c70896ffeeef32b9c950ywan
420233d2500723e5594f3e7c70896ffeeef32b9c950ywan
421233d2500723e5594f3e7c70896ffeeef32b9c950ywan
422233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d207_predictor_8x8 = vp9_d207_predictor_8x8_c;
423233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d207_predictor_8x8 = vp9_d207_predictor_8x8_ssse3;
424233d2500723e5594f3e7c70896ffeeef32b9c950ywan
425233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d45_predictor_8x8 = vp9_d45_predictor_8x8_c;
426233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d45_predictor_8x8 = vp9_d45_predictor_8x8_ssse3;
427233d2500723e5594f3e7c70896ffeeef32b9c950ywan
428233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d63_predictor_8x8 = vp9_d63_predictor_8x8_c;
429233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d63_predictor_8x8 = vp9_d63_predictor_8x8_ssse3;
430233d2500723e5594f3e7c70896ffeeef32b9c950ywan
431233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_h_predictor_8x8 = vp9_h_predictor_8x8_c;
432233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_h_predictor_8x8 = vp9_h_predictor_8x8_ssse3;
433233d2500723e5594f3e7c70896ffeeef32b9c950ywan
434233d2500723e5594f3e7c70896ffeeef32b9c950ywan
435233d2500723e5594f3e7c70896ffeeef32b9c950ywan
436233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d153_predictor_8x8 = vp9_d153_predictor_8x8_c;
437233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d153_predictor_8x8 = vp9_d153_predictor_8x8_ssse3;
438233d2500723e5594f3e7c70896ffeeef32b9c950ywan
439233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_v_predictor_8x8 = vp9_v_predictor_8x8_c;
440233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE) vp9_v_predictor_8x8 = vp9_v_predictor_8x8_sse;
441233d2500723e5594f3e7c70896ffeeef32b9c950ywan
442233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_tm_predictor_8x8 = vp9_tm_predictor_8x8_c;
443233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_tm_predictor_8x8 = vp9_tm_predictor_8x8_sse2;
444233d2500723e5594f3e7c70896ffeeef32b9c950ywan
445233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_dc_predictor_8x8 = vp9_dc_predictor_8x8_c;
446233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE) vp9_dc_predictor_8x8 = vp9_dc_predictor_8x8_sse;
447233d2500723e5594f3e7c70896ffeeef32b9c950ywan
448233d2500723e5594f3e7c70896ffeeef32b9c950ywan
449233d2500723e5594f3e7c70896ffeeef32b9c950ywan
450233d2500723e5594f3e7c70896ffeeef32b9c950ywan
451233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d207_predictor_16x16 = vp9_d207_predictor_16x16_c;
452233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d207_predictor_16x16 = vp9_d207_predictor_16x16_ssse3;
453233d2500723e5594f3e7c70896ffeeef32b9c950ywan
454233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d45_predictor_16x16 = vp9_d45_predictor_16x16_c;
455233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d45_predictor_16x16 = vp9_d45_predictor_16x16_ssse3;
456233d2500723e5594f3e7c70896ffeeef32b9c950ywan
457233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d63_predictor_16x16 = vp9_d63_predictor_16x16_c;
458233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d63_predictor_16x16 = vp9_d63_predictor_16x16_ssse3;
459233d2500723e5594f3e7c70896ffeeef32b9c950ywan
460233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_h_predictor_16x16 = vp9_h_predictor_16x16_c;
461233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_h_predictor_16x16 = vp9_h_predictor_16x16_ssse3;
462233d2500723e5594f3e7c70896ffeeef32b9c950ywan
463233d2500723e5594f3e7c70896ffeeef32b9c950ywan
464233d2500723e5594f3e7c70896ffeeef32b9c950ywan
465233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d153_predictor_16x16 = vp9_d153_predictor_16x16_c;
466233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d153_predictor_16x16 = vp9_d153_predictor_16x16_ssse3;
467233d2500723e5594f3e7c70896ffeeef32b9c950ywan
468233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_v_predictor_16x16 = vp9_v_predictor_16x16_c;
469233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_v_predictor_16x16 = vp9_v_predictor_16x16_sse2;
470233d2500723e5594f3e7c70896ffeeef32b9c950ywan
471233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_tm_predictor_16x16 = vp9_tm_predictor_16x16_c;
472233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_tm_predictor_16x16 = vp9_tm_predictor_16x16_sse2;
473233d2500723e5594f3e7c70896ffeeef32b9c950ywan
474233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_dc_predictor_16x16 = vp9_dc_predictor_16x16_c;
475233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_dc_predictor_16x16 = vp9_dc_predictor_16x16_sse2;
476233d2500723e5594f3e7c70896ffeeef32b9c950ywan
477233d2500723e5594f3e7c70896ffeeef32b9c950ywan
478233d2500723e5594f3e7c70896ffeeef32b9c950ywan
479233d2500723e5594f3e7c70896ffeeef32b9c950ywan
480233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d207_predictor_32x32 = vp9_d207_predictor_32x32_c;
481233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d207_predictor_32x32 = vp9_d207_predictor_32x32_ssse3;
482233d2500723e5594f3e7c70896ffeeef32b9c950ywan
483233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d45_predictor_32x32 = vp9_d45_predictor_32x32_c;
484233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d45_predictor_32x32 = vp9_d45_predictor_32x32_ssse3;
485233d2500723e5594f3e7c70896ffeeef32b9c950ywan
486233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_d63_predictor_32x32 = vp9_d63_predictor_32x32_c;
487233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_d63_predictor_32x32 = vp9_d63_predictor_32x32_ssse3;
488233d2500723e5594f3e7c70896ffeeef32b9c950ywan
489233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_h_predictor_32x32 = vp9_h_predictor_32x32_c;
490233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_h_predictor_32x32 = vp9_h_predictor_32x32_ssse3;
491233d2500723e5594f3e7c70896ffeeef32b9c950ywan
492233d2500723e5594f3e7c70896ffeeef32b9c950ywan
493233d2500723e5594f3e7c70896ffeeef32b9c950ywan
494233d2500723e5594f3e7c70896ffeeef32b9c950ywan
495233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_v_predictor_32x32 = vp9_v_predictor_32x32_c;
496233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_v_predictor_32x32 = vp9_v_predictor_32x32_sse2;
497233d2500723e5594f3e7c70896ffeeef32b9c950ywan
498233d2500723e5594f3e7c70896ffeeef32b9c950ywan
499233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_dc_predictor_32x32 = vp9_dc_predictor_32x32_c;
500233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_dc_predictor_32x32 = vp9_dc_predictor_32x32_sse2;
501233d2500723e5594f3e7c70896ffeeef32b9c950ywan
502233d2500723e5594f3e7c70896ffeeef32b9c950ywan
503233d2500723e5594f3e7c70896ffeeef32b9c950ywan
504233d2500723e5594f3e7c70896ffeeef32b9c950ywan
505233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_lpf_vertical_16 = vp9_lpf_vertical_16_c;
506233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_lpf_vertical_16 = vp9_lpf_vertical_16_sse2;
507233d2500723e5594f3e7c70896ffeeef32b9c950ywan
508233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_lpf_vertical_16_dual = vp9_lpf_vertical_16_dual_c;
509233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_lpf_vertical_16_dual = vp9_lpf_vertical_16_dual_sse2;
510233d2500723e5594f3e7c70896ffeeef32b9c950ywan
511233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_lpf_vertical_8 = vp9_lpf_vertical_8_c;
512233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_lpf_vertical_8 = vp9_lpf_vertical_8_sse2;
513233d2500723e5594f3e7c70896ffeeef32b9c950ywan
514233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_lpf_vertical_8_dual = vp9_lpf_vertical_8_dual_c;
515233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_lpf_vertical_8_dual = vp9_lpf_vertical_8_dual_sse2;
516233d2500723e5594f3e7c70896ffeeef32b9c950ywan
517233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_lpf_vertical_4 = vp9_lpf_vertical_4_c;
518233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_MMX) vp9_lpf_vertical_4 = vp9_lpf_vertical_4_mmx;
519233d2500723e5594f3e7c70896ffeeef32b9c950ywan
520233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_lpf_vertical_4_dual = vp9_lpf_vertical_4_dual_c;
521233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_lpf_vertical_4_dual = vp9_lpf_vertical_4_dual_sse2;
522233d2500723e5594f3e7c70896ffeeef32b9c950ywan
523233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_lpf_horizontal_16 = vp9_lpf_horizontal_16_c;
524233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_lpf_horizontal_16 = vp9_lpf_horizontal_16_sse2;
525233d2500723e5594f3e7c70896ffeeef32b9c950ywan
526233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_lpf_horizontal_8 = vp9_lpf_horizontal_8_c;
527233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_lpf_horizontal_8 = vp9_lpf_horizontal_8_sse2;
528233d2500723e5594f3e7c70896ffeeef32b9c950ywan
529233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_lpf_horizontal_8_dual = vp9_lpf_horizontal_8_dual_c;
530233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_lpf_horizontal_8_dual = vp9_lpf_horizontal_8_dual_sse2;
531233d2500723e5594f3e7c70896ffeeef32b9c950ywan
532233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_lpf_horizontal_4 = vp9_lpf_horizontal_4_c;
533233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_MMX) vp9_lpf_horizontal_4 = vp9_lpf_horizontal_4_mmx;
534233d2500723e5594f3e7c70896ffeeef32b9c950ywan
535233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_lpf_horizontal_4_dual = vp9_lpf_horizontal_4_dual_c;
536233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_lpf_horizontal_4_dual = vp9_lpf_horizontal_4_dual_sse2;
537233d2500723e5594f3e7c70896ffeeef32b9c950ywan
538233d2500723e5594f3e7c70896ffeeef32b9c950ywan
539233d2500723e5594f3e7c70896ffeeef32b9c950ywan
540233d2500723e5594f3e7c70896ffeeef32b9c950ywan
541233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_convolve_copy = vp9_convolve_copy_c;
542233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_convolve_copy = vp9_convolve_copy_sse2;
543233d2500723e5594f3e7c70896ffeeef32b9c950ywan
544233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_convolve_avg = vp9_convolve_avg_c;
545233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_convolve_avg = vp9_convolve_avg_sse2;
546233d2500723e5594f3e7c70896ffeeef32b9c950ywan
547233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_convolve8 = vp9_convolve8_c;
548233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_convolve8 = vp9_convolve8_sse2;
549233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_convolve8 = vp9_convolve8_ssse3;
550233d2500723e5594f3e7c70896ffeeef32b9c950ywan
551233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_convolve8_horiz = vp9_convolve8_horiz_c;
552233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_convolve8_horiz = vp9_convolve8_horiz_sse2;
553233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_convolve8_horiz = vp9_convolve8_horiz_ssse3;
554233d2500723e5594f3e7c70896ffeeef32b9c950ywan
555233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_convolve8_vert = vp9_convolve8_vert_c;
556233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_convolve8_vert = vp9_convolve8_vert_sse2;
557233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_convolve8_vert = vp9_convolve8_vert_ssse3;
558233d2500723e5594f3e7c70896ffeeef32b9c950ywan
559233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_convolve8_avg = vp9_convolve8_avg_c;
560233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_convolve8_avg = vp9_convolve8_avg_sse2;
561233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_convolve8_avg = vp9_convolve8_avg_ssse3;
562233d2500723e5594f3e7c70896ffeeef32b9c950ywan
563233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_convolve8_avg_horiz = vp9_convolve8_avg_horiz_c;
564233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_convolve8_avg_horiz = vp9_convolve8_avg_horiz_sse2;
565233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_convolve8_avg_horiz = vp9_convolve8_avg_horiz_ssse3;
566233d2500723e5594f3e7c70896ffeeef32b9c950ywan
567233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_convolve8_avg_vert = vp9_convolve8_avg_vert_c;
568233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_convolve8_avg_vert = vp9_convolve8_avg_vert_sse2;
569233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSSE3) vp9_convolve8_avg_vert = vp9_convolve8_avg_vert_ssse3;
570233d2500723e5594f3e7c70896ffeeef32b9c950ywan
571233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_idct4x4_1_add = vp9_idct4x4_1_add_c;
572233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_idct4x4_1_add = vp9_idct4x4_1_add_sse2;
573233d2500723e5594f3e7c70896ffeeef32b9c950ywan
574233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_idct4x4_16_add = vp9_idct4x4_16_add_c;
575233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_idct4x4_16_add = vp9_idct4x4_16_add_sse2;
576233d2500723e5594f3e7c70896ffeeef32b9c950ywan
577233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_idct8x8_1_add = vp9_idct8x8_1_add_c;
578233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_idct8x8_1_add = vp9_idct8x8_1_add_sse2;
579233d2500723e5594f3e7c70896ffeeef32b9c950ywan
580233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_idct8x8_64_add = vp9_idct8x8_64_add_c;
581233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_idct8x8_64_add = vp9_idct8x8_64_add_sse2;
582233d2500723e5594f3e7c70896ffeeef32b9c950ywan
583233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_idct8x8_10_add = vp9_idct8x8_10_add_c;
584233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_idct8x8_10_add = vp9_idct8x8_10_add_sse2;
585233d2500723e5594f3e7c70896ffeeef32b9c950ywan
586233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_idct16x16_1_add = vp9_idct16x16_1_add_c;
587233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_idct16x16_1_add = vp9_idct16x16_1_add_sse2;
588233d2500723e5594f3e7c70896ffeeef32b9c950ywan
589233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_idct16x16_256_add = vp9_idct16x16_256_add_c;
590233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_idct16x16_256_add = vp9_idct16x16_256_add_sse2;
591233d2500723e5594f3e7c70896ffeeef32b9c950ywan
592233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_idct16x16_10_add = vp9_idct16x16_10_add_c;
593233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_idct16x16_10_add = vp9_idct16x16_10_add_sse2;
594233d2500723e5594f3e7c70896ffeeef32b9c950ywan
595233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_idct32x32_1024_add = vp9_idct32x32_1024_add_c;
596233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_idct32x32_1024_add = vp9_idct32x32_1024_add_sse2;
597233d2500723e5594f3e7c70896ffeeef32b9c950ywan
598233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_idct32x32_34_add = vp9_idct32x32_34_add_c;
599233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_idct32x32_34_add = vp9_idct32x32_34_add_sse2;
600233d2500723e5594f3e7c70896ffeeef32b9c950ywan
601233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_idct32x32_1_add = vp9_idct32x32_1_add_c;
602233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_idct32x32_1_add = vp9_idct32x32_1_add_sse2;
603233d2500723e5594f3e7c70896ffeeef32b9c950ywan
604233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_iht4x4_16_add = vp9_iht4x4_16_add_c;
605233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_iht4x4_16_add = vp9_iht4x4_16_add_sse2;
606233d2500723e5594f3e7c70896ffeeef32b9c950ywan
607233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_iht8x8_64_add = vp9_iht8x8_64_add_c;
608233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_iht8x8_64_add = vp9_iht8x8_64_add_sse2;
609233d2500723e5594f3e7c70896ffeeef32b9c950ywan
610233d2500723e5594f3e7c70896ffeeef32b9c950ywan    vp9_iht16x16_256_add = vp9_iht16x16_256_add_c;
611233d2500723e5594f3e7c70896ffeeef32b9c950ywan    if (flags & HAS_SSE2) vp9_iht16x16_256_add = vp9_iht16x16_256_add_sse2;
612233d2500723e5594f3e7c70896ffeeef32b9c950ywan}
613233d2500723e5594f3e7c70896ffeeef32b9c950ywan#endif
614233d2500723e5594f3e7c70896ffeeef32b9c950ywan#endif
615