comparison i386/dsputil_mmx.c @ 151:ae0516eadae2 libavcodec

fixed gcc-3.0.x compilation (by Michael Niedermayer)
author nickols_k
date Sat, 10 Nov 2001 14:36:12 +0000
parents 8068c4bce9c1
children ac5075a55488
comparison
equal deleted inserted replaced
150:668dda5ef46d 151:ae0516eadae2
74 int i; 74 int i;
75 75
76 /* read the pixels */ 76 /* read the pixels */
77 p = block; 77 p = block;
78 pix = pixels; 78 pix = pixels;
79 __asm __volatile("pxor %%mm7, %%mm7":::"memory"); 79 __asm __volatile("pxor %%mm7, %%mm7":);
80 for(i=0;i<4;i++) { 80 for(i=0;i<4;i++) {
81 __asm __volatile( 81 __asm __volatile(
82 "movq %1, %%mm0\n\t" 82 "movq %1, %%mm0\n\t"
83 "movq %2, %%mm1\n\t" 83 "movq %2, %%mm1\n\t"
84 "movq %%mm0, %%mm2\n\t" 84 "movq %%mm0, %%mm2\n\t"
108 /* read the pixels */ 108 /* read the pixels */
109 p = block; 109 p = block;
110 pix = pixels; 110 pix = pixels;
111 for(i=0;i<2;i++) { 111 for(i=0;i<2;i++) {
112 __asm __volatile( 112 __asm __volatile(
113 "movq %4, %%mm0\n\t" 113 "movq %3, %%mm0\n\t"
114 "movq 8%4, %%mm1\n\t" 114 "movq 8%3, %%mm1\n\t"
115 "movq 16%4, %%mm2\n\t" 115 "movq 16%3, %%mm2\n\t"
116 "movq 24%4, %%mm3\n\t" 116 "movq 24%3, %%mm3\n\t"
117 "movq 32%4, %%mm4\n\t" 117 "movq 32%3, %%mm4\n\t"
118 "movq 40%4, %%mm5\n\t" 118 "movq 40%3, %%mm5\n\t"
119 "movq 48%4, %%mm6\n\t" 119 "movq 48%3, %%mm6\n\t"
120 "movq 56%4, %%mm7\n\t" 120 "movq 56%3, %%mm7\n\t"
121 "packuswb %%mm1, %%mm0\n\t" 121 "packuswb %%mm1, %%mm0\n\t"
122 "packuswb %%mm3, %%mm2\n\t" 122 "packuswb %%mm3, %%mm2\n\t"
123 "packuswb %%mm5, %%mm4\n\t" 123 "packuswb %%mm5, %%mm4\n\t"
124 "packuswb %%mm7, %%mm6\n\t" 124 "packuswb %%mm7, %%mm6\n\t"
125 "movq %%mm0, %0\n\t" 125 "movq %%mm0, (%0)\n\t"
126 "movq %%mm2, %1\n\t" 126 "movq %%mm2, (%0, %1)\n\t"
127 "movq %%mm4, %2\n\t" 127 "movq %%mm4, (%0, %1, 2)\n\t"
128 "movq %%mm6, %3\n\t" 128 "movq %%mm6, (%0, %2)\n\t"
129 :"=m"(*pix), "=m"(*(pix+line_size)) 129 ::"r" (pix), "r" (line_size), "r" (line_size*3), "m"(*p)
130 ,"=m"(*(pix+line_size*2)), "=m"(*(pix+line_size*3))
131 :"m"(*p)
132 :"memory"); 130 :"memory");
133 pix += line_size*4; 131 pix += line_size*4;
134 p += 32; 132 p += 32;
135 } 133 }
136 } 134 }
142 int i; 140 int i;
143 141
144 /* read the pixels */ 142 /* read the pixels */
145 p = block; 143 p = block;
146 pix = pixels; 144 pix = pixels;
147 __asm __volatile("pxor %%mm7, %%mm7":::"memory"); 145 __asm __volatile("pxor %%mm7, %%mm7":);
148 for(i=0;i<4;i++) { 146 for(i=0;i<4;i++) {
149 __asm __volatile( 147 __asm __volatile(
150 "movq %2, %%mm0\n\t" 148 "movq %2, %%mm0\n\t"
151 "movq 8%2, %%mm1\n\t" 149 "movq 8%2, %%mm1\n\t"
152 "movq 16%2, %%mm2\n\t" 150 "movq 16%2, %%mm2\n\t"
165 "paddsw %%mm5, %%mm3\n\t" 163 "paddsw %%mm5, %%mm3\n\t"
166 "packuswb %%mm1, %%mm0\n\t" 164 "packuswb %%mm1, %%mm0\n\t"
167 "packuswb %%mm3, %%mm2\n\t" 165 "packuswb %%mm3, %%mm2\n\t"
168 "movq %%mm0, %0\n\t" 166 "movq %%mm0, %0\n\t"
169 "movq %%mm2, %1\n\t" 167 "movq %%mm2, %1\n\t"
170 :"=m"(*pix), "=m"(*(pix+line_size)) 168 :"+m"(*pix), "+m"(*(pix+line_size))
171 :"m"(*p) 169 :"m"(*p)
172 :"memory"); 170 :"memory");
173 pix += line_size*2; 171 pix += line_size*2;
174 p += 16; 172 p += 16;
175 } 173 }
184 pix = pixels; 182 pix = pixels;
185 hh=h>>2; 183 hh=h>>2;
186 dh=h&3; 184 dh=h&3;
187 while(hh--) { 185 while(hh--) {
188 __asm __volatile( 186 __asm __volatile(
189 "movq %4, %%mm0\n\t" 187 "movq (%1), %%mm0 \n\t"
190 "movq %5, %%mm1\n\t" 188 "movq (%1, %2), %%mm1 \n\t"
191 "movq %6, %%mm2\n\t" 189 "movq (%1, %2, 2), %%mm2 \n\t"
192 "movq %7, %%mm3\n\t" 190 "movq (%1, %3), %%mm3 \n\t"
193 "movq %%mm0, %0\n\t" 191 "movq %%mm0, (%0) \n\t"
194 "movq %%mm1, %1\n\t" 192 "movq %%mm1, (%0, %2) \n\t"
195 "movq %%mm2, %2\n\t" 193 "movq %%mm2, (%0, %2, 2) \n\t"
196 "movq %%mm3, %3\n\t" 194 "movq %%mm3, (%0, %3) \n\t"
197 :"=m"(*p), "=m"(*(p+line_size)), "=m"(*(p+line_size*2)), "=m"(*(p+line_size*3)) 195 ::"r"(p), "r"(pix), "r"(line_size), "r"(line_size*3)
198 :"m"(*pix), "m"(*(pix+line_size)), "m"(*(pix+line_size*2)), "m"(*(pix+line_size*3))
199 :"memory"); 196 :"memory");
200 pix = pix + line_size*4; 197 pix = pix + line_size*4;
201 p = p + line_size*4; 198 p = p + line_size*4;
202 } 199 }
203 while(dh--) { 200 while(dh--) {
219 p = block; 216 p = block;
220 pix = pixels; 217 pix = pixels;
221 __asm __volatile( 218 __asm __volatile(
222 "pxor %%mm7, %%mm7\n\t" 219 "pxor %%mm7, %%mm7\n\t"
223 "movq %0, %%mm4\n\t" 220 "movq %0, %%mm4\n\t"
224 ::"m"(mm_wone):"memory"); 221 ::"m"(mm_wone));
225 do { 222 do {
226 __asm __volatile( 223 __asm __volatile(
227 "movq %1, %%mm0\n\t" 224 "movq %1, %%mm0\n\t"
228 "movq 1%1, %%mm1\n\t" 225 "movq 1%1, %%mm1\n\t"
229 "movq %%mm0, %%mm2\n\t" 226 "movq %%mm0, %%mm2\n\t"
254 p = block; 251 p = block;
255 pix = pixels; 252 pix = pixels;
256 __asm __volatile( 253 __asm __volatile(
257 "pxor %%mm7, %%mm7\n\t" 254 "pxor %%mm7, %%mm7\n\t"
258 "movq %0, %%mm4\n\t" 255 "movq %0, %%mm4\n\t"
259 ::"m"(mm_wone):"memory"); 256 ::"m"(mm_wone));
260 do { 257 do {
261 __asm __volatile( 258 __asm __volatile(
262 "movq %1, %%mm0\n\t" 259 "movq %1, %%mm0\n\t"
263 "movq %2, %%mm1\n\t" 260 "movq %2, %%mm1\n\t"
264 "movq %%mm0, %%mm2\n\t" 261 "movq %%mm0, %%mm2\n\t"
291 p = block; 288 p = block;
292 pix = pixels; 289 pix = pixels;
293 __asm __volatile( 290 __asm __volatile(
294 "pxor %%mm7, %%mm7\n\t" 291 "pxor %%mm7, %%mm7\n\t"
295 "movq %0, %%mm6\n\t" 292 "movq %0, %%mm6\n\t"
296 ::"m"(mm_wtwo):"memory"); 293 ::"m"(mm_wtwo));
297 do { 294 do {
298 __asm __volatile( 295 __asm __volatile(
299 "movq %1, %%mm0\n\t" 296 "movq %1, %%mm0\n\t"
300 "movq %2, %%mm1\n\t" 297 "movq %2, %%mm1\n\t"
301 "movq 1%1, %%mm4\n\t" 298 "movq 1%1, %%mm4\n\t"
337 { 334 {
338 UINT8 *p; 335 UINT8 *p;
339 const UINT8 *pix; 336 const UINT8 *pix;
340 p = block; 337 p = block;
341 pix = pixels; 338 pix = pixels;
342 __asm __volatile("pxor %%mm7, %%mm7\n\t":::"memory"); 339 __asm __volatile("pxor %%mm7, %%mm7\n\t":);
343 do { 340 do {
344 __asm __volatile( 341 __asm __volatile(
345 "movq %1, %%mm0\n\t" 342 "movq %1, %%mm0\n\t"
346 "movq 1%1, %%mm1\n\t" 343 "movq 1%1, %%mm1\n\t"
347 "movq %%mm0, %%mm2\n\t" 344 "movq %%mm0, %%mm2\n\t"
368 { 365 {
369 UINT8 *p; 366 UINT8 *p;
370 const UINT8 *pix; 367 const UINT8 *pix;
371 p = block; 368 p = block;
372 pix = pixels; 369 pix = pixels;
373 __asm __volatile("pxor %%mm7, %%mm7\n\t":::"memory"); 370 __asm __volatile("pxor %%mm7, %%mm7\n\t":);
374 do { 371 do {
375 __asm __volatile( 372 __asm __volatile(
376 "movq %1, %%mm0\n\t" 373 "movq %1, %%mm0\n\t"
377 "movq %2, %%mm1\n\t" 374 "movq %2, %%mm1\n\t"
378 "movq %%mm0, %%mm2\n\t" 375 "movq %%mm0, %%mm2\n\t"
403 p = block; 400 p = block;
404 pix = pixels; 401 pix = pixels;
405 __asm __volatile( 402 __asm __volatile(
406 "pxor %%mm7, %%mm7\n\t" 403 "pxor %%mm7, %%mm7\n\t"
407 "movq %0, %%mm6\n\t" 404 "movq %0, %%mm6\n\t"
408 ::"m"(mm_wone):"memory"); 405 ::"m"(mm_wone));
409 do { 406 do {
410 __asm __volatile( 407 __asm __volatile(
411 "movq %1, %%mm0\n\t" 408 "movq %1, %%mm0\n\t"
412 "movq %2, %%mm1\n\t" 409 "movq %2, %%mm1\n\t"
413 "movq 1%1, %%mm4\n\t" 410 "movq 1%1, %%mm4\n\t"
452 p = block; 449 p = block;
453 pix = pixels; 450 pix = pixels;
454 __asm __volatile( 451 __asm __volatile(
455 "pxor %%mm7, %%mm7\n\t" 452 "pxor %%mm7, %%mm7\n\t"
456 "movq %0, %%mm6\n\t" 453 "movq %0, %%mm6\n\t"
457 ::"m"(mm_wone):"memory"); 454 ::"m"(mm_wone));
458 do { 455 do {
459 __asm __volatile( 456 __asm __volatile(
460 "movq %0, %%mm0\n\t" 457 "movq %0, %%mm0\n\t"
461 "movq %1, %%mm1\n\t" 458 "movq %1, %%mm1\n\t"
462 "movq %%mm0, %%mm2\n\t" 459 "movq %%mm0, %%mm2\n\t"
471 "paddusw %%mm6, %%mm2\n\t" 468 "paddusw %%mm6, %%mm2\n\t"
472 "psrlw $1, %%mm0\n\t" 469 "psrlw $1, %%mm0\n\t"
473 "psrlw $1, %%mm2\n\t" 470 "psrlw $1, %%mm2\n\t"
474 "packuswb %%mm2, %%mm0\n\t" 471 "packuswb %%mm2, %%mm0\n\t"
475 "movq %%mm0, %0\n\t" 472 "movq %%mm0, %0\n\t"
476 :"=m"(*p) 473 :"+m"(*p)
477 :"m"(*pix) 474 :"m"(*pix)
478 :"memory"); 475 :"memory");
479 pix += line_size; 476 pix += line_size;
480 p += line_size; 477 p += line_size;
481 } 478 }
489 p = block; 486 p = block;
490 pix = pixels; 487 pix = pixels;
491 __asm __volatile( 488 __asm __volatile(
492 "pxor %%mm7, %%mm7\n\t" 489 "pxor %%mm7, %%mm7\n\t"
493 "movq %0, %%mm6\n\t" 490 "movq %0, %%mm6\n\t"
494 ::"m"(mm_wone):"memory"); 491 ::"m"(mm_wone));
495 do { 492 do {
496 __asm __volatile( 493 __asm __volatile(
497 "movq %1, %%mm1\n\t" 494 "movq %1, %%mm1\n\t"
498 "movq %0, %%mm0\n\t" 495 "movq %0, %%mm0\n\t"
499 "movq 1%1, %%mm4\n\t" 496 "movq 1%1, %%mm4\n\t"
518 "paddusw %%mm3, %%mm2\n\t" 515 "paddusw %%mm3, %%mm2\n\t"
519 "psrlw $1, %%mm0\n\t" 516 "psrlw $1, %%mm0\n\t"
520 "psrlw $1, %%mm2\n\t" 517 "psrlw $1, %%mm2\n\t"
521 "packuswb %%mm2, %%mm0\n\t" 518 "packuswb %%mm2, %%mm0\n\t"
522 "movq %%mm0, %0\n\t" 519 "movq %%mm0, %0\n\t"
523 :"=m"(*p) 520 :"+m"(*p)
524 :"m"(*pix) 521 :"m"(*pix)
525 :"memory"); 522 :"memory");
526 pix += line_size; 523 pix += line_size;
527 p += line_size; 524 p += line_size;
528 } while (--h); 525 } while (--h);
535 p = block; 532 p = block;
536 pix = pixels; 533 pix = pixels;
537 __asm __volatile( 534 __asm __volatile(
538 "pxor %%mm7, %%mm7\n\t" 535 "pxor %%mm7, %%mm7\n\t"
539 "movq %0, %%mm6\n\t" 536 "movq %0, %%mm6\n\t"
540 ::"m"(mm_wone):"memory"); 537 ::"m"(mm_wone));
541 do { 538 do {
542 __asm __volatile( 539 __asm __volatile(
543 "movq %1, %%mm1\n\t" 540 "movq %1, %%mm1\n\t"
544 "movq %0, %%mm0\n\t" 541 "movq %0, %%mm0\n\t"
545 "movq %2, %%mm4\n\t" 542 "movq %2, %%mm4\n\t"
564 "paddusw %%mm3, %%mm2\n\t" 561 "paddusw %%mm3, %%mm2\n\t"
565 "psrlw $1, %%mm0\n\t" 562 "psrlw $1, %%mm0\n\t"
566 "psrlw $1, %%mm2\n\t" 563 "psrlw $1, %%mm2\n\t"
567 "packuswb %%mm2, %%mm0\n\t" 564 "packuswb %%mm2, %%mm0\n\t"
568 "movq %%mm0, %0\n\t" 565 "movq %%mm0, %0\n\t"
569 :"=m"(*p) 566 :"+m"(*p)
570 :"m"(*pix), "m"(*(pix+line_size)) 567 :"m"(*pix), "m"(*(pix+line_size))
571 :"memory"); 568 :"memory");
572 pix += line_size; 569 pix += line_size;
573 p += line_size ; 570 p += line_size ;
574 } while(--h); 571 } while(--h);
581 p = block; 578 p = block;
582 pix = pixels; 579 pix = pixels;
583 __asm __volatile( 580 __asm __volatile(
584 "pxor %%mm7, %%mm7\n\t" 581 "pxor %%mm7, %%mm7\n\t"
585 "movq %0, %%mm6\n\t" 582 "movq %0, %%mm6\n\t"
586 ::"m"(mm_wtwo):"memory"); 583 ::"m"(mm_wtwo));
587 do { 584 do {
588 __asm __volatile( 585 __asm __volatile(
589 "movq %1, %%mm0\n\t" 586 "movq %1, %%mm0\n\t"
590 "movq %2, %%mm1\n\t" 587 "movq %2, %%mm1\n\t"
591 "movq 1%1, %%mm4\n\t" 588 "movq 1%1, %%mm4\n\t"
623 "paddusw %%mm5, %%mm2\n\t" 620 "paddusw %%mm5, %%mm2\n\t"
624 "psrlw $1, %%mm0\n\t" 621 "psrlw $1, %%mm0\n\t"
625 "psrlw $1, %%mm2\n\t" 622 "psrlw $1, %%mm2\n\t"
626 "packuswb %%mm2, %%mm0\n\t" 623 "packuswb %%mm2, %%mm0\n\t"
627 "movq %%mm0, %0\n\t" 624 "movq %%mm0, %0\n\t"
628 :"=m"(*p) 625 :"+m"(*p)
629 :"m"(*pix), 626 :"m"(*pix),
630 "m"(*(pix+line_size)), "m"(mm_wone) 627 "m"(*(pix+line_size)), "m"(mm_wone)
631 :"memory"); 628 :"memory");
632 pix += line_size; 629 pix += line_size;
633 p += line_size ; 630 p += line_size ;
638 { 635 {
639 UINT8 *p; 636 UINT8 *p;
640 const UINT8 *pix; 637 const UINT8 *pix;
641 p = block; 638 p = block;
642 pix = pixels; 639 pix = pixels;
643 __asm __volatile("pxor %%mm7, %%mm7\n\t":::"memory"); 640 __asm __volatile("pxor %%mm7, %%mm7\n\t":);
644 do { 641 do {
645 __asm __volatile( 642 __asm __volatile(
646 "movq %1, %%mm0\n\t" 643 "movq %1, %%mm0\n\t"
647 "movq %0, %%mm1\n\t" 644 "movq %0, %%mm1\n\t"
648 "movq %%mm0, %%mm2\n\t" 645 "movq %%mm0, %%mm2\n\t"
655 "paddusw %%mm3, %%mm2\n\t" 652 "paddusw %%mm3, %%mm2\n\t"
656 "psrlw $1, %%mm0\n\t" 653 "psrlw $1, %%mm0\n\t"
657 "psrlw $1, %%mm2\n\t" 654 "psrlw $1, %%mm2\n\t"
658 "packuswb %%mm2, %%mm0\n\t" 655 "packuswb %%mm2, %%mm0\n\t"
659 "movq %%mm0, %0\n\t" 656 "movq %%mm0, %0\n\t"
660 :"=m"(*p) 657 :"+m"(*p)
661 :"m"(*pix) 658 :"m"(*pix)
662 :"memory"); 659 :"memory");
663 pix += line_size; 660 pix += line_size;
664 p += line_size ; 661 p += line_size ;
665 } while (--h); 662 } while (--h);
670 UINT8 *p; 667 UINT8 *p;
671 const UINT8 *pix; 668 const UINT8 *pix;
672 p = block; 669 p = block;
673 pix = pixels; 670 pix = pixels;
674 __asm __volatile( 671 __asm __volatile(
675 "pxor %%mm7, %%mm7\n\t":::"memory"); 672 "pxor %%mm7, %%mm7\n\t":);
676 do { 673 do {
677 __asm __volatile( 674 __asm __volatile(
678 "movq %1, %%mm0\n\t" 675 "movq %1, %%mm0\n\t"
679 "movq 1%1, %%mm1\n\t" 676 "movq 1%1, %%mm1\n\t"
680 "movq %0, %%mm4\n\t" 677 "movq %0, %%mm4\n\t"
695 "paddusw %%mm5, %%mm2\n\t" 692 "paddusw %%mm5, %%mm2\n\t"
696 "psrlw $1, %%mm0\n\t" 693 "psrlw $1, %%mm0\n\t"
697 "psrlw $1, %%mm2\n\t" 694 "psrlw $1, %%mm2\n\t"
698 "packuswb %%mm2, %%mm0\n\t" 695 "packuswb %%mm2, %%mm0\n\t"
699 "movq %%mm0, %0\n\t" 696 "movq %%mm0, %0\n\t"
700 :"=m"(*p) 697 :"+m"(*p)
701 :"m"(*pix) 698 :"m"(*pix)
702 :"memory"); 699 :"memory");
703 pix += line_size; 700 pix += line_size;
704 p += line_size; 701 p += line_size;
705 } while (--h); 702 } while (--h);
710 UINT8 *p; 707 UINT8 *p;
711 const UINT8 *pix; 708 const UINT8 *pix;
712 p = block; 709 p = block;
713 pix = pixels; 710 pix = pixels;
714 __asm __volatile( 711 __asm __volatile(
715 "pxor %%mm7, %%mm7\n\t":::"memory"); 712 "pxor %%mm7, %%mm7\n\t":);
716 do { 713 do {
717 __asm __volatile( 714 __asm __volatile(
718 "movq %1, %%mm0\n\t" 715 "movq %1, %%mm0\n\t"
719 "movq %2, %%mm1\n\t" 716 "movq %2, %%mm1\n\t"
720 "movq %0, %%mm4\n\t" 717 "movq %0, %%mm4\n\t"
735 "paddusw %%mm5, %%mm2\n\t" 732 "paddusw %%mm5, %%mm2\n\t"
736 "psrlw $1, %%mm0\n\t" 733 "psrlw $1, %%mm0\n\t"
737 "psrlw $1, %%mm2\n\t" 734 "psrlw $1, %%mm2\n\t"
738 "packuswb %%mm2, %%mm0\n\t" 735 "packuswb %%mm2, %%mm0\n\t"
739 "movq %%mm0, %0\n\t" 736 "movq %%mm0, %0\n\t"
740 :"=m"(*p) 737 :"+m"(*p)
741 :"m"(*pix), "m"(*(pix+line_size)) 738 :"m"(*pix), "m"(*(pix+line_size))
742 :"memory"); 739 :"memory");
743 pix += line_size; 740 pix += line_size;
744 p += line_size ; 741 p += line_size ;
745 } while(--h); 742 } while(--h);
752 p = block; 749 p = block;
753 pix = pixels; 750 pix = pixels;
754 __asm __volatile( 751 __asm __volatile(
755 "pxor %%mm7, %%mm7\n\t" 752 "pxor %%mm7, %%mm7\n\t"
756 "movq %0, %%mm6\n\t" 753 "movq %0, %%mm6\n\t"
757 ::"m"(mm_wone):"memory"); 754 ::"m"(mm_wone));
758 do { 755 do {
759 __asm __volatile( 756 __asm __volatile(
760 "movq %1, %%mm0\n\t" 757 "movq %1, %%mm0\n\t"
761 "movq %2, %%mm1\n\t" 758 "movq %2, %%mm1\n\t"
762 "movq 1%1, %%mm4\n\t" 759 "movq 1%1, %%mm4\n\t"
791 "paddusw %%mm3, %%mm2\n\t" 788 "paddusw %%mm3, %%mm2\n\t"
792 "psrlw $1, %%mm0\n\t" 789 "psrlw $1, %%mm0\n\t"
793 "psrlw $1, %%mm2\n\t" 790 "psrlw $1, %%mm2\n\t"
794 "packuswb %%mm2, %%mm0\n\t" 791 "packuswb %%mm2, %%mm0\n\t"
795 "movq %%mm0, %0\n\t" 792 "movq %%mm0, %0\n\t"
796 :"=m"(*p) 793 :"+m"(*p)
797 :"m"(*pix), 794 :"m"(*pix),
798 "m"(*(pix+line_size)) 795 "m"(*(pix+line_size))
799 :"memory"); 796 :"memory");
800 pix += line_size; 797 pix += line_size;
801 p += line_size; 798 p += line_size;
806 { 803 {
807 DCTELEM *p; 804 DCTELEM *p;
808 const UINT8 *pix; 805 const UINT8 *pix;
809 p = block; 806 p = block;
810 pix = pixels; 807 pix = pixels;
811 __asm __volatile("pxor %%mm7, %%mm7":::"memory"); 808 __asm __volatile("pxor %%mm7, %%mm7":);
812 do { 809 do {
813 __asm __volatile( 810 __asm __volatile(
814 "movq %0, %%mm0\n\t" 811 "movq %0, %%mm0\n\t"
815 "movq %1, %%mm2\n\t" 812 "movq %1, %%mm2\n\t"
816 "movq 8%0, %%mm1\n\t" 813 "movq 8%0, %%mm1\n\t"
819 "punpckhbw %%mm7, %%mm3\n\t" 816 "punpckhbw %%mm7, %%mm3\n\t"
820 "psubsw %%mm2, %%mm0\n\t" 817 "psubsw %%mm2, %%mm0\n\t"
821 "psubsw %%mm3, %%mm1\n\t" 818 "psubsw %%mm3, %%mm1\n\t"
822 "movq %%mm0, %0\n\t" 819 "movq %%mm0, %0\n\t"
823 "movq %%mm1, 8%0\n\t" 820 "movq %%mm1, 8%0\n\t"
824 :"=m"(*p) 821 :"+m"(*p)
825 :"m"(*pix) 822 :"m"(*pix)
826 :"memory"); 823 :"memory");
827 pix += line_size; 824 pix += line_size;
828 p += 8; 825 p += 8;
829 } while (--h); 826 } while (--h);
836 p = block; 833 p = block;
837 pix = pixels; 834 pix = pixels;
838 __asm __volatile( 835 __asm __volatile(
839 "pxor %%mm7, %%mm7\n\t" 836 "pxor %%mm7, %%mm7\n\t"
840 "movq %0, %%mm6" 837 "movq %0, %%mm6"
841 ::"m"(mm_wone):"memory"); 838 ::"m"(mm_wone));
842 do { 839 do {
843 __asm __volatile( 840 __asm __volatile(
844 "movq %0, %%mm0\n\t" 841 "movq %0, %%mm0\n\t"
845 "movq %1, %%mm2\n\t" 842 "movq %1, %%mm2\n\t"
846 "movq 8%0, %%mm1\n\t" 843 "movq 8%0, %%mm1\n\t"
859 "psrlw $1, %%mm3\n\t" 856 "psrlw $1, %%mm3\n\t"
860 "psubsw %%mm2, %%mm0\n\t" 857 "psubsw %%mm2, %%mm0\n\t"
861 "psubsw %%mm3, %%mm1\n\t" 858 "psubsw %%mm3, %%mm1\n\t"
862 "movq %%mm0, %0\n\t" 859 "movq %%mm0, %0\n\t"
863 "movq %%mm1, 8%0\n\t" 860 "movq %%mm1, 8%0\n\t"
864 :"=m"(*p) 861 :"+m"(*p)
865 :"m"(*pix) 862 :"m"(*pix)
866 :"memory"); 863 :"memory");
867 pix += line_size; 864 pix += line_size;
868 p += 8; 865 p += 8;
869 } while (--h); 866 } while (--h);
876 p = block; 873 p = block;
877 pix = pixels; 874 pix = pixels;
878 __asm __volatile( 875 __asm __volatile(
879 "pxor %%mm7, %%mm7\n\t" 876 "pxor %%mm7, %%mm7\n\t"
880 "movq %0, %%mm6" 877 "movq %0, %%mm6"
881 ::"m"(mm_wone):"memory"); 878 ::"m"(mm_wone));
882 do { 879 do {
883 __asm __volatile( 880 __asm __volatile(
884 "movq %0, %%mm0\n\t" 881 "movq %0, %%mm0\n\t"
885 "movq %1, %%mm2\n\t" 882 "movq %1, %%mm2\n\t"
886 "movq 8%0, %%mm1\n\t" 883 "movq 8%0, %%mm1\n\t"
899 "psrlw $1, %%mm3\n\t" 896 "psrlw $1, %%mm3\n\t"
900 "psubsw %%mm2, %%mm0\n\t" 897 "psubsw %%mm2, %%mm0\n\t"
901 "psubsw %%mm3, %%mm1\n\t" 898 "psubsw %%mm3, %%mm1\n\t"
902 "movq %%mm0, %0\n\t" 899 "movq %%mm0, %0\n\t"
903 "movq %%mm1, 8%0\n\t" 900 "movq %%mm1, 8%0\n\t"
904 :"=m"(*p) 901 :"+m"(*p)
905 :"m"(*pix), "m"(*(pix+line_size)) 902 :"m"(*pix), "m"(*(pix+line_size))
906 :"memory"); 903 :"memory");
907 pix += line_size; 904 pix += line_size;
908 p += 8; 905 p += 8;
909 } while (--h); 906 } while (--h);
916 p = block; 913 p = block;
917 pix = pixels; 914 pix = pixels;
918 __asm __volatile( 915 __asm __volatile(
919 "pxor %%mm7, %%mm7\n\t" 916 "pxor %%mm7, %%mm7\n\t"
920 "movq %0, %%mm6\n\t" 917 "movq %0, %%mm6\n\t"
921 ::"m"(mm_wtwo):"memory"); 918 ::"m"(mm_wtwo));
922 do { 919 do {
923 __asm __volatile( 920 __asm __volatile(
924 "movq %1, %%mm0\n\t" 921 "movq %1, %%mm0\n\t"
925 "movq %2, %%mm1\n\t" 922 "movq %2, %%mm1\n\t"
926 "movq 1%1, %%mm4\n\t" 923 "movq 1%1, %%mm4\n\t"
951 "psrlw $2, %%mm2\n\t" 948 "psrlw $2, %%mm2\n\t"
952 "psubsw %%mm0, %%mm1\n\t" 949 "psubsw %%mm0, %%mm1\n\t"
953 "psubsw %%mm2, %%mm3\n\t" 950 "psubsw %%mm2, %%mm3\n\t"
954 "movq %%mm1, %0\n\t" 951 "movq %%mm1, %0\n\t"
955 "movq %%mm3, 8%0\n\t" 952 "movq %%mm3, 8%0\n\t"
956 :"=m"(*p) 953 :"+m"(*p)
957 :"m"(*pix), 954 :"m"(*pix),
958 "m"(*(pix+line_size)) 955 "m"(*(pix+line_size))
959 :"memory"); 956 :"memory");
960 pix += line_size; 957 pix += line_size;
961 p += 8 ; 958 p += 8 ;