SPU LLVM: Remove wrong zero sign fixup

This commit is contained in:
Elad Ashkenazi 2024-04-28 20:01:30 +03:00
parent e32c48d0dd
commit 430b57833d

View file

@ -5987,29 +5987,24 @@ public:
// This is odd since SPU code could just use the FM instruction, but it seems common enough
if (auto [ok, data] = get_const_vector(c.value, m_pos); ok)
{
if (is_spu_float_zero(data, -1))
if (is_spu_float_zero(data, 0))
{
return eval(a * b);
}
if (!m_use_fma && is_spu_float_zero(data, +1))
{
return eval(a * b + fsplat<f32[4]>(0.f));
}
}
if ([&]()
{
if (auto [ok, data] = get_const_vector(a.value, m_pos); ok)
{
if (!is_spu_float_zero(data, +1))
if (!is_spu_float_zero(data, 0))
{
return false;
}
if (auto [ok0, data0] = get_const_vector(b.value, m_pos); ok0)
{
if (is_spu_float_zero(data0, +1))
if (is_spu_float_zero(data0, 0))
{
return true;
}
@ -6018,14 +6013,14 @@ public:
if (auto [ok, data] = get_const_vector(a.value, m_pos); ok)
{
if (!is_spu_float_zero(data, -1))
if (!is_spu_float_zero(data, 0))
{
return false;
}
if (auto [ok0, data0] = get_const_vector(b.value, m_pos); ok0)
{
if (is_spu_float_zero(data0, -1))
if (is_spu_float_zero(data0, 0))
{
return true;
}