From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from [140.186.70.92] (port=33119 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Q904w-0006Vj-Pi for qemu-devel@nongnu.org; Sun, 10 Apr 2011 15:13:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Q904v-0000UP-EV for qemu-devel@nongnu.org; Sun, 10 Apr 2011 15:13:46 -0400 Received: from hall.aurel32.net ([88.191.126.93]:36369) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Q904v-0000UI-8a for qemu-devel@nongnu.org; Sun, 10 Apr 2011 15:13:45 -0400 From: Aurelien Jarno Date: Sun, 10 Apr 2011 21:13:27 +0200 Message-Id: <1302462807-8795-5-git-send-email-aurelien@aurel32.net> In-Reply-To: <1302462807-8795-1-git-send-email-aurelien@aurel32.net> References: <1302462807-8795-1-git-send-email-aurelien@aurel32.net> Subject: [Qemu-devel] [PATCH 5/5] target-i386: add floatx_{add, mul, sub} and use them List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Peter Maydell , Aurelien Jarno Add floatx_{add,mul,sub} defines, and use them instead of using direct C operations. Cc: Peter Maydell Signed-off-by: Aurelien Jarno --- target-i386/exec.h | 6 ++++++ target-i386/op_helper.c | 18 ++++++++---------- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/target-i386/exec.h b/target-i386/exec.h index d6922f3..6ec1a4a 100644 --- a/target-i386/exec.h +++ b/target-i386/exec.h @@ -110,6 +110,9 @@ static inline void svm_check_intercept(uint32_t type) #define float64_to_floatx float64_to_floatx80 #define floatx_to_float32 floatx80_to_float32 #define floatx_to_float64 floatx80_to_float64 +#define floatx_add floatx80_add +#define floatx_mul floatx80_mul +#define floatx_sub floatx80_sub #define floatx_abs floatx80_abs #define floatx_chs floatx80_chs #define floatx_round_to_int floatx80_round_to_int @@ -126,6 +129,9 @@ static inline void svm_check_intercept(uint32_t type) #define float64_to_floatx(x, e) (x) #define floatx_to_float32 float64_to_float32 #define floatx_to_float64(x, e) (x) +#define floatx_add float64_add +#define floatx_mul float64_mul +#define floatx_sub float64_sub #define floatx_abs float64_abs #define floatx_chs float64_chs #define floatx_round_to_int float64_round_to_int diff --git a/target-i386/op_helper.c b/target-i386/op_helper.c index 43fbd0c..a73427f 100644 --- a/target-i386/op_helper.c +++ b/target-i386/op_helper.c @@ -3711,22 +3711,22 @@ void helper_fucomi_ST0_FT0(void) void helper_fadd_ST0_FT0(void) { - ST0 += FT0; + ST0 = floatx_add(ST0, FT0, &env->fp_status); } void helper_fmul_ST0_FT0(void) { - ST0 *= FT0; + ST0 = floatx_mul(ST0, FT0, &env->fp_status); } void helper_fsub_ST0_FT0(void) { - ST0 -= FT0; + ST0 = floatx_sub(ST0, FT0, &env->fp_status); } void helper_fsubr_ST0_FT0(void) { - ST0 = FT0 - ST0; + ST0 = floatx_sub(FT0, ST0, &env->fp_status); } void helper_fdiv_ST0_FT0(void) @@ -3743,24 +3743,22 @@ void helper_fdivr_ST0_FT0(void) void helper_fadd_STN_ST0(int st_index) { - ST(st_index) += ST0; + ST(st_index) = floatx_add(ST(st_index), ST0, &env->fp_status); } void helper_fmul_STN_ST0(int st_index) { - ST(st_index) *= ST0; + ST(st_index) = floatx_mul(ST(st_index), ST0, &env->fp_status); } void helper_fsub_STN_ST0(int st_index) { - ST(st_index) -= ST0; + ST(st_index) = floatx_sub(ST(st_index), ST0, &env->fp_status); } void helper_fsubr_STN_ST0(int st_index) { - CPU86_LDouble *p; - p = &ST(st_index); - *p = ST0 - *p; + ST(st_index) = floatx_sub(ST0, ST(st_index), &env->fp_status); } void helper_fdiv_STN_ST0(int st_index) -- 1.7.2.3