From efc1540576e349fec25d62529a8de11740b204b3 Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Fri, 21 Oct 2011 09:30:24 +0200 Subject: [PATCH] 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 --- gcc/ChangeLog | 5 +++++ gcc/config/i386/i386.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a76979d8f753..e44cf968defb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2011-10-21 Uros Bizjak + + * config/i386/i386.c (ix86_emit_swdivsf): Force b into register. + (ix86_emit_swsqrtsf): Force a into register. + 2011-10-20 Mike Stump * regcprop.c (copyprop_hardreg_forward_1): Update recog_data diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 2d44c0055260..35222c0103ec 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), -- 2.47.2