On Friday, 22 January 2016 at 17:27:35 UTC, userABCabc123 wrote:
int pmovmskb(byte16 v)
{
    asm
    {
        naked;
        push RBP;
        mov RBP, RSP;
        sub RSP, 0x10;
        movdqa dword ptr[RBP-0x10], XMM0;
        movdqa XMM0, dword ptr[RBP-0x10];
        pmovmskb EAX, XMM0;
        mov RSP, RBP;
        pop RBP;
        ret;
    }
}

Thanks. It works.
Buth shorter version too:

                asm
                {
                    naked;
                    push RBP;
                    mov RBP, RSP;
                    //sub RSP, 0x10;
                    //movdqa dword ptr[RBP-0x10], XMM0;
                    //movdqa XMM0, dword ptr[RBP-0x10];
                    pmovmskb EAX, XMM0;
                    mov RSP, RBP;
                    pop RBP;
                    ret;
                }

Looks like the SIMD param is passed by SIMD reg

Reply via email to