diff options
author | Richard Henderson <richard.henderson@linaro.org> | 2023-08-04 18:32:57 +0000 |
---|---|---|
committer | Richard Henderson <richard.henderson@linaro.org> | 2023-10-22 16:32:27 -0700 |
commit | c90f897a541951821af1abdadca3b68c3f74c3ae (patch) | |
tree | 92484267d897b058c7aa2e3b5355290f95f1416a /tcg | |
parent | d90b23af6dedb93384c8964882d9fad4af0f3cab (diff) | |
download | qemu-c90f897a541951821af1abdadca3b68c3f74c3ae.zip qemu-c90f897a541951821af1abdadca3b68c3f74c3ae.tar.gz qemu-c90f897a541951821af1abdadca3b68c3f74c3ae.tar.bz2 |
tcg/ppc: Use prefixed instructions in tcg_out_dupi_vec
The prefixed instructions have a pc-relative form to use here.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Diffstat (limited to 'tcg')
-rw-r--r-- | tcg/ppc/tcg-target.c.inc | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/tcg/ppc/tcg-target.c.inc b/tcg/ppc/tcg-target.c.inc index 79e82d2..db32120 100644 --- a/tcg/ppc/tcg-target.c.inc +++ b/tcg/ppc/tcg-target.c.inc @@ -1242,6 +1242,15 @@ static void tcg_out_dupi_vec(TCGContext *s, TCGType type, unsigned vece, if (USE_REG_TB) { rel = R_PPC_ADDR16; add = ppc_tbrel_diff(s, NULL); + } else if (have_isa_3_10) { + if (type == TCG_TYPE_V64) { + tcg_out_8ls_d(s, PLXSD, ret & 31, 0, 0, 1); + new_pool_label(s, val, R_PPC64_PCREL34, s->code_ptr - 2, 0); + } else { + tcg_out_8ls_d(s, PLXV, ret & 31, 0, 0, 1); + new_pool_l2(s, R_PPC64_PCREL34, s->code_ptr - 2, 0, val, val); + } + return; } else if (have_isa_3_00) { tcg_out_addpcis(s, TCG_REG_TMP1, 0); rel = R_PPC_REL14; |