IPU: include default alpha in SSE code for maybe a small speed gain.

git-svn-id: http://pcsx2.googlecode.com/svn/trunk@3107 96395faa-99c1-11dd-bbfe-3dabce05a288
This commit is contained in:
sudonim1 2010-05-28 21:55:44 +00:00
parent d8b0ac03e5
commit a98072a3ca
2 changed files with 16 additions and 10 deletions

View File

@ -1166,22 +1166,16 @@ void __fastcall ipu_csc(macroblock_8 *mb8, macroblock_rgb32 *rgb32, int sgn)
{
if ((p[0] < s_thresh[0]) && (p[1] < s_thresh[0]) && (p[2] < s_thresh[0]))
*(u32*)p = 0;
else
p[3] = ((p[0] < s_thresh[1]) && (p[1] < s_thresh[1]) && (p[2] < s_thresh[1])) ? 0x40 : 0x80;
else if ((p[0] < s_thresh[1]) && (p[1] < s_thresh[1]) && (p[2] < s_thresh[1]))
p[3] = 0x40;
}
}
else if (s_thresh[1] > 0)
{
for (i = 0; i < 64*4; i++, p += 4)
{
p[3] = ((p[0] < s_thresh[1]) && (p[1] < s_thresh[1]) && (p[2] < s_thresh[1])) ? 0x40 : 0x80;
}
}
else
{
for (i = 0; i < 64; i++, p += 16)
{
p[3] = p[7] = p[11] = p[15] = 0x80;
if ((p[0] < s_thresh[1]) && (p[1] < s_thresh[1]) && (p[2] < s_thresh[1]))
p[3] = 0x40;
}
}
}

View File

@ -155,6 +155,12 @@ ihatemsvc:
paddsw xmm2, xmm6
paddsw xmm5, xmm7
// 0x80; a constant is probably so much better
pcmpeqb xmm7, xmm7
psllw xmm7, 15
psrlw xmm7, 8
packuswb xmm7, xmm7
// round
movaps xmm6, xmmword ptr [edx+ROUND_1BIT]
paddw xmm0, xmm6
@ -289,6 +295,12 @@ ihatemsvc:
"paddsw xmm2, xmm6\n"
"paddsw xmm5, xmm7\n"
// 0x80; a constant is probably so much better
"pcmpeqb xmm7, xmm7\n"
"psllw xmm7, 15\n"
"psrlw xmm7, 8\n"
"packuswb xmm7, xmm7\n"
// round
"movaps xmm6, xmmword ptr [%[sse2_tables]+%c[ROUND_1BIT]]\n"
"paddw xmm0, xmm6\n"