* [Qemu-devel] [PULL v2 00/33] tcg patch queue
@ 2018-12-17 3:35 Richard Henderson
2018-12-17 3:35 ` [Qemu-devel] [PULL v2 01/33] target/sparc: Remove the constant pool Richard Henderson
2018-12-17 23:45 ` [Qemu-devel] [PULL v2 00/33] tcg patch queue Peter Maydell
0 siblings, 2 replies; 3+ messages in thread
From: Richard Henderson @ 2018-12-17 3:35 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell
Now include a patch to address
qemu-system-x86_64: /home/pm215/qemu/tcg/sparc/tcg-target.inc.c:319:
patch_reloc: Assertion `check_fit_ptr(value, 13)' failed.
I believe it was the change to bswap64 to use the constant pool more
often that exposed the latent problem.
Only re-posting the new patch.
r~
The following changes since commit 58b1f0f21edcab13f78a376b1d90267626be1275:
Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging (2018-12-16 12:49:06 +0000)
are available in the Git repository at:
https://github.com/rth7680/qemu.git tags/pull-tcg-20181216
for you to fetch changes up to b7c2cd08a6f68010ad27c9c0bf2fde02fb743a0e:
xxhash: match output against the original xxhash32 (2018-12-17 06:04:44 +0300)
----------------------------------------------------------------
- Remove retranslation remenents
- Return success from patch_reloc
- Preserve 32-bit values as zero-extended on x86_64
- Make bswap during memory ops as optional
- Cleanup xxhash
- Revert constant pooling for tcg/sparc/
----------------------------------------------------------------
Alistair Francis (1):
tcg/mips: Improve the add2/sub2 command to use TCG_TARGET_REG_BITS
Emilio G. Cota (5):
tcg: Drop nargs from tcg_op_insert_{before,after}
qht-bench: document -p flag
exec: introduce qemu_xxhash{2,4,5,6,7}
include: move exec/tb-hash-xx.h to qemu/xxhash.h
xxhash: match output against the original xxhash32
Richard Henderson (27):
target/sparc: Remove the constant pool
tcg/i386: Always use %ebp for TCG_AREG0
tcg/i386: Move TCG_REG_CALL_STACK from define to enum
tcg/aarch64: Remove reloc_pc26_atomic
tcg/aarch64: Fold away "noaddr" branch routines
tcg/arm: Remove reloc_pc24_atomic
tcg/arm: Fold away "noaddr" branch routines
tcg/ppc: Fold away "noaddr" branch routines
tcg/s390: Remove retranslation code
tcg/sparc: Remove retranslation code
tcg/mips: Remove retranslation code
tcg: Return success from patch_reloc
tcg/i386: Return false on failure from patch_reloc
tcg/aarch64: Return false on failure from patch_reloc
tcg/arm: Return false on failure from patch_reloc
tcg/ppc: Return false on failure from patch_reloc
tcg/s390x: Return false on failure from patch_reloc
tcg/i386: Propagate is64 to tcg_out_qemu_ld_direct
tcg/i386: Propagate is64 to tcg_out_qemu_ld_slow_path
tcg/i386: Implement INDEX_op_extr{lh}_i64_i32 for 32-bit guests
tcg/i386: Assume 32-bit values are zero-extended
tcg/i386: Precompute all guest_base parameters
tcg/i386: Add setup_guest_base_seg for FreeBSD
tcg: Clean up generic bswap32
tcg: Clean up generic bswap64
tcg/optimize: Optimize bswap
tcg: Add TCG_TARGET_HAS_MEMORY_BSWAP
include/exec/tb-hash.h | 4 +-
include/{exec/tb-hash-xx.h => qemu/xxhash.h} | 47 ++++--
tcg/aarch64/tcg-target.h | 1 +
tcg/arm/tcg-target.h | 1 +
tcg/i386/tcg-target.h | 17 +--
tcg/mips/tcg-target.h | 1 +
tcg/ppc/tcg-target.h | 1 +
tcg/s390/tcg-target.h | 1 +
tcg/sparc/tcg-target.h | 1 +
tcg/tcg.h | 4 +-
tcg/tci/tcg-target.h | 2 +
tcg/aarch64/tcg-target.inc.c | 71 +++------
tcg/arm/tcg-target.inc.c | 55 +++----
tcg/i386/tcg-target.inc.c | 208 ++++++++++++--------------
tcg/mips/tcg-target.inc.c | 12 +-
tcg/optimize.c | 16 +-
tcg/ppc/tcg-target.inc.c | 60 ++++----
tcg/s390/tcg-target.inc.c | 45 +++---
tcg/sparc/tcg-target.inc.c | 58 ++------
tcg/tcg-op.c | 215 ++++++++++++++++++++-------
tcg/tcg.c | 18 +--
tcg/tci/tcg-target.inc.c | 3 +-
tests/qht-bench.c | 5 +-
util/qsp.c | 14 +-
24 files changed, 460 insertions(+), 400 deletions(-)
rename include/{exec/tb-hash-xx.h => qemu/xxhash.h} (73%)
^ permalink raw reply [flat|nested] 3+ messages in thread
* [Qemu-devel] [PULL v2 01/33] target/sparc: Remove the constant pool
2018-12-17 3:35 [Qemu-devel] [PULL v2 00/33] tcg patch queue Richard Henderson
@ 2018-12-17 3:35 ` Richard Henderson
2018-12-17 23:45 ` [Qemu-devel] [PULL v2 00/33] tcg patch queue Peter Maydell
1 sibling, 0 replies; 3+ messages in thread
From: Richard Henderson @ 2018-12-17 3:35 UTC (permalink / raw)
To: qemu-devel; +Cc: peter.maydell
Partially reverts ab20bdc1162. The 14-bit displacement that we
allowed to reach the constant pool is not always sufficient.
Retain the tb-relative addressing, as that is how most return
values from the tb are computed.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
tcg/sparc/tcg-target.inc.c | 47 ++++++++------------------------------
1 file changed, 9 insertions(+), 38 deletions(-)
diff --git a/tcg/sparc/tcg-target.inc.c b/tcg/sparc/tcg-target.inc.c
index 04bdc3df5e..3237ae6a2f 100644
--- a/tcg/sparc/tcg-target.inc.c
+++ b/tcg/sparc/tcg-target.inc.c
@@ -311,24 +311,6 @@ static void patch_reloc(tcg_insn_unit *code_ptr, int type,
insn &= ~INSN_OFF19(-1);
insn |= INSN_OFF19(pcrel);
break;
- case R_SPARC_13:
- /* Note that we're abusing this reloc type for our own needs. */
- if (!check_fit_ptr(value, 13)) {
- int adj = (value > 0 ? 0xff8 : -0x1000);
- value -= adj;
- assert(check_fit_ptr(value, 13));
- *code_ptr++ = (ARITH_ADD | INSN_RD(TCG_REG_T2)
- | INSN_RS1(TCG_REG_TB) | INSN_IMM13(adj));
- insn ^= INSN_RS1(TCG_REG_TB) ^ INSN_RS1(TCG_REG_T2);
- }
- insn &= ~INSN_IMM13(-1);
- insn |= INSN_IMM13(value);
- break;
- case R_SPARC_32:
- /* Note that we're abusing this reloc type for our own needs. */
- code_ptr[0] = deposit32(code_ptr[0], 0, 22, value >> 10);
- code_ptr[1] = deposit32(code_ptr[1], 0, 10, value);
- return;
default:
g_assert_not_reached();
}
@@ -459,6 +441,15 @@ static void tcg_out_movi_int(TCGContext *s, TCGType type, TCGReg ret,
return;
}
+ /* A 13-bit constant relative to the TB. */
+ if (!in_prologue && USE_REG_TB) {
+ test = arg - (uintptr_t)s->code_gen_ptr;
+ if (check_fit_ptr(test, 13)) {
+ tcg_out_arithi(s, ret, TCG_REG_TB, test, ARITH_ADD);
+ return;
+ }
+ }
+
/* A 32-bit constant, or 32-bit zero-extended to 64-bits. */
if (type == TCG_TYPE_I32 || arg == (uint32_t)arg) {
tcg_out_sethi(s, ret, arg);
@@ -488,26 +479,6 @@ static void tcg_out_movi_int(TCGContext *s, TCGType type, TCGReg ret,
return;
}
- if (!in_prologue) {
- if (USE_REG_TB) {
- intptr_t diff = arg - (uintptr_t)s->code_gen_ptr;
- if (check_fit_ptr(diff, 13)) {
- tcg_out_arithi(s, ret, TCG_REG_TB, diff, ARITH_ADD);
- } else {
- new_pool_label(s, arg, R_SPARC_13, s->code_ptr,
- -(intptr_t)s->code_gen_ptr);
- tcg_out32(s, LDX | INSN_RD(ret) | INSN_RS1(TCG_REG_TB));
- /* May be used to extend the 13-bit range in patch_reloc. */
- tcg_out32(s, NOP);
- }
- } else {
- new_pool_label(s, arg, R_SPARC_32, s->code_ptr, 0);
- tcg_out_sethi(s, ret, 0);
- tcg_out32(s, LDX | INSN_RD(ret) | INSN_RS1(ret) | INSN_IMM13(0));
- }
- return;
- }
-
/* A 64-bit constant decomposed into 2 32-bit pieces. */
if (check_fit_i32(lo, 13)) {
hi = (arg - lo) >> 32;
--
2.17.2
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Qemu-devel] [PULL v2 00/33] tcg patch queue
2018-12-17 3:35 [Qemu-devel] [PULL v2 00/33] tcg patch queue Richard Henderson
2018-12-17 3:35 ` [Qemu-devel] [PULL v2 01/33] target/sparc: Remove the constant pool Richard Henderson
@ 2018-12-17 23:45 ` Peter Maydell
1 sibling, 0 replies; 3+ messages in thread
From: Peter Maydell @ 2018-12-17 23:45 UTC (permalink / raw)
To: Richard Henderson; +Cc: QEMU Developers
On Mon, 17 Dec 2018 at 03:35, Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> Now include a patch to address
>
> qemu-system-x86_64: /home/pm215/qemu/tcg/sparc/tcg-target.inc.c:319:
> patch_reloc: Assertion `check_fit_ptr(value, 13)' failed.
>
> I believe it was the change to bswap64 to use the constant pool more
> often that exposed the latent problem.
>
> Only re-posting the new patch.
>
>
> r~
>
>
> The following changes since commit 58b1f0f21edcab13f78a376b1d90267626be1275:
>
> Merge remote-tracking branch 'remotes/kevin/tags/for-upstream' into staging (2018-12-16 12:49:06 +0000)
>
> are available in the Git repository at:
>
> https://github.com/rth7680/qemu.git tags/pull-tcg-20181216
>
> for you to fetch changes up to b7c2cd08a6f68010ad27c9c0bf2fde02fb743a0e:
>
> xxhash: match output against the original xxhash32 (2018-12-17 06:04:44 +0300)
>
> ----------------------------------------------------------------
Applied, thanks.
Please update the changelog at https://wiki.qemu.org/ChangeLog/4.0
for any user-visible changes.
-- PMM
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-12-17 23:55 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-12-17 3:35 [Qemu-devel] [PULL v2 00/33] tcg patch queue Richard Henderson
2018-12-17 3:35 ` [Qemu-devel] [PULL v2 01/33] target/sparc: Remove the constant pool Richard Henderson
2018-12-17 23:45 ` [Qemu-devel] [PULL v2 00/33] tcg patch queue Peter Maydell
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.