いい組み込み関数が見つかったので、アルファ値のセットの部分を変更しました。
ちっとも速くなりませんでしたが。
__m64 d64, s64, a64, b64;
d64.m64_u64 = *d; d64 = _mm_unpacklo_pi8( d64, _0 );
s64.m64_u64 = *s; s64 = _mm_unpacklo_pi8( s64, _0 );
uint16_t a = (0xFF000000&(*s))>>24; a64 = _mm_set1_pi16( (short)a );
b64 = _mm_subs_pu16( _255, a64 );
d64 = _mm_mullo_pi16( d64, b64 );
s64 = _mm_mullo_pi16( s64, a64 );
d64 = _mm_add_pi16( d64, s64 );
d64 = _mm_srli_pi16( d64, 8 );
d64 = _mm_packs_pu16( d64, _0 );
*d = d64.m64_u32[0];