On Mon, 4 Feb 2019 16:44:06 +0100 David Hildenbrand <da...@redhat.com> wrote:
> 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 flaoting point > registers as globals anymore. This is than 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 > in1_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.hender...@linaro.org> > Signed-off-by: David Hildenbrand <da...@redhat.com> > --- > > v1 -> v2: > - renamed x2h -> x2l and x2l -> x2h to match the actual meaning > ("high" on s390x is where the smaller bit numbers are ;) ) > - did another quick sniff test > > target/s390x/insn-data.def | 150 ++++++++++++++++++------------------- > target/s390x/translate.c | 135 ++++++++++++++++++++------------- > 2 files changed, 160 insertions(+), 125 deletions(-) Thanks, applied.