Mercurial > libavcodec.hg
comparison bfin/pixels_bfin.S @ 5001:75bf61c6c385 libavcodec
Blackfin DSP utilities: add DEFUN_END
DEFUN_END macro adds the size information to the symbol
table. This is introduces no functionnal change, it's only meant to simplify
e.g. debugging
Patch by Marc Hoffman %mmh A pleasantst P com%
Original thread:
Date: May 5, 2007 12:26 PM
Subject: [FFmpeg-devel] PATCH Blackfin DSP utilities, DEFUN_END added
author | gpoirier |
---|---|
date | Sun, 13 May 2007 20:19:22 +0000 |
parents | 85298e8c55c4 |
children |
comparison
equal
deleted
inserted
replaced
5000:743a8b12b7de | 5001:75bf61c6c385 |
---|---|
46 R6 = BYTEPACK (R2,R3) || R1 = [I0++]; | 46 R6 = BYTEPACK (R2,R3) || R1 = [I0++]; |
47 ppc$1: R2 = Max(R0, R4) (V) || [I1++M1] = R6; | 47 ppc$1: R2 = Max(R0, R4) (V) || [I1++M1] = R6; |
48 | 48 |
49 (R7:4) = [SP++]; | 49 (R7:4) = [SP++]; |
50 RTS; | 50 RTS; |
51 DEFUN_END(put_pixels_clamped) | |
51 | 52 |
52 DEFUN(add_pixels_clamped,mL1, | 53 DEFUN(add_pixels_clamped,mL1, |
53 (DCTELEM *block, uint8_t *dest, int line_size)): | 54 (DCTELEM *block, uint8_t *dest, int line_size)): |
54 [-- SP] = (R7:4); | 55 [-- SP] = (R7:4); |
55 R4 = 0; | 56 R4 = 0; |
78 R6 = R6 + R7 (S) || R1.H = W[I3++]; | 79 R6 = R6 + R7 (S) || R1.H = W[I3++]; |
79 apc$3: R6 = BYTEOP3P(R1:0, R3:2) (LO) || [I2++M0] = R6 || R2 = [I1]; | 80 apc$3: R6 = BYTEOP3P(R1:0, R3:2) (LO) || [I2++M0] = R6 || R2 = [I1]; |
80 | 81 |
81 (R7:4) = [SP++]; | 82 (R7:4) = [SP++]; |
82 RTS; | 83 RTS; |
84 DEFUN_END(add_pixels_clamped) | |
83 | 85 |
84 | 86 |
85 /* | 87 /* |
86 motion compensation | 88 motion compensation |
87 primitives | 89 primitives |
119 R7 = BYTEOP1P(R1:0,R3:2)(R) || R0 = [I0++] || [I3++] = R6 ; | 121 R7 = BYTEOP1P(R1:0,R3:2)(R) || R0 = [I0++] || [I3++] = R6 ; |
120 pp8$1: DISALGNEXCPT || R2 = [I1++] || [I3++M3] = R7; | 122 pp8$1: DISALGNEXCPT || R2 = [I1++] || [I3++M3] = R7; |
121 | 123 |
122 (r7:6) = [sp++]; | 124 (r7:6) = [sp++]; |
123 RTS; | 125 RTS; |
126 DEFUN_END(put_pixels8uc) | |
124 | 127 |
125 DEFUN(put_pixels16uc,mL1, | 128 DEFUN(put_pixels16uc,mL1, |
126 (uint8_t *block, const uint8_t *s0, const uint8_t *s1, | 129 (uint8_t *block, const uint8_t *s0, const uint8_t *s1, |
127 int dest_size, int line_size, int h)): | 130 int dest_size, int line_size, int h)): |
128 link 0; | 131 link 0; |
153 pp16$1: DISALGNEXCPT || R2 = [I1++] || [I3++M3] = R7; | 156 pp16$1: DISALGNEXCPT || R2 = [I1++] || [I3++M3] = R7; |
154 | 157 |
155 (r7:6) = [sp++]; | 158 (r7:6) = [sp++]; |
156 unlink; | 159 unlink; |
157 RTS; | 160 RTS; |
161 DEFUN_END(put_pixels16uc) | |
158 | 162 |
159 | 163 |
160 | 164 |
161 | 165 |
162 | 166 |
182 R7 = BYTEOP1P(R1:0,R3:2)(T,R) || R0 = [I0++] || [I3++] = R6 ; | 186 R7 = BYTEOP1P(R1:0,R3:2)(T,R) || R0 = [I0++] || [I3++] = R6 ; |
183 pp8$3: DISALGNEXCPT || R2 = [I1++] || [I3++M3] = R7; | 187 pp8$3: DISALGNEXCPT || R2 = [I1++] || [I3++M3] = R7; |
184 | 188 |
185 (r7:6) = [sp++]; | 189 (r7:6) = [sp++]; |
186 RTS; | 190 RTS; |
191 DEFUN_END(put_pixels8uc_nornd) | |
187 | 192 |
188 DEFUN(put_pixels16uc_nornd,mL1, | 193 DEFUN(put_pixels16uc_nornd,mL1, |
189 (uint8_t *block, const uint8_t *s0, const uint8_t *s1, | 194 (uint8_t *block, const uint8_t *s0, const uint8_t *s1, |
190 int line_size, int h)): | 195 int line_size, int h)): |
191 i3=r0; // dest | 196 i3=r0; // dest |
215 pp16$3: DISALGNEXCPT || R2 = [I1++] || [I3++M3] = R7; | 220 pp16$3: DISALGNEXCPT || R2 = [I1++] || [I3++M3] = R7; |
216 | 221 |
217 (r7:6) = [sp++]; | 222 (r7:6) = [sp++]; |
218 | 223 |
219 RTS; | 224 RTS; |
225 DEFUN_END(put_pixels16uc_nornd) | |
220 | 226 |
221 DEFUN(z_put_pixels16_xy2,mL1, | 227 DEFUN(z_put_pixels16_xy2,mL1, |
222 (uint8_t *block, const uint8_t *s0, | 228 (uint8_t *block, const uint8_t *s0, |
223 int dest_size, int line_size, int h)): | 229 int dest_size, int line_size, int h)): |
224 link 0; | 230 link 0; |
273 LE$16O: DISALGNEXCPT || R2 = [I1++] || [I3++M2] = R5; | 279 LE$16O: DISALGNEXCPT || R2 = [I1++] || [I3++M2] = R5; |
274 | 280 |
275 (r7:4) = [sp++]; | 281 (r7:4) = [sp++]; |
276 unlink; | 282 unlink; |
277 rts; | 283 rts; |
284 DEFUN_END(z_put_pixels16_xy2) | |
278 | 285 |
279 DEFUN(put_pixels16_xy2_nornd,mL1, | 286 DEFUN(put_pixels16_xy2_nornd,mL1, |
280 (uint8_t *block, const uint8_t *s0, | 287 (uint8_t *block, const uint8_t *s0, |
281 int line_size, int h)): | 288 int line_size, int h)): |
282 link 0; | 289 link 0; |
330 LE$16OT:DISALGNEXCPT || R2 = [I1++] || [I3++M2] = R5; | 337 LE$16OT:DISALGNEXCPT || R2 = [I1++] || [I3++M2] = R5; |
331 | 338 |
332 (r7:4) = [sp++]; | 339 (r7:4) = [sp++]; |
333 unlink; | 340 unlink; |
334 rts; | 341 rts; |
342 DEFUN_END(put_pixels16_xy2_nornd) | |
335 | 343 |
336 DEFUN(z_put_pixels8_xy2,mL1, | 344 DEFUN(z_put_pixels8_xy2,mL1, |
337 (uint8_t *block, const uint8_t *s0, | 345 (uint8_t *block, const uint8_t *s0, |
338 int dest_size, int line_size, int h)): | 346 int dest_size, int line_size, int h)): |
339 link 0; | 347 link 0; |
379 LE$8O: DISALGNEXCPT || R2 =[I1++] || [I3++M2] = R5; | 387 LE$8O: DISALGNEXCPT || R2 =[I1++] || [I3++M2] = R5; |
380 | 388 |
381 (r7:4) = [sp++]; | 389 (r7:4) = [sp++]; |
382 unlink; | 390 unlink; |
383 rts; | 391 rts; |
392 DEFUN_END(z_put_pixels8_xy2) | |
384 | 393 |
385 DEFUN(put_pixels8_xy2_nornd,mL1, | 394 DEFUN(put_pixels8_xy2_nornd,mL1, |
386 (uint8_t *block, const uint8_t *s0, int line_size, int h)): | 395 (uint8_t *block, const uint8_t *s0, int line_size, int h)): |
387 link 0; | 396 link 0; |
388 [--sp] = (r7:4); | 397 [--sp] = (r7:4); |
456 .LE0: [i3++]=r7; | 465 .LE0: [i3++]=r7; |
457 | 466 |
458 (r7:4) = [sp++]; | 467 (r7:4) = [sp++]; |
459 unlink; | 468 unlink; |
460 rts; | 469 rts; |
470 DEFUN_END(put_pixels8_xy2_nornd) | |
461 | 471 |
462 /* | 472 /* |
463 for (i = 0; i < 16; i++) { | 473 for (i = 0; i < 16; i++) { |
464 for (j = 0; j < 16; j++) { | 474 for (j = 0; j < 16; j++) { |
465 sum += pix[j]; | 475 sum += pix[j]; |
502 r0.h=0; | 512 r0.h=0; |
503 | 513 |
504 (r7:4) = [sp++]; | 514 (r7:4) = [sp++]; |
505 unlink; | 515 unlink; |
506 rts; | 516 rts; |
517 DEFUN_END(pix_sum) | |
507 | 518 |
508 | 519 |
509 DEFUN(get_pixels,mL1, | 520 DEFUN(get_pixels,mL1, |
510 (DCTELEM *restrict block, const uint8_t *pixels, int line_size)): | 521 (DCTELEM *restrict block, const uint8_t *pixels, int line_size)): |
511 [--sp] = (r7:4); | 522 [--sp] = (r7:4); |
526 gp8$1: [I3++]=R5 | 537 gp8$1: [I3++]=R5 |
527 | 538 |
528 | 539 |
529 (r7:4) = [sp++]; | 540 (r7:4) = [sp++]; |
530 RTS; | 541 RTS; |
542 DEFUN_END(get_pixels) | |
531 | 543 |
532 | 544 |
533 /* sad = sad16x16 (ubyte *mb, ubyte *refwin, srcwidth, refwinwidth, h) */ | 545 /* sad = sad16x16 (ubyte *mb, ubyte *refwin, srcwidth, refwinwidth, h) */ |
534 /* 91 cycles */ | 546 /* 91 cycles */ |
535 DEFUN(z_sad16x16,mL1, | 547 DEFUN(z_sad16x16,mL1, |
557 | 569 |
558 R3=A1.L+A1.H, R2=A0.L+A0.H ; | 570 R3=A1.L+A1.H, R2=A0.L+A0.H ; |
559 R0 = R2 + R3 ; | 571 R0 = R2 + R3 ; |
560 unlink; | 572 unlink; |
561 RTS; | 573 RTS; |
574 DEFUN_END(z_sad16x16) | |
562 | 575 |
563 /* sad = sad8x8 (ubyte *mb, ubyte *refwin, int srcwidth, int refwinwidth, int h) */ | 576 /* sad = sad8x8 (ubyte *mb, ubyte *refwin, int srcwidth, int refwinwidth, int h) */ |
564 /* 36 cycles */ | 577 /* 36 cycles */ |
565 DEFUN(z_sad8x8,mL1, | 578 DEFUN(z_sad8x8,mL1, |
566 (uint8_t *blk1, uint8_t *blk2, int dsz, int line_size, int h)): | 579 (uint8_t *blk1, uint8_t *blk2, int dsz, int line_size, int h)): |
584 e$8: DISALGNEXCPT || R1 = [I0++] || R3 = [I1++]; | 597 e$8: DISALGNEXCPT || R1 = [I0++] || R3 = [I1++]; |
585 | 598 |
586 R3=A1.L+A1.H, R2=A0.L+A0.H ; | 599 R3=A1.L+A1.H, R2=A0.L+A0.H ; |
587 R0 = R2 + R3 ; | 600 R0 = R2 + R3 ; |
588 RTS; | 601 RTS; |
602 DEFUN_END(z_sad8x8) | |
589 | 603 |
590 DEFUN(pix_norm1,mL1, | 604 DEFUN(pix_norm1,mL1, |
591 (uint8_t * pix, int line_size)): | 605 (uint8_t * pix, int line_size)): |
592 [--SP]=(R7:4,P5:3); | 606 [--SP]=(R7:4,P5:3); |
593 | 607 |
627 R0 = R2 + R3 (S); | 641 R0 = R2 + R3 (S); |
628 | 642 |
629 (R7:4,P5:3)=[SP++]; | 643 (R7:4,P5:3)=[SP++]; |
630 | 644 |
631 RTS; | 645 RTS; |
646 DEFUN_END(pix_norm1) | |
632 | 647 |
633 DEFUN(sse4,mL1, | 648 DEFUN(sse4,mL1, |
634 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)): | 649 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)): |
635 link 0; | 650 link 0; |
636 [--sp] = (r7:6); | 651 [--sp] = (r7:6); |
653 r0 = a0; | 668 r0 = a0; |
654 | 669 |
655 (r7:6) = [sp++]; | 670 (r7:6) = [sp++]; |
656 unlink; | 671 unlink; |
657 rts; | 672 rts; |
673 DEFUN_END(sse4) | |
658 | 674 |
659 DEFUN(sse8,mL1, | 675 DEFUN(sse8,mL1, |
660 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)): | 676 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)): |
661 link 0; | 677 link 0; |
662 [--sp] = (r7:6); | 678 [--sp] = (r7:6); |
682 r0 = a0; | 698 r0 = a0; |
683 | 699 |
684 (r7:6) = [sp++]; | 700 (r7:6) = [sp++]; |
685 unlink; | 701 unlink; |
686 rts; | 702 rts; |
703 DEFUN_END(sse8) | |
687 | 704 |
688 DEFUN(sse16,mL1, | 705 DEFUN(sse16,mL1, |
689 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)): | 706 (void *v, uint8_t *pix1, uint8_t *pix2, int line_size, int h)): |
690 link 0; | 707 link 0; |
691 [--sp] = (r7:6); | 708 [--sp] = (r7:6); |
717 r0 = a0; | 734 r0 = a0; |
718 | 735 |
719 (r7:6) = [sp++]; | 736 (r7:6) = [sp++]; |
720 unlink; | 737 unlink; |
721 rts; | 738 rts; |
722 | 739 DEFUN_END(sse16) |
723 | 740 |
741 |