jit debug hacks

This commit is contained in:
Anthony Pesch 2017-11-19 23:37:22 -05:00
parent ffc4049a13
commit c0114cf749
2 changed files with 31 additions and 2 deletions

View File

@ -319,6 +319,9 @@ static void jit_promote_fastmem(struct jit *jit, struct jit_block *block,
}
}
int lse_hack_enable;
int lse_hack_count;
void jit_compile_code(struct jit *jit, uint32_t guest_addr) {
#if 0
LOG_INFO("jit_compile_block %s 0x%08x", jit->tag, guest_addr);
@ -361,7 +364,25 @@ void jit_compile_code(struct jit *jit, uint32_t guest_addr) {
/* run optimization passes */
jit_promote_fastmem(jit, block, &ir);
cfa_run(jit->cfa, &ir);
lse_run(jit->lse, &ir);
lse_hack_enable = guest_addr == 0x8c0664c6;
lse_hack_count = 0;
static const uint32_t test[] = {
0x0,
};
int i = 0;
int len = ARRAY_SIZE(test);
while (i < len) {
if (guest_addr == test[i]) {
break;
}
i++;
}
if (i == len) {
lse_run(jit->lse, &ir);
}
cprop_run(jit->cprop, &ir);
esimp_run(jit->esimp, &ir);
dce_run(jit->dce, &ir);

View File

@ -99,12 +99,20 @@ static int lse_test_available(struct lse *lse, int offset, int size) {
return 1;
}
extern int lse_hack_enable;
extern int lse_hack_count;
static void lse_eliminate_loads(struct lse *lse, struct ir *ir,
struct ir_block *block) {
lse_clear_available(lse);
list_for_each_entry_safe(instr, &block->instrs, struct ir_instr, it) {
if (instr->op == OP_FALLBACK || instr->op == OP_CALL) {
if (lse_hack_enable && instr->op == OP_CALL_COND) {
if (lse_hack_count < 16) {
lse_clear_available(lse);
}
lse_hack_count++;
} else if (instr->op == OP_FALLBACK || instr->op == OP_CALL) {
lse_clear_available(lse);
} else if (instr->op == OP_BRANCH || instr->op == OP_BRANCH_COND) {
lse_clear_available(lse);