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 593 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
604 | 604 |
605 #if defined(__arm__) || defined(__aarch64__) | 605 #if defined(__arm__) || defined(__aarch64__) |
606 #undef MEMACCESS | 606 #undef MEMACCESS |
607 #if defined(__native_client__) | 607 #if defined(__native_client__) |
608 #define MEMACCESS(base) ".p2align 3\nbic %" #base ", #0xc0000000\n" | 608 #define MEMACCESS(base) ".p2align 3\nbic %" #base ", #0xc0000000\n" |
609 #else | 609 #else |
610 #define MEMACCESS(base) | 610 #define MEMACCESS(base) |
611 #endif | 611 #endif |
612 #endif | 612 #endif |
613 | 613 |
| 614 // Intel Code Analizer markers. Insert IACA_START IACA_END around code to be |
| 615 // measured and then run with iaca -64 libyuv_unittest. |
| 616 // IACA_ASM_START amd IACA_ASM_END are equivalents that can be used within |
| 617 // inline assembly blocks. |
| 618 // example of iaca: |
| 619 // ~/iaca-lin64/bin/iaca.sh -64 -analysis LATENCY out/Release/libyuv_unittest |
| 620 |
| 621 #if defined(__x86_64__) || defined(__i386__) |
| 622 |
| 623 #define IACA_ASM_START \ |
| 624 ".byte 0x0F, 0x0B\n" \ |
| 625 " movl $111, %%ebx\n" \ |
| 626 ".byte 0x64, 0x67, 0x90\n" |
| 627 |
| 628 #define IACA_ASM_END \ |
| 629 " movl $222, %%ebx\n" \ |
| 630 ".byte 0x64, 0x67, 0x90\n" \ |
| 631 ".byte 0x0F, 0x0B\n" |
| 632 |
| 633 #define IACA_SSC_MARK(MARK_ID) \ |
| 634 __asm__ __volatile__("\n\t movl $" #MARK_ID \ |
| 635 ", %%ebx" \ |
| 636 "\n\t .byte 0x64, 0x67, 0x90" \ |
| 637 : \ |
| 638 : \ |
| 639 : "memory"); |
| 640 |
| 641 #define IACA_UD_BYTES __asm__ __volatile__("\n\t .byte 0x0F, 0x0B"); |
| 642 |
| 643 #else /* Visual C */ |
| 644 #define IACA_UD_BYTES \ |
| 645 { __asm _emit 0x0F __asm _emit 0x0B } |
| 646 |
| 647 #define IACA_SSC_MARK(x) \ |
| 648 { __asm mov ebx, x __asm _emit 0x64 __asm _emit 0x67 __asm _emit 0x90 } |
| 649 |
| 650 #define IACA_VC64_START __writegsbyte(111, 111); |
| 651 #define IACA_VC64_END __writegsbyte(222, 222); |
| 652 #endif |
| 653 |
| 654 #define IACA_START \ |
| 655 { \ |
| 656 IACA_UD_BYTES \ |
| 657 IACA_SSC_MARK(111) \ |
| 658 } |
| 659 #define IACA_END \ |
| 660 { \ |
| 661 IACA_SSC_MARK(222) \ |
| 662 IACA_UD_BYTES \ |
| 663 } |
| 664 |
614 void I444ToARGBRow_NEON(const uint8* src_y, | 665 void I444ToARGBRow_NEON(const uint8* src_y, |
615 const uint8* src_u, | 666 const uint8* src_u, |
616 const uint8* src_v, | 667 const uint8* src_v, |
617 uint8* dst_argb, | 668 uint8* dst_argb, |
618 const struct YuvConstants* yuvconstants, | 669 const struct YuvConstants* yuvconstants, |
619 int width); | 670 int width); |
620 void I422ToARGBRow_NEON(const uint8* src_y, | 671 void I422ToARGBRow_NEON(const uint8* src_y, |
621 const uint8* src_u, | 672 const uint8* src_u, |
622 const uint8* src_v, | 673 const uint8* src_v, |
623 uint8* dst_argb, | 674 uint8* dst_argb, |
(...skipping 2298 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2922 int width, | 2973 int width, |
2923 const uint8* luma, | 2974 const uint8* luma, |
2924 uint32 lumacoeff); | 2975 uint32 lumacoeff); |
2925 | 2976 |
2926 #ifdef __cplusplus | 2977 #ifdef __cplusplus |
2927 } // extern "C" | 2978 } // extern "C" |
2928 } // namespace libyuv | 2979 } // namespace libyuv |
2929 #endif | 2980 #endif |
2930 | 2981 |
2931 #endif // INCLUDE_LIBYUV_ROW_H_ | 2982 #endif // INCLUDE_LIBYUV_ROW_H_ |
OLD | NEW |