Imported Upstream version 1.4
[deb_x265.git] / source / common / x86 / intrapred.h
1 /*****************************************************************************
2 * intrapred.h: Intra Prediction metrics
3 *****************************************************************************
4 * Copyright (C) 2003-2013 x264 project
5 *
6 * Authors: Min Chen <chenm003@163.com> <min.chen@multicorewareinc.com>
7 *
8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or
11 * (at your option) any later version.
12 *
13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 * GNU General Public License for more details.
17 *
18 * You should have received a copy of the GNU General Public License
19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111, USA.
21 *
22 * This program is also available under a commercial proprietary license.
23 * For more information, contact us at license @ x265.com.
24 *****************************************************************************/
25
26 #ifndef X265_INTRAPRED_H
27 #define X265_INTRAPRED_H
28
29 void x265_intra_pred_dc4_sse4(pixel* dst, intptr_t dstStride, pixel* above, pixel* left, int, int filter);
30 void x265_intra_pred_dc8_sse4(pixel* dst, intptr_t dstStride, pixel* above, pixel* left, int, int filter);
31 void x265_intra_pred_dc16_sse4(pixel* dst, intptr_t dstStride, pixel* above, pixel* left, int, int filter);
32 void x265_intra_pred_dc32_sse4(pixel* dst, intptr_t dstStride, pixel* above, pixel* left, int, int filter);
33
34 void x265_intra_pred_planar4_sse4(pixel* dst, intptr_t dstStride, pixel* above, pixel* left, int, int);
35 void x265_intra_pred_planar8_sse4(pixel* dst, intptr_t dstStride, pixel* above, pixel* left, int, int);
36 void x265_intra_pred_planar16_sse4(pixel* dst, intptr_t dstStride, pixel* above, pixel* left, int, int);
37 void x265_intra_pred_planar32_sse4(pixel* dst, intptr_t dstStride, pixel* above, pixel* left, int, int);
38
39 #define DECL_ANG(bsize, mode, cpu) \
40 void x265_intra_pred_ang ## bsize ## _ ## mode ## _ ## cpu(pixel * dst, intptr_t dstStride, pixel * refLeft, pixel * refAbove, int dirMode, int bFilter);
41
42 DECL_ANG(4, 2, ssse3);
43 DECL_ANG(4, 3, sse4);
44 DECL_ANG(4, 4, sse4);
45 DECL_ANG(4, 5, sse4);
46 DECL_ANG(4, 6, sse4);
47 DECL_ANG(4, 7, sse4);
48 DECL_ANG(4, 8, sse4);
49 DECL_ANG(4, 9, sse4);
50 DECL_ANG(4, 10, sse4);
51 DECL_ANG(4, 11, sse4);
52 DECL_ANG(4, 12, sse4);
53 DECL_ANG(4, 13, sse4);
54 DECL_ANG(4, 14, sse4);
55 DECL_ANG(4, 15, sse4);
56 DECL_ANG(4, 16, sse4);
57 DECL_ANG(4, 17, sse4);
58 DECL_ANG(4, 18, sse4);
59 DECL_ANG(4, 26, sse4);
60 DECL_ANG(8, 2, ssse3);
61 DECL_ANG(8, 3, sse4);
62 DECL_ANG(8, 4, sse4);
63 DECL_ANG(8, 5, sse4);
64 DECL_ANG(8, 6, sse4);
65 DECL_ANG(8, 7, sse4);
66 DECL_ANG(8, 8, sse4);
67 DECL_ANG(8, 9, sse4);
68 DECL_ANG(8, 10, sse4);
69 DECL_ANG(8, 11, sse4);
70 DECL_ANG(8, 12, sse4);
71 DECL_ANG(8, 13, sse4);
72 DECL_ANG(8, 14, sse4);
73 DECL_ANG(8, 15, sse4);
74 DECL_ANG(8, 16, sse4);
75 DECL_ANG(8, 17, sse4);
76 DECL_ANG(8, 18, sse4);
77 DECL_ANG(8, 19, sse4);
78 DECL_ANG(8, 20, sse4);
79 DECL_ANG(8, 21, sse4);
80 DECL_ANG(8, 22, sse4);
81 DECL_ANG(8, 23, sse4);
82 DECL_ANG(8, 24, sse4);
83 DECL_ANG(8, 25, sse4);
84 DECL_ANG(8, 26, sse4);
85 DECL_ANG(8, 27, sse4);
86 DECL_ANG(8, 28, sse4);
87 DECL_ANG(8, 29, sse4);
88 DECL_ANG(8, 30, sse4);
89 DECL_ANG(8, 31, sse4);
90 DECL_ANG(8, 32, sse4);
91 DECL_ANG(8, 33, sse4);
92
93 DECL_ANG(16, 2, ssse3);
94 DECL_ANG(16, 3, sse4);
95 DECL_ANG(16, 4, sse4);
96 DECL_ANG(16, 5, sse4);
97 DECL_ANG(16, 6, sse4);
98 DECL_ANG(16, 7, sse4);
99 DECL_ANG(16, 8, sse4);
100 DECL_ANG(16, 9, sse4);
101 DECL_ANG(16, 10, sse4);
102 DECL_ANG(16, 11, sse4);
103 DECL_ANG(16, 12, sse4);
104 DECL_ANG(16, 13, sse4);
105 DECL_ANG(16, 14, sse4);
106 DECL_ANG(16, 15, sse4);
107 DECL_ANG(16, 16, sse4);
108 DECL_ANG(16, 17, sse4);
109 DECL_ANG(16, 18, sse4);
110 DECL_ANG(16, 19, sse4);
111 DECL_ANG(16, 20, sse4);
112 DECL_ANG(16, 21, sse4);
113 DECL_ANG(16, 22, sse4);
114 DECL_ANG(16, 23, sse4);
115 DECL_ANG(16, 24, sse4);
116 DECL_ANG(16, 25, sse4);
117 DECL_ANG(16, 26, sse4);
118 DECL_ANG(16, 27, sse4);
119 DECL_ANG(16, 28, sse4);
120 DECL_ANG(16, 29, sse4);
121 DECL_ANG(16, 30, sse4);
122 DECL_ANG(16, 31, sse4);
123 DECL_ANG(16, 32, sse4);
124 DECL_ANG(16, 33, sse4);
125
126 DECL_ANG(32, 2, ssse3);
127 DECL_ANG(32, 3, sse4);
128 DECL_ANG(32, 4, sse4);
129 DECL_ANG(32, 5, sse4);
130 DECL_ANG(32, 6, sse4);
131 DECL_ANG(32, 7, sse4);
132 DECL_ANG(32, 8, sse4);
133 DECL_ANG(32, 9, sse4);
134 DECL_ANG(32, 10, sse4);
135 DECL_ANG(32, 11, sse4);
136 DECL_ANG(32, 12, sse4);
137 DECL_ANG(32, 13, sse4);
138 DECL_ANG(32, 14, sse4);
139 DECL_ANG(32, 15, sse4);
140 DECL_ANG(32, 16, sse4);
141 DECL_ANG(32, 17, sse4);
142 DECL_ANG(32, 18, sse4);
143 DECL_ANG(32, 19, sse4);
144 DECL_ANG(32, 20, sse4);
145 DECL_ANG(32, 21, sse4);
146 DECL_ANG(32, 22, sse4);
147 DECL_ANG(32, 23, sse4);
148 DECL_ANG(32, 24, sse4);
149 DECL_ANG(32, 25, sse4);
150 DECL_ANG(32, 26, sse4);
151 DECL_ANG(32, 27, sse4);
152 DECL_ANG(32, 28, sse4);
153 DECL_ANG(32, 29, sse4);
154 DECL_ANG(32, 30, sse4);
155 DECL_ANG(32, 31, sse4);
156 DECL_ANG(32, 32, sse4);
157 DECL_ANG(32, 33, sse4);
158
159 #undef DECL_ANG
160 void x265_all_angs_pred_4x4_sse4(pixel *dest, pixel *above0, pixel *left0, pixel *above1, pixel *left1, int bLuma);
161 void x265_all_angs_pred_8x8_sse4(pixel *dest, pixel *above0, pixel *left0, pixel *above1, pixel *left1, int bLuma);
162 void x265_all_angs_pred_16x16_sse4(pixel *dest, pixel *above0, pixel *left0, pixel *above1, pixel *left1, int bLuma);
163 void x265_all_angs_pred_32x32_sse4(pixel *dest, pixel *above0, pixel *left0, pixel *above1, pixel *left1, int bLuma);
164 #endif // ifndef X265_INTRAPRED_H