コード例 #1
0
void GSDrawScanlineCodeGenerator::mix16(const Xmm& a, const Xmm& b, const Xmm& temp)
{
    if(m_cpu.has(util::Cpu::tSSE41))
    {
        pblendw(a, b, 0xaa);
    }
    else
    {
        pcmpeqd(temp, temp);
        psrld(temp, 16);
        pand(a, temp);
        pandn(temp, b);
        por(a, temp);
    }
}
コード例 #2
0
void GSDrawScanlineCodeGenerator::mix16(const Xmm& a, const Xmm& b, const Xmm& temp)
{
#if _M_SSE >= 0x500

    vpblendw(a, b, 0xaa);

#elif _M_SSE >= 0x401

    pblendw(a, b, 0xaa);

#else

    pcmpeqd(temp, temp);
    psrld(temp, 16);
    pand(a, temp);
    pandn(temp, b);
    por(a, temp);

#endif
}