I have this code:
asm @nogc{
        movq            XMM0, xy;
        paddd           XMM0, sXY;      // xy + sXY
        movq            XMM3, xy0;
        psubd           XMM0, XMM3;     // xy + sXY - x0y0
        movq            XMM1, ac;
        movq            XMM2, bd;
        pmuludq         XMM1, XMM0;     // (ac * (xy + sXY - x0y0))
        psrlq           XMM1, 16;       // (ac * (xy + sXY - x0y0))>>16
        pmuludq         XMM2, XMM0; // (bd * (xy + sXY - x0y0))
        psrlq           XMM2, 16;       // (bd * (xy + sXY - x0y0))>>16
paddq XMM1, XMM2; // (bd * (xy + sXY - x0y0))>>16 * (ac * (xy + sXY - x0y0))>>16
        punpckldq       XMM3, XMM7;
paddq XMM1, XMM3; // (bd * (xy + sXY - x0y0))>>16 * (ac * (xy + sXY - x0y0))>>16 + x0y0
        movups          XMM2, XMM1;     // Convert 64 bit vectors into 32 bit 
ones
        psrldq          XMM2, 4;
        por                     XMM2, XMM1;     
        movq            result, XMM2;
}
I'm getting "bad type/size of operand 'movq'" error on xy0, ac, and bd when I try to compile it. All of the values are the type of int[2], xy is function parameter, sXY is created locally. How can I fix it?

Reply via email to