Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5)

Side by Side Diff: source/libvpx/third_party/libyuv/include/libyuv/row.h

Issue 996503002: libvpx: Pull from upstream (Closed) Base URL: https://chromium.googlesource.com/chromium/deps/libvpx.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2011 The LibYuv Project Authors. All rights reserved. 2 * Copyright 2011 The LibYuv Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 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 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 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #ifndef INCLUDE_LIBYUV_ROW_H_ // NOLINT 11 #ifndef INCLUDE_LIBYUV_ROW_H_ // NOLINT
12 #define INCLUDE_LIBYUV_ROW_H_ 12 #define INCLUDE_LIBYUV_ROW_H_
13 13
14 #include <stdlib.h> // For malloc. 14 #include <stdlib.h> // For malloc.
15 15
16 #include "libyuv/basic_types.h" 16 #include "libyuv/basic_types.h"
17 17
18 #if defined(__native_client__)
19 #include "ppapi/c/pp_macros.h" // For PPAPI_RELEASE
20 #endif
21
22 #ifdef __cplusplus 18 #ifdef __cplusplus
23 namespace libyuv { 19 namespace libyuv {
24 extern "C" { 20 extern "C" {
25 #endif 21 #endif
26 22
27 #define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a) - 1))) 23 #define IS_ALIGNED(p, a) (!((uintptr_t)(p) & ((a) - 1)))
28 24
29 #ifdef __cplusplus 25 #ifdef __cplusplus
30 #define align_buffer_64(var, size) \ 26 #define align_buffer_64(var, size) \
31 uint8* var##_mem = reinterpret_cast<uint8*>(malloc((size) + 63)); \ 27 uint8* var##_mem = reinterpret_cast<uint8*>(malloc((size) + 63)); \
32 uint8* var = reinterpret_cast<uint8*> \ 28 uint8* var = reinterpret_cast<uint8*> \
33 ((reinterpret_cast<intptr_t>(var##_mem) + 63) & ~63) 29 ((reinterpret_cast<intptr_t>(var##_mem) + 63) & ~63)
34 #else 30 #else
35 #define align_buffer_64(var, size) \ 31 #define align_buffer_64(var, size) \
36 uint8* var##_mem = (uint8*)(malloc((size) + 63)); /* NOLINT */ \ 32 uint8* var##_mem = (uint8*)(malloc((size) + 63)); /* NOLINT */ \
37 uint8* var = (uint8*)(((intptr_t)(var##_mem) + 63) & ~63) /* NOLINT */ 33 uint8* var = (uint8*)(((intptr_t)(var##_mem) + 63) & ~63) /* NOLINT */
38 #endif 34 #endif
39 35
40 #define free_aligned_buffer_64(var) \ 36 #define free_aligned_buffer_64(var) \
41 free(var##_mem); \ 37 free(var##_mem); \
42 var = 0 38 var = 0
43 39
44 #if defined(__pnacl__) || defined(__CLR_VER) || defined(COVERAGE_ENABLED) || \ 40 #if defined(__pnacl__) || defined(__CLR_VER) || defined(COVERAGE_ENABLED) || \
45 defined(TARGET_IPHONE_SIMULATOR) || \ 41 defined(TARGET_IPHONE_SIMULATOR) || \
42 (defined(__i386__) && !defined(__SSE2__)) || \
46 (defined(_MSC_VER) && defined(__clang__)) 43 (defined(_MSC_VER) && defined(__clang__))
47 #define LIBYUV_DISABLE_X86 44 #define LIBYUV_DISABLE_X86
48 #endif 45 #endif
49 // True if compiling for SSSE3 as a requirement. 46 // True if compiling for SSSE3 as a requirement.
50 #if defined(__SSSE3__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 3)) 47 #if defined(__SSSE3__) || (defined(_M_IX86_FP) && (_M_IX86_FP >= 3))
51 #define LIBYUV_SSSE3_ONLY 48 #define LIBYUV_SSSE3_ONLY
52 #endif 49 #endif
53 50
54 // Enable for NaCL pepper 33 for bundle and AVX2 support. 51 // clang >= 3.5.0 required for Arm64.
55 #if defined(__native_client__) && PPAPI_RELEASE >= 33 52 #if defined(__clang__) && defined(__aarch64__) && !defined(LIBYUV_DISABLE_NEON)
56 #define NEW_BINUTILS 53 #if (__clang_major__ < 3) || (__clang_major__ == 3 && (__clang_minor__ < 5))
57 #endif
58 #if defined(__native_client__) && defined(__arm__) && PPAPI_RELEASE < 37
59 #define LIBYUV_DISABLE_NEON 54 #define LIBYUV_DISABLE_NEON
60 #endif 55 #endif // clang >= 3.5
56 #endif // __clang__
61 57
62 // The following are available on all x86 platforms: 58 // The following are available on all x86 platforms:
63 #if !defined(LIBYUV_DISABLE_X86) && \ 59 #if !defined(LIBYUV_DISABLE_X86) && \
64 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) 60 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__))
65 // Effects:
66 #define HAS_ARGBADDROW_SSE2
67 #define HAS_ARGBAFFINEROW_SSE2
68 #define HAS_ARGBATTENUATEROW_SSSE3
69 #define HAS_ARGBBLENDROW_SSSE3
70 #define HAS_ARGBCOLORMATRIXROW_SSSE3
71 #define HAS_ARGBCOLORTABLEROW_X86
72 #define HAS_ARGBCOPYALPHAROW_SSE2
73 #define HAS_ARGBCOPYYTOALPHAROW_SSE2
74 #define HAS_ARGBGRAYROW_SSSE3
75 #define HAS_ARGBLUMACOLORTABLEROW_SSSE3
76 #define HAS_ARGBMIRRORROW_SSSE3
77 #define HAS_ARGBMULTIPLYROW_SSE2
78 #define HAS_ARGBPOLYNOMIALROW_SSE2
79 #define HAS_ARGBQUANTIZEROW_SSE2
80 #define HAS_ARGBSEPIAROW_SSSE3
81 #define HAS_ARGBSHADEROW_SSE2
82 #define HAS_ARGBSUBTRACTROW_SSE2
83 #define HAS_ARGBTOUVROW_SSSE3
84 #define HAS_ARGBUNATTENUATEROW_SSE2
85 #define HAS_COMPUTECUMULATIVESUMROW_SSE2
86 #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2
87 #define HAS_INTERPOLATEROW_SSE2
88 #define HAS_INTERPOLATEROW_SSSE3
89 #define HAS_RGBCOLORTABLEROW_X86
90 #define HAS_SOBELROW_SSE2
91 #define HAS_SOBELTOPLANEROW_SSE2
92 #define HAS_SOBELXROW_SSE2
93 #define HAS_SOBELXYROW_SSE2
94 #define HAS_SOBELYROW_SSE2
95
96 // Conversions: 61 // Conversions:
97 #define HAS_ABGRTOUVROW_SSSE3 62 #define HAS_ABGRTOUVROW_SSSE3
98 #define HAS_ABGRTOYROW_SSSE3 63 #define HAS_ABGRTOYROW_SSSE3
99 #define HAS_ARGB1555TOARGBROW_SSE2 64 #define HAS_ARGB1555TOARGBROW_SSE2
100 #define HAS_ARGB4444TOARGBROW_SSE2 65 #define HAS_ARGB4444TOARGBROW_SSE2
101 #define HAS_ARGBSHUFFLEROW_SSE2 66 #define HAS_ARGBSHUFFLEROW_SSE2
102 #define HAS_ARGBSHUFFLEROW_SSSE3 67 #define HAS_ARGBSHUFFLEROW_SSSE3
103 #define HAS_ARGBTOARGB1555ROW_SSE2 68 #define HAS_ARGBTOARGB1555ROW_SSE2
104 #define HAS_ARGBTOARGB4444ROW_SSE2 69 #define HAS_ARGBTOARGB4444ROW_SSE2
105 #define HAS_ARGBTOBAYERGGROW_SSE2 70 #define HAS_ARGBTOBAYERGGROW_SSE2
106 #define HAS_ARGBTOBAYERROW_SSSE3
107 #define HAS_ARGBTORAWROW_SSSE3 71 #define HAS_ARGBTORAWROW_SSSE3
108 #define HAS_ARGBTORGB24ROW_SSSE3 72 #define HAS_ARGBTORGB24ROW_SSSE3
109 #define HAS_ARGBTORGB565ROW_SSE2 73 #define HAS_ARGBTORGB565ROW_SSE2
110 #define HAS_ARGBTOUV422ROW_SSSE3 74 #define HAS_ARGBTOUV422ROW_SSSE3
111 #define HAS_ARGBTOUV444ROW_SSSE3 75 #define HAS_ARGBTOUV444ROW_SSSE3
112 #define HAS_ARGBTOUVJROW_SSSE3 76 #define HAS_ARGBTOUVJROW_SSSE3
77 #define HAS_ARGBTOUVROW_SSSE3
113 #define HAS_ARGBTOYJROW_SSSE3 78 #define HAS_ARGBTOYJROW_SSSE3
114 #define HAS_ARGBTOYROW_SSSE3 79 #define HAS_ARGBTOYROW_SSSE3
115 #define HAS_BGRATOUVROW_SSSE3 80 #define HAS_BGRATOUVROW_SSSE3
116 #define HAS_BGRATOYROW_SSSE3 81 #define HAS_BGRATOYROW_SSSE3
117 #define HAS_COPYROW_ERMS 82 #define HAS_COPYROW_ERMS
118 #define HAS_COPYROW_SSE2 83 #define HAS_COPYROW_SSE2
119 #define HAS_COPYROW_X86
120 #define HAS_HALFROW_SSE2
121 #define HAS_I400TOARGBROW_SSE2 84 #define HAS_I400TOARGBROW_SSE2
122 #define HAS_I411TOARGBROW_SSSE3 85 #define HAS_I411TOARGBROW_SSSE3
123 #define HAS_I422TOARGB1555ROW_SSSE3
124 #define HAS_I422TOABGRROW_SSSE3 86 #define HAS_I422TOABGRROW_SSSE3
125 #define HAS_I422TOARGB1555ROW_SSSE3 87 #define HAS_I422TOARGB1555ROW_SSSE3
126 #define HAS_I422TOARGB4444ROW_SSSE3 88 #define HAS_I422TOARGB4444ROW_SSSE3
127 #define HAS_I422TOARGBROW_SSSE3 89 #define HAS_I422TOARGBROW_SSSE3
128 #define HAS_I422TOBGRAROW_SSSE3 90 #define HAS_I422TOBGRAROW_SSSE3
129 #define HAS_I422TORAWROW_SSSE3 91 #define HAS_I422TORAWROW_SSSE3
130 #define HAS_I422TORGB24ROW_SSSE3 92 #define HAS_I422TORGB24ROW_SSSE3
131 #define HAS_I422TORGB565ROW_SSSE3 93 #define HAS_I422TORGB565ROW_SSSE3
132 #define HAS_I422TORGBAROW_SSSE3 94 #define HAS_I422TORGBAROW_SSSE3
133 #define HAS_I422TOUYVYROW_SSE2 95 #define HAS_I422TOUYVYROW_SSE2
134 #define HAS_I422TOYUY2ROW_SSE2 96 #define HAS_I422TOYUY2ROW_SSE2
135 #define HAS_I444TOARGBROW_SSSE3 97 #define HAS_I444TOARGBROW_SSSE3
98 // #define HAS_J422TOARGBROW_SSSE3
136 #define HAS_MERGEUVROW_SSE2 99 #define HAS_MERGEUVROW_SSE2
137 #define HAS_MIRRORROW_SSE2 100 #define HAS_MIRRORROW_SSE2
138 #define HAS_MIRRORROW_SSSE3 101 #define HAS_MIRRORROW_SSSE3
139 #define HAS_MIRRORROW_UV_SSSE3 102 #define HAS_MIRRORROW_UV_SSSE3
140 #define HAS_MIRRORUVROW_SSSE3 103 #define HAS_MIRRORUVROW_SSSE3
141 #define HAS_NV12TOARGBROW_SSSE3 104 #define HAS_NV12TOARGBROW_SSSE3
142 #define HAS_NV12TORGB565ROW_SSSE3 105 #define HAS_NV12TORGB565ROW_SSSE3
143 #define HAS_NV21TOARGBROW_SSSE3 106 #define HAS_NV21TOARGBROW_SSSE3
144 #define HAS_NV21TORGB565ROW_SSSE3 107 #define HAS_NV21TORGB565ROW_SSSE3
145 #define HAS_RAWTOARGBROW_SSSE3 108 #define HAS_RAWTOARGBROW_SSSE3
146 #define HAS_RAWTOYROW_SSSE3 109 #define HAS_RAWTOYROW_SSSE3
147 #define HAS_RGB24TOARGBROW_SSSE3 110 #define HAS_RGB24TOARGBROW_SSSE3
148 #define HAS_RGB24TOYROW_SSSE3 111 #define HAS_RGB24TOYROW_SSSE3
149 #define HAS_RGB565TOARGBROW_SSE2 112 #define HAS_RGB565TOARGBROW_SSE2
150 #define HAS_RGBATOUVROW_SSSE3 113 #define HAS_RGBATOUVROW_SSSE3
151 #define HAS_RGBATOYROW_SSSE3 114 #define HAS_RGBATOYROW_SSSE3
152 #define HAS_SETROW_X86 115 #define HAS_SETROW_X86
116 #define HAS_SETROW_ERMS
117 #define HAS_ARGBSETROW_X86
153 #define HAS_SPLITUVROW_SSE2 118 #define HAS_SPLITUVROW_SSE2
154 #define HAS_UYVYTOARGBROW_SSSE3 119 #define HAS_UYVYTOARGBROW_SSSE3
155 #define HAS_UYVYTOUV422ROW_SSE2 120 #define HAS_UYVYTOUV422ROW_SSE2
156 #define HAS_UYVYTOUVROW_SSE2 121 #define HAS_UYVYTOUVROW_SSE2
157 #define HAS_UYVYTOYROW_SSE2 122 #define HAS_UYVYTOYROW_SSE2
158 #define HAS_YTOARGBROW_SSE2 123 #define HAS_YTOARGBROW_SSE2
159 #define HAS_YUY2TOARGBROW_SSSE3 124 #define HAS_YUY2TOARGBROW_SSSE3
160 #define HAS_YUY2TOUV422ROW_SSE2 125 #define HAS_YUY2TOUV422ROW_SSE2
161 #define HAS_YUY2TOUVROW_SSE2 126 #define HAS_YUY2TOUVROW_SSE2
162 #define HAS_YUY2TOYROW_SSE2 127 #define HAS_YUY2TOYROW_SSE2
128
129 // Effects:
130 #define HAS_ARGBADDROW_SSE2
131 #define HAS_ARGBAFFINEROW_SSE2
132 #define HAS_ARGBATTENUATEROW_SSSE3
133 #define HAS_ARGBBLENDROW_SSSE3
134 #define HAS_ARGBCOLORMATRIXROW_SSSE3
135 #define HAS_ARGBCOLORTABLEROW_X86
136 #define HAS_ARGBCOPYALPHAROW_SSE2
137 #define HAS_ARGBCOPYYTOALPHAROW_SSE2
138 #define HAS_ARGBGRAYROW_SSSE3
139 #define HAS_ARGBLUMACOLORTABLEROW_SSSE3
140 #define HAS_ARGBMIRRORROW_SSE2
141 #define HAS_ARGBMULTIPLYROW_SSE2
142 #define HAS_ARGBPOLYNOMIALROW_SSE2
143 #define HAS_ARGBQUANTIZEROW_SSE2
144 #define HAS_ARGBSEPIAROW_SSSE3
145 #define HAS_ARGBSHADEROW_SSE2
146 #define HAS_ARGBSUBTRACTROW_SSE2
147 #define HAS_ARGBUNATTENUATEROW_SSE2
148 #define HAS_COMPUTECUMULATIVESUMROW_SSE2
149 #define HAS_CUMULATIVESUMTOAVERAGEROW_SSE2
150 #define HAS_INTERPOLATEROW_SSE2
151 #define HAS_INTERPOLATEROW_SSSE3
152 #define HAS_RGBCOLORTABLEROW_X86
153 #define HAS_SOBELROW_SSE2
154 #define HAS_SOBELTOPLANEROW_SSE2
155 #define HAS_SOBELXROW_SSE2
156 #define HAS_SOBELXYROW_SSE2
157 #define HAS_SOBELYROW_SSE2
163 #endif 158 #endif
164 159
165 // The following are available on x64 Visual C: 160 // The following are available on x64 Visual C:
166 #if !defined(LIBYUV_DISABLE_X86) && defined (_M_X64) 161 #if !defined(LIBYUV_DISABLE_X86) && defined (_M_X64)
167 #define HAS_I422TOARGBROW_SSSE3 162 #define HAS_I422TOARGBROW_SSSE3
168 #endif 163 #endif
169 164
170 // GCC >= 4.7.0 required for AVX2. 165 // GCC >= 4.7.0 required for AVX2.
171 #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__)) 166 #if defined(__GNUC__) && (defined(__x86_64__) || defined(__i386__))
172 #if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7)) 167 #if (__GNUC__ > 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ >= 7))
173 #define GCC_HAS_AVX2 1 168 #define GCC_HAS_AVX2 1
174 #endif // GNUC >= 4.7 169 #endif // GNUC >= 4.7
175 #endif // __GNUC__ 170 #endif // __GNUC__
176 171
177 // clang >= 3.4.0 required for AVX2. 172 // clang >= 3.4.0 required for AVX2.
178 #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__)) 173 #if defined(__clang__) && (defined(__x86_64__) || defined(__i386__))
179 #if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4)) 174 #if (__clang_major__ > 3) || (__clang_major__ == 3 && (__clang_minor__ >= 4))
180 #define CLANG_HAS_AVX2 1 175 #define CLANG_HAS_AVX2 1
181 #endif // clang >= 3.4 176 #endif // clang >= 3.4
182 #endif // __clang__ 177 #endif // __clang__
183 178
184 // Visual C 2012 required for AVX2. 179 // Visual C 2012 required for AVX2.
185 #if defined(_M_IX86) && defined(_MSC_VER) && _MSC_VER >= 1700 180 #if defined(_M_IX86) && defined(_MSC_VER) && _MSC_VER >= 1700
186 #define VISUALC_HAS_AVX2 1 181 #define VISUALC_HAS_AVX2 1
187 #endif // VisualStudio >= 2012 182 #endif // VisualStudio >= 2012
188 183
184 // The following are available require VS2012. Port to GCC.
185 #if !defined(LIBYUV_DISABLE_X86) && defined(VISUALC_HAS_AVX2)
186 // TODO(fbarchard): fix AVX2 versions of YUV conversion. bug=393
187 #define HAS_I422TOABGRROW_AVX2
188 #define HAS_I422TOARGBROW_AVX2
189 #define HAS_I422TOBGRAROW_AVX2
190 #define HAS_I422TORGBAROW_AVX2
191 #define HAS_NV12TOARGBROW_AVX2
192 #define HAS_NV21TOARGBROW_AVX2
193 #define HAS_ARGBTORGB565ROW_AVX2
194 #define HAS_ARGBTOARGB1555ROW_AVX2
195 #define HAS_ARGBTOARGB4444ROW_AVX2
196 #define HAS_NV12TORGB565ROW_AVX2
197 #define HAS_NV21TORGB565ROW_AVX2
198 #define HAS_I422TORGB565ROW_AVX2
199 #define HAS_I422TOARGB1555ROW_AVX2
200 #define HAS_I422TOARGB4444ROW_AVX2
201 #endif
202
189 // The following are available on all x86 platforms, but 203 // The following are available on all x86 platforms, but
190 // require VS2012, clang 3.4 or gcc 4.7. 204 // require VS2012, clang 3.4 or gcc 4.7.
191 // The code supports NaCL but requires a new compiler and validator. 205 // The code supports NaCL but requires a new compiler and validator.
192 #if !defined(LIBYUV_DISABLE_X86) && (defined(VISUALC_HAS_AVX2) || \ 206 #if !defined(LIBYUV_DISABLE_X86) && (defined(VISUALC_HAS_AVX2) || \
193 defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2)) 207 defined(CLANG_HAS_AVX2) || defined(GCC_HAS_AVX2))
194 // Effects: 208 #define HAS_ARGBCOPYALPHAROW_AVX2
209 #define HAS_ARGBCOPYYTOALPHAROW_AVX2
210 #define HAS_ARGBMIRRORROW_AVX2
195 #define HAS_ARGBPOLYNOMIALROW_AVX2 211 #define HAS_ARGBPOLYNOMIALROW_AVX2
196 #define HAS_ARGBSHUFFLEROW_AVX2 212 #define HAS_ARGBSHUFFLEROW_AVX2
197 #define HAS_ARGBCOPYALPHAROW_AVX2
198 #define HAS_ARGBCOPYYTOALPHAROW_AVX2
199 #endif
200
201 // The following are require VS2012.
202 // TODO(fbarchard): Port to gcc.
203 #if !defined(LIBYUV_DISABLE_X86) && defined(VISUALC_HAS_AVX2)
204 #define HAS_ARGBTOUVROW_AVX2 213 #define HAS_ARGBTOUVROW_AVX2
205 #define HAS_ARGBTOYJROW_AVX2 214 #define HAS_ARGBTOYJROW_AVX2
206 #define HAS_ARGBTOYROW_AVX2 215 #define HAS_ARGBTOYROW_AVX2
207 #define HAS_HALFROW_AVX2 216 #define HAS_COPYROW_AVX
208 #define HAS_I422TOARGBROW_AVX2
209 #define HAS_INTERPOLATEROW_AVX2 217 #define HAS_INTERPOLATEROW_AVX2
210 #define HAS_MERGEUVROW_AVX2 218 #define HAS_MERGEUVROW_AVX2
211 #define HAS_MIRRORROW_AVX2 219 #define HAS_MIRRORROW_AVX2
212 #define HAS_SPLITUVROW_AVX2 220 #define HAS_SPLITUVROW_AVX2
213 #define HAS_UYVYTOUV422ROW_AVX2 221 #define HAS_UYVYTOUV422ROW_AVX2
214 #define HAS_UYVYTOUVROW_AVX2 222 #define HAS_UYVYTOUVROW_AVX2
215 #define HAS_UYVYTOYROW_AVX2 223 #define HAS_UYVYTOYROW_AVX2
224 #define HAS_YTOARGBROW_AVX2
216 #define HAS_YUY2TOUV422ROW_AVX2 225 #define HAS_YUY2TOUV422ROW_AVX2
217 #define HAS_YUY2TOUVROW_AVX2 226 #define HAS_YUY2TOUVROW_AVX2
218 #define HAS_YUY2TOYROW_AVX2 227 #define HAS_YUY2TOYROW_AVX2
219 228
229 // The following require HAS_I422TOARGBROW_AVX2
230 #if defined(HAS_I422TOARGBROW_AVX2)
231 #define HAS_YUY2TOARGBROW_AVX2
232 #define HAS_UYVYTOARGBROW_AVX2
233 #endif
234
220 // Effects: 235 // Effects:
221 #define HAS_ARGBADDROW_AVX2 236 #define HAS_ARGBADDROW_AVX2
222 #define HAS_ARGBATTENUATEROW_AVX2 237 #define HAS_ARGBATTENUATEROW_AVX2
223 #define HAS_ARGBMIRRORROW_AVX2
224 #define HAS_ARGBMULTIPLYROW_AVX2 238 #define HAS_ARGBMULTIPLYROW_AVX2
225 #define HAS_ARGBSUBTRACTROW_AVX2 239 #define HAS_ARGBSUBTRACTROW_AVX2
226 #define HAS_ARGBUNATTENUATEROW_AVX2 240 #define HAS_ARGBUNATTENUATEROW_AVX2
227 #endif // defined(VISUALC_HAS_AVX2) 241 #endif
242
228 243
229 // The following are Yasm x86 only: 244 // The following are Yasm x86 only:
230 // TODO(fbarchard): Port AVX2 to inline. 245 // TODO(fbarchard): Port AVX2 to inline.
231 #if !defined(LIBYUV_DISABLE_X86) && defined(HAVE_YASM) 246 #if !defined(LIBYUV_DISABLE_X86) && defined(HAVE_YASM)
232 (defined(_M_IX86) || defined(_M_X64) || \ 247 (defined(_M_IX86) || defined(_M_X64) || \
233 defined(__x86_64__) || defined(__i386__)) 248 defined(__x86_64__) || defined(__i386__))
234 #define HAS_MERGEUVROW_AVX2 249 #define HAS_MERGEUVROW_AVX2
235 #define HAS_MERGEUVROW_MMX 250 #define HAS_MERGEUVROW_MMX
236 #define HAS_SPLITUVROW_AVX2 251 #define HAS_SPLITUVROW_AVX2
237 #define HAS_SPLITUVROW_MMX 252 #define HAS_SPLITUVROW_MMX
238 #define HAS_UYVYTOYROW_AVX2 253 #define HAS_UYVYTOYROW_AVX2
239 #define HAS_UYVYTOYROW_MMX 254 #define HAS_UYVYTOYROW_MMX
240 #define HAS_YUY2TOYROW_AVX2 255 #define HAS_YUY2TOYROW_AVX2
241 #define HAS_YUY2TOYROW_MMX 256 #define HAS_YUY2TOYROW_MMX
242 #endif 257 #endif
243 258
244 // The following are disabled when SSSE3 is available: 259 // The following are disabled when SSSE3 is available:
245 #if !defined(LIBYUV_DISABLE_X86) && \ 260 #if !defined(LIBYUV_DISABLE_X86) && \
246 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) && \ 261 (defined(_M_IX86) || defined(__x86_64__) || defined(__i386__)) && \
247 !defined(LIBYUV_SSSE3_ONLY) 262 !defined(LIBYUV_SSSE3_ONLY)
263 #define HAS_ARGBATTENUATEROW_SSE2
248 #define HAS_ARGBBLENDROW_SSE2 264 #define HAS_ARGBBLENDROW_SSE2
249 #define HAS_ARGBATTENUATEROW_SSE2
250 #define HAS_MIRRORROW_SSE2 265 #define HAS_MIRRORROW_SSE2
251 #endif 266 #endif
252 267
253 // The following are available on arm64 platforms:
254 #if !defined(LIBYUV_DISABLE_NEON) && defined(__aarch64__)
255 // #define HAS_I444TOARGBROW_NEON
256 // #define HAS_I422TOARGBROW_NEON
257 // #define HAS_I411TOARGBROW_NEON
258 // #define HAS_I422TOBGRAROW_NEON
259 // #define HAS_I422TOABGRROW_NEON
260 // #define HAS_I422TORGBAROW_NEON
261 // #define HAS_I422TORGB24ROW_NEON
262 // #define HAS_I422TORAWROW_NEON
263 // #define HAS_I422TORGB565ROW_NEON
264 // #define HAS_I422TOARGB1555ROW_NEON
265 // #define HAS_I422TOARGB4444ROW_NEON
266 // #define HAS_YTOARGBROW_NEON
267 // #define HAS_I400TOARGBROW_NEON
268 // #define HAS_NV12TOARGBROW_NEON
269 // #define HAS_NV21TOARGBROW_NEON
270 // #define HAS_NV12TORGB565ROW_NEON
271 // #define HAS_NV21TORGB565ROW_NEON
272 // #define HAS_YUY2TOARGBROW_NEON
273 // #define HAS_UYVYTOARGBROW_NEON
274 #define HAS_SPLITUVROW_NEON
275 #define HAS_MERGEUVROW_NEON
276 #define HAS_COPYROW_NEON
277 #define HAS_SETROW_NEON
278 #define HAS_ARGBSETROWS_NEON
279 #define HAS_MIRRORROW_NEON
280 #define HAS_MIRRORUVROW_NEON
281 #define HAS_ARGBMIRRORROW_NEON
282 #define HAS_RGB24TOARGBROW_NEON
283 #define HAS_RAWTOARGBROW_NEON
284 // #define HAS_RGB565TOARGBROW_NEON
285 // #define HAS_ARGB1555TOARGBROW_NEON
286 // #define HAS_ARGB4444TOARGBROW_NEON
287 #define HAS_ARGBTORGB24ROW_NEON
288 #define HAS_ARGBTORAWROW_NEON
289 #define HAS_YUY2TOYROW_NEON
290 #define HAS_UYVYTOYROW_NEON
291 #define HAS_YUY2TOUV422ROW_NEON
292 #define HAS_UYVYTOUV422ROW_NEON
293 #define HAS_YUY2TOUVROW_NEON
294 #define HAS_UYVYTOUVROW_NEON
295 #define HAS_HALFROW_NEON
296 #define HAS_ARGBTOBAYERROW_NEON
297 #define HAS_ARGBTOBAYERGGROW_NEON
298 #define HAS_ARGBSHUFFLEROW_NEON
299 #define HAS_I422TOYUY2ROW_NEON
300 #define HAS_I422TOUYVYROW_NEON
301 // #define HAS_ARGBTORGB565ROW_NEON
302 // #define HAS_ARGBTOARGB1555ROW_NEON
303 // #define HAS_ARGBTOARGB4444ROW_NEON
304 #define HAS_ARGBTOYROW_NEON
305 #define HAS_ARGBTOYJROW_NEON
306 // #define HAS_ARGBTOUV444ROW_NEON
307 // #define HAS_ARGBTOUV422ROW_NEON
308 // #define HAS_ARGBTOUV411ROW_NEON
309 // #define HAS_ARGBTOUVROW_NEON
310 // #define HAS_ARGBTOUVJROW_NEON
311 // #define HAS_BGRATOUVROW_NEON
312 // #define HAS_ABGRTOUVROW_NEON
313 // #define HAS_RGBATOUVROW_NEON
314 // #define HAS_RGB24TOUVROW_NEON
315 // #define HAS_RAWTOUVROW_NEON
316 // #define HAS_RGB565TOUVROW_NEON
317 // #define HAS_ARGB1555TOUVROW_NEON
318 // #define HAS_ARGB4444TOUVROW_NEON
319 // #define HAS_RGB565TOYROW_NEON
320 // #define HAS_ARGB1555TOYROW_NEON
321 // #define HAS_ARGB4444TOYROW_NEON
322 // #define HAS_BGRATOYROW_NEON
323 // #define HAS_ABGRTOYROW_NEON
324 // #define HAS_RGBATOYROW_NEON
325 // #define HAS_RGB24TOYROW_NEON
326 // #define HAS_RAWTOYROW_NEON
327 // #define HAS_INTERPOLATEROW_NEON
328 // #define HAS_ARGBBLENDROW_NEON
329 // #define HAS_ARGBATTENUATEROW_NEON
330 // #define HAS_ARGBQUANTIZEROW_NEON
331 // #define HAS_ARGBSHADEROW_NEON
332 // #define HAS_ARGBGRAYROW_NEON
333 // #define HAS_ARGBSEPIAROW_NEON
334 // #define HAS_ARGBCOLORMATRIXROW_NEON
335 #define HAS_ARGBMULTIPLYROW_NEON
336 #define HAS_ARGBADDROW_NEON
337 #define HAS_ARGBSUBTRACTROW_NEON
338 #define HAS_SOBELROW_NEON
339 #define HAS_SOBELTOPLANEROW_NEON
340 #define HAS_SOBELXYROW_NEON
341 #define HAS_SOBELXROW_NEON
342 #define HAS_SOBELYROW_NEON
343 #endif
344
345 // The following are available on Neon platforms: 268 // The following are available on Neon platforms:
346 #if !defined(LIBYUV_DISABLE_NEON) && \ 269 #if !defined(LIBYUV_DISABLE_NEON) && \
347 (defined(__ARM_NEON__) || defined(LIBYUV_NEON)) 270 (defined(__aarch64__) || defined(__ARM_NEON__) || defined(LIBYUV_NEON))
348 #define HAS_ABGRTOUVROW_NEON 271 #define HAS_ABGRTOUVROW_NEON
349 #define HAS_ABGRTOYROW_NEON 272 #define HAS_ABGRTOYROW_NEON
350 #define HAS_ARGB1555TOARGBROW_NEON 273 #define HAS_ARGB1555TOARGBROW_NEON
351 #define HAS_ARGB1555TOUVROW_NEON 274 #define HAS_ARGB1555TOUVROW_NEON
352 #define HAS_ARGB1555TOYROW_NEON 275 #define HAS_ARGB1555TOYROW_NEON
353 #define HAS_ARGB4444TOARGBROW_NEON 276 #define HAS_ARGB4444TOARGBROW_NEON
354 #define HAS_ARGB4444TOUVROW_NEON 277 #define HAS_ARGB4444TOUVROW_NEON
355 #define HAS_ARGB4444TOYROW_NEON 278 #define HAS_ARGB4444TOYROW_NEON
356 #define HAS_ARGBTOARGB1555ROW_NEON 279 #define HAS_ARGBTOARGB1555ROW_NEON
357 #define HAS_ARGBTOARGB4444ROW_NEON 280 #define HAS_ARGBTOARGB4444ROW_NEON
358 #define HAS_ARGBTOBAYERROW_NEON
359 #define HAS_ARGBTOBAYERGGROW_NEON 281 #define HAS_ARGBTOBAYERGGROW_NEON
360 #define HAS_ARGBTORAWROW_NEON 282 #define HAS_ARGBTORAWROW_NEON
361 #define HAS_ARGBTORGB24ROW_NEON 283 #define HAS_ARGBTORGB24ROW_NEON
362 #define HAS_ARGBTORGB565ROW_NEON 284 #define HAS_ARGBTORGB565ROW_NEON
363 #define HAS_ARGBTOUV411ROW_NEON 285 #define HAS_ARGBTOUV411ROW_NEON
364 #define HAS_ARGBTOUV422ROW_NEON 286 #define HAS_ARGBTOUV422ROW_NEON
365 #define HAS_ARGBTOUV444ROW_NEON 287 #define HAS_ARGBTOUV444ROW_NEON
288 #define HAS_ARGBTOUVJROW_NEON
366 #define HAS_ARGBTOUVROW_NEON 289 #define HAS_ARGBTOUVROW_NEON
367 #define HAS_ARGBTOUVJROW_NEON 290 #define HAS_ARGBTOYJROW_NEON
368 #define HAS_ARGBTOYROW_NEON 291 #define HAS_ARGBTOYROW_NEON
369 #define HAS_ARGBTOYJROW_NEON
370 #define HAS_BGRATOUVROW_NEON 292 #define HAS_BGRATOUVROW_NEON
371 #define HAS_BGRATOYROW_NEON 293 #define HAS_BGRATOYROW_NEON
372 #define HAS_COPYROW_NEON 294 #define HAS_COPYROW_NEON
373 #define HAS_HALFROW_NEON
374 #define HAS_I400TOARGBROW_NEON 295 #define HAS_I400TOARGBROW_NEON
375 #define HAS_I411TOARGBROW_NEON 296 #define HAS_I411TOARGBROW_NEON
376 #define HAS_I422TOABGRROW_NEON 297 #define HAS_I422TOABGRROW_NEON
377 #define HAS_I422TOARGB1555ROW_NEON 298 #define HAS_I422TOARGB1555ROW_NEON
378 #define HAS_I422TOARGB4444ROW_NEON 299 #define HAS_I422TOARGB4444ROW_NEON
379 #define HAS_I422TOARGBROW_NEON 300 #define HAS_I422TOARGBROW_NEON
380 #define HAS_I422TOBGRAROW_NEON 301 #define HAS_I422TOBGRAROW_NEON
381 #define HAS_I422TORAWROW_NEON 302 #define HAS_I422TORAWROW_NEON
382 #define HAS_I422TORGB24ROW_NEON 303 #define HAS_I422TORGB24ROW_NEON
383 #define HAS_I422TORGB565ROW_NEON 304 #define HAS_I422TORGB565ROW_NEON
(...skipping 13 matching lines...) Expand all
397 #define HAS_RAWTOYROW_NEON 318 #define HAS_RAWTOYROW_NEON
398 #define HAS_RGB24TOARGBROW_NEON 319 #define HAS_RGB24TOARGBROW_NEON
399 #define HAS_RGB24TOUVROW_NEON 320 #define HAS_RGB24TOUVROW_NEON
400 #define HAS_RGB24TOYROW_NEON 321 #define HAS_RGB24TOYROW_NEON
401 #define HAS_RGB565TOARGBROW_NEON 322 #define HAS_RGB565TOARGBROW_NEON
402 #define HAS_RGB565TOUVROW_NEON 323 #define HAS_RGB565TOUVROW_NEON
403 #define HAS_RGB565TOYROW_NEON 324 #define HAS_RGB565TOYROW_NEON
404 #define HAS_RGBATOUVROW_NEON 325 #define HAS_RGBATOUVROW_NEON
405 #define HAS_RGBATOYROW_NEON 326 #define HAS_RGBATOYROW_NEON
406 #define HAS_SETROW_NEON 327 #define HAS_SETROW_NEON
328 #define HAS_ARGBSETROW_NEON
407 #define HAS_SPLITUVROW_NEON 329 #define HAS_SPLITUVROW_NEON
408 #define HAS_UYVYTOARGBROW_NEON 330 #define HAS_UYVYTOARGBROW_NEON
409 #define HAS_UYVYTOUV422ROW_NEON 331 #define HAS_UYVYTOUV422ROW_NEON
410 #define HAS_UYVYTOUVROW_NEON 332 #define HAS_UYVYTOUVROW_NEON
411 #define HAS_UYVYTOYROW_NEON 333 #define HAS_UYVYTOYROW_NEON
412 #define HAS_YTOARGBROW_NEON 334 #define HAS_YTOARGBROW_NEON
413 #define HAS_YUY2TOARGBROW_NEON 335 #define HAS_YUY2TOARGBROW_NEON
414 #define HAS_YUY2TOUV422ROW_NEON 336 #define HAS_YUY2TOUV422ROW_NEON
415 #define HAS_YUY2TOUVROW_NEON 337 #define HAS_YUY2TOUVROW_NEON
416 #define HAS_YUY2TOYROW_NEON 338 #define HAS_YUY2TOYROW_NEON
417 339
418 // Effects: 340 // Effects:
419 #define HAS_ARGBADDROW_NEON 341 #define HAS_ARGBADDROW_NEON
420 #define HAS_ARGBATTENUATEROW_NEON 342 #define HAS_ARGBATTENUATEROW_NEON
421 #define HAS_ARGBBLENDROW_NEON 343 #define HAS_ARGBBLENDROW_NEON
422 #define HAS_ARGBGRAYROW_NEON 344 #define HAS_ARGBGRAYROW_NEON
423 #define HAS_ARGBMIRRORROW_NEON 345 #define HAS_ARGBMIRRORROW_NEON
424 #define HAS_ARGBMULTIPLYROW_NEON 346 #define HAS_ARGBMULTIPLYROW_NEON
425 #define HAS_ARGBQUANTIZEROW_NEON 347 #define HAS_ARGBQUANTIZEROW_NEON
426 #define HAS_ARGBSEPIAROW_NEON 348 #define HAS_ARGBSEPIAROW_NEON
427 #define HAS_ARGBSHADEROW_NEON 349 #define HAS_ARGBSHADEROW_NEON
428 #define HAS_ARGBSUBTRACTROW_NEON 350 #define HAS_ARGBSUBTRACTROW_NEON
351 #define HAS_INTERPOLATEROW_NEON
429 #define HAS_SOBELROW_NEON 352 #define HAS_SOBELROW_NEON
430 #define HAS_SOBELTOPLANEROW_NEON 353 #define HAS_SOBELTOPLANEROW_NEON
354 #define HAS_SOBELXROW_NEON
431 #define HAS_SOBELXYROW_NEON 355 #define HAS_SOBELXYROW_NEON
432 #define HAS_SOBELXROW_NEON
433 #define HAS_SOBELYROW_NEON 356 #define HAS_SOBELYROW_NEON
434 #define HAS_INTERPOLATEROW_NEON 357 #define HAS_ARGBCOLORMATRIXROW_NEON
435 // TODO(fbarchard): Investigate neon unittest failure. 358 #define HAS_ARGBSHUFFLEROW_NEON
436 // #define HAS_ARGBCOLORMATRIXROW_NEON
437 #endif 359 #endif
438 360
439 // The following are available on Mips platforms: 361 // The following are available on Mips platforms:
440 #if !defined(LIBYUV_DISABLE_MIPS) && defined(__mips__) && \ 362 #if !defined(LIBYUV_DISABLE_MIPS) && defined(__mips__) && \
441 (_MIPS_SIM == _MIPS_SIM_ABI32) 363 (_MIPS_SIM == _MIPS_SIM_ABI32) && (__mips_isa_rev < 6)
442 #define HAS_COPYROW_MIPS 364 #define HAS_COPYROW_MIPS
443 #if defined(__mips_dsp) && (__mips_dsp_rev >= 2) 365 #if defined(__mips_dsp) && (__mips_dsp_rev >= 2)
444 #define HAS_I422TOABGRROW_MIPS_DSPR2 366 #define HAS_I422TOABGRROW_MIPS_DSPR2
445 #define HAS_I422TOARGBROW_MIPS_DSPR2 367 #define HAS_I422TOARGBROW_MIPS_DSPR2
446 #define HAS_I422TOBGRAROW_MIPS_DSPR2 368 #define HAS_I422TOBGRAROW_MIPS_DSPR2
447 #define HAS_INTERPOLATEROWS_MIPS_DSPR2 369 #define HAS_INTERPOLATEROW_MIPS_DSPR2
448 #define HAS_MIRRORROW_MIPS_DSPR2 370 #define HAS_MIRRORROW_MIPS_DSPR2
449 #define HAS_MIRRORUVROW_MIPS_DSPR2 371 #define HAS_MIRRORUVROW_MIPS_DSPR2
450 #define HAS_SPLITUVROW_MIPS_DSPR2 372 #define HAS_SPLITUVROW_MIPS_DSPR2
451 #endif 373 #endif
452 #endif 374 #endif
453 375
454 #if defined(_MSC_VER) && !defined(__CLR_VER) 376 #if defined(_MSC_VER) && !defined(__CLR_VER)
455 #define SIMD_ALIGNED(var) __declspec(align(16)) var 377 #define SIMD_ALIGNED(var) __declspec(align(16)) var
378 #define SIMD_ALIGNED32(var) __declspec(align(64)) var
456 typedef __declspec(align(16)) int16 vec16[8]; 379 typedef __declspec(align(16)) int16 vec16[8];
457 typedef __declspec(align(16)) int32 vec32[4]; 380 typedef __declspec(align(16)) int32 vec32[4];
458 typedef __declspec(align(16)) int8 vec8[16]; 381 typedef __declspec(align(16)) int8 vec8[16];
459 typedef __declspec(align(16)) uint16 uvec16[8]; 382 typedef __declspec(align(16)) uint16 uvec16[8];
460 typedef __declspec(align(16)) uint32 uvec32[4]; 383 typedef __declspec(align(16)) uint32 uvec32[4];
461 typedef __declspec(align(16)) uint8 uvec8[16]; 384 typedef __declspec(align(16)) uint8 uvec8[16];
462 typedef __declspec(align(32)) int16 lvec16[16]; 385 typedef __declspec(align(32)) int16 lvec16[16];
463 typedef __declspec(align(32)) int32 lvec32[8]; 386 typedef __declspec(align(32)) int32 lvec32[8];
464 typedef __declspec(align(32)) int8 lvec8[32]; 387 typedef __declspec(align(32)) int8 lvec8[32];
465 typedef __declspec(align(32)) uint16 ulvec16[16]; 388 typedef __declspec(align(32)) uint16 ulvec16[16];
466 typedef __declspec(align(32)) uint32 ulvec32[8]; 389 typedef __declspec(align(32)) uint32 ulvec32[8];
467 typedef __declspec(align(32)) uint8 ulvec8[32]; 390 typedef __declspec(align(32)) uint8 ulvec8[32];
468 391
469 #elif defined(__GNUC__) 392 #elif defined(__GNUC__)
470 // Caveat GCC 4.2 to 4.7 have a known issue using vectors with const. 393 // Caveat GCC 4.2 to 4.7 have a known issue using vectors with const.
471 #define SIMD_ALIGNED(var) var __attribute__((aligned(16))) 394 #define SIMD_ALIGNED(var) var __attribute__((aligned(16)))
395 #define SIMD_ALIGNED32(var) var __attribute__((aligned(64)))
472 typedef int16 __attribute__((vector_size(16))) vec16; 396 typedef int16 __attribute__((vector_size(16))) vec16;
473 typedef int32 __attribute__((vector_size(16))) vec32; 397 typedef int32 __attribute__((vector_size(16))) vec32;
474 typedef int8 __attribute__((vector_size(16))) vec8; 398 typedef int8 __attribute__((vector_size(16))) vec8;
475 typedef uint16 __attribute__((vector_size(16))) uvec16; 399 typedef uint16 __attribute__((vector_size(16))) uvec16;
476 typedef uint32 __attribute__((vector_size(16))) uvec32; 400 typedef uint32 __attribute__((vector_size(16))) uvec32;
477 typedef uint8 __attribute__((vector_size(16))) uvec8; 401 typedef uint8 __attribute__((vector_size(16))) uvec8;
402 typedef int16 __attribute__((vector_size(32))) lvec16;
403 typedef int32 __attribute__((vector_size(32))) lvec32;
404 typedef int8 __attribute__((vector_size(32))) lvec8;
405 typedef uint16 __attribute__((vector_size(32))) ulvec16;
406 typedef uint32 __attribute__((vector_size(32))) ulvec32;
407 typedef uint8 __attribute__((vector_size(32))) ulvec8;
478 #else 408 #else
479 #define SIMD_ALIGNED(var) var 409 #define SIMD_ALIGNED(var) var
410 #define SIMD_ALIGNED32(var) var
480 typedef int16 vec16[8]; 411 typedef int16 vec16[8];
481 typedef int32 vec32[4]; 412 typedef int32 vec32[4];
482 typedef int8 vec8[16]; 413 typedef int8 vec8[16];
483 typedef uint16 uvec16[8]; 414 typedef uint16 uvec16[8];
484 typedef uint32 uvec32[4]; 415 typedef uint32 uvec32[4];
485 typedef uint8 uvec8[16]; 416 typedef uint8 uvec8[16];
417 typedef int16 lvec16[16];
418 typedef int32 lvec32[8];
419 typedef int8 lvec8[32];
420 typedef uint16 ulvec16[16];
421 typedef uint32 ulvec32[8];
422 typedef uint8 ulvec8[32];
486 #endif 423 #endif
487 424
488 #if defined(__APPLE__) || defined(__x86_64__) || defined(__llvm__) 425 #if defined(__APPLE__) || defined(__x86_64__) || defined(__llvm__)
489 #define OMITFP 426 #define OMITFP
490 #else 427 #else
491 #define OMITFP __attribute__((optimize("omit-frame-pointer"))) 428 #define OMITFP __attribute__((optimize("omit-frame-pointer")))
492 #endif 429 #endif
493 430
494 // NaCL macros for GCC x86 and x64. 431 // NaCL macros for GCC x86 and x64.
495
496 // TODO(nfullagar): When pepper_33 toolchain is distributed, default to
497 // NEW_BINUTILS and remove all BUNDLEALIGN occurances.
498 #if defined(__native_client__) 432 #if defined(__native_client__)
499 #define LABELALIGN ".p2align 5\n" 433 #define LABELALIGN ".p2align 5\n"
500 #else 434 #else
501 #define LABELALIGN ".p2align 2\n" 435 #define LABELALIGN
502 #endif 436 #endif
503 #if defined(__native_client__) && defined(__x86_64__) 437 #if defined(__native_client__) && defined(__x86_64__)
504 #if defined(NEW_BINUTILS) 438 // r14 is used for MEMOP macros.
439 #define NACL_R14 "r14",
505 #define BUNDLELOCK ".bundle_lock\n" 440 #define BUNDLELOCK ".bundle_lock\n"
506 #define BUNDLEUNLOCK ".bundle_unlock\n" 441 #define BUNDLEUNLOCK ".bundle_unlock\n"
507 #define BUNDLEALIGN "\n"
508 #else
509 #define BUNDLELOCK "\n"
510 #define BUNDLEUNLOCK "\n"
511 #define BUNDLEALIGN ".p2align 5\n"
512 #endif
513 #define MEMACCESS(base) "%%nacl:(%%r15,%q" #base ")" 442 #define MEMACCESS(base) "%%nacl:(%%r15,%q" #base ")"
514 #define MEMACCESS2(offset, base) "%%nacl:" #offset "(%%r15,%q" #base ")" 443 #define MEMACCESS2(offset, base) "%%nacl:" #offset "(%%r15,%q" #base ")"
515 #define MEMLEA(offset, base) #offset "(%q" #base ")" 444 #define MEMLEA(offset, base) #offset "(%q" #base ")"
516 #define MEMLEA3(offset, index, scale) \ 445 #define MEMLEA3(offset, index, scale) \
517 #offset "(,%q" #index "," #scale ")" 446 #offset "(,%q" #index "," #scale ")"
518 #define MEMLEA4(offset, base, index, scale) \ 447 #define MEMLEA4(offset, base, index, scale) \
519 #offset "(%q" #base ",%q" #index "," #scale ")" 448 #offset "(%q" #base ",%q" #index "," #scale ")"
520 #define MEMMOVESTRING(s, d) "%%nacl:(%q" #s "),%%nacl:(%q" #d "), %%r15" 449 #define MEMMOVESTRING(s, d) "%%nacl:(%q" #s "),%%nacl:(%q" #d "), %%r15"
521 #define MEMSTORESTRING(reg, d) "%%" #reg ",%%nacl:(%q" #d "), %%r15" 450 #define MEMSTORESTRING(reg, d) "%%" #reg ",%%nacl:(%q" #d "), %%r15"
522 #define MEMOPREG(opcode, offset, base, index, scale, reg) \ 451 #define MEMOPREG(opcode, offset, base, index, scale, reg) \
523 BUNDLELOCK \ 452 BUNDLELOCK \
524 "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ 453 "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
525 #opcode " (%%r15,%%r14),%%" #reg "\n" \ 454 #opcode " (%%r15,%%r14),%%" #reg "\n" \
526 BUNDLEUNLOCK 455 BUNDLEUNLOCK
527 #define MEMOPMEM(opcode, reg, offset, base, index, scale) \ 456 #define MEMOPMEM(opcode, reg, offset, base, index, scale) \
528 BUNDLELOCK \ 457 BUNDLELOCK \
529 "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ 458 "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
530 #opcode " %%" #reg ",(%%r15,%%r14)\n" \ 459 #opcode " %%" #reg ",(%%r15,%%r14)\n" \
531 BUNDLEUNLOCK 460 BUNDLEUNLOCK
532 #define MEMOPARG(opcode, offset, base, index, scale, arg) \ 461 #define MEMOPARG(opcode, offset, base, index, scale, arg) \
533 BUNDLELOCK \ 462 BUNDLELOCK \
534 "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \ 463 "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
535 #opcode " (%%r15,%%r14),%" #arg "\n" \ 464 #opcode " (%%r15,%%r14),%" #arg "\n" \
536 BUNDLEUNLOCK 465 BUNDLEUNLOCK
466 #define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2) \
467 BUNDLELOCK \
468 "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
469 #opcode " (%%r15,%%r14),%%" #reg1 ",%%" #reg2 "\n" \
470 BUNDLEUNLOCK
471 #define VEXTOPMEM(op, sel, reg, offset, base, index, scale) \
472 BUNDLELOCK \
473 "lea " #offset "(%q" #base ",%q" #index "," #scale "),%%r14d\n" \
474 #op " $" #sel ",%%" #reg ",(%%r15,%%r14)\n" \
475 BUNDLEUNLOCK
537 #else // defined(__native_client__) && defined(__x86_64__) 476 #else // defined(__native_client__) && defined(__x86_64__)
538 #define BUNDLEALIGN "\n" 477 #define NACL_R14
478 #define BUNDLEALIGN
539 #define MEMACCESS(base) "(%" #base ")" 479 #define MEMACCESS(base) "(%" #base ")"
540 #define MEMACCESS2(offset, base) #offset "(%" #base ")" 480 #define MEMACCESS2(offset, base) #offset "(%" #base ")"
541 #define MEMLEA(offset, base) #offset "(%" #base ")" 481 #define MEMLEA(offset, base) #offset "(%" #base ")"
542 #define MEMLEA3(offset, index, scale) \ 482 #define MEMLEA3(offset, index, scale) \
543 #offset "(,%" #index "," #scale ")" 483 #offset "(,%" #index "," #scale ")"
544 #define MEMLEA4(offset, base, index, scale) \ 484 #define MEMLEA4(offset, base, index, scale) \
545 #offset "(%" #base ",%" #index "," #scale ")" 485 #offset "(%" #base ",%" #index "," #scale ")"
546 #define MEMMOVESTRING(s, d) 486 #define MEMMOVESTRING(s, d)
547 #define MEMSTORESTRING(reg, d) 487 #define MEMSTORESTRING(reg, d)
548 #define MEMOPREG(opcode, offset, base, index, scale, reg) \ 488 #define MEMOPREG(opcode, offset, base, index, scale, reg) \
549 #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg "\n" 489 #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg "\n"
550 #define MEMOPMEM(opcode, reg, offset, base, index, scale) \ 490 #define MEMOPMEM(opcode, reg, offset, base, index, scale) \
551 #opcode " %%" #reg ","#offset "(%" #base ",%" #index "," #scale ")\n" 491 #opcode " %%" #reg ","#offset "(%" #base ",%" #index "," #scale ")\n"
552 #define MEMOPARG(opcode, offset, base, index, scale, arg) \ 492 #define MEMOPARG(opcode, offset, base, index, scale, arg) \
553 #opcode " " #offset "(%" #base ",%" #index "," #scale "),%" #arg "\n" 493 #opcode " " #offset "(%" #base ",%" #index "," #scale "),%" #arg "\n"
494 #define VMEMOPREG(opcode, offset, base, index, scale, reg1, reg2) \
495 #opcode " " #offset "(%" #base ",%" #index "," #scale "),%%" #reg1 ",%%" \
496 #reg2 "\n"
497 #define VEXTOPMEM(op, sel, reg, offset, base, index, scale) \
498 #op " $" #sel ",%%" #reg ","#offset "(%" #base ",%" #index "," #scale ")\n"
554 #endif // defined(__native_client__) && defined(__x86_64__) 499 #endif // defined(__native_client__) && defined(__x86_64__)
555 500
556 #if defined(__arm__) || defined(__aarch64__) 501 #if defined(__arm__) || defined(__aarch64__)
557 #undef MEMACCESS 502 #undef MEMACCESS
558 #if defined(__native_client__) 503 #if defined(__native_client__)
559 #define MEMACCESS(base) ".p2align 3\nbic %" #base ", #0xc0000000\n" 504 #define MEMACCESS(base) ".p2align 3\nbic %" #base ", #0xc0000000\n"
560 #else 505 #else
561 #define MEMACCESS(base) "\n" 506 #define MEMACCESS(base)
562 #endif 507 #endif
563 #endif 508 #endif
564 509
565 void I444ToARGBRow_NEON(const uint8* src_y, 510 void I444ToARGBRow_NEON(const uint8* src_y,
566 const uint8* src_u, 511 const uint8* src_u,
567 const uint8* src_v, 512 const uint8* src_v,
568 uint8* dst_argb, 513 uint8* dst_argb,
569 int width); 514 int width);
570 void I422ToARGBRow_NEON(const uint8* src_y, 515 void I422ToARGBRow_NEON(const uint8* src_y,
571 const uint8* src_u, 516 const uint8* src_u,
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
644 void ARGBToYRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int pix); 589 void ARGBToYRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int pix);
645 void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix); 590 void ARGBToYRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
646 void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix); 591 void ARGBToYJRow_AVX2(const uint8* src_argb, uint8* dst_y, int pix);
647 void ARGBToYJRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int pix); 592 void ARGBToYJRow_Any_AVX2(const uint8* src_argb, uint8* dst_y, int pix);
648 void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix); 593 void ARGBToYJRow_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
649 void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int pix); 594 void BGRAToYRow_SSSE3(const uint8* src_bgra, uint8* dst_y, int pix);
650 void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int pix); 595 void ABGRToYRow_SSSE3(const uint8* src_abgr, uint8* dst_y, int pix);
651 void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int pix); 596 void RGBAToYRow_SSSE3(const uint8* src_rgba, uint8* dst_y, int pix);
652 void RGB24ToYRow_SSSE3(const uint8* src_rgb24, uint8* dst_y, int pix); 597 void RGB24ToYRow_SSSE3(const uint8* src_rgb24, uint8* dst_y, int pix);
653 void RAWToYRow_SSSE3(const uint8* src_raw, uint8* dst_y, int pix); 598 void RAWToYRow_SSSE3(const uint8* src_raw, uint8* dst_y, int pix);
654 void ARGBToYRow_Unaligned_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
655 void ARGBToYJRow_Unaligned_SSSE3(const uint8* src_argb, uint8* dst_y, int pix);
656 void BGRAToYRow_Unaligned_SSSE3(const uint8* src_bgra, uint8* dst_y, int pix);
657 void ABGRToYRow_Unaligned_SSSE3(const uint8* src_abgr, uint8* dst_y, int pix);
658 void RGBAToYRow_Unaligned_SSSE3(const uint8* src_rgba, uint8* dst_y, int pix);
659 void RGB24ToYRow_Unaligned_SSSE3(const uint8* src_rgb24, uint8* dst_y, int pix);
660 void RAWToYRow_Unaligned_SSSE3(const uint8* src_raw, uint8* dst_y, int pix);
661 void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int pix); 599 void ARGBToYRow_NEON(const uint8* src_argb, uint8* dst_y, int pix);
662 void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int pix); 600 void ARGBToYJRow_NEON(const uint8* src_argb, uint8* dst_y, int pix);
663 void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, 601 void ARGBToUV444Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
664 int pix); 602 int pix);
665 void ARGBToUV422Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, 603 void ARGBToUV422Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
666 int pix); 604 int pix);
667 void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v, 605 void ARGBToUV411Row_NEON(const uint8* src_argb, uint8* dst_u, uint8* dst_v,
668 int pix); 606 int pix);
669 void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb, 607 void ARGBToUVRow_NEON(const uint8* src_argb, int src_stride_argb,
670 uint8* dst_u, uint8* dst_v, int pix); 608 uint8* dst_u, uint8* dst_v, int pix);
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
729 void ARGBToUVRow_SSSE3(const uint8* src_argb, int src_stride_argb, 667 void ARGBToUVRow_SSSE3(const uint8* src_argb, int src_stride_argb,
730 uint8* dst_u, uint8* dst_v, int width); 668 uint8* dst_u, uint8* dst_v, int width);
731 void ARGBToUVJRow_SSSE3(const uint8* src_argb, int src_stride_argb, 669 void ARGBToUVJRow_SSSE3(const uint8* src_argb, int src_stride_argb,
732 uint8* dst_u, uint8* dst_v, int width); 670 uint8* dst_u, uint8* dst_v, int width);
733 void BGRAToUVRow_SSSE3(const uint8* src_bgra, int src_stride_bgra, 671 void BGRAToUVRow_SSSE3(const uint8* src_bgra, int src_stride_bgra,
734 uint8* dst_u, uint8* dst_v, int width); 672 uint8* dst_u, uint8* dst_v, int width);
735 void ABGRToUVRow_SSSE3(const uint8* src_abgr, int src_stride_abgr, 673 void ABGRToUVRow_SSSE3(const uint8* src_abgr, int src_stride_abgr,
736 uint8* dst_u, uint8* dst_v, int width); 674 uint8* dst_u, uint8* dst_v, int width);
737 void RGBAToUVRow_SSSE3(const uint8* src_rgba, int src_stride_rgba, 675 void RGBAToUVRow_SSSE3(const uint8* src_rgba, int src_stride_rgba,
738 uint8* dst_u, uint8* dst_v, int width); 676 uint8* dst_u, uint8* dst_v, int width);
739 void ARGBToUVRow_Unaligned_SSSE3(const uint8* src_argb, int src_stride_argb,
740 uint8* dst_u, uint8* dst_v, int width);
741 void ARGBToUVJRow_Unaligned_SSSE3(const uint8* src_argb, int src_stride_argb,
742 uint8* dst_u, uint8* dst_v, int width);
743 void BGRAToUVRow_Unaligned_SSSE3(const uint8* src_bgra, int src_stride_bgra,
744 uint8* dst_u, uint8* dst_v, int width);
745 void ABGRToUVRow_Unaligned_SSSE3(const uint8* src_abgr, int src_stride_abgr,
746 uint8* dst_u, uint8* dst_v, int width);
747 void RGBAToUVRow_Unaligned_SSSE3(const uint8* src_rgba, int src_stride_rgba,
748 uint8* dst_u, uint8* dst_v, int width);
749 void ARGBToUVRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb, 677 void ARGBToUVRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb,
750 uint8* dst_u, uint8* dst_v, int width); 678 uint8* dst_u, uint8* dst_v, int width);
751 void ARGBToUVJRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb, 679 void ARGBToUVJRow_Any_SSSE3(const uint8* src_argb, int src_stride_argb,
752 uint8* dst_u, uint8* dst_v, int width); 680 uint8* dst_u, uint8* dst_v, int width);
753 void BGRAToUVRow_Any_SSSE3(const uint8* src_bgra, int src_stride_bgra, 681 void BGRAToUVRow_Any_SSSE3(const uint8* src_bgra, int src_stride_bgra,
754 uint8* dst_u, uint8* dst_v, int width); 682 uint8* dst_u, uint8* dst_v, int width);
755 void ABGRToUVRow_Any_SSSE3(const uint8* src_abgr, int src_stride_abgr, 683 void ABGRToUVRow_Any_SSSE3(const uint8* src_abgr, int src_stride_abgr,
756 uint8* dst_u, uint8* dst_v, int width); 684 uint8* dst_u, uint8* dst_v, int width);
757 void RGBAToUVRow_Any_SSSE3(const uint8* src_rgba, int src_stride_rgba, 685 void RGBAToUVRow_Any_SSSE3(const uint8* src_rgba, int src_stride_rgba,
758 uint8* dst_u, uint8* dst_v, int width); 686 uint8* dst_u, uint8* dst_v, int width);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
800 uint8* dst_u, uint8* dst_v, int width); 728 uint8* dst_u, uint8* dst_v, int width);
801 void RGB565ToUVRow_C(const uint8* src_rgb565, int src_stride_rgb565, 729 void RGB565ToUVRow_C(const uint8* src_rgb565, int src_stride_rgb565,
802 uint8* dst_u, uint8* dst_v, int width); 730 uint8* dst_u, uint8* dst_v, int width);
803 void ARGB1555ToUVRow_C(const uint8* src_argb1555, int src_stride_argb1555, 731 void ARGB1555ToUVRow_C(const uint8* src_argb1555, int src_stride_argb1555,
804 uint8* dst_u, uint8* dst_v, int width); 732 uint8* dst_u, uint8* dst_v, int width);
805 void ARGB4444ToUVRow_C(const uint8* src_argb4444, int src_stride_argb4444, 733 void ARGB4444ToUVRow_C(const uint8* src_argb4444, int src_stride_argb4444,
806 uint8* dst_u, uint8* dst_v, int width); 734 uint8* dst_u, uint8* dst_v, int width);
807 735
808 void ARGBToUV444Row_SSSE3(const uint8* src_argb, 736 void ARGBToUV444Row_SSSE3(const uint8* src_argb,
809 uint8* dst_u, uint8* dst_v, int width); 737 uint8* dst_u, uint8* dst_v, int width);
810 void ARGBToUV444Row_Unaligned_SSSE3(const uint8* src_argb,
811 uint8* dst_u, uint8* dst_v, int width);
812 void ARGBToUV444Row_Any_SSSE3(const uint8* src_argb, 738 void ARGBToUV444Row_Any_SSSE3(const uint8* src_argb,
813 uint8* dst_u, uint8* dst_v, int width); 739 uint8* dst_u, uint8* dst_v, int width);
814 740
815 void ARGBToUV422Row_SSSE3(const uint8* src_argb, 741 void ARGBToUV422Row_SSSE3(const uint8* src_argb,
816 uint8* dst_u, uint8* dst_v, int width); 742 uint8* dst_u, uint8* dst_v, int width);
817 void ARGBToUV422Row_Unaligned_SSSE3(const uint8* src_argb,
818 uint8* dst_u, uint8* dst_v, int width);
819 void ARGBToUV422Row_Any_SSSE3(const uint8* src_argb, 743 void ARGBToUV422Row_Any_SSSE3(const uint8* src_argb,
820 uint8* dst_u, uint8* dst_v, int width); 744 uint8* dst_u, uint8* dst_v, int width);
821 745
822 void ARGBToUV444Row_C(const uint8* src_argb, 746 void ARGBToUV444Row_C(const uint8* src_argb,
823 uint8* dst_u, uint8* dst_v, int width); 747 uint8* dst_u, uint8* dst_v, int width);
824 void ARGBToUV422Row_C(const uint8* src_argb, 748 void ARGBToUV422Row_C(const uint8* src_argb,
825 uint8* dst_u, uint8* dst_v, int width); 749 uint8* dst_u, uint8* dst_v, int width);
826 void ARGBToUV411Row_C(const uint8* src_argb, 750 void ARGBToUV411Row_C(const uint8* src_argb,
827 uint8* dst_u, uint8* dst_v, int width); 751 uint8* dst_u, uint8* dst_v, int width);
752 void ARGBToUVJ422Row_C(const uint8* src_argb,
753 uint8* dst_u, uint8* dst_v, int width);
828 754
829 void MirrorRow_AVX2(const uint8* src, uint8* dst, int width); 755 void MirrorRow_AVX2(const uint8* src, uint8* dst, int width);
830 void MirrorRow_SSSE3(const uint8* src, uint8* dst, int width); 756 void MirrorRow_SSSE3(const uint8* src, uint8* dst, int width);
831 void MirrorRow_SSE2(const uint8* src, uint8* dst, int width); 757 void MirrorRow_SSE2(const uint8* src, uint8* dst, int width);
832 void MirrorRow_NEON(const uint8* src, uint8* dst, int width); 758 void MirrorRow_NEON(const uint8* src, uint8* dst, int width);
833 void MirrorRow_MIPS_DSPR2(const uint8* src, uint8* dst, int width); 759 void MirrorRow_MIPS_DSPR2(const uint8* src, uint8* dst, int width);
834 void MirrorRow_C(const uint8* src, uint8* dst, int width); 760 void MirrorRow_C(const uint8* src, uint8* dst, int width);
761 void MirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width);
762 void MirrorRow_Any_SSSE3(const uint8* src, uint8* dst, int width);
763 void MirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width);
764 void MirrorRow_Any_NEON(const uint8* src, uint8* dst, int width);
835 765
836 void MirrorUVRow_SSSE3(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 766 void MirrorUVRow_SSSE3(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
837 int width); 767 int width);
838 void MirrorUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 768 void MirrorUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
839 int width); 769 int width);
840 void MirrorUVRow_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 770 void MirrorUVRow_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
841 int width); 771 int width);
842 void MirrorUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 772 void MirrorUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
843 int width); 773 int width);
844 774
845 void ARGBMirrorRow_AVX2(const uint8* src, uint8* dst, int width); 775 void ARGBMirrorRow_AVX2(const uint8* src, uint8* dst, int width);
846 void ARGBMirrorRow_SSSE3(const uint8* src, uint8* dst, int width); 776 void ARGBMirrorRow_SSE2(const uint8* src, uint8* dst, int width);
847 void ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width); 777 void ARGBMirrorRow_NEON(const uint8* src, uint8* dst, int width);
848 void ARGBMirrorRow_C(const uint8* src, uint8* dst, int width); 778 void ARGBMirrorRow_C(const uint8* src, uint8* dst, int width);
779 void ARGBMirrorRow_Any_AVX2(const uint8* src, uint8* dst, int width);
780 void ARGBMirrorRow_Any_SSE2(const uint8* src, uint8* dst, int width);
781 void ARGBMirrorRow_Any_NEON(const uint8* src, uint8* dst, int width);
849 782
850 void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix); 783 void SplitUVRow_C(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
851 void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix); 784 void SplitUVRow_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
852 void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix); 785 void SplitUVRow_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
853 void SplitUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix); 786 void SplitUVRow_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, int pix);
854 void SplitUVRow_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 787 void SplitUVRow_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
855 int pix); 788 int pix);
856 void SplitUVRow_Unaligned_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
857 int pix);
858 void SplitUVRow_Unaligned_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u,
859 uint8* dst_v, int pix);
860 void SplitUVRow_Any_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 789 void SplitUVRow_Any_SSE2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
861 int pix); 790 int pix);
862 void SplitUVRow_Any_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 791 void SplitUVRow_Any_AVX2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
863 int pix); 792 int pix);
864 void SplitUVRow_Any_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 793 void SplitUVRow_Any_NEON(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
865 int pix); 794 int pix);
866 void SplitUVRow_Any_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v, 795 void SplitUVRow_Any_MIPS_DSPR2(const uint8* src_uv, uint8* dst_u, uint8* dst_v,
867 int pix); 796 int pix);
868 797
869 void MergeUVRow_C(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 798 void MergeUVRow_C(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
870 int width); 799 int width);
871 void MergeUVRow_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 800 void MergeUVRow_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
872 int width); 801 int width);
873 void MergeUVRow_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 802 void MergeUVRow_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
874 int width); 803 int width);
875 void MergeUVRow_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 804 void MergeUVRow_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
876 int width); 805 int width);
877 void MergeUVRow_Unaligned_SSE2(const uint8* src_u, const uint8* src_v,
878 uint8* dst_uv, int width);
879 void MergeUVRow_Any_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 806 void MergeUVRow_Any_SSE2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
880 int width); 807 int width);
881 void MergeUVRow_Any_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 808 void MergeUVRow_Any_AVX2(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
882 int width); 809 int width);
883 void MergeUVRow_Any_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv, 810 void MergeUVRow_Any_NEON(const uint8* src_u, const uint8* src_v, uint8* dst_uv,
884 int width); 811 int width);
885 812
886 void CopyRow_SSE2(const uint8* src, uint8* dst, int count); 813 void CopyRow_SSE2(const uint8* src, uint8* dst, int count);
814 void CopyRow_AVX(const uint8* src, uint8* dst, int count);
887 void CopyRow_ERMS(const uint8* src, uint8* dst, int count); 815 void CopyRow_ERMS(const uint8* src, uint8* dst, int count);
888 void CopyRow_X86(const uint8* src, uint8* dst, int count);
889 void CopyRow_NEON(const uint8* src, uint8* dst, int count); 816 void CopyRow_NEON(const uint8* src, uint8* dst, int count);
890 void CopyRow_MIPS(const uint8* src, uint8* dst, int count); 817 void CopyRow_MIPS(const uint8* src, uint8* dst, int count);
891 void CopyRow_C(const uint8* src, uint8* dst, int count); 818 void CopyRow_C(const uint8* src, uint8* dst, int count);
819 void CopyRow_Any_SSE2(const uint8* src, uint8* dst, int count);
820 void CopyRow_Any_AVX(const uint8* src, uint8* dst, int count);
821 void CopyRow_Any_NEON(const uint8* src, uint8* dst, int count);
892 822
893 void CopyRow_16_C(const uint16* src, uint16* dst, int count); 823 void CopyRow_16_C(const uint16* src, uint16* dst, int count);
894 824
895 void ARGBCopyAlphaRow_C(const uint8* src_argb, uint8* dst_argb, int width); 825 void ARGBCopyAlphaRow_C(const uint8* src_argb, uint8* dst_argb, int width);
896 void ARGBCopyAlphaRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width); 826 void ARGBCopyAlphaRow_SSE2(const uint8* src_argb, uint8* dst_argb, int width);
897 void ARGBCopyAlphaRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width); 827 void ARGBCopyAlphaRow_AVX2(const uint8* src_argb, uint8* dst_argb, int width);
898 828
899 void ARGBCopyYToAlphaRow_C(const uint8* src_y, uint8* dst_argb, int width); 829 void ARGBCopyYToAlphaRow_C(const uint8* src_y, uint8* dst_argb, int width);
900 void ARGBCopyYToAlphaRow_SSE2(const uint8* src_y, uint8* dst_argb, int width); 830 void ARGBCopyYToAlphaRow_SSE2(const uint8* src_y, uint8* dst_argb, int width);
901 void ARGBCopyYToAlphaRow_AVX2(const uint8* src_y, uint8* dst_argb, int width); 831 void ARGBCopyYToAlphaRow_AVX2(const uint8* src_y, uint8* dst_argb, int width);
902 832
903 void SetRow_X86(uint8* dst, uint32 v32, int count); 833 void SetRow_C(uint8* dst, uint8 v8, int count);
904 void ARGBSetRows_X86(uint8* dst, uint32 v32, int width, 834 void SetRow_X86(uint8* dst, uint8 v8, int count);
905 int dst_stride, int height); 835 void SetRow_ERMS(uint8* dst, uint8 v8, int count);
906 void SetRow_NEON(uint8* dst, uint32 v32, int count); 836 void SetRow_NEON(uint8* dst, uint8 v8, int count);
907 void ARGBSetRows_NEON(uint8* dst, uint32 v32, int width, 837 void SetRow_Any_X86(uint8* dst, uint8 v8, int count);
908 int dst_stride, int height); 838 void SetRow_Any_NEON(uint8* dst, uint8 v8, int count);
909 void SetRow_C(uint8* dst, uint32 v32, int count); 839
910 void ARGBSetRows_C(uint8* dst, uint32 v32, int width, int dst_stride, 840 void ARGBSetRow_C(uint8* dst_argb, uint32 v32, int count);
911 int height); 841 void ARGBSetRow_X86(uint8* dst_argb, uint32 v32, int count);
842 void ARGBSetRow_NEON(uint8* dst_argb, uint32 v32, int count);
843 void ARGBSetRow_Any_NEON(uint8* dst_argb, uint32 v32, int count);
912 844
913 // ARGBShufflers for BGRAToARGB etc. 845 // ARGBShufflers for BGRAToARGB etc.
914 void ARGBShuffleRow_C(const uint8* src_argb, uint8* dst_argb, 846 void ARGBShuffleRow_C(const uint8* src_argb, uint8* dst_argb,
915 const uint8* shuffler, int pix); 847 const uint8* shuffler, int pix);
916 void ARGBShuffleRow_SSE2(const uint8* src_argb, uint8* dst_argb, 848 void ARGBShuffleRow_SSE2(const uint8* src_argb, uint8* dst_argb,
917 const uint8* shuffler, int pix); 849 const uint8* shuffler, int pix);
918 void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb, 850 void ARGBShuffleRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
919 const uint8* shuffler, int pix); 851 const uint8* shuffler, int pix);
920 void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb, 852 void ARGBShuffleRow_AVX2(const uint8* src_argb, uint8* dst_argb,
921 const uint8* shuffler, int pix); 853 const uint8* shuffler, int pix);
922 void ARGBShuffleRow_NEON(const uint8* src_argb, uint8* dst_argb, 854 void ARGBShuffleRow_NEON(const uint8* src_argb, uint8* dst_argb,
923 const uint8* shuffler, int pix); 855 const uint8* shuffler, int pix);
924 void ARGBShuffleRow_Unaligned_SSSE3(const uint8* src_argb, uint8* dst_argb,
925 const uint8* shuffler, int pix);
926 void ARGBShuffleRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb, 856 void ARGBShuffleRow_Any_SSE2(const uint8* src_argb, uint8* dst_argb,
927 const uint8* shuffler, int pix); 857 const uint8* shuffler, int pix);
928 void ARGBShuffleRow_Any_SSSE3(const uint8* src_argb, uint8* dst_argb, 858 void ARGBShuffleRow_Any_SSSE3(const uint8* src_argb, uint8* dst_argb,
929 const uint8* shuffler, int pix); 859 const uint8* shuffler, int pix);
930 void ARGBShuffleRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb, 860 void ARGBShuffleRow_Any_AVX2(const uint8* src_argb, uint8* dst_argb,
931 const uint8* shuffler, int pix); 861 const uint8* shuffler, int pix);
932 void ARGBShuffleRow_Any_NEON(const uint8* src_argb, uint8* dst_argb, 862 void ARGBShuffleRow_Any_NEON(const uint8* src_argb, uint8* dst_argb,
933 const uint8* shuffler, int pix); 863 const uint8* shuffler, int pix);
934 864
935 void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix); 865 void RGB24ToARGBRow_SSSE3(const uint8* src_rgb24, uint8* dst_argb, int pix);
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
968 int pix); 898 int pix);
969 void ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444, uint8* dst_argb, 899 void ARGB4444ToARGBRow_Any_NEON(const uint8* src_argb4444, uint8* dst_argb,
970 int pix); 900 int pix);
971 901
972 void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); 902 void ARGBToRGB24Row_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
973 void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); 903 void ARGBToRAWRow_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
974 void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); 904 void ARGBToRGB565Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
975 void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); 905 void ARGBToARGB1555Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
976 void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); 906 void ARGBToARGB4444Row_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
977 907
908 void ARGBToRGB565Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
909 void ARGBToARGB1555Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
910 void ARGBToARGB4444Row_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
911
978 void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); 912 void ARGBToRGB24Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
979 void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); 913 void ARGBToRAWRow_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
980 void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); 914 void ARGBToRGB565Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
981 void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); 915 void ARGBToARGB1555Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
982 void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); 916 void ARGBToARGB4444Row_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
983 917
984 void ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int pix); 918 void ARGBToRGBARow_C(const uint8* src_argb, uint8* dst_rgb, int pix);
985 void ARGBToRGB24Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); 919 void ARGBToRGB24Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
986 void ARGBToRAWRow_C(const uint8* src_argb, uint8* dst_rgb, int pix); 920 void ARGBToRAWRow_C(const uint8* src_argb, uint8* dst_rgb, int pix);
987 void ARGBToRGB565Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); 921 void ARGBToRGB565Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
988 void ARGBToARGB1555Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); 922 void ARGBToARGB1555Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
989 void ARGBToARGB4444Row_C(const uint8* src_argb, uint8* dst_rgb, int pix); 923 void ARGBToARGB4444Row_C(const uint8* src_argb, uint8* dst_rgb, int pix);
990 924
925 void ARGBToRGB565DitherRow_C(const uint8* src_argb, uint8* dst_rgb,
926 const uint8* dither8x8, int pix);
927
991 void I400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix); 928 void I400ToARGBRow_SSE2(const uint8* src_y, uint8* dst_argb, int pix);
992 void I400ToARGBRow_Unaligned_SSE2(const uint8* src_y, uint8* dst_argb, int pix);
993 void I400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int pix); 929 void I400ToARGBRow_NEON(const uint8* src_y, uint8* dst_argb, int pix);
994 void I400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int pix); 930 void I400ToARGBRow_C(const uint8* src_y, uint8* dst_argb, int pix);
995 void I400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int pix); 931 void I400ToARGBRow_Any_SSE2(const uint8* src_y, uint8* dst_argb, int pix);
996 void I400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int pix); 932 void I400ToARGBRow_Any_NEON(const uint8* src_y, uint8* dst_argb, int pix);
997 933
998 void I444ToARGBRow_C(const uint8* src_y, 934 void I444ToARGBRow_C(const uint8* src_y,
999 const uint8* src_u, 935 const uint8* src_u,
1000 const uint8* src_v, 936 const uint8* src_v,
1001 uint8* dst_argb, 937 uint8* dst_argb,
1002 int width); 938 int width);
(...skipping 22 matching lines...) Expand all
1025 void NV21ToARGBRow_C(const uint8* src_y, 961 void NV21ToARGBRow_C(const uint8* src_y,
1026 const uint8* src_vu, 962 const uint8* src_vu,
1027 uint8* dst_argb, 963 uint8* dst_argb,
1028 int width); 964 int width);
1029 void YUY2ToARGBRow_C(const uint8* src_yuy2, 965 void YUY2ToARGBRow_C(const uint8* src_yuy2,
1030 uint8* dst_argb, 966 uint8* dst_argb,
1031 int width); 967 int width);
1032 void UYVYToARGBRow_C(const uint8* src_uyvy, 968 void UYVYToARGBRow_C(const uint8* src_uyvy,
1033 uint8* dst_argb, 969 uint8* dst_argb,
1034 int width); 970 int width);
971 void J422ToARGBRow_C(const uint8* src_y,
972 const uint8* src_u,
973 const uint8* src_v,
974 uint8* dst_argb,
975 int width);
1035 void I422ToBGRARow_C(const uint8* src_y, 976 void I422ToBGRARow_C(const uint8* src_y,
1036 const uint8* src_u, 977 const uint8* src_u,
1037 const uint8* src_v, 978 const uint8* src_v,
1038 uint8* dst_bgra, 979 uint8* dst_bgra,
1039 int width); 980 int width);
1040 void I422ToABGRRow_C(const uint8* src_y, 981 void I422ToABGRRow_C(const uint8* src_y,
1041 const uint8* src_u, 982 const uint8* src_u,
1042 const uint8* src_v, 983 const uint8* src_v,
1043 uint8* dst_abgr, 984 uint8* dst_abgr,
1044 int width); 985 int width);
(...skipping 20 matching lines...) Expand all
1065 void I422ToARGB1555Row_C(const uint8* src_y, 1006 void I422ToARGB1555Row_C(const uint8* src_y,
1066 const uint8* src_u, 1007 const uint8* src_u,
1067 const uint8* src_v, 1008 const uint8* src_v,
1068 uint8* dst_argb4444, 1009 uint8* dst_argb4444,
1069 int width); 1010 int width);
1070 void I422ToRGB565Row_C(const uint8* src_y, 1011 void I422ToRGB565Row_C(const uint8* src_y,
1071 const uint8* src_u, 1012 const uint8* src_u,
1072 const uint8* src_v, 1013 const uint8* src_v,
1073 uint8* dst_rgb565, 1014 uint8* dst_rgb565,
1074 int width); 1015 int width);
1075 void YToARGBRow_C(const uint8* src_y,
1076 uint8* dst_argb,
1077 int width);
1078 void I422ToARGBRow_AVX2(const uint8* src_y, 1016 void I422ToARGBRow_AVX2(const uint8* src_y,
1079 const uint8* src_u, 1017 const uint8* src_u,
1080 const uint8* src_v, 1018 const uint8* src_v,
1081 uint8* dst_argb, 1019 uint8* dst_argb,
1082 int width); 1020 int width);
1021 void I422ToBGRARow_AVX2(const uint8* src_y,
1022 const uint8* src_u,
1023 const uint8* src_v,
1024 uint8* dst_argb,
1025 int width);
1026 void I422ToRGBARow_AVX2(const uint8* src_y,
1027 const uint8* src_u,
1028 const uint8* src_v,
1029 uint8* dst_argb,
1030 int width);
1031 void I422ToABGRRow_AVX2(const uint8* src_y,
1032 const uint8* src_u,
1033 const uint8* src_v,
1034 uint8* dst_argb,
1035 int width);
1083 void I444ToARGBRow_SSSE3(const uint8* src_y, 1036 void I444ToARGBRow_SSSE3(const uint8* src_y,
1084 const uint8* src_u, 1037 const uint8* src_u,
1085 const uint8* src_v, 1038 const uint8* src_v,
1086 uint8* dst_argb, 1039 uint8* dst_argb,
1087 int width); 1040 int width);
1088 void I422ToARGBRow_SSSE3(const uint8* src_y, 1041 void I422ToARGBRow_SSSE3(const uint8* src_y,
1089 const uint8* src_u, 1042 const uint8* src_u,
1090 const uint8* src_v, 1043 const uint8* src_v,
1091 uint8* dst_argb, 1044 uint8* dst_argb,
1092 int width); 1045 int width);
1093 void I411ToARGBRow_SSSE3(const uint8* src_y, 1046 void I411ToARGBRow_SSSE3(const uint8* src_y,
1094 const uint8* src_u, 1047 const uint8* src_u,
1095 const uint8* src_v, 1048 const uint8* src_v,
1096 uint8* dst_argb, 1049 uint8* dst_argb,
1097 int width); 1050 int width);
1098 void NV12ToARGBRow_SSSE3(const uint8* src_y, 1051 void NV12ToARGBRow_SSSE3(const uint8* src_y,
1099 const uint8* src_uv, 1052 const uint8* src_uv,
1100 uint8* dst_argb, 1053 uint8* dst_argb,
1101 int width); 1054 int width);
1102 void NV21ToARGBRow_SSSE3(const uint8* src_y, 1055 void NV21ToARGBRow_SSSE3(const uint8* src_y,
1103 const uint8* src_vu, 1056 const uint8* src_vu,
1104 uint8* dst_argb, 1057 uint8* dst_argb,
1105 int width); 1058 int width);
1059 void NV12ToARGBRow_AVX2(const uint8* src_y,
1060 const uint8* src_uv,
1061 uint8* dst_argb,
1062 int width);
1063 void NV21ToARGBRow_AVX2(const uint8* src_y,
1064 const uint8* src_vu,
1065 uint8* dst_argb,
1066 int width);
1106 void NV12ToRGB565Row_SSSE3(const uint8* src_y, 1067 void NV12ToRGB565Row_SSSE3(const uint8* src_y,
1107 const uint8* src_uv, 1068 const uint8* src_uv,
1108 uint8* dst_argb, 1069 uint8* dst_argb,
1109 int width); 1070 int width);
1110 void NV21ToRGB565Row_SSSE3(const uint8* src_y, 1071 void NV21ToRGB565Row_SSSE3(const uint8* src_y,
1111 const uint8* src_vu, 1072 const uint8* src_vu,
1112 uint8* dst_argb, 1073 uint8* dst_argb,
1113 int width); 1074 int width);
1075 void NV12ToRGB565Row_AVX2(const uint8* src_y,
1076 const uint8* src_uv,
1077 uint8* dst_argb,
1078 int width);
1079 void NV21ToRGB565Row_AVX2(const uint8* src_y,
1080 const uint8* src_vu,
1081 uint8* dst_argb,
1082 int width);
1114 void YUY2ToARGBRow_SSSE3(const uint8* src_yuy2, 1083 void YUY2ToARGBRow_SSSE3(const uint8* src_yuy2,
1115 uint8* dst_argb, 1084 uint8* dst_argb,
1116 int width); 1085 int width);
1117 void UYVYToARGBRow_SSSE3(const uint8* src_uyvy, 1086 void UYVYToARGBRow_SSSE3(const uint8* src_uyvy,
1118 uint8* dst_argb, 1087 uint8* dst_argb,
1119 int width); 1088 int width);
1089 void YUY2ToARGBRow_AVX2(const uint8* src_yuy2,
1090 uint8* dst_argb,
1091 int width);
1092 void UYVYToARGBRow_AVX2(const uint8* src_uyvy,
1093 uint8* dst_argb,
1094 int width);
1095 void J422ToARGBRow_SSSE3(const uint8* src_y,
1096 const uint8* src_u,
1097 const uint8* src_v,
1098 uint8* dst_argb,
1099 int width);
1120 void I422ToBGRARow_SSSE3(const uint8* src_y, 1100 void I422ToBGRARow_SSSE3(const uint8* src_y,
1121 const uint8* src_u, 1101 const uint8* src_u,
1122 const uint8* src_v, 1102 const uint8* src_v,
1123 uint8* dst_bgra, 1103 uint8* dst_bgra,
1124 int width); 1104 int width);
1125 void I422ToABGRRow_SSSE3(const uint8* src_y, 1105 void I422ToABGRRow_SSSE3(const uint8* src_y,
1126 const uint8* src_u, 1106 const uint8* src_u,
1127 const uint8* src_v, 1107 const uint8* src_v,
1128 uint8* dst_abgr, 1108 uint8* dst_abgr,
1129 int width); 1109 int width);
1130 void I422ToRGBARow_SSSE3(const uint8* src_y, 1110 void I422ToRGBARow_SSSE3(const uint8* src_y,
1131 const uint8* src_u, 1111 const uint8* src_u,
1132 const uint8* src_v, 1112 const uint8* src_v,
1133 uint8* dst_rgba, 1113 uint8* dst_rgba,
1134 int width); 1114 int width);
1135 void I422ToARGB4444Row_SSSE3(const uint8* src_y, 1115 void I422ToARGB4444Row_SSSE3(const uint8* src_y,
1136 const uint8* src_u, 1116 const uint8* src_u,
1137 const uint8* src_v, 1117 const uint8* src_v,
1138 uint8* dst_argb, 1118 uint8* dst_argb,
1139 int width); 1119 int width);
1120 void I422ToARGB4444Row_AVX2(const uint8* src_y,
1121 const uint8* src_u,
1122 const uint8* src_v,
1123 uint8* dst_argb,
1124 int width);
1140 void I422ToARGB1555Row_SSSE3(const uint8* src_y, 1125 void I422ToARGB1555Row_SSSE3(const uint8* src_y,
1141 const uint8* src_u, 1126 const uint8* src_u,
1142 const uint8* src_v, 1127 const uint8* src_v,
1143 uint8* dst_argb, 1128 uint8* dst_argb,
1144 int width); 1129 int width);
1130 void I422ToARGB1555Row_AVX2(const uint8* src_y,
1131 const uint8* src_u,
1132 const uint8* src_v,
1133 uint8* dst_argb,
1134 int width);
1145 void I422ToRGB565Row_SSSE3(const uint8* src_y, 1135 void I422ToRGB565Row_SSSE3(const uint8* src_y,
1146 const uint8* src_u, 1136 const uint8* src_u,
1147 const uint8* src_v, 1137 const uint8* src_v,
1148 uint8* dst_argb, 1138 uint8* dst_argb,
1149 int width); 1139 int width);
1150 // RGB24/RAW are unaligned. 1140 void I422ToRGB565Row_AVX2(const uint8* src_y,
1141 const uint8* src_u,
1142 const uint8* src_v,
1143 uint8* dst_argb,
1144 int width);
1151 void I422ToRGB24Row_SSSE3(const uint8* src_y, 1145 void I422ToRGB24Row_SSSE3(const uint8* src_y,
1152 const uint8* src_u, 1146 const uint8* src_u,
1153 const uint8* src_v, 1147 const uint8* src_v,
1154 uint8* dst_rgb24, 1148 uint8* dst_rgb24,
1155 int width); 1149 int width);
1156 void I422ToRAWRow_SSSE3(const uint8* src_y, 1150 void I422ToRAWRow_SSSE3(const uint8* src_y,
1157 const uint8* src_u, 1151 const uint8* src_u,
1158 const uint8* src_v, 1152 const uint8* src_v,
1159 uint8* dst_raw, 1153 uint8* dst_raw,
1160 int width); 1154 int width);
1161
1162 void I444ToARGBRow_Unaligned_SSSE3(const uint8* src_y,
1163 const uint8* src_u,
1164 const uint8* src_v,
1165 uint8* dst_argb,
1166 int width);
1167 void I422ToARGBRow_Unaligned_SSSE3(const uint8* src_y,
1168 const uint8* src_u,
1169 const uint8* src_v,
1170 uint8* dst_argb,
1171 int width);
1172 void I411ToARGBRow_Unaligned_SSSE3(const uint8* src_y,
1173 const uint8* src_u,
1174 const uint8* src_v,
1175 uint8* dst_argb,
1176 int width);
1177 void NV12ToARGBRow_Unaligned_SSSE3(const uint8* src_y,
1178 const uint8* src_uv,
1179 uint8* dst_argb,
1180 int width);
1181 void NV21ToARGBRow_Unaligned_SSSE3(const uint8* src_y,
1182 const uint8* src_vu,
1183 uint8* dst_argb,
1184 int width);
1185 void YUY2ToARGBRow_Unaligned_SSSE3(const uint8* src_yuy2,
1186 uint8* dst_argb,
1187 int width);
1188 void UYVYToARGBRow_Unaligned_SSSE3(const uint8* src_uyvy,
1189 uint8* dst_argb,
1190 int width);
1191 void I422ToBGRARow_Unaligned_SSSE3(const uint8* src_y,
1192 const uint8* src_u,
1193 const uint8* src_v,
1194 uint8* dst_bgra,
1195 int width);
1196 void I422ToABGRRow_Unaligned_SSSE3(const uint8* src_y,
1197 const uint8* src_u,
1198 const uint8* src_v,
1199 uint8* dst_abgr,
1200 int width);
1201 void I422ToRGBARow_Unaligned_SSSE3(const uint8* src_y,
1202 const uint8* src_u,
1203 const uint8* src_v,
1204 uint8* dst_rgba,
1205 int width);
1206 void I422ToARGBRow_Any_AVX2(const uint8* src_y, 1155 void I422ToARGBRow_Any_AVX2(const uint8* src_y,
1207 const uint8* src_u, 1156 const uint8* src_u,
1208 const uint8* src_v, 1157 const uint8* src_v,
1209 uint8* dst_argb, 1158 uint8* dst_argb,
1210 int width); 1159 int width);
1160 void I422ToBGRARow_Any_AVX2(const uint8* src_y,
1161 const uint8* src_u,
1162 const uint8* src_v,
1163 uint8* dst_argb,
1164 int width);
1165 void I422ToRGBARow_Any_AVX2(const uint8* src_y,
1166 const uint8* src_u,
1167 const uint8* src_v,
1168 uint8* dst_argb,
1169 int width);
1170 void I422ToABGRRow_Any_AVX2(const uint8* src_y,
1171 const uint8* src_u,
1172 const uint8* src_v,
1173 uint8* dst_argb,
1174 int width);
1211 void I444ToARGBRow_Any_SSSE3(const uint8* src_y, 1175 void I444ToARGBRow_Any_SSSE3(const uint8* src_y,
1212 const uint8* src_u, 1176 const uint8* src_u,
1213 const uint8* src_v, 1177 const uint8* src_v,
1214 uint8* dst_argb, 1178 uint8* dst_argb,
1215 int width); 1179 int width);
1216 void I422ToARGBRow_Any_SSSE3(const uint8* src_y, 1180 void I422ToARGBRow_Any_SSSE3(const uint8* src_y,
1217 const uint8* src_u, 1181 const uint8* src_u,
1218 const uint8* src_v, 1182 const uint8* src_v,
1219 uint8* dst_argb, 1183 uint8* dst_argb,
1220 int width); 1184 int width);
1221 void I411ToARGBRow_Any_SSSE3(const uint8* src_y, 1185 void I411ToARGBRow_Any_SSSE3(const uint8* src_y,
1222 const uint8* src_u, 1186 const uint8* src_u,
1223 const uint8* src_v, 1187 const uint8* src_v,
1224 uint8* dst_argb, 1188 uint8* dst_argb,
1225 int width); 1189 int width);
1226 void NV12ToARGBRow_Any_SSSE3(const uint8* src_y, 1190 void NV12ToARGBRow_Any_SSSE3(const uint8* src_y,
1227 const uint8* src_uv, 1191 const uint8* src_uv,
1228 uint8* dst_argb, 1192 uint8* dst_argb,
1229 int width); 1193 int width);
1230 void NV21ToARGBRow_Any_SSSE3(const uint8* src_y, 1194 void NV21ToARGBRow_Any_SSSE3(const uint8* src_y,
1231 const uint8* src_vu, 1195 const uint8* src_vu,
1232 uint8* dst_argb, 1196 uint8* dst_argb,
1233 int width); 1197 int width);
1198 void NV12ToARGBRow_Any_AVX2(const uint8* src_y,
1199 const uint8* src_uv,
1200 uint8* dst_argb,
1201 int width);
1202 void NV21ToARGBRow_Any_AVX2(const uint8* src_y,
1203 const uint8* src_vu,
1204 uint8* dst_argb,
1205 int width);
1234 void NV12ToRGB565Row_Any_SSSE3(const uint8* src_y, 1206 void NV12ToRGB565Row_Any_SSSE3(const uint8* src_y,
1235 const uint8* src_uv, 1207 const uint8* src_uv,
1236 uint8* dst_argb, 1208 uint8* dst_argb,
1237 int width); 1209 int width);
1238 void NV21ToRGB565Row_Any_SSSE3(const uint8* src_y, 1210 void NV21ToRGB565Row_Any_SSSE3(const uint8* src_y,
1239 const uint8* src_vu, 1211 const uint8* src_vu,
1240 uint8* dst_argb, 1212 uint8* dst_argb,
1241 int width); 1213 int width);
1214 void NV12ToRGB565Row_Any_AVX2(const uint8* src_y,
1215 const uint8* src_uv,
1216 uint8* dst_argb,
1217 int width);
1218 void NV21ToRGB565Row_Any_AVX2(const uint8* src_y,
1219 const uint8* src_vu,
1220 uint8* dst_argb,
1221 int width);
1242 void YUY2ToARGBRow_Any_SSSE3(const uint8* src_yuy2, 1222 void YUY2ToARGBRow_Any_SSSE3(const uint8* src_yuy2,
1243 uint8* dst_argb, 1223 uint8* dst_argb,
1244 int width); 1224 int width);
1245 void UYVYToARGBRow_Any_SSSE3(const uint8* src_uyvy, 1225 void UYVYToARGBRow_Any_SSSE3(const uint8* src_uyvy,
1246 uint8* dst_argb, 1226 uint8* dst_argb,
1247 int width); 1227 int width);
1228 void YUY2ToARGBRow_Any_AVX2(const uint8* src_yuy2,
1229 uint8* dst_argb,
1230 int width);
1231 void UYVYToARGBRow_Any_AVX2(const uint8* src_uyvy,
1232 uint8* dst_argb,
1233 int width);
1248 void I422ToBGRARow_Any_SSSE3(const uint8* src_y, 1234 void I422ToBGRARow_Any_SSSE3(const uint8* src_y,
1249 const uint8* src_u, 1235 const uint8* src_u,
1250 const uint8* src_v, 1236 const uint8* src_v,
1251 uint8* dst_bgra, 1237 uint8* dst_bgra,
1252 int width); 1238 int width);
1253 void I422ToABGRRow_Any_SSSE3(const uint8* src_y, 1239 void I422ToABGRRow_Any_SSSE3(const uint8* src_y,
1254 const uint8* src_u, 1240 const uint8* src_u,
1255 const uint8* src_v, 1241 const uint8* src_v,
1256 uint8* dst_abgr, 1242 uint8* dst_abgr,
1257 int width); 1243 int width);
1258 void I422ToRGBARow_Any_SSSE3(const uint8* src_y, 1244 void I422ToRGBARow_Any_SSSE3(const uint8* src_y,
1259 const uint8* src_u, 1245 const uint8* src_u,
1260 const uint8* src_v, 1246 const uint8* src_v,
1261 uint8* dst_rgba, 1247 uint8* dst_rgba,
1262 int width); 1248 int width);
1263 void I422ToARGB4444Row_Any_SSSE3(const uint8* src_y, 1249 void I422ToARGB4444Row_Any_SSSE3(const uint8* src_y,
1264 const uint8* src_u, 1250 const uint8* src_u,
1265 const uint8* src_v, 1251 const uint8* src_v,
1266 uint8* dst_rgba, 1252 uint8* dst_rgba,
1267 int width); 1253 int width);
1254 void I422ToARGB4444Row_Any_AVX2(const uint8* src_y,
1255 const uint8* src_u,
1256 const uint8* src_v,
1257 uint8* dst_rgba,
1258 int width);
1268 void I422ToARGB1555Row_Any_SSSE3(const uint8* src_y, 1259 void I422ToARGB1555Row_Any_SSSE3(const uint8* src_y,
1269 const uint8* src_u, 1260 const uint8* src_u,
1270 const uint8* src_v, 1261 const uint8* src_v,
1271 uint8* dst_rgba, 1262 uint8* dst_rgba,
1272 int width); 1263 int width);
1264 void I422ToARGB1555Row_Any_AVX2(const uint8* src_y,
1265 const uint8* src_u,
1266 const uint8* src_v,
1267 uint8* dst_rgba,
1268 int width);
1273 void I422ToRGB565Row_Any_SSSE3(const uint8* src_y, 1269 void I422ToRGB565Row_Any_SSSE3(const uint8* src_y,
1274 const uint8* src_u, 1270 const uint8* src_u,
1275 const uint8* src_v, 1271 const uint8* src_v,
1276 uint8* dst_rgba, 1272 uint8* dst_rgba,
1277 int width); 1273 int width);
1278 // RGB24/RAW are unaligned. 1274 void I422ToRGB565Row_Any_AVX2(const uint8* src_y,
1275 const uint8* src_u,
1276 const uint8* src_v,
1277 uint8* dst_rgba,
1278 int width);
1279 void I422ToRGB24Row_Any_SSSE3(const uint8* src_y, 1279 void I422ToRGB24Row_Any_SSSE3(const uint8* src_y,
1280 const uint8* src_u, 1280 const uint8* src_u,
1281 const uint8* src_v, 1281 const uint8* src_v,
1282 uint8* dst_argb, 1282 uint8* dst_argb,
1283 int width); 1283 int width);
1284 void I422ToRAWRow_Any_SSSE3(const uint8* src_y, 1284 void I422ToRAWRow_Any_SSSE3(const uint8* src_y,
1285 const uint8* src_u, 1285 const uint8* src_u,
1286 const uint8* src_v, 1286 const uint8* src_v,
1287 uint8* dst_argb, 1287 uint8* dst_argb,
1288 int width); 1288 int width);
1289
1290 void YToARGBRow_C(const uint8* src_y,
1291 uint8* dst_argb,
1292 int width);
1289 void YToARGBRow_SSE2(const uint8* src_y, 1293 void YToARGBRow_SSE2(const uint8* src_y,
1290 uint8* dst_argb, 1294 uint8* dst_argb,
1291 int width); 1295 int width);
1296 void YToARGBRow_AVX2(const uint8* src_y,
1297 uint8* dst_argb,
1298 int width);
1292 void YToARGBRow_NEON(const uint8* src_y, 1299 void YToARGBRow_NEON(const uint8* src_y,
1293 uint8* dst_argb, 1300 uint8* dst_argb,
1294 int width); 1301 int width);
1295 void YToARGBRow_Any_SSE2(const uint8* src_y, 1302 void YToARGBRow_Any_SSE2(const uint8* src_y,
1296 uint8* dst_argb, 1303 uint8* dst_argb,
1297 int width); 1304 int width);
1305 void YToARGBRow_Any_AVX2(const uint8* src_y,
1306 uint8* dst_argb,
1307 int width);
1298 void YToARGBRow_Any_NEON(const uint8* src_y, 1308 void YToARGBRow_Any_NEON(const uint8* src_y,
1299 uint8* dst_argb, 1309 uint8* dst_argb,
1300 int width); 1310 int width);
1301 1311
1302 // ARGB preattenuated alpha blend. 1312 // ARGB preattenuated alpha blend.
1303 void ARGBBlendRow_SSSE3(const uint8* src_argb, const uint8* src_argb1, 1313 void ARGBBlendRow_SSSE3(const uint8* src_argb, const uint8* src_argb1,
1304 uint8* dst_argb, int width); 1314 uint8* dst_argb, int width);
1305 void ARGBBlendRow_SSE2(const uint8* src_argb, const uint8* src_argb1, 1315 void ARGBBlendRow_SSE2(const uint8* src_argb, const uint8* src_argb1,
1306 uint8* dst_argb, int width); 1316 uint8* dst_argb, int width);
1307 void ARGBBlendRow_NEON(const uint8* src_argb, const uint8* src_argb1, 1317 void ARGBBlendRow_NEON(const uint8* src_argb, const uint8* src_argb1,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
1358 uint8* dst_argb, int width); 1368 uint8* dst_argb, int width);
1359 void ARGBSubtractRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1, 1369 void ARGBSubtractRow_Any_NEON(const uint8* src_argb, const uint8* src_argb1,
1360 uint8* dst_argb, int width); 1370 uint8* dst_argb, int width);
1361 1371
1362 void ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); 1372 void ARGBToRGB24Row_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
1363 void ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix); 1373 void ARGBToRAWRow_Any_SSSE3(const uint8* src_argb, uint8* dst_rgb, int pix);
1364 void ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); 1374 void ARGBToRGB565Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
1365 void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); 1375 void ARGBToARGB1555Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
1366 void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix); 1376 void ARGBToARGB4444Row_Any_SSE2(const uint8* src_argb, uint8* dst_rgb, int pix);
1367 1377
1378 void ARGBToRGB565Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
1379 void ARGBToARGB1555Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
1380 void ARGBToARGB4444Row_Any_AVX2(const uint8* src_argb, uint8* dst_rgb, int pix);
1381
1368 void ARGBToRGB24Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); 1382 void ARGBToRGB24Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
1369 void ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); 1383 void ARGBToRAWRow_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
1370 void ARGBToRGB565Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); 1384 void ARGBToRGB565Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
1371 void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); 1385 void ARGBToARGB1555Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
1372 void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix); 1386 void ARGBToARGB4444Row_Any_NEON(const uint8* src_argb, uint8* dst_rgb, int pix);
1373 1387
1374 void I444ToARGBRow_Any_NEON(const uint8* src_y, 1388 void I444ToARGBRow_Any_NEON(const uint8* src_y,
1375 const uint8* src_u, 1389 const uint8* src_u,
1376 const uint8* src_v, 1390 const uint8* src_v,
1377 uint8* dst_argb, 1391 uint8* dst_argb,
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
1482 void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int pix); 1496 void YUY2ToYRow_AVX2(const uint8* src_yuy2, uint8* dst_y, int pix);
1483 void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2, 1497 void YUY2ToUVRow_AVX2(const uint8* src_yuy2, int stride_yuy2,
1484 uint8* dst_u, uint8* dst_v, int pix); 1498 uint8* dst_u, uint8* dst_v, int pix);
1485 void YUY2ToUV422Row_AVX2(const uint8* src_yuy2, 1499 void YUY2ToUV422Row_AVX2(const uint8* src_yuy2,
1486 uint8* dst_u, uint8* dst_v, int pix); 1500 uint8* dst_u, uint8* dst_v, int pix);
1487 void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int pix); 1501 void YUY2ToYRow_SSE2(const uint8* src_yuy2, uint8* dst_y, int pix);
1488 void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2, 1502 void YUY2ToUVRow_SSE2(const uint8* src_yuy2, int stride_yuy2,
1489 uint8* dst_u, uint8* dst_v, int pix); 1503 uint8* dst_u, uint8* dst_v, int pix);
1490 void YUY2ToUV422Row_SSE2(const uint8* src_yuy2, 1504 void YUY2ToUV422Row_SSE2(const uint8* src_yuy2,
1491 uint8* dst_u, uint8* dst_v, int pix); 1505 uint8* dst_u, uint8* dst_v, int pix);
1492 void YUY2ToYRow_Unaligned_SSE2(const uint8* src_yuy2,
1493 uint8* dst_y, int pix);
1494 void YUY2ToUVRow_Unaligned_SSE2(const uint8* src_yuy2, int stride_yuy2,
1495 uint8* dst_u, uint8* dst_v, int pix);
1496 void YUY2ToUV422Row_Unaligned_SSE2(const uint8* src_yuy2,
1497 uint8* dst_u, uint8* dst_v, int pix);
1498 void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int pix); 1506 void YUY2ToYRow_NEON(const uint8* src_yuy2, uint8* dst_y, int pix);
1499 void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2, 1507 void YUY2ToUVRow_NEON(const uint8* src_yuy2, int stride_yuy2,
1500 uint8* dst_u, uint8* dst_v, int pix); 1508 uint8* dst_u, uint8* dst_v, int pix);
1501 void YUY2ToUV422Row_NEON(const uint8* src_yuy2, 1509 void YUY2ToUV422Row_NEON(const uint8* src_yuy2,
1502 uint8* dst_u, uint8* dst_v, int pix); 1510 uint8* dst_u, uint8* dst_v, int pix);
1503 void YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int pix); 1511 void YUY2ToYRow_C(const uint8* src_yuy2, uint8* dst_y, int pix);
1504 void YUY2ToUVRow_C(const uint8* src_yuy2, int stride_yuy2, 1512 void YUY2ToUVRow_C(const uint8* src_yuy2, int stride_yuy2,
1505 uint8* dst_u, uint8* dst_v, int pix); 1513 uint8* dst_u, uint8* dst_v, int pix);
1506 void YUY2ToUV422Row_C(const uint8* src_yuy2, 1514 void YUY2ToUV422Row_C(const uint8* src_yuy2,
1507 uint8* dst_u, uint8* dst_v, int pix); 1515 uint8* dst_u, uint8* dst_v, int pix);
(...skipping 15 matching lines...) Expand all
1523 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix); 1531 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix);
1524 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy, 1532 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
1525 uint8* dst_u, uint8* dst_v, int pix); 1533 uint8* dst_u, uint8* dst_v, int pix);
1526 void UYVYToUV422Row_AVX2(const uint8* src_uyvy, 1534 void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
1527 uint8* dst_u, uint8* dst_v, int pix); 1535 uint8* dst_u, uint8* dst_v, int pix);
1528 void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int pix); 1536 void UYVYToYRow_SSE2(const uint8* src_uyvy, uint8* dst_y, int pix);
1529 void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy, 1537 void UYVYToUVRow_SSE2(const uint8* src_uyvy, int stride_uyvy,
1530 uint8* dst_u, uint8* dst_v, int pix); 1538 uint8* dst_u, uint8* dst_v, int pix);
1531 void UYVYToUV422Row_SSE2(const uint8* src_uyvy, 1539 void UYVYToUV422Row_SSE2(const uint8* src_uyvy,
1532 uint8* dst_u, uint8* dst_v, int pix); 1540 uint8* dst_u, uint8* dst_v, int pix);
1533 void UYVYToYRow_Unaligned_SSE2(const uint8* src_uyvy,
1534 uint8* dst_y, int pix);
1535 void UYVYToUVRow_Unaligned_SSE2(const uint8* src_uyvy, int stride_uyvy,
1536 uint8* dst_u, uint8* dst_v, int pix);
1537 void UYVYToUV422Row_Unaligned_SSE2(const uint8* src_uyvy,
1538 uint8* dst_u, uint8* dst_v, int pix);
1539 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix); 1541 void UYVYToYRow_AVX2(const uint8* src_uyvy, uint8* dst_y, int pix);
1540 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy, 1542 void UYVYToUVRow_AVX2(const uint8* src_uyvy, int stride_uyvy,
1541 uint8* dst_u, uint8* dst_v, int pix); 1543 uint8* dst_u, uint8* dst_v, int pix);
1542 void UYVYToUV422Row_AVX2(const uint8* src_uyvy, 1544 void UYVYToUV422Row_AVX2(const uint8* src_uyvy,
1543 uint8* dst_u, uint8* dst_v, int pix); 1545 uint8* dst_u, uint8* dst_v, int pix);
1544 void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int pix); 1546 void UYVYToYRow_NEON(const uint8* src_uyvy, uint8* dst_y, int pix);
1545 void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy, 1547 void UYVYToUVRow_NEON(const uint8* src_uyvy, int stride_uyvy,
1546 uint8* dst_u, uint8* dst_v, int pix); 1548 uint8* dst_u, uint8* dst_v, int pix);
1547 void UYVYToUV422Row_NEON(const uint8* src_uyvy, 1549 void UYVYToUV422Row_NEON(const uint8* src_uyvy,
1548 uint8* dst_u, uint8* dst_v, int pix); 1550 uint8* dst_u, uint8* dst_v, int pix);
(...skipping 12 matching lines...) Expand all
1561 void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy, 1563 void UYVYToUVRow_Any_SSE2(const uint8* src_uyvy, int stride_uyvy,
1562 uint8* dst_u, uint8* dst_v, int pix); 1564 uint8* dst_u, uint8* dst_v, int pix);
1563 void UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy, 1565 void UYVYToUV422Row_Any_SSE2(const uint8* src_uyvy,
1564 uint8* dst_u, uint8* dst_v, int pix); 1566 uint8* dst_u, uint8* dst_v, int pix);
1565 void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int pix); 1567 void UYVYToYRow_Any_NEON(const uint8* src_uyvy, uint8* dst_y, int pix);
1566 void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy, 1568 void UYVYToUVRow_Any_NEON(const uint8* src_uyvy, int stride_uyvy,
1567 uint8* dst_u, uint8* dst_v, int pix); 1569 uint8* dst_u, uint8* dst_v, int pix);
1568 void UYVYToUV422Row_Any_NEON(const uint8* src_uyvy, 1570 void UYVYToUV422Row_Any_NEON(const uint8* src_uyvy,
1569 uint8* dst_u, uint8* dst_v, int pix); 1571 uint8* dst_u, uint8* dst_v, int pix);
1570 1572
1571 void HalfRow_C(const uint8* src_uv, int src_uv_stride,
1572 uint8* dst_uv, int pix);
1573 void HalfRow_SSE2(const uint8* src_uv, int src_uv_stride,
1574 uint8* dst_uv, int pix);
1575 void HalfRow_AVX2(const uint8* src_uv, int src_uv_stride,
1576 uint8* dst_uv, int pix);
1577 void HalfRow_NEON(const uint8* src_uv, int src_uv_stride,
1578 uint8* dst_uv, int pix);
1579
1580 void HalfRow_16_C(const uint16* src_uv, int src_uv_stride,
1581 uint16* dst_uv, int pix);
1582
1583 void ARGBToBayerRow_C(const uint8* src_argb, uint8* dst_bayer,
1584 uint32 selector, int pix);
1585 void ARGBToBayerRow_SSSE3(const uint8* src_argb, uint8* dst_bayer,
1586 uint32 selector, int pix);
1587 void ARGBToBayerRow_NEON(const uint8* src_argb, uint8* dst_bayer,
1588 uint32 selector, int pix);
1589 void ARGBToBayerRow_Any_SSSE3(const uint8* src_argb, uint8* dst_bayer,
1590 uint32 selector, int pix);
1591 void ARGBToBayerRow_Any_NEON(const uint8* src_argb, uint8* dst_bayer,
1592 uint32 selector, int pix);
1593 void ARGBToBayerGGRow_C(const uint8* src_argb, uint8* dst_bayer, 1573 void ARGBToBayerGGRow_C(const uint8* src_argb, uint8* dst_bayer,
1594 uint32 /* selector */, int pix); 1574 uint32 /* selector */, int pix);
1595 void ARGBToBayerGGRow_SSE2(const uint8* src_argb, uint8* dst_bayer, 1575 void ARGBToBayerGGRow_SSE2(const uint8* src_argb, uint8* dst_bayer,
1596 uint32 /* selector */, int pix); 1576 uint32 /* selector */, int pix);
1597 void ARGBToBayerGGRow_NEON(const uint8* src_argb, uint8* dst_bayer, 1577 void ARGBToBayerGGRow_NEON(const uint8* src_argb, uint8* dst_bayer,
1598 uint32 /* selector */, int pix); 1578 uint32 /* selector */, int pix);
1599 void ARGBToBayerGGRow_Any_SSE2(const uint8* src_argb, uint8* dst_bayer, 1579 void ARGBToBayerGGRow_Any_SSE2(const uint8* src_argb, uint8* dst_bayer,
1600 uint32 /* selector */, int pix); 1580 uint32 /* selector */, int pix);
1601 void ARGBToBayerGGRow_Any_NEON(const uint8* src_argb, uint8* dst_bayer, 1581 void ARGBToBayerGGRow_Any_NEON(const uint8* src_argb, uint8* dst_bayer,
1602 uint32 /* selector */, int pix); 1582 uint32 /* selector */, int pix);
(...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after
1729 int source_y_fraction); 1709 int source_y_fraction);
1730 void InterpolateRow_SSSE3(uint8* dst_ptr, const uint8* src_ptr, 1710 void InterpolateRow_SSSE3(uint8* dst_ptr, const uint8* src_ptr,
1731 ptrdiff_t src_stride_ptr, int width, 1711 ptrdiff_t src_stride_ptr, int width,
1732 int source_y_fraction); 1712 int source_y_fraction);
1733 void InterpolateRow_AVX2(uint8* dst_ptr, const uint8* src_ptr, 1713 void InterpolateRow_AVX2(uint8* dst_ptr, const uint8* src_ptr,
1734 ptrdiff_t src_stride_ptr, int width, 1714 ptrdiff_t src_stride_ptr, int width,
1735 int source_y_fraction); 1715 int source_y_fraction);
1736 void InterpolateRow_NEON(uint8* dst_ptr, const uint8* src_ptr, 1716 void InterpolateRow_NEON(uint8* dst_ptr, const uint8* src_ptr,
1737 ptrdiff_t src_stride_ptr, int width, 1717 ptrdiff_t src_stride_ptr, int width,
1738 int source_y_fraction); 1718 int source_y_fraction);
1739 void InterpolateRows_MIPS_DSPR2(uint8* dst_ptr, const uint8* src_ptr, 1719 void InterpolateRow_MIPS_DSPR2(uint8* dst_ptr, const uint8* src_ptr,
1740 ptrdiff_t src_stride_ptr, int width, 1720 ptrdiff_t src_stride_ptr, int width,
1741 int source_y_fraction); 1721 int source_y_fraction);
1742 void InterpolateRow_Unaligned_SSE2(uint8* dst_ptr, const uint8* src_ptr,
1743 ptrdiff_t src_stride_ptr, int width,
1744 int source_y_fraction);
1745 void InterpolateRow_Unaligned_SSSE3(uint8* dst_ptr, const uint8* src_ptr,
1746 ptrdiff_t src_stride_ptr, int width,
1747 int source_y_fraction);
1748 void InterpolateRow_Any_NEON(uint8* dst_ptr, const uint8* src_ptr, 1722 void InterpolateRow_Any_NEON(uint8* dst_ptr, const uint8* src_ptr,
1749 ptrdiff_t src_stride_ptr, int width, 1723 ptrdiff_t src_stride_ptr, int width,
1750 int source_y_fraction); 1724 int source_y_fraction);
1751 void InterpolateRow_Any_SSE2(uint8* dst_ptr, const uint8* src_ptr, 1725 void InterpolateRow_Any_SSE2(uint8* dst_ptr, const uint8* src_ptr,
1752 ptrdiff_t src_stride_ptr, int width, 1726 ptrdiff_t src_stride_ptr, int width,
1753 int source_y_fraction); 1727 int source_y_fraction);
1754 void InterpolateRow_Any_SSSE3(uint8* dst_ptr, const uint8* src_ptr, 1728 void InterpolateRow_Any_SSSE3(uint8* dst_ptr, const uint8* src_ptr,
1755 ptrdiff_t src_stride_ptr, int width, 1729 ptrdiff_t src_stride_ptr, int width,
1756 int source_y_fraction); 1730 int source_y_fraction);
1757 void InterpolateRow_Any_AVX2(uint8* dst_ptr, const uint8* src_ptr, 1731 void InterpolateRow_Any_AVX2(uint8* dst_ptr, const uint8* src_ptr,
1758 ptrdiff_t src_stride_ptr, int width, 1732 ptrdiff_t src_stride_ptr, int width,
1759 int source_y_fraction); 1733 int source_y_fraction);
1760 void InterpolateRows_Any_MIPS_DSPR2(uint8* dst_ptr, const uint8* src_ptr, 1734 void InterpolateRow_Any_MIPS_DSPR2(uint8* dst_ptr, const uint8* src_ptr,
1761 ptrdiff_t src_stride_ptr, int width, 1735 ptrdiff_t src_stride_ptr, int width,
1762 int source_y_fraction); 1736 int source_y_fraction);
1763 1737
1764 void InterpolateRow_16_C(uint16* dst_ptr, const uint16* src_ptr, 1738 void InterpolateRow_16_C(uint16* dst_ptr, const uint16* src_ptr,
1765 ptrdiff_t src_stride_ptr, 1739 ptrdiff_t src_stride_ptr,
1766 int width, int source_y_fraction); 1740 int width, int source_y_fraction);
1767 1741
1768 // Sobel images. 1742 // Sobel images.
1769 void SobelXRow_C(const uint8* src_y0, const uint8* src_y1, const uint8* src_y2, 1743 void SobelXRow_C(const uint8* src_y0, const uint8* src_y1, const uint8* src_y2,
1770 uint8* dst_sobelx, int width); 1744 uint8* dst_sobelx, int width);
1771 void SobelXRow_SSE2(const uint8* src_y0, const uint8* src_y1, 1745 void SobelXRow_SSE2(const uint8* src_y0, const uint8* src_y1,
1772 const uint8* src_y2, uint8* dst_sobelx, int width); 1746 const uint8* src_y2, uint8* dst_sobelx, int width);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
1812 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb, 1786 void ARGBLumaColorTableRow_SSSE3(const uint8* src_argb, uint8* dst_argb,
1813 int width, 1787 int width,
1814 const uint8* luma, uint32 lumacoeff); 1788 const uint8* luma, uint32 lumacoeff);
1815 1789
1816 #ifdef __cplusplus 1790 #ifdef __cplusplus
1817 } // extern "C" 1791 } // extern "C"
1818 } // namespace libyuv 1792 } // namespace libyuv
1819 #endif 1793 #endif
1820 1794
1821 #endif // INCLUDE_LIBYUV_ROW_H_ NOLINT 1795 #endif // INCLUDE_LIBYUV_ROW_H_ NOLINT
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698