[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v3 5/7] tcg/sparc: Use the constant pool for 64-bit constants
From: |
Richard Henderson |
Subject: |
[PATCH v3 5/7] tcg/sparc: Use the constant pool for 64-bit constants |
Date: |
Wed, 18 Aug 2021 10:46:00 -1000 |
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/sparc/tcg-target.c.inc | 15 +++++++++++++++
1 file changed, 15 insertions(+)
diff --git a/tcg/sparc/tcg-target.c.inc b/tcg/sparc/tcg-target.c.inc
index 16e2258b9b..b64760e736 100644
--- a/tcg/sparc/tcg-target.c.inc
+++ b/tcg/sparc/tcg-target.c.inc
@@ -332,6 +332,13 @@ static bool patch_reloc(tcg_insn_unit *src_rw, int type,
insn &= ~INSN_OFF19(-1);
insn |= INSN_OFF19(pcrel);
break;
+ case R_SPARC_13:
+ if (!check_fit_ptr(value, 13)) {
+ return false;
+ }
+ insn &= ~INSN_IMM13(-1);
+ insn |= INSN_IMM13(value);
+ break;
default:
g_assert_not_reached();
}
@@ -469,6 +476,14 @@ static void tcg_out_movi_int(TCGContext *s, TCGType type,
TCGReg ret,
return;
}
+ /* Use the constant pool, if possible. */
+ if (!in_prologue && USE_REG_TB) {
+ new_pool_label(s, arg, R_SPARC_13, s->code_ptr,
+ tcg_tbrel_diff(s, NULL));
+ tcg_out32(s, LDX | INSN_RD(ret) | INSN_RS1(TCG_REG_TB));
+ return;
+ }
+
/* A 64-bit constant decomposed into 2 32-bit pieces. */
if (check_fit_i32(lo, 13)) {
hi = (arg - lo) >> 32;
--
2.25.1
- [PATCH v3 0/7] tcg/sparc: Unaligned access and other cleanup, Richard Henderson, 2021/08/18
- [PATCH v3 1/7] tcg/sparc: Drop inline markers, Richard Henderson, 2021/08/18
- [PATCH v3 3/7] tcg/sparc: Add scratch argument to tcg_out_movi_int, Richard Henderson, 2021/08/18
- [PATCH v3 4/7] tcg/sparc: Improve code gen for shifted 32-bit constants, Richard Henderson, 2021/08/18
- [PATCH v3 5/7] tcg/sparc: Use the constant pool for 64-bit constants,
Richard Henderson <=
- [PATCH v3 2/7] tcg/sparc: Introduce tcg_out_mov_delay, Richard Henderson, 2021/08/18
- [PATCH v3 6/7] tcg/sparc: Add tcg_out_jmpl_const for better tail calls, Richard Henderson, 2021/08/18
- [PATCH v3 7/7] tcg/sparc: Support unaligned access for user-only, Richard Henderson, 2021/08/18