From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([209.51.188.92]:53660) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gqeHi-0005tG-Tz for qemu-devel@nongnu.org; Mon, 04 Feb 2019 08:27:40 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gqeHh-0003bm-1q for qemu-devel@nongnu.org; Mon, 04 Feb 2019 08:27:38 -0500 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]:36950) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gqeHg-0003ZF-LI for qemu-devel@nongnu.org; Mon, 04 Feb 2019 08:27:36 -0500 Received: by mail-wm1-x330.google.com with SMTP id g67so13449802wmd.2 for ; Mon, 04 Feb 2019 05:27:36 -0800 (PST) References: <20190131143759.3122-1-david@redhat.com> From: Richard Henderson Message-ID: Date: Mon, 4 Feb 2019 13:27:31 +0000 MIME-Version: 1.0 In-Reply-To: <20190131143759.3122-1-david@redhat.com> Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Subject: Re: [Qemu-devel] [PATCH v1] s390x/tcg: Don't model FP registers as globals List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: David Hildenbrand , qemu-devel@nongnu.org Cc: qemu-s390x@nongnu.org, Cornelia Huck , Thomas Huth , Richard Henderson On 1/31/19 2:37 PM, David Hildenbrand 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. > > Signed-off-by: David Hildenbrand > --- > target/s390x/insn-data.def | 150 ++++++++++++++++++------------------- > target/s390x/translate.c | 133 +++++++++++++++++++------------- > 2 files changed, 158 insertions(+), 125 deletions(-) Reviewed-by: Richard Henderson r~