@Yudzhin_NSK

Как записать из регистра в указатель?

Мне нужно избавиться от 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));
}
  • Вопрос задан
  • 136 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы