| 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 2565 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2576 "bgt 1b \n" | 2576 "bgt 1b \n" |
| 2577 : "+r"(src_argb), // %0 | 2577 : "+r"(src_argb), // %0 |
| 2578 "+r"(dst_argb), // %1 | 2578 "+r"(dst_argb), // %1 |
| 2579 "+r"(width) // %2 | 2579 "+r"(width) // %2 |
| 2580 : "r"(matrix_argb) // %3 | 2580 : "r"(matrix_argb) // %3 |
| 2581 : "cc", "memory", "q0", "q1", "q2", "q4", "q5", "q6", "q7", "q8", "q9", | 2581 : "cc", "memory", "q0", "q1", "q2", "q4", "q5", "q6", "q7", "q8", "q9", |
| 2582 "q10", "q11", "q12", "q13", "q14", "q15" | 2582 "q10", "q11", "q12", "q13", "q14", "q15" |
| 2583 ); | 2583 ); |
| 2584 } | 2584 } |
| 2585 | 2585 |
| 2586 // TODO(fbarchard): fix vqshrun in ARGBMultiplyRow_NEON and reenable. | |
| 2587 #ifdef HAS_ARGBMULTIPLYROW_NEON | |
| 2588 // Multiply 2 rows of ARGB pixels together, 8 pixels at a time. | 2586 // Multiply 2 rows of ARGB pixels together, 8 pixels at a time. |
| 2589 void ARGBMultiplyRow_NEON(const uint8* src_argb0, const uint8* src_argb1, | 2587 void ARGBMultiplyRow_NEON(const uint8* src_argb0, const uint8* src_argb1, |
| 2590 uint8* dst_argb, int width) { | 2588 uint8* dst_argb, int width) { |
| 2591 asm volatile ( | 2589 asm volatile ( |
| 2592 // 8 pixel loop. | 2590 // 8 pixel loop. |
| 2593 "1: \n" | 2591 "1: \n" |
| 2594 MEMACCESS(0) | 2592 MEMACCESS(0) |
| 2595 "vld4.8 {d0, d2, d4, d6}, [%0]! \n" // load 8 ARGB pixels. | 2593 "vld4.8 {d0, d2, d4, d6}, [%0]! \n" // load 8 ARGB pixels. |
| 2596 MEMACCESS(1) | 2594 MEMACCESS(1) |
| 2597 "vld4.8 {d1, d3, d5, d7}, [%1]! \n" // load 8 more ARGB pixels. | 2595 "vld4.8 {d1, d3, d5, d7}, [%1]! \n" // load 8 more ARGB pixels. |
| (...skipping 11 matching lines...) Expand all Loading... |
| 2609 "bgt 1b \n" | 2607 "bgt 1b \n" |
| 2610 | 2608 |
| 2611 : "+r"(src_argb0), // %0 | 2609 : "+r"(src_argb0), // %0 |
| 2612 "+r"(src_argb1), // %1 | 2610 "+r"(src_argb1), // %1 |
| 2613 "+r"(dst_argb), // %2 | 2611 "+r"(dst_argb), // %2 |
| 2614 "+r"(width) // %3 | 2612 "+r"(width) // %3 |
| 2615 : | 2613 : |
| 2616 : "cc", "memory", "q0", "q1", "q2", "q3" | 2614 : "cc", "memory", "q0", "q1", "q2", "q3" |
| 2617 ); | 2615 ); |
| 2618 } | 2616 } |
| 2619 #endif // HAS_ARGBMULTIPLYROW_NEON | |
| 2620 | 2617 |
| 2621 // Add 2 rows of ARGB pixels together, 8 pixels at a time. | 2618 // Add 2 rows of ARGB pixels together, 8 pixels at a time. |
| 2622 void ARGBAddRow_NEON(const uint8* src_argb0, const uint8* src_argb1, | 2619 void ARGBAddRow_NEON(const uint8* src_argb0, const uint8* src_argb1, |
| 2623 uint8* dst_argb, int width) { | 2620 uint8* dst_argb, int width) { |
| 2624 asm volatile ( | 2621 asm volatile ( |
| 2625 // 8 pixel loop. | 2622 // 8 pixel loop. |
| 2626 "1: \n" | 2623 "1: \n" |
| 2627 MEMACCESS(0) | 2624 MEMACCESS(0) |
| 2628 "vld4.8 {d0, d1, d2, d3}, [%0]! \n" // load 8 ARGB pixels. | 2625 "vld4.8 {d0, d1, d2, d3}, [%0]! \n" // load 8 ARGB pixels. |
| 2629 MEMACCESS(1) | 2626 MEMACCESS(1) |
| (...skipping 207 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2837 "r"(6) // %5 | 2834 "r"(6) // %5 |
| 2838 : "cc", "memory", "q0", "q1" // Clobber List | 2835 : "cc", "memory", "q0", "q1" // Clobber List |
| 2839 ); | 2836 ); |
| 2840 } | 2837 } |
| 2841 #endif // defined(__ARM_NEON__) && !defined(__aarch64__) | 2838 #endif // defined(__ARM_NEON__) && !defined(__aarch64__) |
| 2842 | 2839 |
| 2843 #ifdef __cplusplus | 2840 #ifdef __cplusplus |
| 2844 } // extern "C" | 2841 } // extern "C" |
| 2845 } // namespace libyuv | 2842 } // namespace libyuv |
| 2846 #endif | 2843 #endif |
| OLD | NEW |