X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=deps%2Flightning%2Flib%2Fjit_print.c;h=079112ba8f486b617f22b76f4feb95446cdcd092;hb=1fec8a9574a8128c9b64f79a5c1f72bbd86ac2bf;hp=a6f93380351bdb642c046e8af8ba30ddee66c6f7;hpb=c0c162422385a60ea7c8fa1dfe439e83e0a13d88;p=pcsx_rearmed.git diff --git a/deps/lightning/lib/jit_print.c b/deps/lightning/lib/jit_print.c index a6f93380..079112ba 100644 --- a/deps/lightning/lib/jit_print.c +++ b/deps/lightning/lib/jit_print.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2022 Free Software Foundation, Inc. + * Copyright (C) 2012-2023 Free Software Foundation, Inc. * * This file is part of GNU lightning. * @@ -22,8 +22,14 @@ #if __WORDSIZE == 32 # define MININT 0x80000000 +# define INT_FMT "%d" +# define DEC_FMT "%d" +# define HEX_FMT "0x%x" #else # define MININT 0x8000000000000000 +# define INT_FMT "%d" +# define DEC_FMT "%ld" +# define HEX_FMT "0x%lx" #endif @@ -31,11 +37,12 @@ #define print_hex(value) \ do { \ if (value < 0 && value != MININT) \ - fprintf(print_stream, "-0x%lx", -value); \ + fprintf(print_stream, "-" HEX_FMT, (jit_uword_t)-value); \ else \ - fprintf(print_stream, "0x%lx", value); \ + fprintf(print_stream, HEX_FMT, (jit_uword_t)value); \ } while (0) -#define print_dec(value) fprintf(print_stream, "%ld", value) +#define print_dec(value) fprintf(print_stream, DEC_FMT, value) +#define print_int(value) fprintf(print_stream, INT_FMT, value) #define print_flt(value) fprintf(print_stream, "%g", value) #define print_str(value) fprintf(print_stream, "%s", value) #define print_ptr(value) fprintf(print_stream, "%p", value) @@ -68,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 @@ -119,7 +126,8 @@ _jit_print_node(jit_state_t *_jit, jit_node_t *node) value = jit_classify(node->code) & (jit_cc_a0_int|jit_cc_a0_flt|jit_cc_a0_dbl|jit_cc_a0_jmp| jit_cc_a0_reg|jit_cc_a0_rlh|jit_cc_a0_arg| - jit_cc_a1_reg|jit_cc_a1_int|jit_cc_a1_flt|jit_cc_a1_dbl|jit_cc_a1_arg| + jit_cc_a1_reg|jit_cc_a1_rlh|jit_cc_a1_int| + jit_cc_a1_flt|jit_cc_a1_dbl|jit_cc_a1_arg| jit_cc_a2_reg|jit_cc_a2_int|jit_cc_a2_flt|jit_cc_a2_dbl|jit_cc_a2_rlh); if (!(node->flag & jit_flag_synth) && ((value & jit_cc_a0_jmp) || node->code == jit_code_finishr || @@ -215,21 +223,34 @@ _jit_print_node(jit_state_t *_jit, jit_node_t *node) r_r_r: print_chr(' '); print_reg(node->u.w); print_chr(' '); print_reg(node->v.w); - print_chr(' '); print_reg(node->w.w); return; + print_chr(' '); print_reg(node->w.w); return; r_r_w: print_chr(' '); print_reg(node->u.w); print_chr(' '); print_reg(node->v.w); - print_chr(' '); print_hex(node->w.w); return; + print_chr(' '); print_hex(node->w.w); return; + r_w_w: + print_chr(' '); print_reg(node->u.w); + print_chr(' '); print_hex(node->v.w); + print_chr(' '); + if (node->code == jit_code_movi_ww_d) + print_hex(node->w.w); + else + print_dec(node->w.w); + return; + w_r_w: + print_chr(' '); print_hex(node->u.w); + print_chr(' '); print_reg(node->v.w); + print_chr(' '); print_dec(node->w.w); return; q_r_r: print_str(" ("); print_reg(node->u.q.l); print_chr(' '); print_reg(node->u.q.h); print_str(") "); print_reg(node->v.w); - print_chr(' '); print_reg(node->w.w); return; + print_chr(' '); print_reg(node->w.w); return; q_r_w: print_str(" ("); print_reg(node->u.q.l); print_chr(' '); print_reg(node->u.q.h); print_str(") "); print_reg(node->v.w); - print_chr(' '); print_hex(node->w.w); return; + print_chr(' '); print_hex(node->w.w); return; r_r_q: print_chr(' '); print_reg(node->u.w); print_chr(' '); print_reg(node->v.w); @@ -242,6 +263,24 @@ _jit_print_node(jit_state_t *_jit, jit_node_t *node) print_str(" ("); print_reg(node->w.q.l); print_chr(' '); print_reg(node->w.q.h); print_str(") "); return; + r_r_iq: + print_chr(' '); print_reg(node->u.w); + print_chr(' '); print_reg(node->v.w); + print_str(" ("); print_int(node->w.q.l); + print_chr(' '); print_int(node->w.q.h); + print_str(") "); return; + r_w_iq: + print_chr(' '); print_reg(node->u.w); + print_chr(' '); print_hex(node->v.w); + print_str(" ("); print_int(node->w.q.l); + print_chr(' '); print_int(node->w.q.h); + print_str(") "); return; + r_q_r: + print_chr(' '); print_reg(node->u.w); + print_str(" ("); print_reg(node->v.q.l); + print_chr(' '); print_reg(node->v.q.h); + print_str(") "); print_reg(node->w.w); + return; r_r_f: print_chr(' '); print_reg(node->u.w); print_chr(' '); print_reg(node->v.w); @@ -251,6 +290,16 @@ _jit_print_node(jit_state_t *_jit, jit_node_t *node) else print_flt(node->w.f); return; + r_q_f: + print_chr(' '); print_reg(node->u.w); + print_str(" ("); print_reg(node->v.q.l); + print_chr(' '); print_reg(node->v.q.h); + print_str(") "); + if (node->flag & jit_flag_data) + print_flt(*(jit_float32_t *)node->w.n->u.w); + else + print_flt(node->w.f); + return; r_r_d: print_chr(' '); print_reg(node->u.w); print_chr(' '); print_reg(node->v.w); @@ -260,6 +309,16 @@ _jit_print_node(jit_state_t *_jit, jit_node_t *node) else print_flt(node->w.d); return; + r_q_d: + print_chr(' '); print_reg(node->u.w); + print_str(" ("); print_reg(node->v.q.l); + print_chr(' '); print_reg(node->v.q.h); + print_str(") "); + if (node->flag & jit_flag_data) + print_flt(*(jit_float64_t *)node->w.n->u.w); + else + print_flt(node->w.d); + return; w_r_r: print_chr(' '); print_hex(node->u.w); print_chr(' '); print_reg(node->v.w); @@ -376,6 +435,10 @@ _jit_print_node(jit_state_t *_jit, jit_node_t *node) goto r_r_r; case jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a2_int: goto r_r_w; + case jit_cc_a0_reg|jit_cc_a1_int|jit_cc_a2_int: + goto r_w_w; + case jit_cc_a0_int|jit_cc_a1_reg|jit_cc_a2_int: + goto w_r_w; case jit_cc_a0_reg|jit_cc_a0_rlh| jit_cc_a1_reg|jit_cc_a2_reg: goto q_r_r; @@ -388,6 +451,10 @@ _jit_print_node(jit_state_t *_jit, jit_node_t *node) case jit_cc_a0_reg|jit_cc_a1_int| jit_cc_a2_reg|jit_cc_a2_rlh: goto r_w_q; + case jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a2_rlh: + goto r_r_iq; + case jit_cc_a0_reg|jit_cc_a1_int|jit_cc_a2_rlh: + goto r_w_iq; case jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a2_flt: goto r_r_f; case jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a2_dbl: @@ -402,6 +469,12 @@ _jit_print_node(jit_state_t *_jit, jit_node_t *node) goto n_r_f; case jit_cc_a0_jmp|jit_cc_a1_reg|jit_cc_a2_dbl: goto n_r_d; + case jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a1_rlh|jit_cc_a2_reg: + goto r_q_r; + case jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a1_rlh|jit_cc_a2_flt: + goto r_q_f; + case jit_cc_a0_reg|jit_cc_a1_reg|jit_cc_a1_rlh|jit_cc_a2_dbl: + goto r_q_d; default: abort(); }