Mercurial > libavcodec.hg
comparison armv4l/simple_idct_armv5te.S @ 8069:316762ae96a7 libavcodec
ARM: use new macros for assembler function labels
author | mru |
---|---|
date | Mon, 27 Oct 2008 00:25:09 +0000 |
parents | 744e91a36a23 |
children |
comparison
equal
deleted
inserted
replaced
8068:923c713c0c48 | 8069:316762ae96a7 |
---|---|
19 * You should have received a copy of the GNU Lesser General Public | 19 * You should have received a copy of the GNU Lesser General Public |
20 * License along with FFmpeg; if not, write to the Free Software | 20 * License along with FFmpeg; if not, write to the Free Software |
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | 21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
22 */ | 22 */ |
23 | 23 |
24 #include "asm.S" | |
25 | |
24 #define W1 22725 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ | 26 #define W1 22725 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ |
25 #define W2 21407 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ | 27 #define W2 21407 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ |
26 #define W3 19266 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ | 28 #define W3 19266 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ |
27 #define W4 16383 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ | 29 #define W4 16383 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ |
28 #define W5 12873 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ | 30 #define W5 12873 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */ |
39 .align | 41 .align |
40 w13: .long W13 | 42 w13: .long W13 |
41 w26: .long W26 | 43 w26: .long W26 |
42 w57: .long W57 | 44 w57: .long W57 |
43 | 45 |
44 .align | 46 function idct_row_armv5te |
45 .type idct_row_armv5te, %function | |
46 .func idct_row_armv5te | |
47 idct_row_armv5te: | |
48 str lr, [sp, #-4]! | 47 str lr, [sp, #-4]! |
49 | 48 |
50 ldrd v1, [a1, #8] | 49 ldrd v1, [a1, #8] |
51 ldrd a3, [a1] /* a3 = row[1:0], a4 = row[3:2] */ | 50 ldrd a3, [a1] /* a3 = row[1:0], a4 = row[3:2] */ |
52 orrs v1, v1, v2 | 51 orrs v1, v1, v2 |
260 smulbt a4, ip, a3 | 259 smulbt a4, ip, a3 |
261 smlatt v6, ip, a3, v6 | 260 smlatt v6, ip, a3, v6 |
262 sub fp, fp, a4 | 261 sub fp, fp, a4 |
263 .endm | 262 .endm |
264 | 263 |
265 .align | 264 function idct_col_armv5te |
266 .type idct_col_armv5te, %function | |
267 .func idct_col_armv5te | |
268 idct_col_armv5te: | |
269 str lr, [sp, #-4]! | 265 str lr, [sp, #-4]! |
270 | 266 |
271 idct_col | 267 idct_col |
272 | 268 |
273 ldmfd sp!, {a3, a4} | 269 ldmfd sp!, {a3, a4} |
335 str a2, [a1, #(16*4)] | 331 str a2, [a1, #(16*4)] |
336 | 332 |
337 ldr pc, [sp], #4 | 333 ldr pc, [sp], #4 |
338 .endfunc | 334 .endfunc |
339 | 335 |
340 .align | 336 function idct_col_put_armv5te |
341 .type idct_col_put_armv5te, %function | |
342 .func idct_col_put_armv5te | |
343 idct_col_put_armv5te: | |
344 str lr, [sp, #-4]! | 337 str lr, [sp, #-4]! |
345 | 338 |
346 idct_col | 339 idct_col |
347 | 340 |
348 ldmfd sp!, {a3, a4} | 341 ldmfd sp!, {a3, a4} |
455 strh a2, [v2, -lr] | 448 strh a2, [v2, -lr] |
456 | 449 |
457 ldr pc, [sp], #4 | 450 ldr pc, [sp], #4 |
458 .endfunc | 451 .endfunc |
459 | 452 |
460 .align | 453 function idct_col_add_armv5te |
461 .type idct_col_add_armv5te, %function | |
462 .func idct_col_add_armv5te | |
463 idct_col_add_armv5te: | |
464 str lr, [sp, #-4]! | 454 str lr, [sp, #-4]! |
465 | 455 |
466 idct_col | 456 idct_col |
467 | 457 |
468 ldr lr, [sp, #36] | 458 ldr lr, [sp, #36] |
608 strh a2, [v2] | 598 strh a2, [v2] |
609 | 599 |
610 ldr pc, [sp], #4 | 600 ldr pc, [sp], #4 |
611 .endfunc | 601 .endfunc |
612 | 602 |
613 .align | 603 function simple_idct_armv5te, export=1 |
614 .global simple_idct_armv5te | |
615 .type simple_idct_armv5te, %function | |
616 .func simple_idct_armv5te | |
617 simple_idct_armv5te: | |
618 stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, lr} | 604 stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, lr} |
619 | 605 |
620 bl idct_row_armv5te | 606 bl idct_row_armv5te |
621 add a1, a1, #16 | 607 add a1, a1, #16 |
622 bl idct_row_armv5te | 608 bl idct_row_armv5te |
644 bl idct_col_armv5te | 630 bl idct_col_armv5te |
645 | 631 |
646 ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc} | 632 ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc} |
647 .endfunc | 633 .endfunc |
648 | 634 |
649 .align | 635 function simple_idct_add_armv5te, export=1 |
650 .global simple_idct_add_armv5te | |
651 .type simple_idct_add_armv5te, %function | |
652 .func simple_idct_add_armv5te | |
653 simple_idct_add_armv5te: | |
654 stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr} | 636 stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr} |
655 | 637 |
656 mov a1, a3 | 638 mov a1, a3 |
657 | 639 |
658 bl idct_row_armv5te | 640 bl idct_row_armv5te |
683 | 665 |
684 add sp, sp, #8 | 666 add sp, sp, #8 |
685 ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc} | 667 ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, fp, pc} |
686 .endfunc | 668 .endfunc |
687 | 669 |
688 .align | 670 function simple_idct_put_armv5te, export=1 |
689 .global simple_idct_put_armv5te | |
690 .type simple_idct_put_armv5te, %function | |
691 .func simple_idct_put_armv5te | |
692 simple_idct_put_armv5te: | |
693 stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr} | 671 stmfd sp!, {a1, a2, v1, v2, v3, v4, v5, v6, v7, fp, lr} |
694 | 672 |
695 mov a1, a3 | 673 mov a1, a3 |
696 | 674 |
697 bl idct_row_armv5te | 675 bl idct_row_armv5te |