aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUros Bizjak <ubizjak@gmail.com>2011-10-21 09:30:24 +0200
committerUros Bizjak <uros@gcc.gnu.org>2011-10-21 09:30:24 +0200
commitefc1540576e349fec25d62529a8de11740b204b3 (patch)
treee9432ffae68a611ee4eb71602de8a2c349672e89
parent3147591f604b6ce925c1e7d39e62ec973472af58 (diff)
downloadgcc-efc1540576e349fec25d62529a8de11740b204b3.zip
gcc-efc1540576e349fec25d62529a8de11740b204b3.tar.gz
gcc-efc1540576e349fec25d62529a8de11740b204b3.tar.bz2
i386.c (ix86_emit_swdivsf): Force b into register.
* config/i386/i386.c (ix86_emit_swdivsf): Force b into register. (ix86_emit_swsqrtsf): Force a into register. From-SVN: r180287
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a76979d..e44cf96 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2011-10-21 Uros Bizjak <ubizjak@gmail.com>
+
+ * config/i386/i386.c (ix86_emit_swdivsf): Force b into register.
+ (ix86_emit_swsqrtsf): Force a into register.
+
2011-10-20 Mike Stump <mikestump@comcast.net>
* regcprop.c (copyprop_hardreg_forward_1): Update recog_data
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 2d44c00..35222c0 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -33638,6 +33638,8 @@ void ix86_emit_swdivsf (rtx res, rtx a, rtx b, enum machine_mode mode)
/* a / b = a * ((rcp(b) + rcp(b)) - (b * rcp(b) * rcp (b))) */
+ b = force_reg (mode, b);
+
/* x0 = rcp(b) estimate */
emit_insn (gen_rtx_SET (VOIDmode, x0,
gen_rtx_UNSPEC (mode, gen_rtvec (1, b),
@@ -33693,6 +33695,8 @@ void ix86_emit_swsqrtsf (rtx res, rtx a, enum machine_mode mode,
/* sqrt(a) = -0.5 * a * rsqrtss(a) * (a * rsqrtss(a) * rsqrtss(a) - 3.0)
rsqrt(a) = -0.5 * rsqrtss(a) * (a * rsqrtss(a) * rsqrtss(a) - 3.0) */
+ a = force_reg (mode, a);
+
/* x0 = rsqrt(a) estimate */
emit_insn (gen_rtx_SET (VOIDmode, x0,
gen_rtx_UNSPEC (mode, gen_rtvec (1, a),