On Tue, 24 May 2011, Laurent Desnogues wrote:

> On Tue, May 24, 2011 at 1:31 PM, Kirill Batuzov <batuz...@ispras.ru> wrote:
> [...]
> > Gathered statistics shows some interesting things too. I've run matrix
> > multiplication benchmark (guest - ARM, host - x86, linux-user mode, with
> > my patches applied) and here are the results:
> >
> > spill count         3916
> >  real spills       32
> >  spills at bb end  1023
> >  spills at call:
> >    globals         2755
> >    iarg passing    0
> >    call cloobers   106
> >
> > Real spills are spills generated by register allocator when it runs out
> > of registers.  They are less than 1% of all spills.  Other tests show
> > similar behavior.
> 
> When you write "host x86", do you mean IA32 or x86_64?
> That might change the number of real spills a lot if you meant
> x86_64.
>

I mean IA32, not x86_64.

> > I think any further improvements to register allocator without leveling
> > conventions about saving globals at calls and BB ends somehow is
> > useless.
> >
> > Currently we are looking if we can pass some globals on registers
> > through basic block boundaries (inside one TB of course).
> 
> If by "basic block", you mean BB as implied by TCG br for
> instance, I'm not sure all guests will benefit a lot.  If you
> mean that you intend on putting several guests BB in a
> single TB then I guess you'll have to first collect dynamic
> statistics before dynamically switching to grouping BB.
> 

I mean BB as implied by TCG br.  Even if only some guest will benefit
from this it still looks like a good idea.  Other guests should not be
affected much I believe.

----
  Kirill.

Reply via email to