OSDN Git Service

* config/i386/i386.c (ix86_emit_swdivsf): Force b into register.
authoruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Oct 2011 07:30:24 +0000 (07:30 +0000)
committeruros <uros@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 21 Oct 2011 07:30:24 +0000 (07:30 +0000)
(ix86_emit_swsqrtsf): Force a into register.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@180287 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/i386/i386.c

index a76979d..e44cf96 100644 (file)
@@ -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
index 2d44c00..35222c0 100644 (file)
@@ -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),