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

Side by Side Diff: source/row_any.cc

Issue 2636483002: Add MSA optimized NV12/21 To RGB row functions (Closed)
Patch Set: Created 3 years, 11 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 2012 The LibYuv Project Authors. All rights reserved. 2 * Copyright 2012 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
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
248 #endif 248 #endif
249 #ifdef HAS_ARGBSUBTRACTROW_MSA 249 #ifdef HAS_ARGBSUBTRACTROW_MSA
250 ANY21(ARGBSubtractRow_Any_MSA, ARGBSubtractRow_MSA, 0, 4, 4, 4, 7) 250 ANY21(ARGBSubtractRow_Any_MSA, ARGBSubtractRow_MSA, 0, 4, 4, 4, 7)
251 #endif 251 #endif
252 #ifdef HAS_SOBELROW_SSE2 252 #ifdef HAS_SOBELROW_SSE2
253 ANY21(SobelRow_Any_SSE2, SobelRow_SSE2, 0, 1, 1, 4, 15) 253 ANY21(SobelRow_Any_SSE2, SobelRow_SSE2, 0, 1, 1, 4, 15)
254 #endif 254 #endif
255 #ifdef HAS_SOBELROW_NEON 255 #ifdef HAS_SOBELROW_NEON
256 ANY21(SobelRow_Any_NEON, SobelRow_NEON, 0, 1, 1, 4, 7) 256 ANY21(SobelRow_Any_NEON, SobelRow_NEON, 0, 1, 1, 4, 7)
257 #endif 257 #endif
258 #ifdef HAS_SOBELROW_MSA
259 ANY21(SobelRow_Any_MSA, SobelRow_MSA, 0, 1, 1, 4, 15)
260 #endif
258 #ifdef HAS_SOBELTOPLANEROW_SSE2 261 #ifdef HAS_SOBELTOPLANEROW_SSE2
259 ANY21(SobelToPlaneRow_Any_SSE2, SobelToPlaneRow_SSE2, 0, 1, 1, 1, 15) 262 ANY21(SobelToPlaneRow_Any_SSE2, SobelToPlaneRow_SSE2, 0, 1, 1, 1, 15)
260 #endif 263 #endif
261 #ifdef HAS_SOBELTOPLANEROW_NEON 264 #ifdef HAS_SOBELTOPLANEROW_NEON
262 ANY21(SobelToPlaneRow_Any_NEON, SobelToPlaneRow_NEON, 0, 1, 1, 1, 15) 265 ANY21(SobelToPlaneRow_Any_NEON, SobelToPlaneRow_NEON, 0, 1, 1, 1, 15)
263 #endif 266 #endif
267 #ifdef HAS_SOBELTOPLANEROW_MSA
268 ANY21(SobelToPlaneRow_Any_MSA, SobelToPlaneRow_MSA, 0, 1, 1, 1, 31)
269 #endif
264 #ifdef HAS_SOBELXYROW_SSE2 270 #ifdef HAS_SOBELXYROW_SSE2
265 ANY21(SobelXYRow_Any_SSE2, SobelXYRow_SSE2, 0, 1, 1, 4, 15) 271 ANY21(SobelXYRow_Any_SSE2, SobelXYRow_SSE2, 0, 1, 1, 4, 15)
266 #endif 272 #endif
267 #ifdef HAS_SOBELXYROW_NEON 273 #ifdef HAS_SOBELXYROW_NEON
268 ANY21(SobelXYRow_Any_NEON, SobelXYRow_NEON, 0, 1, 1, 4, 7) 274 ANY21(SobelXYRow_Any_NEON, SobelXYRow_NEON, 0, 1, 1, 4, 7)
269 #endif 275 #endif
276 #ifdef HAS_SOBELXYROW_MSA
277 ANY21(SobelXYRow_Any_MSA, SobelXYRow_MSA, 0, 1, 1, 4, 15)
278 #endif
270 #undef ANY21 279 #undef ANY21
271 280
272 // Any 2 planes to 1 with yuvconstants 281 // Any 2 planes to 1 with yuvconstants
273 #define ANY21C(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, SBPP2, BPP, MASK) \ 282 #define ANY21C(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, SBPP2, BPP, MASK) \
274 void NAMEANY(const uint8* y_buf, const uint8* uv_buf, uint8* dst_ptr, \ 283 void NAMEANY(const uint8* y_buf, const uint8* uv_buf, uint8* dst_ptr, \
275 const struct YuvConstants* yuvconstants, int width) { \ 284 const struct YuvConstants* yuvconstants, int width) { \
276 SIMD_ALIGNED(uint8 temp[64 * 3]); \ 285 SIMD_ALIGNED(uint8 temp[64 * 3]); \
277 memset(temp, 0, 64 * 2); /* for msan */ \ 286 memset(temp, 0, 64 * 2); /* for msan */ \
278 int r = width & MASK; \ 287 int r = width & MASK; \
279 int n = width & ~MASK; \ 288 int n = width & ~MASK; \
(...skipping 13 matching lines...) Expand all
293 #endif 302 #endif
294 #ifdef HAS_NV12TOARGBROW_AVX2 303 #ifdef HAS_NV12TOARGBROW_AVX2
295 ANY21C(NV12ToARGBRow_Any_AVX2, NV12ToARGBRow_AVX2, 1, 1, 2, 4, 15) 304 ANY21C(NV12ToARGBRow_Any_AVX2, NV12ToARGBRow_AVX2, 1, 1, 2, 4, 15)
296 #endif 305 #endif
297 #ifdef HAS_NV12TOARGBROW_NEON 306 #ifdef HAS_NV12TOARGBROW_NEON
298 ANY21C(NV12ToARGBRow_Any_NEON, NV12ToARGBRow_NEON, 1, 1, 2, 4, 7) 307 ANY21C(NV12ToARGBRow_Any_NEON, NV12ToARGBRow_NEON, 1, 1, 2, 4, 7)
299 #endif 308 #endif
300 #ifdef HAS_NV12TOARGBROW_DSPR2 309 #ifdef HAS_NV12TOARGBROW_DSPR2
301 ANY21C(NV12ToARGBRow_Any_DSPR2, NV12ToARGBRow_DSPR2, 1, 1, 2, 4, 7) 310 ANY21C(NV12ToARGBRow_Any_DSPR2, NV12ToARGBRow_DSPR2, 1, 1, 2, 4, 7)
302 #endif 311 #endif
312 #ifdef HAS_NV12TOARGBROW_MSA
313 ANY21C(NV12ToARGBRow_Any_MSA, NV12ToARGBRow_MSA, 1, 1, 2, 4, 7)
314 #endif
303 #ifdef HAS_NV21TOARGBROW_SSSE3 315 #ifdef HAS_NV21TOARGBROW_SSSE3
304 ANY21C(NV21ToARGBRow_Any_SSSE3, NV21ToARGBRow_SSSE3, 1, 1, 2, 4, 7) 316 ANY21C(NV21ToARGBRow_Any_SSSE3, NV21ToARGBRow_SSSE3, 1, 1, 2, 4, 7)
305 #endif 317 #endif
306 #ifdef HAS_NV21TOARGBROW_AVX2 318 #ifdef HAS_NV21TOARGBROW_AVX2
307 ANY21C(NV21ToARGBRow_Any_AVX2, NV21ToARGBRow_AVX2, 1, 1, 2, 4, 15) 319 ANY21C(NV21ToARGBRow_Any_AVX2, NV21ToARGBRow_AVX2, 1, 1, 2, 4, 15)
308 #endif 320 #endif
309 #ifdef HAS_NV21TOARGBROW_NEON 321 #ifdef HAS_NV21TOARGBROW_NEON
310 ANY21C(NV21ToARGBRow_Any_NEON, NV21ToARGBRow_NEON, 1, 1, 2, 4, 7) 322 ANY21C(NV21ToARGBRow_Any_NEON, NV21ToARGBRow_NEON, 1, 1, 2, 4, 7)
311 #endif 323 #endif
324 #ifdef HAS_NV21TOARGBROW_MSA
325 ANY21C(NV21ToARGBRow_Any_MSA, NV21ToARGBRow_MSA, 1, 1, 2, 4, 7)
326 #endif
312 #ifdef HAS_NV12TORGB565ROW_SSSE3 327 #ifdef HAS_NV12TORGB565ROW_SSSE3
313 ANY21C(NV12ToRGB565Row_Any_SSSE3, NV12ToRGB565Row_SSSE3, 1, 1, 2, 2, 7) 328 ANY21C(NV12ToRGB565Row_Any_SSSE3, NV12ToRGB565Row_SSSE3, 1, 1, 2, 2, 7)
314 #endif 329 #endif
315 #ifdef HAS_NV12TORGB565ROW_AVX2 330 #ifdef HAS_NV12TORGB565ROW_AVX2
316 ANY21C(NV12ToRGB565Row_Any_AVX2, NV12ToRGB565Row_AVX2, 1, 1, 2, 2, 15) 331 ANY21C(NV12ToRGB565Row_Any_AVX2, NV12ToRGB565Row_AVX2, 1, 1, 2, 2, 15)
317 #endif 332 #endif
318 #ifdef HAS_NV12TORGB565ROW_NEON 333 #ifdef HAS_NV12TORGB565ROW_NEON
319 ANY21C(NV12ToRGB565Row_Any_NEON, NV12ToRGB565Row_NEON, 1, 1, 2, 2, 7) 334 ANY21C(NV12ToRGB565Row_Any_NEON, NV12ToRGB565Row_NEON, 1, 1, 2, 2, 7)
320 #endif 335 #endif
336 #ifdef HAS_NV12TORGB565ROW_MSA
337 ANY21C(NV12ToRGB565Row_Any_MSA, NV12ToRGB565Row_MSA, 1, 1, 2, 2, 7)
338 #endif
321 #undef ANY21C 339 #undef ANY21C
322 340
323 // Any 1 to 1. 341 // Any 1 to 1.
324 #define ANY11(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, BPP, MASK) \ 342 #define ANY11(NAMEANY, ANY_SIMD, UVSHIFT, SBPP, BPP, MASK) \
325 void NAMEANY(const uint8* src_ptr, uint8* dst_ptr, int width) { \ 343 void NAMEANY(const uint8* src_ptr, uint8* dst_ptr, int width) { \
326 SIMD_ALIGNED(uint8 temp[128 * 2]); \ 344 SIMD_ALIGNED(uint8 temp[128 * 2]); \
327 memset(temp, 0, 128); /* for YUY2 and msan */ \ 345 memset(temp, 0, 128); /* for YUY2 and msan */ \
328 int r = width & MASK; \ 346 int r = width & MASK; \
329 int n = width & ~MASK; \ 347 int n = width & ~MASK; \
330 if (n > 0) { \ 348 if (n > 0) { \
(...skipping 662 matching lines...) Expand 10 before | Expand all | Expand 10 after
993 #endif 1011 #endif
994 #ifdef HAS_UYVYTOUVROW_MSA 1012 #ifdef HAS_UYVYTOUVROW_MSA
995 ANY12S(UYVYToUVRow_Any_MSA, UYVYToUVRow_MSA, 1, 4, 31) 1013 ANY12S(UYVYToUVRow_Any_MSA, UYVYToUVRow_MSA, 1, 4, 31)
996 #endif 1014 #endif
997 #undef ANY12S 1015 #undef ANY12S
998 1016
999 #ifdef __cplusplus 1017 #ifdef __cplusplus
1000 } // extern "C" 1018 } // extern "C"
1001 } // namespace libyuv 1019 } // namespace libyuv
1002 #endif 1020 #endif
OLDNEW
« no previous file with comments | « source/planar_functions.cc ('k') | source/row_msa.cc » ('j') | source/row_msa.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698