qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH v2 00/26] tcg: rework liveness analysis and regi


From: Paolo Bonzini
Subject: Re: [Qemu-devel] [PATCH v2 00/26] tcg: rework liveness analysis and register allocator
Date: Wed, 10 Oct 2012 08:59:43 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:15.0) Gecko/20120911 Thunderbird/15.0.1

Il 09/10/2012 21:55, Aurelien Jarno ha scritto:
> This patch series rework the liveness analysis and register allocator
> in order to generate more optimized code, by avoiding a lot of move
> instructions. I have measured a 9% performance improvement in user mode
> and 4% in system mode.
> 
> The idea behind this patch series is to free registers as soon as the
> temps are not used anymore instead of waiting for a basic block end or
> an op with side effects.

Would it make any sense to express the saves as real TCG ops?  This
would have a couple of advantages:

- more copy propagation and dead code elimination.  Something like this:

        mov_i64 cc_dst,rax

right now is compiled as follows:

0x5555557ac37a:  mov    %rbp,(%r14)          # spill rax
0x5555557ac381:  mov    (%r14),%rbp          # load rax from memory
0x5555557ac38f:  mov    %rbp,0x98(%r14)      # spill cc_dst to memory

while expressing spills as TCG ops would turn the above into effectively

        st_i64  rax, env, $0x98

- constant propagation using constraints.  This would let tcg-i386 use
effectively the mov $imm,(addr) instruction for spills of known-constant
values.

Paolo



reply via email to

[Prev in Thread] Current Thread [Next in Thread]