| | 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 |