mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-06 15:01:28 +12:00
SPU Analyzer: Minor PUTLLC16 bugfixes
This commit is contained in:
parent
1ec523b018
commit
55ed95b42c
2 changed files with 24 additions and 16 deletions
|
@ -5086,7 +5086,7 @@ spu_program spu_recompiler_base::analyse(const be_t<u32>* ls, u32 entry_point, s
|
|||
std::vector<u32> to_pop;
|
||||
|
||||
usz stackframe_it = wi;
|
||||
usz stackframe_pc = SPU_LS_SIZE;
|
||||
u32 stackframe_pc = SPU_LS_SIZE;
|
||||
usz entry_index = umax;
|
||||
|
||||
auto get_block_targets = [&](u32 pc) -> std::basic_string_view<u32>
|
||||
|
@ -5565,11 +5565,6 @@ spu_program spu_recompiler_base::analyse(const be_t<u32>* ls, u32 entry_point, s
|
|||
}
|
||||
|
||||
case spu_itype::IRET:
|
||||
{
|
||||
next_block();
|
||||
break;
|
||||
}
|
||||
|
||||
case spu_itype::BI:
|
||||
case spu_itype::BISL:
|
||||
case spu_itype::BISLED:
|
||||
|
@ -5578,7 +5573,7 @@ spu_program spu_recompiler_base::analyse(const be_t<u32>* ls, u32 entry_point, s
|
|||
case spu_itype::BIHZ:
|
||||
case spu_itype::BIHNZ:
|
||||
{
|
||||
if (op.e)
|
||||
if (op.e || op.d)
|
||||
{
|
||||
break_putllc16(27, atomic16.discard());
|
||||
}
|
||||
|
@ -5665,14 +5660,16 @@ spu_program spu_recompiler_base::analyse(const be_t<u32>* ls, u32 entry_point, s
|
|||
{
|
||||
case MFC_GETLLAR_CMD:
|
||||
{
|
||||
auto lsa = get_reg(s_reg_mfc_lsa);
|
||||
inherit_const_mask_value(s_reg_mfc_lsa, lsa, 0, ~SPU_LS_MASK_128);
|
||||
lsa = get_reg(s_reg_mfc_lsa);
|
||||
const u32 lsa_pc = atomic16.lsa_last_pc == SPU_LS_SIZE ? bpc : atomic16.lsa_last_pc;
|
||||
|
||||
if (atomic16.active)
|
||||
{
|
||||
if (atomic16.lsa_pc != lsa_pc || atomic16.get_pc != pos)
|
||||
if (atomic16.lsa_pc != lsa_pc || atomic16.get_pc != pos || atomic16.lsa != lsa)
|
||||
{
|
||||
break_putllc16(30, atomic16.discard());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5681,9 +5678,7 @@ spu_program spu_recompiler_base::analyse(const be_t<u32>* ls, u32 entry_point, s
|
|||
atomic16.get_pc = pos;
|
||||
atomic16.active = true;
|
||||
|
||||
const auto lsa = get_reg(s_reg_mfc_lsa);
|
||||
inherit_const_mask_value(s_reg_mfc_lsa, lsa, 0, ~SPU_LS_MASK_128);
|
||||
atomic16.lsa = get_reg(s_reg_mfc_lsa);
|
||||
atomic16.lsa = lsa;
|
||||
|
||||
if (likely_putllc_loop)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue