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