Skip to content

Commit

Permalink
tcg/ppc: Use ADDPCIS in tcg_out_movi_int
Browse files Browse the repository at this point in the history
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
  • Loading branch information
rth7680 committed Oct 22, 2023
1 parent 3acd75b commit 776cd9b
Showing 1 changed file with 13 additions and 0 deletions.
13 changes: 13 additions & 0 deletions tcg/ppc/tcg-target.c.inc
Original file line number Diff line number Diff line change
Expand Up @@ -1055,6 +1055,19 @@ static void tcg_out_movi_int(TCGContext *s, TCGType type, TCGReg ret,
return;
}

/* Load addresses within 2GB with 2 insns. */
if (have_isa_3_00) {
intptr_t hi = tcg_pcrel_diff(s, (void *)arg) - 4;
int16_t lo = hi;

hi -= lo;
if (hi == (int32_t)hi) {
tcg_out_addpcis(s, TCG_REG_TMP2, hi);
tcg_out32(s, ADDI | TAI(ret, TCG_REG_TMP2, lo));
return;
}
}

/* Load addresses within 2GB of TB with 2 (or rarely 3) insns. */
if (!in_prologue && USE_REG_TB && tb_diff == (int32_t)tb_diff) {
tcg_out_mem_long(s, ADDI, ADD, ret, TCG_REG_TB, tb_diff);
Expand Down

0 comments on commit 776cd9b

Please sign in to comment.