From 10bbf2ccf9fdd9f34cc9a36c25516a104f0fd63c Mon Sep 17 00:00:00 2001 From: Guillaume Emont Date: Fri, 21 Dec 2012 14:04:56 +0100 Subject: [PATCH] mips: fixed prefetching instruction calculation, but deactivated prefetching for now (no measurable performance improvements) --- orc/orcprogram-mips.c | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/orc/orcprogram-mips.c b/orc/orcprogram-mips.c index b1a5498..17a482c 100644 --- a/orc/orcprogram-mips.c +++ b/orc/orcprogram-mips.c @@ -323,21 +323,21 @@ orc_mips_emit_var_pref (OrcCompiler *compiler, int iter_offset, int total_shift) OrcVariable *var = compiler->vars + i; if (var->name == NULL) continue; + if (var->update_type == 0) { + offset = 0; + } else if (var->update_type == 1) { + offset = (var->size << total_shift) >> 1; + } else { + offset = var->size << total_shift; + } if (var->vartype == ORC_VAR_TYPE_SRC) { - if (var->update_type == 0) { - offset = 0; - } else if (var->update_type == 1) { - offset = (var->size << total_shift) >> 1; - } else { - offset = var->size << total_shift; - } for (j = iter_offset*offset; j < (iter_offset+1)*offset; j+=CACHE_LINE_SIZE) orc_mips_emit_pref (compiler, 4 /* load-streamed */, - var->ptr_register, iter_offset * offset + j*CACHE_LINE_SIZE); + var->ptr_register, j); } else if (var->vartype == ORC_VAR_TYPE_DEST) { for (j = iter_offset*offset; j < (iter_offset+1)*offset; j+=CACHE_LINE_SIZE) orc_mips_emit_pref (compiler, 5 /* store-streamed */, - var->ptr_register, iter_offset * offset + j*CACHE_LINE_SIZE); + var->ptr_register, j); } } } @@ -360,8 +360,6 @@ orc_mips_emit_loop (OrcCompiler *compiler, int unroll) if (unroll) iteration_per_loop = 1 << compiler->unroll_shift; - orc_mips_emit_var_pref (compiler, 1, total_shift); - for (j=0; junroll_index = j; for (i=0; in_insns; i++) { @@ -478,7 +476,6 @@ orc_mips_emit_full_loop (OrcCompiler *compiler, OrcMipsRegister counter, compiler->loop_shift = loop_shift; saved_alignment = orc_mips_get_alignment (compiler); orc_mips_set_alignment (compiler, alignment); - orc_mips_emit_var_pref (compiler, 0, compiler->loop_shift + unroll * compiler->unroll_shift); orc_mips_emit_loop (compiler, unroll); orc_mips_set_alignment (compiler, saved_alignment); compiler->loop_shift = saved_loop_shift; -- 2.7.4