From: notaz Date: Sun, 19 Nov 2023 21:47:01 +0000 (+0200) Subject: Merge pull request #801 from pcercuei/update-lightrec-20231119 X-Git-Tag: r24l~64 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=c8bf44c44d57bcf08a56ddf56579aa6bf42b0c06;hp=ab206b0c7fd5228d09d0b0cf3183405a6960ea55;p=pcsx_rearmed.git Merge pull request #801 from pcercuei/update-lightrec-20231119 Update lightrec 20231119 --- diff --git a/deps/lightning/.gitrepo b/deps/lightning/.gitrepo index 6e32aaa6..55cc9e6b 100644 --- a/deps/lightning/.gitrepo +++ b/deps/lightning/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/pcercuei/gnu_lightning.git branch = pcsx_rearmed - commit = 4d1ef4c372a2d7cd1cd25c637a18d802af7dfcb4 - parent = 0f67f144fb172e9eaa7a722a0a853350f77aad15 + commit = de026794c71386983034461bce2df3c63ccd5827 + parent = fb67ea334b0f3984a114a6e306806a56347a83ba method = merge cmdver = 0.4.6 diff --git a/deps/lightning/include/lightning.h.in b/deps/lightning/include/lightning.h.in index 6d512352..4ab4a0a9 100644 --- a/deps/lightning/include/lightning.h.in +++ b/deps/lightning/include/lightning.h.in @@ -23,6 +23,7 @@ #include #include @MAYBE_INCLUDE_STDINT_H@ +#include #include #include @@ -1220,6 +1221,7 @@ typedef void (*jit_free_func_ptr) (void*); /* * Prototypes */ +extern void init_jit_with_debug(const char*,FILE*); extern void init_jit(const char*); extern void finish_jit(void); diff --git a/deps/lightning/include/lightning/jit_private.h b/deps/lightning/include/lightning/jit_private.h index 9f8caf65..a730d73e 100644 --- a/deps/lightning/include/lightning/jit_private.h +++ b/deps/lightning/include/lightning/jit_private.h @@ -873,8 +873,8 @@ _emit_ldxi_d(jit_state_t*, jit_int32_t, jit_int32_t, jit_word_t); extern void _emit_stxi_d(jit_state_t*, jit_word_t, jit_int32_t, jit_int32_t); -extern void jit_init_print(void); -extern void jit_init_debug(const char*); +extern void jit_init_print(FILE*); +extern void jit_init_debug(const char*, FILE*); extern void jit_finish_debug(void); extern void jit_init_note(void); diff --git a/deps/lightning/lib/jit_disasm.c b/deps/lightning/lib/jit_disasm.c index a6981fa5..90d90b0f 100644 --- a/deps/lightning/lib/jit_disasm.c +++ b/deps/lightning/lib/jit_disasm.c @@ -71,9 +71,9 @@ static int fprintf_styled(void * stream, enum disassembler_style style, const ch * Implementation */ void -jit_init_debug(const char *progname) +jit_init_debug(const char *progname, FILE *stream) { - jit_init_print(); + jit_init_print(stream); #if DISASSEMBLER bfd_init(); @@ -89,7 +89,7 @@ jit_init_debug(const char *progname) bfd_check_format(disasm_bfd, bfd_object); bfd_check_format(disasm_bfd, bfd_archive); if (!disasm_stream) - disasm_stream = stdout; + disasm_stream = stream; #if BINUTILS_2_38 INIT_DISASSEMBLE_INFO(disasm_info, disasm_stream, fprintf, fprintf_styled); diff --git a/deps/lightning/lib/jit_print.c b/deps/lightning/lib/jit_print.c index 2244aab0..079112ba 100644 --- a/deps/lightning/lib/jit_print.c +++ b/deps/lightning/lib/jit_print.c @@ -75,10 +75,10 @@ static FILE *print_stream; * Implementation */ void -jit_init_print(void) +jit_init_print(FILE *stream) { if (!print_stream) - print_stream = stdout; + print_stream = stream; } void diff --git a/deps/lightning/lib/lightning.c b/deps/lightning/lib/lightning.c index 39c4fc2e..646d9db5 100644 --- a/deps/lightning/lib/lightning.c +++ b/deps/lightning/lib/lightning.c @@ -181,13 +181,19 @@ _patch_register(jit_state_t *jit, jit_node_t *node, jit_node_t *link, * Implementation */ void -init_jit(const char *progname) +init_jit_with_debug(const char *progname, FILE *dbg_out) { jit_get_cpu(); - jit_init_debug(progname); + jit_init_debug(progname, dbg_out); jit_init_size(); } +void +init_jit(const char *progname) +{ + init_jit_with_debug(progname, stderr); +} + void finish_jit(void) { diff --git a/deps/lightrec/.gitrepo b/deps/lightrec/.gitrepo index 96c4feea..4a24742d 100644 --- a/deps/lightrec/.gitrepo +++ b/deps/lightrec/.gitrepo @@ -6,7 +6,7 @@ [subrepo] remote = https://github.com/pcercuei/lightrec.git branch = master - commit = b9e4089b3b6121f2077dc85a8fe7f934e3ae1c20 - parent = bbe0dac4b7062d5ead765329d9ddb1e1fe01eee2 + commit = eb2d1a88ff22a5a71e27efffdbdb423bb9b91b4f + parent = ab206b0c7fd5228d09d0b0cf3183405a6960ea55 method = merge cmdver = 0.4.6 diff --git a/deps/lightrec/lightrec.c b/deps/lightrec/lightrec.c index f589ce85..13434b46 100644 --- a/deps/lightrec/lightrec.c +++ b/deps/lightrec/lightrec.c @@ -1941,7 +1941,7 @@ struct lightrec_state * lightrec_init(char *argv0, else lut_size = CODE_LUT_SIZE * sizeof(void *); - init_jit(argv0); + init_jit_with_debug(argv0, stdout); state = calloc(1, sizeof(*state) + lut_size); if (!state) diff --git a/deps/lightrec/optimizer.c b/deps/lightrec/optimizer.c index 90b21398..792f35c8 100644 --- a/deps/lightrec/optimizer.c +++ b/deps/lightrec/optimizer.c @@ -299,6 +299,9 @@ static bool reg_is_dead(const struct opcode *list, unsigned int offset, u8 reg) if (opcode_writes_register(list[i].c, reg)) return true; + if (is_syscall(list[i].c)) + return false; + if (has_delay_slot(list[i].c)) { if (op_flag_no_ds(list[i].flags) || opcode_reads_register(list[i + 1].c, reg))