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 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.


Laurent

Reply via email to