about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--soft-fp/op-common.h4
2 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 2dfde80900..80707a257b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-12-07  Richard Henderson  <rth@redhat.com>
+
+	* soft-fp/op-common.h (_FP_MUL): Pull computation of R_e from the
+	normal/normal case to before the switch.
+	(_FP_DIV): Likewise.
+
 2012-12-06  Carlos O'Donell  <carlos@systemhalted.org>
 	    Mike Frysinger  <vapier@gentoo.org>
 
diff --git a/soft-fp/op-common.h b/soft-fp/op-common.h
index 8855ad3acf..6e81b138d3 100644
--- a/soft-fp/op-common.h
+++ b/soft-fp/op-common.h
@@ -748,11 +748,11 @@ do {									 \
 #define _FP_MUL(fs, wc, R, X, Y)			\
 do {							\
   R##_s = X##_s ^ Y##_s;				\
+  R##_e = X##_e + Y##_e + 1;				\
   switch (_FP_CLS_COMBINE(X##_c, Y##_c))		\
   {							\
   case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_NORMAL):	\
     R##_c = FP_CLS_NORMAL;				\
-    R##_e = X##_e + Y##_e + 1;				\
 							\
     _FP_MUL_MEAT_##fs(R,X,Y);				\
 							\
@@ -811,11 +811,11 @@ do {							\
 #define _FP_DIV(fs, wc, R, X, Y)			\
 do {							\
   R##_s = X##_s ^ Y##_s;				\
+  R##_e = X##_e - Y##_e;				\
   switch (_FP_CLS_COMBINE(X##_c, Y##_c))		\
   {							\
   case _FP_CLS_COMBINE(FP_CLS_NORMAL,FP_CLS_NORMAL):	\
     R##_c = FP_CLS_NORMAL;				\
-    R##_e = X##_e - Y##_e;				\
 							\
     _FP_DIV_MEAT_##fs(R,X,Y);				\
     break;						\