# HG changeset patch # User gpoirier # Date 1150110850 0 # Node ID d940ecaff28635ea357524431f894ea82cef93fb # Parent bee3186a06f7583d88c747a2ec96e38a1b954d5a moves invariant code (chiefly MMX register initialization) out of loops as well as eliminating some memory accesses within the inner loop. Patch by Zuxy Meng < zuxy POIS meng AH gmail POIS com > Original thread: Date: Mon, 12 Jun 2006 00:31:53 -0700 (PDT) Subject [MPlayer-dev-eng] [PATCH] Loop invariant motion in libvo/osd_template.c diff -r bee3186a06f7 -r d940ecaff286 libvo/osd_template.c --- a/libvo/osd_template.c Sun Jun 11 21:29:00 2006 +0000 +++ b/libvo/osd_template.c Mon Jun 12 11:14:10 2006 +0000 @@ -32,6 +32,15 @@ #if defined(FAST_OSD) && !defined(HAVE_MMX) w=w>>1; #endif +#ifdef HAVE_MMX + asm volatile( + "pcmpeqb %%mm5, %%mm5\n\t" // F..F + "movq %%mm5, %%mm4\n\t" + "movq %%mm5, %%mm7\n\t" + "psllw $8, %%mm5\n\t" //FF00FF00FF00 + "psrlw $8, %%mm4\n\t" //00FF00FF00FF + ::); +#endif for(y=0;y>1; #endif +#ifdef HAVE_MMX + asm volatile( + "pxor %%mm7, %%mm7\n\t" + "pcmpeqb %%mm5, %%mm5\n\t" // F..F + "movq %%mm5, %%mm6\n\t" + "movq %%mm5, %%mm4\n\t" + "psllw $8, %%mm5\n\t" //FF00FF00FF00 + "psrlw $8, %%mm4\n\t" //00FF00FF00FF + ::); +#endif for(y=0;y