From: Paul Cercueil Date: Thu, 27 Jul 2023 10:11:31 +0000 (+0200) Subject: git subrepo pull --force deps/lightrec X-Git-Tag: r24l~275^2 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2ec79b77bf0925c69ece6e51fc219a1e783aa432;p=pcsx_rearmed.git git subrepo pull --force deps/lightrec subrepo: subdir: "deps/lightrec" merged: "68a5d16b6b" upstream: origin: "https://github.com/pcercuei/lightrec.git" branch: "master" commit: "68a5d16b6b" git-subrepo: version: "0.4.3" origin: "https://github.com/ingydotnet/git-subrepo.git" commit: "2f68596" --- diff --git a/deps/lightrec/.gitrepo b/deps/lightrec/.gitrepo index 8a344c4f..b6174072 100644 --- a/deps/lightrec/.gitrepo +++ b/deps/lightrec/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/pcercuei/lightrec.git branch = master - commit = fcf239e7e9d42fedb7a8de64057d6895acf3ceee - parent = 03ec8a8c606eb87642be336632e1792ab89650d8 + commit = 68a5d16b6b5ce155aebf7f4708483eaeb4992997 + parent = bbda82f029ab0a9bbc91cb411d2cb56745d45510 method = merge cmdver = 0.4.3 diff --git a/deps/lightrec/emitter.c b/deps/lightrec/emitter.c index a6d43551..1b4082b7 100644 --- a/deps/lightrec/emitter.c +++ b/deps/lightrec/emitter.c @@ -1178,7 +1178,7 @@ static u32 rec_io_mask(const struct lightrec_state *state) { u32 length = state->maps[PSX_MAP_HW_REGISTERS].length; - return GENMASK(31 - clz32(length - 1), 0); + return 0x1f800000 | GENMASK(31 - clz32(length - 1), 0); } static void rec_store_memory(struct lightrec_cstate *cstate, diff --git a/deps/lightrec/optimizer.c b/deps/lightrec/optimizer.c index 5ce58ada..58d9d56c 100644 --- a/deps/lightrec/optimizer.c +++ b/deps/lightrec/optimizer.c @@ -1340,8 +1340,16 @@ static int lightrec_swap_load_delays(struct lightrec_state *state, } else if (!in_ds && opcode_is_load(c) && c.i.op != OP_LWC2) { next = block->opcode_list[i + 1].c; - if (c.i.op == OP_LWL && next.i.op == OP_LWR) + switch (next.i.op) { + case OP_LWL: + case OP_LWR: + case OP_REGIMM: + case OP_BEQ: + case OP_BNE: + case OP_BLEZ: + case OP_BGTZ: continue; + } if (opcode_reads_register(next, c.i.rt) && !opcode_writes_register(next, c.i.rs)) {