On Wed, Sep 19, 2012 at 10:00 PM, Aurelien Jarno <aurel...@aurel32.net> wrote: > This patch series rework the copy propagation in order to generate > better code. The first two patches are cleanup and bug fixes, the third > patch is the heart of the series, and the remaining ones are small > optimizations using the new copy propagation. > > I have measured a decrease of the generated code size of about 4%, with > a gain in speed between 0 and 2% depending on the workload. > > For better benefits in ARM emulation, it should be used with the setcond > patches series I have sent a few days ago.
Using this patch series along with the ARM one, I got a nice gain of speed in user mode for SPECCPU 2k gcc: without the patches the integrate.i data set runs in 13.6s, with them the time is reduced to 12.4s (host CPU is i5 2400 64-bit mode). Nice job! Laurent > Aurelien Jarno (9): > tcg/optimizer: remove TCG_TEMP_ANY > tcg/optimizer: check types in copy propagation > tcg/optimizer: rework copy progagation > tcg/optimize: do copy propagation for all operations > tcg/optimize: optimize "op r, a, a => mov r, a" > tcg/optimize: optimize "op r, a, a => movi r, 0" > tcg/optimize: further optimize brcond/setcond > tcg/optimize: prefer the "op a, a, b" form for commutative ops > tcg: remove #ifdef #endif around TCGOpcode tests > > tcg/optimize.c | 326 > ++++++++++++++++++++++++++++++++++---------------------- > tcg/tcg.c | 16 +-- > 2 files changed, 200 insertions(+), 142 deletions(-) > > -- > 1.7.10.4 > >