X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=deps%2Flightrec%2Foptimizer.c;h=cb9ba5b87a58fa44761f4f604a5014bb26bc1ad3;hb=1f8c6be323aa8fad329e38682158197e822d27c1;hp=199ca40bcfb2383e07176c10b828c08835ac791e;hpb=a5a6f7b82ed88f1ac3178c32c9bda22eb612814b;p=pcsx_rearmed.git diff --git a/deps/lightrec/optimizer.c b/deps/lightrec/optimizer.c index 199ca40b..cb9ba5b8 100644 --- a/deps/lightrec/optimizer.c +++ b/deps/lightrec/optimizer.c @@ -642,7 +642,7 @@ lightrec_remove_useless_lui(struct block *block, unsigned int offset, return; } - if (op->i.imm != 0 || op->i.rt == 0 || offset == block->nb_ops - 1) + if (op->i.imm != 0 || op->i.rt == 0 || is_delay_slot(list, offset)) return; reader = find_next_reader(list, offset + 1, op->i.rt); @@ -1002,10 +1002,10 @@ static int lightrec_transform_ops(struct lightrec_state *state, struct block *bl break; case OP_LUI: - if (i == 0 || !has_delay_slot(list[i - 1].c)) + if (!is_delay_slot(list, i)) lightrec_modify_lui(block, i); lightrec_remove_useless_lui(block, i, v); - if (i == 0 || !has_delay_slot(list[i - 1].c)) + if (!is_delay_slot(list, i)) lightrec_lui_to_movi(block, i); break; @@ -2099,7 +2099,7 @@ static int lightrec_flag_mults_divs(struct lightrec_state *state, struct block * list->flags &= ~(LIGHTREC_NO_LO | LIGHTREC_NO_HI); } - if (reg_lo > 0 && reg_lo != REG_LO) { + if (0/* Broken */ && reg_lo > 0 && reg_lo != REG_LO) { pr_debug("Found register %s to hold LO (rs = %u, rt = %u)\n", lightrec_reg_name(reg_lo), list->r.rs, list->r.rt); @@ -2109,7 +2109,7 @@ static int lightrec_flag_mults_divs(struct lightrec_state *state, struct block * list->r.rd = 0; } - if (reg_hi > 0 && reg_hi != REG_HI) { + if (0/* Broken */ && reg_hi > 0 && reg_hi != REG_HI) { pr_debug("Found register %s to hold HI (rs = %u, rt = %u)\n", lightrec_reg_name(reg_hi), list->r.rs, list->r.rt);