This commit is contained in:
Miodrag Milanovic 2015-03-26 11:18:30 +01:00
commit ec7276af73

View File

@ -4417,36 +4417,36 @@ void i386_device::sse_predicate_compare_double(UINT8 imm8, XMM_REG d, XMM_REG s)
switch (imm8 & 7)
{
case 0:
d.q[0]=d.f64[0] == s.f64[0] ? 0xffffffffffffffff : 0;
d.q[1]=d.f64[1] == s.f64[1] ? 0xffffffffffffffff : 0;
d.q[0]=d.f64[0] == s.f64[0] ? U64(0xffffffffffffffff) : 0;
d.q[1]=d.f64[1] == s.f64[1] ? U64(0xffffffffffffffff) : 0;
break;
case 1:
d.q[0]=d.f64[0] < s.f64[0] ? 0xffffffffffffffff : 0;
d.q[1]=d.f64[1] < s.f64[1] ? 0xffffffffffffffff : 0;
d.q[0]=d.f64[0] < s.f64[0] ? U64(0xffffffffffffffff) : 0;
d.q[1]=d.f64[1] < s.f64[1] ? U64(0xffffffffffffffff) : 0;
break;
case 2:
d.q[0]=d.f64[0] <= s.f64[0] ? 0xffffffffffffffff : 0;
d.q[1]=d.f64[1] <= s.f64[1] ? 0xffffffffffffffff : 0;
d.q[0]=d.f64[0] <= s.f64[0] ? U64(0xffffffffffffffff) : 0;
d.q[1]=d.f64[1] <= s.f64[1] ? U64(0xffffffffffffffff) : 0;
break;
case 3:
d.q[0]=sse_isdoubleunordered(d.f64[0], s.f64[0]) ? 0xffffffffffffffff : 0;
d.q[1]=sse_isdoubleunordered(d.f64[1], s.f64[1]) ? 0xffffffffffffffff : 0;
d.q[0]=sse_isdoubleunordered(d.f64[0], s.f64[0]) ? U64(0xffffffffffffffff) : 0;
d.q[1]=sse_isdoubleunordered(d.f64[1], s.f64[1]) ? U64(0xffffffffffffffff) : 0;
break;
case 4:
d.q[0]=d.f64[0] != s.f64[0] ? 0xffffffffffffffff : 0;
d.q[1]=d.f64[1] != s.f64[1] ? 0xffffffffffffffff : 0;
d.q[0]=d.f64[0] != s.f64[0] ? U64(0xffffffffffffffff) : 0;
d.q[1]=d.f64[1] != s.f64[1] ? U64(0xffffffffffffffff) : 0;
break;
case 5:
d.q[0]=d.f64[0] < s.f64[0] ? 0 : 0xffffffffffffffff;
d.q[1]=d.f64[1] < s.f64[1] ? 0 : 0xffffffffffffffff;
d.q[0]=d.f64[0] < s.f64[0] ? 0 : U64(0xffffffffffffffff);
d.q[1]=d.f64[1] < s.f64[1] ? 0 : U64(0xffffffffffffffff);
break;
case 6:
d.q[0]=d.f64[0] <= s.f64[0] ? 0 : 0xffffffffffffffff;
d.q[1]=d.f64[1] <= s.f64[1] ? 0 : 0xffffffffffffffff;
d.q[0]=d.f64[0] <= s.f64[0] ? 0 : U64(0xffffffffffffffff);
d.q[1]=d.f64[1] <= s.f64[1] ? 0 : U64(0xffffffffffffffff);
break;
case 7:
d.q[0]=sse_isdoubleordered(d.f64[0], s.f64[0]) ? 0xffffffffffffffff : 0;
d.q[1]=sse_isdoubleordered(d.f64[1], s.f64[1]) ? 0xffffffffffffffff : 0;
d.q[0]=sse_isdoubleordered(d.f64[0], s.f64[0]) ? U64(0xffffffffffffffff) : 0;
d.q[1]=sse_isdoubleordered(d.f64[1], s.f64[1]) ? U64(0xffffffffffffffff) : 0;
break;
}
}
@ -4487,28 +4487,28 @@ void i386_device::sse_predicate_compare_double_scalar(UINT8 imm8, XMM_REG d, XMM
switch (imm8 & 7)
{
case 0:
d.q[0]=d.f64[0] == s.f64[0] ? 0xffffffffffffffff : 0;
d.q[0]=d.f64[0] == s.f64[0] ? U64(0xffffffffffffffff) : 0;
break;
case 1:
d.q[0]=d.f64[0] < s.f64[0] ? 0xffffffffffffffff : 0;
d.q[0]=d.f64[0] < s.f64[0] ? U64(0xffffffffffffffff) : 0;
break;
case 2:
d.q[0]=d.f64[0] <= s.f64[0] ? 0xffffffffffffffff : 0;
d.q[0]=d.f64[0] <= s.f64[0] ? U64(0xffffffffffffffff) : 0;
break;
case 3:
d.q[0]=sse_isdoubleunordered(d.f64[0], s.f64[0]) ? 0xffffffffffffffff : 0;
d.q[0]=sse_isdoubleunordered(d.f64[0], s.f64[0]) ? U64(0xffffffffffffffff) : 0;
break;
case 4:
d.q[0]=d.f64[0] != s.f64[0] ? 0xffffffffffffffff : 0;
d.q[0]=d.f64[0] != s.f64[0] ? U64(0xffffffffffffffff) : 0;
break;
case 5:
d.q[0]=d.f64[0] < s.f64[0] ? 0 : 0xffffffffffffffff;
d.q[0]=d.f64[0] < s.f64[0] ? 0 : U64(0xffffffffffffffff);
break;
case 6:
d.q[0]=d.f64[0] <= s.f64[0] ? 0 : 0xffffffffffffffff;
d.q[0]=d.f64[0] <= s.f64[0] ? 0 : U64(0xffffffffffffffff);
break;
case 7:
d.q[0]=sse_isdoubleordered(d.f64[0], s.f64[0]) ? 0xffffffffffffffff : 0;
d.q[0]=sse_isdoubleordered(d.f64[0], s.f64[0]) ? U64(0xffffffffffffffff) : 0;
break;
}
}