diff options
author | Andrew Mahone <andrew.mahone@gmail.com> | 2009-07-13 00:40:35 +0000 |
---|---|---|
committer | Andrew Mahone <andrew.mahone@gmail.com> | 2009-07-13 00:40:35 +0000 |
commit | 668a769ca4cabdfee54dc53e92a964c32c9738d7 (patch) | |
tree | a4c42168e4b86d4b7e09533307ae070fd3c7bcc0 /apps/recorder | |
parent | 36eeecbe9a91a5da8bd82ee3974c359f4534dd14 (diff) | |
download | rockbox-668a769ca4cabdfee54dc53e92a964c32c9738d7.tar.gz rockbox-668a769ca4cabdfee54dc53e92a964c32c9738d7.zip |
Add new asmdefs mechanism for exporting information only available to the C compiler for use in asm files, and use it in arm jpeg idct. See apps/apps.make, apps/core_asmdefs.c, and apps/recorder/jpeg_idct_arm.S for details.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@21831 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/recorder')
-rw-r--r-- | apps/recorder/jpeg_idct_arm.S | 204 |
1 files changed, 54 insertions, 150 deletions
diff --git a/apps/recorder/jpeg_idct_arm.S b/apps/recorder/jpeg_idct_arm.S index 75e3e4d2b3..d41b7a6aaa 100644 --- a/apps/recorder/jpeg_idct_arm.S +++ b/apps/recorder/jpeg_idct_arm.S | |||
@@ -22,6 +22,7 @@ | |||
22 | * | 22 | * |
23 | ****************************************************************************/ | 23 | ****************************************************************************/ |
24 | #include "config.h" | 24 | #include "config.h" |
25 | #include "apps/core_asmdefs.h" | ||
25 | 26 | ||
26 | .section .text | 27 | .section .text |
27 | .align 2 | 28 | .align 2 |
@@ -130,13 +131,8 @@ jpeg_idct2h: | |||
130 | mvnhi r5, r5, asr #31 | 131 | mvnhi r5, r5, asr #31 |
131 | cmp r4, #255 | 132 | cmp r4, #255 |
132 | mvnhi r4, r4, asr #31 | 133 | mvnhi r4, r4, asr #31 |
133 | #ifdef HAVE_LCD_COLOR | ||
134 | strb r5, [r1] | 134 | strb r5, [r1] |
135 | strb r4, [r1, #4] | 135 | strb r4, [r1, #pix8_size] |
136 | #else | ||
137 | strb r5, [r1] | ||
138 | strb r4, [r1, #1] | ||
139 | #endif | ||
140 | add r0, r0, #16 | 136 | add r0, r0, #16 |
141 | add r1, r1, r3 | 137 | add r1, r1, r3 |
142 | cmp r0, r2 | 138 | cmp r0, r2 |
@@ -152,13 +148,8 @@ jpeg_idct2h: | |||
152 | usat r4, #8, r12, asr #21 | 148 | usat r4, #8, r12, asr #21 |
153 | sxth r12, r12 | 149 | sxth r12, r12 |
154 | usat r12, #8, r12, asr #5 | 150 | usat r12, #8, r12, asr #5 |
155 | #ifdef HAVE_LCD_COLOR | ||
156 | strb r4, [r1] | ||
157 | strb r12, [r1, #4] | ||
158 | #else | ||
159 | strb r4, [r1] | 151 | strb r4, [r1] |
160 | strb r12, [r1, #1] | 152 | strb r12, [r1, #pix8_size] |
161 | #endif | ||
162 | add r0, r0, #16 | 153 | add r0, r0, #16 |
163 | add r1, r1, r3 | 154 | add r1, r1, r3 |
164 | cmp r0, r2 | 155 | cmp r0, r2 |
@@ -325,17 +316,10 @@ jpeg_idct4h: | |||
325 | mvnhi r4, r4, asr #31 | 316 | mvnhi r4, r4, asr #31 |
326 | cmp r5, #255 | 317 | cmp r5, #255 |
327 | mvnhi r5, r5, asr #31 | 318 | mvnhi r5, r5, asr #31 |
328 | #ifdef HAVE_LCD_COLOR | ||
329 | strb r9, [r1] | ||
330 | strb r8, [r1, #4] | ||
331 | strb r4, [r1, #8] | ||
332 | strb r5, [r1, #12] | ||
333 | #else | ||
334 | strb r9, [r1] | 319 | strb r9, [r1] |
335 | strb r8, [r1, #1] | 320 | strb r8, [r1, #pix8_size] |
336 | strb r4, [r1, #2] | 321 | strb r4, [r1, #2*pix8_size] |
337 | strb r5, [r1, #3] | 322 | strb r5, [r1, #3*pix8_size] |
338 | #endif | ||
339 | add r0, r0, #16 | 323 | add r0, r0, #16 |
340 | add r1, r1, r3 | 324 | add r1, r1, r3 |
341 | cmp r0, r2 | 325 | cmp r0, r2 |
@@ -372,17 +356,10 @@ jpeg_idct4h: | |||
372 | mvnhi r12, r12, asr #31 | 356 | mvnhi r12, r12, asr #31 |
373 | cmp r9, #255 | 357 | cmp r9, #255 |
374 | mvnhi r9, r9, asr #31 | 358 | mvnhi r9, r9, asr #31 |
375 | #ifdef HAVE_LCD_COLOR | ||
376 | strb r6, [r1] | 359 | strb r6, [r1] |
377 | strb r14, [r1, #4] | 360 | strb r14, [r1, #pix8_size] |
378 | strb r12, [r1, #8] | 361 | strb r12, [r1, #2*pix8_size] |
379 | strb r9, [r1, #12] | 362 | strb r9, [r1, #3*pix8_size] |
380 | #else | ||
381 | strb r6, [r1] | ||
382 | strb r14, [r1, #1] | ||
383 | strb r12, [r1, #2] | ||
384 | strb r9, [r1, #3] | ||
385 | #endif | ||
386 | add r0, r0, #16 | 363 | add r0, r0, #16 |
387 | add r1, r1, r3 | 364 | add r1, r1, r3 |
388 | cmp r0, r2 | 365 | cmp r0, r2 |
@@ -410,17 +387,10 @@ jpeg_idct4h: | |||
410 | usat r6, #8, r6, asr #18 | 387 | usat r6, #8, r6, asr #18 |
411 | usat r12, #8, r12, asr #18 | 388 | usat r12, #8, r12, asr #18 |
412 | usat r14, #8, r14, asr #18 | 389 | usat r14, #8, r14, asr #18 |
413 | #ifdef HAVE_LCD_COLOR | ||
414 | strb r8, [r1] | ||
415 | strb r6, [r1, #12] | ||
416 | strb r12, [r1, #4] | ||
417 | strb r14, [r1, #8] | ||
418 | #else | ||
419 | strb r8, [r1] | 390 | strb r8, [r1] |
420 | strb r6, [r1, #3] | 391 | strb r6, [r1, #3*pix8_size] |
421 | strb r12, [r1, #1] | 392 | strb r12, [r1, #pix8_size] |
422 | strb r14, [r1, #2] | 393 | strb r14, [r1, #2*pix8_size] |
423 | #endif | ||
424 | add r0, r0, #16 | 394 | add r0, r0, #16 |
425 | add r1, r1, r3 | 395 | add r1, r1, r3 |
426 | cmp r0, r2 | 396 | cmp r0, r2 |
@@ -645,25 +615,14 @@ jpeg_idct8h: | |||
645 | mov r8, r8, asr #21 | 615 | mov r8, r8, asr #21 |
646 | cmp r8, #255 | 616 | cmp r8, #255 |
647 | mvnhi r8, r8, asr #31 | 617 | mvnhi r8, r8, asr #31 |
648 | #ifdef HAVE_LCD_COLOR | ||
649 | strb r8, [r1] | ||
650 | strb r8, [r1, #4] | ||
651 | strb r8, [r1, #8] | ||
652 | strb r8, [r1, #12] | ||
653 | strb r8, [r1, #16] | ||
654 | strb r8, [r1, #20] | ||
655 | strb r8, [r1, #24] | ||
656 | strb r8, [r1, #28] | ||
657 | #else | ||
658 | strb r8, [r1] | 618 | strb r8, [r1] |
659 | strb r8, [r1, #1] | 619 | strb r8, [r1, #pix8_size] |
660 | strb r8, [r1, #2] | 620 | strb r8, [r1, #2*pix8_size] |
661 | strb r8, [r1, #3] | 621 | strb r8, [r1, #3*pix8_size] |
662 | strb r8, [r1, #4] | 622 | strb r8, [r1, #4*pix8_size] |
663 | strb r8, [r1, #5] | 623 | strb r8, [r1, #5*pix8_size] |
664 | strb r8, [r1, #6] | 624 | strb r8, [r1, #6*pix8_size] |
665 | strb r8, [r1, #7] | 625 | strb r8, [r1, #7*pix8_size] |
666 | #endif | ||
667 | add r1, r1, r3 | 626 | add r1, r1, r3 |
668 | cmp r0, r2 | 627 | cmp r0, r2 |
669 | bcc 1b | 628 | bcc 1b |
@@ -752,25 +711,14 @@ jpeg_idct8h: | |||
752 | mov r14, r14, asr #18 | 711 | mov r14, r14, asr #18 |
753 | cmp r14, #255 | 712 | cmp r14, #255 |
754 | mvnhi r14, r14, asr #31 | 713 | mvnhi r14, r14, asr #31 |
755 | #ifdef HAVE_LCD_COLOR | ||
756 | strb r12, [r1] | ||
757 | strb r4, [r1, #4] | ||
758 | strb r10, [r1, #8] | ||
759 | strb r8, [r1, #12] | ||
760 | strb r9, [r1, #16] | ||
761 | strb r11, [r1, #20] | ||
762 | strb r5, [r1, #24] | ||
763 | strb r14, [r1, #28] | ||
764 | #else | ||
765 | strb r12, [r1] | 714 | strb r12, [r1] |
766 | strb r4, [r1, #1] | 715 | strb r4, [r1, #pix8_size] |
767 | strb r10, [r1, #2] | 716 | strb r10, [r1, #2*pix8_size] |
768 | strb r8, [r1, #3] | 717 | strb r8, [r1, #3*pix8_size] |
769 | strb r9, [r1, #4] | 718 | strb r9, [r1, #4*pix8_size] |
770 | strb r11, [r1, #5] | 719 | strb r11, [r1, #5*pix8_size] |
771 | strb r5, [r1, #6] | 720 | strb r5, [r1, #6*pix8_size] |
772 | strb r14, [r1, #7] | 721 | strb r14, [r1, #7*pix8_size] |
773 | #endif | ||
774 | #else /* ARMv5+ */ | 722 | #else /* ARMv5+ */ |
775 | add r12, r14, r4, lsl #16 | 723 | add r12, r14, r4, lsl #16 |
776 | orrs r9, r6, r7 | 724 | orrs r9, r6, r7 |
@@ -779,25 +727,14 @@ jpeg_idct8h: | |||
779 | mov r12, r12, asr #21 | 727 | mov r12, r12, asr #21 |
780 | cmp r12, #255 | 728 | cmp r12, #255 |
781 | mvnhi r12, r12, asr #31 | 729 | mvnhi r12, r12, asr #31 |
782 | #ifdef HAVE_LCD_COLOR | ||
783 | strb r12, [r1] | 730 | strb r12, [r1] |
784 | strb r12, [r1, #4] | 731 | strb r12, [r1, #pix8_size] |
785 | strb r12, [r1, #8] | 732 | strb r12, [r1, #2*pix8_size] |
786 | strb r12, [r1, #12] | 733 | strb r12, [r1, #3*pix8_size] |
787 | strb r12, [r1, #16] | 734 | strb r12, [r1, #4*pix8_size] |
788 | strb r12, [r1, #20] | 735 | strb r12, [r1, #5*pix8_size] |
789 | strb r12, [r1, #24] | 736 | strb r12, [r1, #6*pix8_size] |
790 | strb r12, [r1, #28] | 737 | strb r12, [r1, #7*pix8_size] |
791 | #else | ||
792 | strb r12, [r1] | ||
793 | strb r12, [r1, #1] | ||
794 | strb r12, [r1, #2] | ||
795 | strb r12, [r1, #3] | ||
796 | strb r12, [r1, #4] | ||
797 | strb r12, [r1, #5] | ||
798 | strb r12, [r1, #6] | ||
799 | strb r12, [r1, #7] | ||
800 | #endif | ||
801 | add r1, r1, r3 | 738 | add r1, r1, r3 |
802 | cmp r0, r2 | 739 | cmp r0, r2 |
803 | bcc 1b | 740 | bcc 1b |
@@ -869,25 +806,14 @@ jpeg_idct8h: | |||
869 | mov r11, r11, asr #18 | 806 | mov r11, r11, asr #18 |
870 | cmp r11, #255 | 807 | cmp r11, #255 |
871 | mvnhi r11, r11, asr #31 | 808 | mvnhi r11, r11, asr #31 |
872 | #ifdef HAVE_LCD_COLOR | ||
873 | strb r10, [r1] | ||
874 | strb r12, [r1, #4] | ||
875 | strb r8, [r1, #8] | ||
876 | strb r6, [r1, #12] | ||
877 | strb r7, [r1, #16] | ||
878 | strb r9, [r1, #20] | ||
879 | strb r14, [r1, #24] | ||
880 | strb r11, [r1, #28] | ||
881 | #else | ||
882 | strb r10, [r1] | 809 | strb r10, [r1] |
883 | strb r12, [r1, #1] | 810 | strb r12, [r1, #pix8_size] |
884 | strb r8, [r1, #2] | 811 | strb r8, [r1, #2*pix8_size] |
885 | strb r6, [r1, #3] | 812 | strb r6, [r1, #3*pix8_size] |
886 | strb r7, [r1, #4] | 813 | strb r7, [r1, #4*pix8_size] |
887 | strb r9, [r1, #5] | 814 | strb r9, [r1, #5*pix8_size] |
888 | strb r14, [r1, #6] | 815 | strb r14, [r1, #6*pix8_size] |
889 | strb r11, [r1, #7] | 816 | strb r11, [r1, #7*pix8_size] |
890 | #endif | ||
891 | #endif | 817 | #endif |
892 | add r1, r1, r3 | 818 | add r1, r1, r3 |
893 | cmp r0, r2 | 819 | cmp r0, r2 |
@@ -1009,25 +935,14 @@ jpeg_idct8h: | |||
1009 | bne 2f | 935 | bne 2f |
1010 | sxth r4, r4 | 936 | sxth r4, r4 |
1011 | usat r4, #8, r4, asr #5 | 937 | usat r4, #8, r4, asr #5 |
1012 | #ifdef HAVE_LCD_COLOR | ||
1013 | strb r4, [r1] | ||
1014 | strb r4, [r1, #4] | ||
1015 | strb r4, [r1, #8] | ||
1016 | strb r4, [r1, #12] | ||
1017 | strb r4, [r1, #16] | ||
1018 | strb r4, [r1, #20] | ||
1019 | strb r4, [r1, #24] | ||
1020 | strb r4, [r1, #28] | ||
1021 | #else | ||
1022 | strb r4, [r1] | 938 | strb r4, [r1] |
1023 | strb r4, [r1, #1] | 939 | strb r4, [r1, #pix8_size] |
1024 | strb r4, [r1, #2] | 940 | strb r4, [r1, #2*pix8_size] |
1025 | strb r4, [r1, #3] | 941 | strb r4, [r1, #3*pix8_size] |
1026 | strb r4, [r1, #4] | 942 | strb r4, [r1, #4*pix8_size] |
1027 | strb r4, [r1, #5] | 943 | strb r4, [r1, #5*pix8_size] |
1028 | strb r4, [r1, #6] | 944 | strb r4, [r1, #6*pix8_size] |
1029 | strb r4, [r1, #7] | 945 | strb r4, [r1, #7*pix8_size] |
1030 | #endif | ||
1031 | add r1, r1, r3 | 946 | add r1, r1, r3 |
1032 | cmp r0, r2 | 947 | cmp r0, r2 |
1033 | bcc 1b | 948 | bcc 1b |
@@ -1083,25 +998,14 @@ jpeg_idct8h: | |||
1083 | usat r10, #8, r10, asr #18 | 998 | usat r10, #8, r10, asr #18 |
1084 | usat r7, #8, r7, asr #18 | 999 | usat r7, #8, r7, asr #18 |
1085 | usat r8, #8, r8, asr #18 | 1000 | usat r8, #8, r8, asr #18 |
1086 | #ifdef HAVE_LCD_COLOR | ||
1087 | strb r6, [r1] | ||
1088 | strb r4, [r1, #4] | ||
1089 | strb r9, [r1, #8] | ||
1090 | strb r14, [r1, #12] | ||
1091 | strb r12, [r1, #16] | ||
1092 | strb r10, [r1, #20] | ||
1093 | strb r7, [r1, #24] | ||
1094 | strb r8, [r1, #28] | ||
1095 | #else | ||
1096 | strb r6, [r1] | 1001 | strb r6, [r1] |
1097 | strb r4, [r1, #1] | 1002 | strb r4, [r1, #pix8_size] |
1098 | strb r9, [r1, #2] | 1003 | strb r9, [r1, #2*pix8_size] |
1099 | strb r14, [r1, #3] | 1004 | strb r14, [r1, #3*pix8_size] |
1100 | strb r12, [r1, #4] | 1005 | strb r12, [r1, #4*pix8_size] |
1101 | strb r10, [r1, #5] | 1006 | strb r10, [r1, #5*pix8_size] |
1102 | strb r7, [r1, #6] | 1007 | strb r7, [r1, #6*pix8_size] |
1103 | strb r8, [r1, #7] | 1008 | strb r8, [r1, #7*pix8_size] |
1104 | #endif | ||
1105 | cmp r0, r2 | 1009 | cmp r0, r2 |
1106 | add r1, r1, r3 | 1010 | add r1, r1, r3 |
1107 | bcc 1b | 1011 | bcc 1b |