comparison i386/dsputil_mmx.c @ 8:1b4461b5a7fb libavcodec

Sync with mplayer's stuff
author nickols_k
date Mon, 30 Jul 2001 09:04:34 +0000
parents 4479bcab253e
children 82d4c9be9873
comparison
equal deleted inserted replaced
7:1d3ac9654178 8:1b4461b5a7fb
28 int pix_abs16x16_x2_mmx(UINT8 *blk1, UINT8 *blk2, int lx, int h); 28 int pix_abs16x16_x2_mmx(UINT8 *blk1, UINT8 *blk2, int lx, int h);
29 int pix_abs16x16_y2_mmx(UINT8 *blk1, UINT8 *blk2, int lx, int h); 29 int pix_abs16x16_y2_mmx(UINT8 *blk1, UINT8 *blk2, int lx, int h);
30 int pix_abs16x16_xy2_mmx(UINT8 *blk1, UINT8 *blk2, int lx, int h); 30 int pix_abs16x16_xy2_mmx(UINT8 *blk1, UINT8 *blk2, int lx, int h);
31 31
32 /* pixel operations */ 32 /* pixel operations */
33 static const unsigned short mm_wone[4] __attribute__ ((aligned(8))) = { 0x1, 0x1, 0x1, 0x1 }; 33 static const unsigned long long int mm_wone __attribute__ ((aligned(8))) = 0x0001000100010001;
34 static const unsigned short mm_wtwo[4] __attribute__ ((aligned(8))) = { 0x2, 0x2, 0x2, 0x2 }; 34 static const unsigned long long int mm_wtwo __attribute__ ((aligned(8))) = 0x0002000200020002;
35 //static const unsigned short mm_wone[4] __attribute__ ((aligned(8))) = { 0x1, 0x1, 0x1, 0x1 };
36 //static const unsigned short mm_wtwo[4] __attribute__ ((aligned(8))) = { 0x2, 0x2, 0x2, 0x2 };
35 37
36 /***********************************/ 38 /***********************************/
37 /* 3Dnow specific */ 39 /* 3Dnow specific */
38 40
39 #define DEF(x) x ## _3dnow 41 #define DEF(x) x ## _3dnow
213 p = block; 215 p = block;
214 pix = pixels; 216 pix = pixels;
215 __asm __volatile( 217 __asm __volatile(
216 "pxor %%mm7, %%mm7\n\t" 218 "pxor %%mm7, %%mm7\n\t"
217 "movq %0, %%mm4\n\t" 219 "movq %0, %%mm4\n\t"
218 ::"m"(mm_wone[0]):"memory"); 220 ::"m"(mm_wone):"memory");
219 do { 221 do {
220 __asm __volatile( 222 __asm __volatile(
221 "movq %1, %%mm0\n\t" 223 "movq %1, %%mm0\n\t"
222 "movq 1%1, %%mm1\n\t" 224 "movq 1%1, %%mm1\n\t"
223 "movq %%mm0, %%mm2\n\t" 225 "movq %%mm0, %%mm2\n\t"
248 p = block; 250 p = block;
249 pix = pixels; 251 pix = pixels;
250 __asm __volatile( 252 __asm __volatile(
251 "pxor %%mm7, %%mm7\n\t" 253 "pxor %%mm7, %%mm7\n\t"
252 "movq %0, %%mm4\n\t" 254 "movq %0, %%mm4\n\t"
253 ::"m"(mm_wone[0]):"memory"); 255 ::"m"(mm_wone):"memory");
254 do { 256 do {
255 __asm __volatile( 257 __asm __volatile(
256 "movq %1, %%mm0\n\t" 258 "movq %1, %%mm0\n\t"
257 "movq %2, %%mm1\n\t" 259 "movq %2, %%mm1\n\t"
258 "movq %%mm0, %%mm2\n\t" 260 "movq %%mm0, %%mm2\n\t"
285 p = block; 287 p = block;
286 pix = pixels; 288 pix = pixels;
287 __asm __volatile( 289 __asm __volatile(
288 "pxor %%mm7, %%mm7\n\t" 290 "pxor %%mm7, %%mm7\n\t"
289 "movq %0, %%mm6\n\t" 291 "movq %0, %%mm6\n\t"
290 ::"m"(mm_wtwo[0]):"memory"); 292 ::"m"(mm_wtwo):"memory");
291 do { 293 do {
292 __asm __volatile( 294 __asm __volatile(
293 "movq %1, %%mm0\n\t" 295 "movq %1, %%mm0\n\t"
294 "movq %2, %%mm1\n\t" 296 "movq %2, %%mm1\n\t"
295 "movq 1%1, %%mm4\n\t" 297 "movq 1%1, %%mm4\n\t"
397 p = block; 399 p = block;
398 pix = pixels; 400 pix = pixels;
399 __asm __volatile( 401 __asm __volatile(
400 "pxor %%mm7, %%mm7\n\t" 402 "pxor %%mm7, %%mm7\n\t"
401 "movq %0, %%mm6\n\t" 403 "movq %0, %%mm6\n\t"
402 ::"m"(mm_wone[0]):"memory"); 404 ::"m"(mm_wone):"memory");
403 do { 405 do {
404 __asm __volatile( 406 __asm __volatile(
405 "movq %1, %%mm0\n\t" 407 "movq %1, %%mm0\n\t"
406 "movq %2, %%mm1\n\t" 408 "movq %2, %%mm1\n\t"
407 "movq 1%1, %%mm4\n\t" 409 "movq 1%1, %%mm4\n\t"
446 p = block; 448 p = block;
447 pix = pixels; 449 pix = pixels;
448 __asm __volatile( 450 __asm __volatile(
449 "pxor %%mm7, %%mm7\n\t" 451 "pxor %%mm7, %%mm7\n\t"
450 "movq %0, %%mm6\n\t" 452 "movq %0, %%mm6\n\t"
451 ::"m"(mm_wone[0]):"memory"); 453 ::"m"(mm_wone):"memory");
452 do { 454 do {
453 __asm __volatile( 455 __asm __volatile(
454 "movq %0, %%mm0\n\t" 456 "movq %0, %%mm0\n\t"
455 "movq %1, %%mm1\n\t" 457 "movq %1, %%mm1\n\t"
456 "movq %%mm0, %%mm2\n\t" 458 "movq %%mm0, %%mm2\n\t"
483 p = block; 485 p = block;
484 pix = pixels; 486 pix = pixels;
485 __asm __volatile( 487 __asm __volatile(
486 "pxor %%mm7, %%mm7\n\t" 488 "pxor %%mm7, %%mm7\n\t"
487 "movq %0, %%mm6\n\t" 489 "movq %0, %%mm6\n\t"
488 ::"m"(mm_wone[0]):"memory"); 490 ::"m"(mm_wone):"memory");
489 do { 491 do {
490 __asm __volatile( 492 __asm __volatile(
491 "movq %1, %%mm1\n\t" 493 "movq %1, %%mm1\n\t"
492 "movq %0, %%mm0\n\t" 494 "movq %0, %%mm0\n\t"
493 "movq 1%1, %%mm4\n\t" 495 "movq 1%1, %%mm4\n\t"
529 p = block; 531 p = block;
530 pix = pixels; 532 pix = pixels;
531 __asm __volatile( 533 __asm __volatile(
532 "pxor %%mm7, %%mm7\n\t" 534 "pxor %%mm7, %%mm7\n\t"
533 "movq %0, %%mm6\n\t" 535 "movq %0, %%mm6\n\t"
534 ::"m"(mm_wone[0]):"memory"); 536 ::"m"(mm_wone):"memory");
535 do { 537 do {
536 __asm __volatile( 538 __asm __volatile(
537 "movq %1, %%mm1\n\t" 539 "movq %1, %%mm1\n\t"
538 "movq %0, %%mm0\n\t" 540 "movq %0, %%mm0\n\t"
539 "movq %2, %%mm4\n\t" 541 "movq %2, %%mm4\n\t"
575 p = block; 577 p = block;
576 pix = pixels; 578 pix = pixels;
577 __asm __volatile( 579 __asm __volatile(
578 "pxor %%mm7, %%mm7\n\t" 580 "pxor %%mm7, %%mm7\n\t"
579 "movq %0, %%mm6\n\t" 581 "movq %0, %%mm6\n\t"
580 ::"m"(mm_wtwo[0]):"memory"); 582 ::"m"(mm_wtwo):"memory");
581 do { 583 do {
582 __asm __volatile( 584 __asm __volatile(
583 "movq %1, %%mm0\n\t" 585 "movq %1, %%mm0\n\t"
584 "movq %2, %%mm1\n\t" 586 "movq %2, %%mm1\n\t"
585 "movq 1%1, %%mm4\n\t" 587 "movq 1%1, %%mm4\n\t"
619 "psrlw $1, %%mm2\n\t" 621 "psrlw $1, %%mm2\n\t"
620 "packuswb %%mm2, %%mm0\n\t" 622 "packuswb %%mm2, %%mm0\n\t"
621 "movq %%mm0, %0\n\t" 623 "movq %%mm0, %0\n\t"
622 :"=m"(*p) 624 :"=m"(*p)
623 :"m"(*pix), 625 :"m"(*pix),
624 "m"(*(pix+line_size)), "m"(mm_wone[0]) 626 "m"(*(pix+line_size)), "m"(mm_wone)
625 :"memory"); 627 :"memory");
626 pix += line_size; 628 pix += line_size;
627 p += line_size ; 629 p += line_size ;
628 } while(--h); 630 } while(--h);
629 } 631 }
746 p = block; 748 p = block;
747 pix = pixels; 749 pix = pixels;
748 __asm __volatile( 750 __asm __volatile(
749 "pxor %%mm7, %%mm7\n\t" 751 "pxor %%mm7, %%mm7\n\t"
750 "movq %0, %%mm6\n\t" 752 "movq %0, %%mm6\n\t"
751 ::"m"(mm_wone[0]):"memory"); 753 ::"m"(mm_wone):"memory");
752 do { 754 do {
753 __asm __volatile( 755 __asm __volatile(
754 "movq %1, %%mm0\n\t" 756 "movq %1, %%mm0\n\t"
755 "movq %2, %%mm1\n\t" 757 "movq %2, %%mm1\n\t"
756 "movq 1%1, %%mm4\n\t" 758 "movq 1%1, %%mm4\n\t"
830 p = block; 832 p = block;
831 pix = pixels; 833 pix = pixels;
832 __asm __volatile( 834 __asm __volatile(
833 "pxor %%mm7, %%mm7\n\t" 835 "pxor %%mm7, %%mm7\n\t"
834 "movq %0, %%mm6" 836 "movq %0, %%mm6"
835 ::"m"(mm_wone[0]):"memory"); 837 ::"m"(mm_wone):"memory");
836 do { 838 do {
837 __asm __volatile( 839 __asm __volatile(
838 "movq %0, %%mm0\n\t" 840 "movq %0, %%mm0\n\t"
839 "movq %1, %%mm2\n\t" 841 "movq %1, %%mm2\n\t"
840 "movq 8%0, %%mm1\n\t" 842 "movq 8%0, %%mm1\n\t"
870 p = block; 872 p = block;
871 pix = pixels; 873 pix = pixels;
872 __asm __volatile( 874 __asm __volatile(
873 "pxor %%mm7, %%mm7\n\t" 875 "pxor %%mm7, %%mm7\n\t"
874 "movq %0, %%mm6" 876 "movq %0, %%mm6"
875 ::"m"(mm_wone[0]):"memory"); 877 ::"m"(mm_wone):"memory");
876 do { 878 do {
877 __asm __volatile( 879 __asm __volatile(
878 "movq %0, %%mm0\n\t" 880 "movq %0, %%mm0\n\t"
879 "movq %1, %%mm2\n\t" 881 "movq %1, %%mm2\n\t"
880 "movq 8%0, %%mm1\n\t" 882 "movq 8%0, %%mm1\n\t"
910 p = block; 912 p = block;
911 pix = pixels; 913 pix = pixels;
912 __asm __volatile( 914 __asm __volatile(
913 "pxor %%mm7, %%mm7\n\t" 915 "pxor %%mm7, %%mm7\n\t"
914 "movq %0, %%mm6\n\t" 916 "movq %0, %%mm6\n\t"
915 ::"m"(mm_wtwo[0]):"memory"); 917 ::"m"(mm_wtwo):"memory");
916 do { 918 do {
917 __asm __volatile( 919 __asm __volatile(
918 "movq %1, %%mm0\n\t" 920 "movq %1, %%mm0\n\t"
919 "movq %2, %%mm1\n\t" 921 "movq %2, %%mm1\n\t"
920 "movq 1%1, %%mm4\n\t" 922 "movq 1%1, %%mm4\n\t"