Мне нужно избавиться от memcpy и переменной MUint64 а и записывать сразу из регистра в переменную pixDstWrite.
Можно ли это сделать вообще?
вот код:
void Mix::colorMixFast2(
MUint32 *pixDstWrite,
const MUint32 valSrcA, const MUint32 valDstA,
const MUint32 valSrcB, const MUint32 valDstB,
const int colorRatio256, const int colorRat256Neg
)
{
// TODO: write __asm code here with 2 pixels blending simultaneously
MUint64 a;
__asm {
movd xmm0, valSrcA
movd xmm3, valDstA
movd xmm1, valSrcB
movd xmm4, valDstB
pmovzxbw xmm0, xmm0
pmovzxbw xmm3, xmm3
pmovzxbw xmm1, xmm1
pmovzxbw xmm4, xmm4
pslldq xmm0, 8
pslldq xmm3, 8
paddd xmm0, xmm1
paddd xmm3, xmm4
vpbroadcastw xmm2, colorRat256Neg
vpbroadcastw xmm5, colorRatio256
pmullw xmm0, xmm2
pmullw xmm3, xmm5
paddd xmm0, xmm3
psrlw xmm0, 8
packuswb xmm0, xmm1
movd a, xmm0
}
memcpy(pixDstWrite, &a, sizeof(MUint64));
}