From: Blue Swirl <blauwirbel@gmail.com>
To: Aurelien Jarno <aurelien@aurel32.net>
Cc: Laurent Desnogues <laurent.desnogues@gmail.com>,
qemu-devel <qemu-devel@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH RFC 00/11] AREG0 elimination
Date: Sun, 15 May 2011 16:42:05 +0300 [thread overview]
Message-ID: <BANLkTim1a1gzb9_WgXYgwBrDw+Gg5W1ZPg@mail.gmail.com> (raw)
In-Reply-To: <20110515130241.GO30615@hall.aurel32.net>
On Sun, May 15, 2011 at 4:02 PM, Aurelien Jarno <aurelien@aurel32.net> wrote:
> On Sun, May 15, 2011 at 03:37:00PM +0300, Blue Swirl wrote:
>> On Sun, May 15, 2011 at 3:14 PM, Laurent Desnogues
>> <laurent.desnogues@gmail.com> wrote:
>> > On Sun, May 15, 2011 at 1:33 PM, Blue Swirl <blauwirbel@gmail.com> wrote:
>> > [...]
>> >>> x86_64 uses r14 as TCG_AREG0. Despite the instructions being quite
>> >>> simple (only 2 movi_i32), the resulting code makes 2 access to env to
>> >>> save the two registers. Having to reload the env pointer each time to a
>> >>> register would clearly increase the size of this TB.
>> >>
>> >> I don't think TCG would be that simple, instead the pointer would be
>> >> loaded only once in this case.
>> >
>> > Assuming TCG was able to allocate a register for that,
>> > it would be live at most for one TB, so you'd have to
>> > load it at least once per TB, and with block chaining
>> > that wouldn't be efficient as you'd keep on reloading it.
>>
>> Yes, but if there are better uses, the register can be flushed. Now
>> this is not possible since the register is always unavailable.
>>
>
> What are the better uses, that justify to flush a register that is going
> to be used three or four host asm later?
It would obviously replace something else determined by TCG.
> In the current generated code, roughly one every four instruction
> reference TCG_AREG0, so this register is really needed very often.
>
> If you think TCG will be faster by having one more register in between
> I suggest you to first optimize tcg_reg_alloc(), which simply spill
> a random register, even if they are some allocated register that won't
> be used until the end of the TB. You should also should check how often
> TCG spills a register (in which case it would have benefit from one more
> register). It happens less than 2000 times when booting an emulated mips
> system on x86_64, while more than 160000 TB are generated.
Right, on a modern CPU with lots of registers, one additional register
won't be helpful, but on i386 the situation should be very different,
there are very few registers.
next prev parent reply other threads:[~2011-05-15 13:42 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-05-14 19:35 [Qemu-devel] [PATCH RFC 00/11] AREG0 elimination Blue Swirl
2011-05-14 21:16 ` Aurelien Jarno
2011-05-14 21:52 ` Blue Swirl
2011-05-14 22:04 ` Aurelien Jarno
2011-05-15 7:15 ` Blue Swirl
2011-05-15 9:24 ` Aurelien Jarno
2011-05-15 9:58 ` Blue Swirl
2011-05-15 10:19 ` Aurelien Jarno
2011-05-15 11:12 ` Blue Swirl
2011-05-15 11:36 ` Aurelien Jarno
2011-05-15 12:30 ` Blue Swirl
2011-05-15 12:49 ` Aurelien Jarno
2011-05-15 13:16 ` Blue Swirl
2011-05-15 13:43 ` Aurelien Jarno
2011-05-15 14:02 ` Blue Swirl
2011-05-15 14:06 ` Aurelien Jarno
2011-05-15 14:10 ` Blue Swirl
2011-05-15 9:27 ` Laurent Desnogues
2011-05-15 9:49 ` Aurelien Jarno
2011-05-15 11:03 ` Blue Swirl
2011-05-15 11:14 ` Aurelien Jarno
2011-05-15 11:33 ` Blue Swirl
2011-05-15 11:37 ` Aurelien Jarno
2011-05-15 12:33 ` Blue Swirl
2011-05-15 12:14 ` Laurent Desnogues
2011-05-15 12:37 ` Blue Swirl
2011-05-15 13:02 ` Aurelien Jarno
2011-05-15 13:42 ` Blue Swirl [this message]
2011-05-15 14:03 ` Aurelien Jarno
2011-05-15 14:06 ` Blue Swirl
2011-05-14 23:31 ` Aurelien Jarno
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=BANLkTim1a1gzb9_WgXYgwBrDw+Gg5W1ZPg@mail.gmail.com \
--to=blauwirbel@gmail.com \
--cc=aurelien@aurel32.net \
--cc=laurent.desnogues@gmail.com \
--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).