◎αブレンディング 基本は des=((src-des)*alpha>>alphabit)+des; ;4ピクセルを一度に扱います。 ;mm6=0x0AAA0AAA0AAA0AAA AAA=alpha(0-100H) ;mm7=0x001f001f001f001f !!最適化作業中!! movq mm0,[ebx] ;U1 ;v1 movq mm3,[edi] ;U2 movq mm1,mm0 ;v2 movq mm2,mm0 ;u3 pand mm0,mm7 ;v3 sb movq mm4,mm3 ;u4 psrlw mm1,5 ;v4 movq mm5,mm3 ;u5 pand mm3,mm7 ;v5 db psrlw mm2,10 ;u6 psubw mm0,mm3 ;v6 sb-db pand mm1,mm7 ;u7 sg pmullw mm0,mm6 ;v7-9 (sb-db)*alpha pand mm4,mm7 ;u8 dg psrlw mm4,5 ;v8 psubw mm1,mm4 ;u9 psrlw mm5,10 ;v9 pand mm2,mm7 ;u10 sr pmullw mm1,mm6 ;v10-12 pand mm5,mm7 ;u11dr psraw mm0,8 ;v11 (sb-db)*alpha>>8 psubw mm2,mm5 ;u12 paddw mm0,mm3 ;v12 pmullw mm2,mm6 ;u13-15 psraw mm1,8 ;v13 pand mm0,mm7 ;u14 paddw mm1,mm4 ;v14 pand mm1,mm7 ;u15 ;v15 psraw mm2,8 ;u16 ;v16 psllw mm1,5 ;u17 paddw mm2,mm5 ;v17 por mm0,mm1 ;u18 pand mm2,mm7 ;v18 psllw mm2,10 ;u19 por mm0,mm2 ;u20 movq [ebx],mm0 ;u22<-20 ;最適化前のコード movq mm0,src movq mm3,des movq mm1,mm0 movq mm4,mm3 movq mm2,mm0 movq mm5,mm3 psrlw mm1,5 psrlw mm4,5 psrlw mm2,10 psrlw mm5,10 pand mm0,mm7 ;sb pand mm1,mm7 ;sg pand mm2,mm7 ;sr pand mm3,mm7 ;db pand mm4,mm7 ;dg pand mm5,mm7 ;dr psubw mm0,mm3 ;sb-db psubw mm1,mm4 psubw mm2,mm5 pmullw mm0,mm6 ;(sb-db)*alpha pmullw mm1,mm6 pmullw mm2,mm6 psraw mm0,8 ;(sb-db)*alpha>>8 psraw mm1,8 psraw mm2,8 paddw mm0,mm3 paddw mm1,mm4 paddw mm2,mm5 pand mm0,mm7 pand mm1,mm7 pand mm2,mm7 psllw mm1,5 psllw mm2,10 por mm0,mm1 por mm0,mm2 movq des,mm0