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