Mercurial > libavcodec.hg
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" |