From patchwork Fri Sep 27 00:47:55 2013 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Alexander Graf X-Patchwork-Id: 278326 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 97CB42C0333 for ; Fri, 27 Sep 2013 10:50:02 +1000 (EST) Received: from localhost ([::1]:60417 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VPMFr-0001Ph-DX for incoming@patchwork.ozlabs.org; Thu, 26 Sep 2013 20:49:59 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:38821) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VPMF1-0001NH-4J for qemu-devel@nongnu.org; Thu, 26 Sep 2013 20:49:25 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VPMEt-0004ge-Hm for qemu-devel@nongnu.org; Thu, 26 Sep 2013 20:49:07 -0400 Received: from cantor2.suse.de ([195.135.220.15]:52583 helo=mx2.suse.de) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VPMEt-0004g9-6s for qemu-devel@nongnu.org; Thu, 26 Sep 2013 20:48:59 -0400 Received: from relay1.suse.de (unknown [195.135.220.254]) by mx2.suse.de (Postfix) with ESMTP id BDA7BA5386; Fri, 27 Sep 2013 02:48:57 +0200 (CEST) From: Alexander Graf To: qemu-devel@nongnu.org Date: Fri, 27 Sep 2013 02:47:55 +0200 Message-Id: <1380242934-20953-2-git-send-email-agraf@suse.de> X-Mailer: git-send-email 1.6.0.2 In-Reply-To: <1380242934-20953-1-git-send-email-agraf@suse.de> References: <1380242934-20953-1-git-send-email-agraf@suse.de> X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.4.x X-Received-From: 195.135.220.15 Cc: Peter Maydell , Michael Matz , C Fontana , Dirk Mueller , Laurent Desnogues , Christoffer Dall , Richard Henderson Subject: [Qemu-devel] [PATCH 01/60] arm: Use symbolic device names for vfp cmp X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org The VFP cmp and cmpe helpers are quite cryptic to understand. This is mostly thanks to the fact that they hardcode values rather than use their symbolic counterparts. Make them use names instead. Signed-off-by: Alexander Graf --- target-arm/helper.c | 50 ++++++++++++++++++++++++++------------------------ 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/target-arm/helper.c b/target-arm/helper.c index e51ef20..3ec56d6 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -3603,30 +3603,32 @@ float64 VFP_HELPER(sqrt, d)(float64 a, CPUARMState *env) } /* XXX: check quiet/signaling case */ -#define DO_VFP_cmp(p, type) \ -void VFP_HELPER(cmp, p)(type a, type b, CPUARMState *env) \ -{ \ - uint32_t flags; \ - switch(type ## _compare_quiet(a, b, &env->vfp.fp_status)) { \ - case 0: flags = 0x6; break; \ - case -1: flags = 0x8; break; \ - case 1: flags = 0x2; break; \ - default: case 2: flags = 0x3; break; \ - } \ - env->vfp.xregs[ARM_VFP_FPSCR] = (flags << 28) \ - | (env->vfp.xregs[ARM_VFP_FPSCR] & 0x0fffffff); \ -} \ -void VFP_HELPER(cmpe, p)(type a, type b, CPUARMState *env) \ -{ \ - uint32_t flags; \ - switch(type ## _compare(a, b, &env->vfp.fp_status)) { \ - case 0: flags = 0x6; break; \ - case -1: flags = 0x8; break; \ - case 1: flags = 0x2; break; \ - default: case 2: flags = 0x3; break; \ - } \ - env->vfp.xregs[ARM_VFP_FPSCR] = (flags << 28) \ - | (env->vfp.xregs[ARM_VFP_FPSCR] & 0x0fffffff); \ +#define DO_VFP_cmp(p, type) \ +void VFP_HELPER(cmp, p)(type a, type b, CPUARMState *env) \ +{ \ + uint32_t flags; \ + switch(type ## _compare_quiet(a, b, &env->vfp.fp_status)) { \ + case float_relation_equal: flags = PSTATE_Z | PSTATE_C; break; \ + case float_relation_less: flags = PSTATE_N; break; \ + case float_relation_greater: flags = PSTATE_C; break; \ + default: \ + case float_relation_unordered: flags = PSTATE_V | PSTATE_C; break; \ + } \ + env->vfp.xregs[ARM_VFP_FPSCR] = (flags << 28) \ + | (env->vfp.xregs[ARM_VFP_FPSCR] & 0x0fffffff); \ +} \ +void VFP_HELPER(cmpe, p)(type a, type b, CPUARMState *env) \ +{ \ + uint32_t flags; \ + switch(type ## _compare(a, b, &env->vfp.fp_status)) { \ + case float_relation_equal: flags = PSTATE_Z | PSTATE_C; break; \ + case float_relation_less: flags = PSTATE_N; break; \ + case float_relation_greater: flags = PSTATE_C; break; \ + default: \ + case float_relation_unordered: flags = PSTATE_V | PSTATE_C; break; \ + } \ + env->vfp.xregs[ARM_VFP_FPSCR] = (flags << 28) \ + | (env->vfp.xregs[ARM_VFP_FPSCR] & 0x0fffffff); \ } DO_VFP_cmp(s, float32) DO_VFP_cmp(d, float64)