diff options
author | David Hildenbrand <david@redhat.com> | 2019-02-04 16:44:06 +0100 |
---|---|---|
committer | Cornelia Huck <cohuck@redhat.com> | 2019-02-04 18:32:17 +0100 |
commit | 80a7b759493e05579c26e8a913a3d6349641853e (patch) | |
tree | 2e491f7d55582caf191d7a026f5c295ad368ac71 /hw/s390x | |
parent | aede5d5dfc5f3e4ea7467b28c51fda2f8945d117 (diff) | |
download | qemu-80a7b759493e05579c26e8a913a3d6349641853e.zip |
s390x/tcg: Don't model FP registers as globals
As floating point registers overlay some vector registers and we want
to make use of the general tcg_gvec infrastructure that assumes vectors
are not stored in globals but in memory, don't model floating point
registers as globals anymore. This is then similar to how arm handles
it.
Reading/writing a floating point register means reading/writing memory now.
Break up ugly in2_x2() handling that modifies both, in1 and in2 into
in2_x2l and in2_x2h. This makes things more readable. Also, in1_x1() is
ugly as it touches out/out2, get rid of that and use prep_x1() instead.
As we are no longer able to use the original global variables for
out/out2, we have to use new temporary variables and write from them to
the target registers using wout_ helpers.
E.g. an instruction that reads and writes x1 will use
- prep_x1 to get the values into out/out2
- wout_x1 to write the values from out/out2
This special handling is needed for x1 as it is often used along with
other inputs, so in1/in2 is already used.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Signed-off-by: David Hildenbrand <david@redhat.com>
Message-Id: <20190204154406.16122-1-david@redhat.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
Diffstat (limited to 'hw/s390x')
0 files changed, 0 insertions, 0 deletions