From: Richard Henderson <rth@twiddle.net>
To: Artyom Tarasenko <atar4qemu@gmail.com>,
Aurelien Jarno <aurelien@aurel32.net>
Cc: qemu-devel <qemu-devel@nongnu.org>, Dennis Luehring <dl.soluz@gmx.net>
Subject: Re: [Qemu-devel] Debian 7.8.0 SPARC64 on qemu - anything i can do to speedup the emulation?
Date: Tue, 18 Aug 2015 10:55:21 -0700 [thread overview]
Message-ID: <55D37189.3010809@twiddle.net> (raw)
In-Reply-To: <CACXAS8Dv410OJn4tQ14hLOsR-TjHCMQXmTMU8Dk_XT1saPQz9g@mail.gmail.com>
On 08/18/2015 02:24 AM, Artyom Tarasenko wrote:
> The unoptimized case is a sequence of multiple cmp and branch
> operations (likely created by a "case" statement in the original
> source code), especially where cmp is in a delay slot of a branch
> instruction.
Interesting.
> I wonder whether we always have to finish a TB on a conditional jump.
> Maybe it would make sense to translate further if a destination of a
> jump is not too far from dc->pc? The definition of "not too far" is
> indeed tricky.
We can only handle two chained exits from a TB. If we continue past
a conditional branch, we may well encounter a second conditional branch, which
would leave us with three different exits from the TB.
Something that may be interesting to play with, however, is to change the TB
with which the insn in a delay slot is connected.
For instance, we currently spend some amount of effort computing and saving the
branch condition, so that we can then execute the delay slot, and afterwards
use the saved branch condition to perform the branch.
Another way of doing this is to immediately branch, exiting the TB. But we set
up PC+NPC for the next TB such that the delay slot is the first insn that is
executed within the next TB. In that way, the compare in the delay slot that
you mention *is* in the same TB as the branch that uses it, allowing
the case to be optimized.
This could wind up creating more TBs than the current solution, so it's not
clear that it would be a win. One can mitigate that somewhat by noticing the
case where the delay slot is a nop. I do think it's worth an experiment.
r~
next prev parent reply other threads:[~2015-08-18 17:55 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-07-28 7:52 [Qemu-devel] Debian 7.8.0 SPARC64 on qemu - anything i can do to speedup the emulation? Dennis Luehring
2015-07-28 9:54 ` Artyom Tarasenko
2015-07-29 6:20 ` Dennis Luehring
2015-07-29 8:23 ` Artyom Tarasenko
2015-07-29 15:01 ` Aurelien Jarno
2015-07-30 3:52 ` Dennis Luehring
2015-07-30 7:52 ` Aurelien Jarno
2015-07-30 8:16 ` Dennis Luehring
2015-07-30 8:42 ` Artyom Tarasenko
2015-07-30 8:55 ` Aurelien Jarno
2015-07-30 9:35 ` Artyom Tarasenko
2015-07-30 10:09 ` Aurelien Jarno
2015-07-30 18:21 ` Dennis Luehring
2015-07-30 15:50 ` Aurelien Jarno
2015-07-31 15:31 ` Artyom Tarasenko
2015-07-31 15:43 ` Aurelien Jarno
2015-08-02 13:11 ` Mark Cave-Ayland
2015-08-03 8:31 ` Artyom Tarasenko
2015-08-03 9:17 ` Aurelien Jarno
2015-08-18 9:24 ` Artyom Tarasenko
2015-08-18 17:55 ` Richard Henderson [this message]
2015-08-19 10:41 ` Artyom Tarasenko
2015-08-19 11:00 ` Aurelien Jarno
2015-08-19 14:41 ` Artyom Tarasenko
2015-08-20 5:22 ` Dennis Luehring
2015-08-20 10:40 ` Artyom Tarasenko
2015-08-20 17:19 ` Richard Henderson
2015-08-21 4:32 ` Dennis Luehring
2015-08-21 5:49 ` Richard Henderson
2015-08-21 6:05 ` Dennis Luehring
2015-08-21 15:47 ` Richard Henderson
2015-08-21 16:13 ` Aurelien Jarno
2015-08-21 16:41 ` Dennis Luehring
2015-08-22 16:45 ` Artyom Tarasenko
2015-08-22 17:47 ` Dennis Luehring
2015-08-22 18:53 ` Artyom Tarasenko
2015-08-23 12:11 ` Dennis Luehring
2015-08-23 0:41 ` Richard Henderson
2015-08-26 16:17 ` Artyom Tarasenko
2015-08-26 19:47 ` Richard Henderson
2015-08-27 5:54 ` Dennis Luehring
2015-08-27 15:04 ` Richard Henderson
2015-08-27 15:58 ` Artyom Tarasenko
2015-08-17 11:32 ` Dennis Luehring
2015-08-03 7:58 ` Dennis Luehring
2015-08-03 14:51 ` Dennis Luehring
2015-08-03 15:59 ` Karel Gardas
2015-08-03 19:51 ` Dennis Luehring
2015-08-06 9:00 ` Karel Gardas
2015-08-06 9:21 ` Dennis Luehring
2015-08-06 9:27 ` Dennis Luehring
2015-08-06 12:50 ` Karel Gardas
2015-08-06 16:35 ` Dennis Luehring
2015-08-18 4:25 ` Dennis Luehring
2015-08-18 8:19 ` Aurelien Jarno
2015-08-18 10:39 ` Dennis Luehring
2015-08-18 11:21 ` Dennis Luehring
[not found] ` <CAMO55fkcW1eOaZSz2MJgqZEP29pTuHvTLe0Kna5eHYfg7cFyPA@mail.gmail.com>
2015-08-19 4:28 ` Dennis Luehring
2015-07-29 8:07 ` Dennis Luehring
2015-07-29 15:03 ` Aurelien Jarno
2015-07-29 9:17 ` Karel Gardas
2015-07-29 10:20 ` Dennis Luehring
2015-07-29 13:45 ` Karel Gardas
2015-07-29 15:13 ` Aurelien Jarno
2015-07-29 10:55 ` Dennis Luehring
2015-07-29 12:34 ` Karel Gardas
2015-07-29 12:38 ` Karel Gardas
2015-07-29 13:55 ` Dennis Luehring
2015-07-29 14:41 ` Karel Gardas
2015-07-30 3:47 ` Dennis Luehring
2015-07-30 7:12 ` Paolo Bonzini
2015-07-30 8:31 ` Artyom Tarasenko
2015-08-02 19:12 ` Alex Bennée
2015-07-30 7:55 ` Aurelien Jarno
2015-08-17 14:19 ` Artyom Tarasenko
2015-08-17 15:40 ` Richard Henderson
2015-08-17 16:25 ` Artyom Tarasenko
2015-08-17 21:08 ` Aurelien Jarno
2015-08-27 15:29 ` Artyom Tarasenko
2015-09-02 4:34 ` Dennis Luehring
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55D37189.3010809@twiddle.net \
--to=rth@twiddle.net \
--cc=atar4qemu@gmail.com \
--cc=aurelien@aurel32.net \
--cc=dl.soluz@gmx.net \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).