]> git.ipfire.org Git - thirdparty/valgrind.git/commit
Improve code generation on s390x for assignment of constant
authorFlorian Krohm <florian@eich-krohm.de>
Mon, 20 Feb 2012 15:01:14 +0000 (15:01 +0000)
committerFlorian Krohm <florian@eich-krohm.de>
Mon, 20 Feb 2012 15:01:14 +0000 (15:01 +0000)
commit4546ae3379d7bb6673f35608f804affc91d750fb
treec43a74d2398c5ce7e88706dc71881e46ada550a2
parentc45a9ed597a2ff805e3cfaeb38049f7d523c9c05
Improve code generation on s390x for assignment of constant
values to guest registers. Motivated by the observation that
piecing together a 64-bit value requires 4 insns on z900 and 2 insns
on newer models. Specifically:
(1) Assigning 0 can be done by using XC
(2) Assigning a value that differs by a small amount from the
    value previously assigned can be done using AGSI
    (Happens a lot for guest IA updates).
(3) If the new value differs from the previous one only
    in the lower word it is sufficient to assign the lower word.
(4) If the new value equals the old value the assignment is redundant
    and can be eliminated. This happens surprisingly often.
This buys us somewhere between 5% and 11.8% of insns (as measured
on the perf bucket).

git-svn-id: svn://svn.valgrind.org/vex/trunk@2258
VEX/auxprogs/genoffsets.c
VEX/priv/guest_s390_defs.h
VEX/priv/guest_s390_toIR.c
VEX/priv/host_s390_defs.c
VEX/priv/host_s390_defs.h
VEX/priv/host_s390_isel.c