8bitビットマップ(グレースケール)から32bitビットマップへの変換を、MMX使って
実装しようとしているのですが、思っていたよりも早くならずに難渋しています。
 適当なやり方しているのは自覚しているのですが、同じく適当にCで書いたルーチン
と、リリース版の最適化コミで速度変わらずってのはかなり凹みました。
 どこかもっと最適化する場所があるのでしょうか? ご存じの方ご教授願います。

void testcopy( void *dst, const void *src, int size )
{
  int size2 = size >> 1;
  if(size2 != 0){
    __asm{
      mov edi, dst;
      mov esi, src;
      mov ecx, size2;
    loop_mp:
      movq mm0, [esi];
      punpcklbw mm0, mm0;
      punpcklbw mm0, mm0;
      movq [edi], mm0;
      lea esi, [esi + 2];
      lea edi, [edi + 8];
      dec ecx;
      jnz loop_mp;
      emms;
    }
  }
}