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

Side by Side Diff: source/row_neon.cc

Issue 1353923003: j422toabgr neon port using i422toabgr matrix function. (Closed) Base URL: https://chromium.googlesource.com/libyuv/libyuv@master
Patch Set: Created 5 years, 3 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
« no previous file with comments | « source/row_common.cc ('k') | source/row_neon64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 "+r"(width) // %4 361 "+r"(width) // %4
362 : [kUVToRB]"r"(&kYuvConstantsNEON.kUVToRB), // %5 362 : [kUVToRB]"r"(&kYuvConstantsNEON.kUVToRB), // %5
363 [kUVToG]"r"(&kYuvConstantsNEON.kUVToG), // %6 363 [kUVToG]"r"(&kYuvConstantsNEON.kUVToG), // %6
364 [kUVBiasBGR]"r"(&kYuvConstantsNEON.kUVBiasBGR), 364 [kUVBiasBGR]"r"(&kYuvConstantsNEON.kUVBiasBGR),
365 [kYToRgb]"r"(&kYuvConstantsNEON.kYToRgb) 365 [kYToRgb]"r"(&kYuvConstantsNEON.kYToRgb)
366 : "cc", "memory", "q0", "q1", "q2", "q3", "q4", 366 : "cc", "memory", "q0", "q1", "q2", "q3", "q4",
367 "q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15" 367 "q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
368 ); 368 );
369 } 369 }
370 370
371 void I422ToABGRRow_NEON(const uint8* src_y, 371 void I422ToABGRMatrixRow_NEON(const uint8* src_y,
372 const uint8* src_u, 372 const uint8* src_u,
373 const uint8* src_v, 373 const uint8* src_v,
374 uint8* dst_abgr, 374 uint8* dst_abgr,
375 int width) { 375 struct YuvConstantsNEON* YuvConstants,
376 int width) {
376 asm volatile ( 377 asm volatile (
377 YUV422TORGB_SETUP_REG 378 YUV422TORGB_SETUP_REG
378 "1: \n" 379 "1: \n"
379 READYUV422 380 READYUV422
380 YUV422TORGB 381 YUV422TORGB
381 "subs %4, %4, #8 \n" 382 "subs %4, %4, #8 \n"
382 "vswp.u8 d20, d22 \n" 383 "vswp.u8 d20, d22 \n"
383 "vmov.u8 d23, #255 \n" 384 "vmov.u8 d23, #255 \n"
384 MEMACCESS(3) 385 MEMACCESS(3)
385 "vst4.8 {d20, d21, d22, d23}, [%3]! \n" 386 "vst4.8 {d20, d21, d22, d23}, [%3]! \n"
386 "bgt 1b \n" 387 "bgt 1b \n"
387 : "+r"(src_y), // %0 388 : "+r"(src_y), // %0
388 "+r"(src_u), // %1 389 "+r"(src_u), // %1
389 "+r"(src_v), // %2 390 "+r"(src_v), // %2
390 "+r"(dst_abgr), // %3 391 "+r"(dst_abgr), // %3
391 "+r"(width) // %4 392 "+r"(width) // %4
392 : [kUVToRB]"r"(&kYuvConstantsNEON.kUVToRB), // %5 393 : [kUVToRB]"r"(&YuvConstants->kUVToRB), // %5
393 [kUVToG]"r"(&kYuvConstantsNEON.kUVToG), // %6 394 [kUVToG]"r"(&YuvConstants->kUVToG), // %6
394 [kUVBiasBGR]"r"(&kYuvConstantsNEON.kUVBiasBGR), 395 [kUVBiasBGR]"r"(&YuvConstants->kUVBiasBGR),
395 [kYToRgb]"r"(&kYuvConstantsNEON.kYToRgb) 396 [kYToRgb]"r"(&YuvConstants->kYToRgb)
396 : "cc", "memory", "q0", "q1", "q2", "q3", "q4", 397 : "cc", "memory", "q0", "q1", "q2", "q3", "q4",
397 "q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15" 398 "q8", "q9", "q10", "q11", "q12", "q13", "q14", "q15"
398 ); 399 );
399 } 400 }
400 401
401 void I422ToRGBARow_NEON(const uint8* src_y, 402 void I422ToRGBARow_NEON(const uint8* src_y,
402 const uint8* src_u, 403 const uint8* src_u,
403 const uint8* src_v, 404 const uint8* src_v,
404 uint8* dst_rgba, 405 uint8* dst_rgba,
405 int width) { 406 int width) {
(...skipping 2673 matching lines...) Expand 10 before | Expand all | Expand 10 after
3079 "r"(6) // %5 3080 "r"(6) // %5
3080 : "cc", "memory", "q0", "q1" // Clobber List 3081 : "cc", "memory", "q0", "q1" // Clobber List
3081 ); 3082 );
3082 } 3083 }
3083 #endif // defined(__ARM_NEON__) && !defined(__aarch64__) 3084 #endif // defined(__ARM_NEON__) && !defined(__aarch64__)
3084 3085
3085 #ifdef __cplusplus 3086 #ifdef __cplusplus
3086 } // extern "C" 3087 } // extern "C"
3087 } // namespace libyuv 3088 } // namespace libyuv
3088 #endif 3089 #endif
OLDNEW
« no previous file with comments | « source/row_common.cc ('k') | source/row_neon64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698