[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH for-2.5 01/10] tcg/optimize: optimize temps trac
From: |
Aurelien Jarno |
Subject: |
Re: [Qemu-devel] [PATCH for-2.5 01/10] tcg/optimize: optimize temps tracking |
Date: |
Mon, 27 Jul 2015 11:09:11 +0200 |
User-agent: |
Mutt/1.5.23 (2014-03-12) |
On 2015-07-27 10:21, Paolo Bonzini wrote:
>
>
> On 24/07/2015 18:30, Aurelien Jarno wrote:
> > The tcg_temp_info structure uses 24 bytes per temp. Now that we emulate
> > vector registers on most guests, it's not uncommon to have more than 100
> > used temps. This means we have initialize more than 2kB at least twice
> > per TB, often more when there is a few goto_tb.
> >
> > Instead used a TCGTempSet bit array to track which temps are in used in
> > the current basic block. This means there are only around 16 bytes to
> > initialize.
> >
> > This improves the boot time of a MIPS guest on an x86-64 host by around
> > 7% and moves out tcg_optimize from the the top of the profiler list.
> >
> > Cc: Richard Henderson <address@hidden>
> > Signed-off-by: Aurelien Jarno <address@hidden>
> > ---
> > tcg/optimize.c | 32 ++++++++++++++++++++++----------
> > 1 file changed, 22 insertions(+), 10 deletions(-)
> >
> > diff --git a/tcg/optimize.c b/tcg/optimize.c
> > index cd0e793..20e24b3 100644
> > --- a/tcg/optimize.c
> > +++ b/tcg/optimize.c
> > @@ -50,6 +50,7 @@ struct tcg_temp_info {
> > };
> >
> > static struct tcg_temp_info temps[TCG_MAX_TEMPS];
> > +static TCGTempSet temps_used;
> >
> > /* Reset TEMP's state to TCG_TEMP_UNDEF. If TEMP only had one copy, remove
> > the copy flag from the left temp. */
> > @@ -67,6 +68,22 @@ static void reset_temp(TCGArg temp)
> > temps[temp].mask = -1;
> > }
> >
> > +/* Reset all temporaries, given that there are NB_TEMPS of them. */
> > +static void reset_all_temps(int nb_temps)
> > +{
> > + memset(&temps_used.l, 0, sizeof(long) * BITS_TO_LONGS(nb_temps));
>
> You can use bitmap_zero here.
>
Indeed, thanks for the hint. That will be in v2.
--
Aurelien Jarno GPG: 4096R/1DDD8C9B
address@hidden http://www.aurel32.net
- [Qemu-devel] [PATCH for-2.5 02/10] tcg/optimize: add temp_is_const and temp_is_copy functions, (continued)