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 581 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
592 | 592 |
593 #if defined(__arm__) || defined(__aarch64__) | 593 #if defined(__arm__) || defined(__aarch64__) |
594 #undef MEMACCESS | 594 #undef MEMACCESS |
595 #if defined(__native_client__) | 595 #if defined(__native_client__) |
596 #define MEMACCESS(base) ".p2align 3\nbic %" #base ", #0xc0000000\n" | 596 #define MEMACCESS(base) ".p2align 3\nbic %" #base ", #0xc0000000\n" |
597 #else | 597 #else |
598 #define MEMACCESS(base) | 598 #define MEMACCESS(base) |
599 #endif | 599 #endif |
600 #endif | 600 #endif |
601 | 601 |
| 602 // Intel Code Analizer markers. Insert IACA_START IACA_END around code to be |
| 603 // measured and then run with iaca -64 libyuv_unittest. |
| 604 // IACA_ASM_START amd IACA_ASM_END are equivalents that can be used within |
| 605 // inline assembly blocks. |
| 606 // example of iaca: |
| 607 // ~/iaca-lin64/bin/iaca.sh -64 -analysis LATENCY out/Release/libyuv_unittest |
| 608 |
| 609 #if defined(__GNUC__) |
| 610 #define IACA_ASM_START \ |
| 611 ".byte 0x0F, 0x0B\n" \ |
| 612 " movl $111, %%ebx\n" \ |
| 613 ".byte 0x64, 0x67, 0x90\n" |
| 614 |
| 615 #define IACA_ASM_END \ |
| 616 " movl $222, %%ebx\n" \ |
| 617 ".byte 0x64, 0x67, 0x90\n" \ |
| 618 ".byte 0x0F, 0x0B\n" |
| 619 |
| 620 #define IACA_SSC_MARK(MARK_ID) \ |
| 621 __asm__ __volatile__("\n\t movl $" #MARK_ID \ |
| 622 ", %%ebx" \ |
| 623 "\n\t .byte 0x64, 0x67, 0x90" \ |
| 624 : \ |
| 625 : \ |
| 626 : "memory"); |
| 627 |
| 628 #define IACA_UD_BYTES __asm__ __volatile__("\n\t .byte 0x0F, 0x0B"); |
| 629 |
| 630 #else |
| 631 #define IACA_UD_BYTES \ |
| 632 { __asm _emit 0x0F __asm _emit 0x0B } |
| 633 |
| 634 #define IACA_SSC_MARK(x) \ |
| 635 { __asm mov ebx, x __asm _emit 0x64 __asm _emit 0x67 __asm _emit 0x90 } |
| 636 |
| 637 #define IACA_VC64_START __writegsbyte(111, 111); |
| 638 #define IACA_VC64_END __writegsbyte(222, 222); |
| 639 #endif |
| 640 |
| 641 #define IACA_START \ |
| 642 { \ |
| 643 IACA_UD_BYTES \ |
| 644 IACA_SSC_MARK(111) \ |
| 645 } |
| 646 #define IACA_END \ |
| 647 { \ |
| 648 IACA_SSC_MARK(222) \ |
| 649 IACA_UD_BYTES \ |
| 650 } |
| 651 |
602 void I444ToARGBRow_NEON(const uint8* src_y, | 652 void I444ToARGBRow_NEON(const uint8* src_y, |
603 const uint8* src_u, | 653 const uint8* src_u, |
604 const uint8* src_v, | 654 const uint8* src_v, |
605 uint8* dst_argb, | 655 uint8* dst_argb, |
606 const struct YuvConstants* yuvconstants, | 656 const struct YuvConstants* yuvconstants, |
607 int width); | 657 int width); |
608 void I422ToARGBRow_NEON(const uint8* src_y, | 658 void I422ToARGBRow_NEON(const uint8* src_y, |
609 const uint8* src_u, | 659 const uint8* src_u, |
610 const uint8* src_v, | 660 const uint8* src_v, |
611 uint8* dst_argb, | 661 uint8* dst_argb, |
(...skipping 2236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2848 int width, | 2898 int width, |
2849 const uint8* luma, | 2899 const uint8* luma, |
2850 uint32 lumacoeff); | 2900 uint32 lumacoeff); |
2851 | 2901 |
2852 #ifdef __cplusplus | 2902 #ifdef __cplusplus |
2853 } // extern "C" | 2903 } // extern "C" |
2854 } // namespace libyuv | 2904 } // namespace libyuv |
2855 #endif | 2905 #endif |
2856 | 2906 |
2857 #endif // INCLUDE_LIBYUV_ROW_H_ | 2907 #endif // INCLUDE_LIBYUV_ROW_H_ |
OLD | NEW |