From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1N1fab-0008AJ-4X for qemu-devel@nongnu.org; Sat, 24 Oct 2009 08:19:21 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1N1faW-000875-RR for qemu-devel@nongnu.org; Sat, 24 Oct 2009 08:19:20 -0400 Received: from [199.232.76.173] (port=58447 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1N1faW-00086x-GM for qemu-devel@nongnu.org; Sat, 24 Oct 2009 08:19:16 -0400 Received: from smtp.nokia.com ([192.100.105.134]:50576 helo=mgw-mx09.nokia.com) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1N1faW-0004GX-2S for qemu-devel@nongnu.org; Sat, 24 Oct 2009 08:19:16 -0400 Received: from vaebh105.NOE.Nokia.com (vaebh105.europe.nokia.com [10.160.244.31]) by mgw-mx09.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id n9OCJC9Y008660 for ; Sat, 24 Oct 2009 07:19:13 -0500 Received: from localhost.localdomain (essapo-nirac252105.europe.nokia.com [10.162.252.105]) by mgw-sa02.ext.nokia.com (Switch-3.3.3/Switch-3.3.3) with ESMTP id n9OCJ8q7022164 for ; Sat, 24 Oct 2009 15:19:10 +0300 From: juha.riihimaki@nokia.com Date: Sat, 24 Oct 2009 15:19:00 +0300 Message-Id: <1256386749-85299-2-git-send-email-juha.riihimaki@nokia.com> In-Reply-To: <1256386749-85299-1-git-send-email-juha.riihimaki@nokia.com> References: <1256386749-85299-1-git-send-email-juha.riihimaki@nokia.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Subject: [Qemu-devel] [PATCH v2 01/10] target-arm: fix neon vshrn/vrshrn ops List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org From: Juha Riihim=C3=A4ki In the existing code shift value is clobbered during the pass loop. This patch changes the code so that it stores the intermediate result in the target neon register directly and eliminates the need to use a temporary to hold the intermediate value thus leaving the shift value in the temporary variable intact. This is a new patch in this version of the patch series. Signed-off-by: Juha Riihim=C3=A4ki --- target-arm/translate.c | 12 +++--------- 1 files changed, 3 insertions(+), 9 deletions(-) diff --git a/target-arm/translate.c b/target-arm/translate.c index 9d13d42..8a85db6 100644 --- a/target-arm/translate.c +++ b/target-arm/translate.c @@ -4680,18 +4680,12 @@ static int disas_neon_data_insn(CPUState * env, D= isasContext *s, uint32_t insn) else gen_neon_narrow_satu(size - 1, tmp, cpu_V0); } - if (pass =3D=3D 0) { - if (size !=3D 3) { - dead_tmp(tmp2); - } - tmp2 =3D tmp; - } else { - neon_store_reg(rd, 0, tmp2); - neon_store_reg(rd, 1, tmp); - } + neon_store_reg(rd, pass, tmp); } /* for pass */ if (size =3D=3D 3) { tcg_temp_free_i64(tmp64); + } else { + dead_tmp(tmp2); } } else if (op =3D=3D 10) { /* VSHLL */ --=20 1.6.5