| 634 | #if 1 |
| 635 | /* borrowed from: http://lists-archives.org/mplayer-dev-eng/14875-compiling-with-intel-c.html */ |
| 636 | /* Ugly, but uses a minimal number of operands just to fit into Intel C limits */ |
| 637 | asm volatile("movd (%1), %%mm0 \n\t" |
| 638 | "mov %3, %%eax \n\t" |
| 639 | "movd (%1, %%eax), %%mm1 \n\t" |
| 640 | "add %3, %%eax \n\t" |
| 641 | "movd (%1, %%eax), %%mm2 \n\t" |
| 642 | "add %3, %%eax \n\t" |
| 643 | "movd (%1, %%eax), %%mm3 \n\t" |
| 644 | "punpcklbw %%mm1, %%mm0 \n\t" |
| 645 | "punpcklbw %%mm3, %%mm2 \n\t" |
| 646 | "movq %%mm0, %%mm1 \n\t" |
| 647 | "punpcklwd %%mm2, %%mm0 \n\t" |
| 648 | "punpckhwd %%mm2, %%mm1 \n\t" |
| 649 | "movd %%mm0, (%0) \n\t" |
| 650 | "punpckhdq %%mm0, %%mm0 \n\t" |
| 651 | "mov %2, %%eax \n\t" |
| 652 | "movd %%mm0, (%0, %%eax) \n\t" |
| 653 | "add %2, %%eax \n\t" |
| 654 | "movd %%mm1, (%0, %%eax) \n\t" |
| 655 | "punpckhdq %%mm1, %%mm1 \n\t" |
| 656 | "add %2, %%eax \n\t" |
| 657 | "movd %%mm1, (%0, %%eax) \n\t" |
| 658 | :: "r" (dst), "r" (src), "r"(dst_stride), "r"(src_stride) |
| 659 | : "eax"); |
| 660 | #else |