| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |