SPU ASMJIT: move vzeroupper a bit

This commit is contained in:
Nekotekina 2019-04-14 15:10:54 +03:00
parent 8deb20e928
commit c1edae73c5

View File

@ -181,17 +181,31 @@ bool spu_recompiler::compile(u64 last_reset_count, const std::vector<u32>& func)
if (!g_cfg.core.spu_verification)
{
// Disable check (unsafe)
if (utils::has_avx())
{
c->vzeroupper();
}
}
else if (m_size == 4)
{
c->cmp(x86::dword_ptr(*ls, start), func[1]);
c->jnz(label_diff);
if (utils::has_avx())
{
c->vzeroupper();
}
}
else if (m_size == 8)
{
c->mov(*qw1, static_cast<u64>(func[2]) << 32 | func[1]);
c->cmp(*qw1, x86::qword_ptr(*ls, start));
c->jnz(label_diff);
if (utils::has_avx())
{
c->vzeroupper();
}
}
else if (utils::has_512() && false)
{
@ -272,6 +286,7 @@ bool spu_recompiler::compile(u64 last_reset_count, const std::vector<u32>& func)
c->ktestw(x86::k1, x86::k1);
c->jnz(label_diff);
c->vzeroupper();
}
else if (utils::has_512())
{
@ -392,6 +407,8 @@ bool spu_recompiler::compile(u64 last_reset_count, const std::vector<u32>& func)
c->vptest(x86::ymm0, x86::ymm0);
c->jnz(label_diff);
}
c->vzeroupper();
}
else if (utils::has_avx())
{
@ -531,6 +548,8 @@ bool spu_recompiler::compile(u64 last_reset_count, const std::vector<u32>& func)
c->vptest(x86::ymm0, x86::ymm0);
c->jnz(label_diff);
}
c->vzeroupper();
}
else
{
@ -661,11 +680,6 @@ bool spu_recompiler::compile(u64 last_reset_count, const std::vector<u32>& func)
}
}
if (utils::has_avx())
{
c->vzeroupper();
}
// Acknowledge success and add statistics
c->add(SPU_OFF_64(block_counter), ::size32(words) / (words_align / 4));