From patchwork Wed Jan 29 13:39:42 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Maydell X-Patchwork-Id: 23863 Return-Path: X-Original-To: linaro@patches.linaro.org Delivered-To: linaro@patches.linaro.org Received: from mail-pa0-f71.google.com (mail-pa0-f71.google.com [209.85.220.71]) by ip-10-151-82-157.ec2.internal (Postfix) with ESMTPS id 080B2202FA for ; Wed, 29 Jan 2014 13:55:08 +0000 (UTC) Received: by mail-pa0-f71.google.com with SMTP id kp14sf4164916pab.10 for ; Wed, 29 Jan 2014 05:55:08 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:delivered-to:from:to:date :message-id:in-reply-to:references:cc:subject:precedence:list-id :list-unsubscribe:list-archive:list-post:list-help:list-subscribe :errors-to:sender:x-original-sender :x-original-authentication-results:mailing-list; bh=lF5BNVLMnYrjYDpyc6RxYW1xSZMKGvw3flqYto94GIw=; b=emkh8OPyL6xkAWTrXncXOTzxNkGtGYk4pJPbTd9rKrJkF6Uf904YzNSVL/y4406nv3 i3SpQMt3FfycruQaaiMCrEOXGSjUt3TnWGtoop3i+7R1s4m2acx44TPi5hLmHr1imZQQ nlDccd4lzL7EubFdDkrgoRB/r8uMAIDcFG+rWReiq9NAJjpFCpWKarXJltxuAZoLGqSg 8Z9RGZ+IjEG6ftlEENfwN++yZXX3v4d51Lqo7/0rvNa9agfr9HyyUJBomzPCha8gmj2W 9VTJim2pyr+ppHElFBs2c28PkEr8JlO6pBu2d3pUYYs0JxCQtoAeNePCxCkb9aM6Ti91 sfTQ== X-Gm-Message-State: ALoCoQlA4k6bTGA8dJjrvwJtzOXTj5FfNQTjlK6AbzTWh7LWMZKi6mAveNMxYbBn4j/F213OGDdc X-Received: by 10.68.201.7 with SMTP id jw7mr2928785pbc.8.1391003708307; Wed, 29 Jan 2014 05:55:08 -0800 (PST) MIME-Version: 1.0 X-BeenThere: patchwork-forward@linaro.org Received: by 10.140.41.202 with SMTP id z68ls106399qgz.85.gmail; Wed, 29 Jan 2014 05:55:08 -0800 (PST) X-Received: by 10.58.161.227 with SMTP id xv3mr449985veb.31.1391003708118; Wed, 29 Jan 2014 05:55:08 -0800 (PST) Received: from mail-ve0-f177.google.com (mail-ve0-f177.google.com [209.85.128.177]) by mx.google.com with ESMTPS id cx4si812205vcb.80.2014.01.29.05.55.08 for (version=TLSv1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 29 Jan 2014 05:55:08 -0800 (PST) Received-SPF: neutral (google.com: 209.85.128.177 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) client-ip=209.85.128.177; Received: by mail-ve0-f177.google.com with SMTP id jz11so1184657veb.22 for ; Wed, 29 Jan 2014 05:55:08 -0800 (PST) X-Received: by 10.220.186.202 with SMTP id ct10mr6841288vcb.14.1391003708035; Wed, 29 Jan 2014 05:55:08 -0800 (PST) X-Forwarded-To: patchwork-forward@linaro.org X-Forwarded-For: patch@linaro.org patchwork-forward@linaro.org Delivered-To: patch@linaro.org Received: by 10.220.174.196 with SMTP id u4csp114455vcz; Wed, 29 Jan 2014 05:55:07 -0800 (PST) X-Received: by 10.140.23.6 with SMTP id 6mr11395492qgo.17.1391003707528; Wed, 29 Jan 2014 05:55:07 -0800 (PST) Received: from lists.gnu.org (lists.gnu.org. [2001:4830:134:3::11]) by mx.google.com with ESMTPS id n10si790974qck.77.2014.01.29.05.55.07 for (version=TLSv1 cipher=RC4-SHA bits=128/128); Wed, 29 Jan 2014 05:55:07 -0800 (PST) Received-SPF: pass (google.com: domain of qemu-devel-bounces+patch=linaro.org@nongnu.org designates 2001:4830:134:3::11 as permitted sender) client-ip=2001:4830:134:3::11; Received: from localhost ([::1]:42457 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W8Vbf-00054c-7W for patch@linaro.org; Wed, 29 Jan 2014 08:55:07 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49194) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W8VNm-0001M4-UF for qemu-devel@nongnu.org; Wed, 29 Jan 2014 08:40:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1W8VNh-0001Ko-P1 for qemu-devel@nongnu.org; Wed, 29 Jan 2014 08:40:46 -0500 Received: from mnementh.archaic.org.uk ([2001:8b0:1d0::1]:45250) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1W8VNg-0001I9-Vm for qemu-devel@nongnu.org; Wed, 29 Jan 2014 08:40:41 -0500 Received: from pm215 by mnementh.archaic.org.uk with local (Exim 4.80) (envelope-from ) id 1W8VN7-0006wO-RO; Wed, 29 Jan 2014 13:40:05 +0000 From: Peter Maydell To: Anthony Liguori Date: Wed, 29 Jan 2014 13:39:42 +0000 Message-Id: <1391002805-26596-16-git-send-email-peter.maydell@linaro.org> X-Mailer: git-send-email 1.7.10.4 In-Reply-To: <1391002805-26596-1-git-send-email-peter.maydell@linaro.org> References: <1391002805-26596-1-git-send-email-peter.maydell@linaro.org> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:8b0:1d0::1 Cc: Blue Swirl , qemu-devel@nongnu.org, Aurelien Jarno Subject: [Qemu-devel] [PULL 15/38] target-arm: Move arm_rmode_to_sf to a shared location. 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+patch=linaro.org@nongnu.org Sender: qemu-devel-bounces+patch=linaro.org@nongnu.org X-Removed-Original-Auth: Dkim didn't pass. X-Original-Sender: peter.maydell@linaro.org X-Original-Authentication-Results: mx.google.com; spf=neutral (google.com: 209.85.128.177 is neither permitted nor denied by best guess record for domain of patch+caf_=patchwork-forward=linaro.org@linaro.org) smtp.mail=patch+caf_=patchwork-forward=linaro.org@linaro.org Mailing-list: list patchwork-forward@linaro.org; contact patchwork-forward+owners@linaro.org X-Google-Group-Id: 836684582541 From: Will Newton This function will be needed for AArch32 ARMv8 support, so move it to helper.c where it can be used by both targets. Also moves the code out of line, but as it is quite a large function I don't believe this should be a significant performance impact. Signed-off-by: Will Newton Reviewed-by: Peter Maydell Signed-off-by: Peter Maydell --- target-arm/cpu.h | 2 ++ target-arm/helper.c | 28 ++++++++++++++++++++++++++++ target-arm/translate-a64.c | 28 ---------------------------- 3 files changed, 30 insertions(+), 28 deletions(-) diff --git a/target-arm/cpu.h b/target-arm/cpu.h index 198b6b8..383c582 100644 --- a/target-arm/cpu.h +++ b/target-arm/cpu.h @@ -496,6 +496,8 @@ enum arm_fprounding { FPROUNDING_ODD }; +int arm_rmode_to_sf(int rmode); + enum arm_cpu_mode { ARM_CPU_MODE_USR = 0x10, ARM_CPU_MODE_FIQ = 0x11, diff --git a/target-arm/helper.c b/target-arm/helper.c index c708f15..b1541b9 100644 --- a/target-arm/helper.c +++ b/target-arm/helper.c @@ -4418,3 +4418,31 @@ float64 HELPER(rintd)(float64 x, void *fp_status) return ret; } + +/* Convert ARM rounding mode to softfloat */ +int arm_rmode_to_sf(int rmode) +{ + switch (rmode) { + case FPROUNDING_TIEAWAY: + rmode = float_round_ties_away; + break; + case FPROUNDING_ODD: + /* FIXME: add support for TIEAWAY and ODD */ + qemu_log_mask(LOG_UNIMP, "arm: unimplemented rounding mode: %d\n", + rmode); + case FPROUNDING_TIEEVEN: + default: + rmode = float_round_nearest_even; + break; + case FPROUNDING_POSINF: + rmode = float_round_up; + break; + case FPROUNDING_NEGINF: + rmode = float_round_down; + break; + case FPROUNDING_ZERO: + rmode = float_round_to_zero; + break; + } + return rmode; +} diff --git a/target-arm/translate-a64.c b/target-arm/translate-a64.c index 7cfb55b..c22bbb5 100644 --- a/target-arm/translate-a64.c +++ b/target-arm/translate-a64.c @@ -3608,34 +3608,6 @@ static void disas_data_proc_reg(DisasContext *s, uint32_t insn) } } -/* Convert ARM rounding mode to softfloat */ -static inline int arm_rmode_to_sf(int rmode) -{ - switch (rmode) { - case FPROUNDING_TIEAWAY: - rmode = float_round_ties_away; - break; - case FPROUNDING_ODD: - /* FIXME: add support for TIEAWAY and ODD */ - qemu_log_mask(LOG_UNIMP, "arm: unimplemented rounding mode: %d\n", - rmode); - case FPROUNDING_TIEEVEN: - default: - rmode = float_round_nearest_even; - break; - case FPROUNDING_POSINF: - rmode = float_round_up; - break; - case FPROUNDING_NEGINF: - rmode = float_round_down; - break; - case FPROUNDING_ZERO: - rmode = float_round_to_zero; - break; - } - return rmode; -} - static void handle_fp_compare(DisasContext *s, bool is_double, unsigned int rn, unsigned int rm, bool cmp_with_zero, bool signal_all_nans)