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