i386.md (expm1xf2): Reorder insn sequence for better code generation.
authorUros Bizjak <uros@gcc.gnu.org>
Tue, 20 Feb 2007 09:39:25 +0000 (10:39 +0100)
committerUros Bizjak <uros@gcc.gnu.org>
Tue, 20 Feb 2007 09:39:25 +0000 (10:39 +0100)
* config/i386/i386.md (expm1xf2): Reorder insn sequence for
better code generation.

From-SVN: r122158

gcc/ChangeLog
gcc/config/i386/i386.md

index 48f7de8..d577878 100644 (file)
@@ -1,3 +1,8 @@
+2007-02-20  Uros Bizjak  <ubizjak@gmail.com>
+
+       * config/i386/i386.md (expm1xf2): Reorder insn sequence for
+       better code generation.
+
 2007-02-20  Ben Elliston  <bje@au.ibm.com>
 
        * config/m68hc11/m68hc11.h (OVERRIDE_OPTIONS): Remove extra ;.
@@ -74,9 +79,9 @@
 
 2007-02-19  Richard Henderson  <rth@redhat.com>
 
-        PR debug/29558
-        * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
-        in memory.
+       PR debug/29558
+       * var-tracking.c (track_expr_p): Disallow AGGREGATE_TYPE_P
+       in memory.
 
 2007-02-19  Andreas Krebbel  <krebbel1@de.ibm.com>
 
 
        * except.c (expand_builtin_eh_return_data_regno): Pass entire
        CALL_EXPR as parameter instead of arglist.  Use new CALL_EXPR
-        accessors.
+       accessors.
 
        * coverage.c (create_coverage): Use build_call_expr.
 
 
 2007-02-03  Douglas Gregor  <doug.gregor@gmail.com>
 
-       * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
-       warn about C++0x compatibility.
+       * c-opts.c (c_common_post_options): If C++0x mode is enabled, don't
+       warn about C++0x compatibility.
 
 2007-02-04  Kazu Hirata  <kazu@codesourcery.com>
 
index ad7ae22..7dae8e1 100644 (file)
                               (match_dup 2)))
    (set (match_dup 4) (unspec:XF [(match_dup 3)] UNSPEC_FRNDINT))
    (set (match_dup 5) (minus:XF (match_dup 3) (match_dup 4)))
+   (set (match_dup 9) (float_extend:XF (match_dup 13)))
    (set (match_dup 6) (unspec:XF [(match_dup 5)] UNSPEC_F2XM1))
    (parallel [(set (match_dup 7)
                   (unspec:XF [(match_dup 6) (match_dup 4)]
                              UNSPEC_FSCALE_FRACT))
-                  (set (match_dup 8)
+             (set (match_dup 8)
                   (unspec:XF [(match_dup 6) (match_dup 4)]
                              UNSPEC_FSCALE_EXP))])
    (parallel [(set (match_dup 10)
              (set (match_dup 11)
                   (unspec:XF [(match_dup 9) (match_dup 8)]
                              UNSPEC_FSCALE_EXP))])
-   (set (match_dup 12) (minus:XF (match_dup 10) (match_dup 9)))
+   (set (match_dup 12) (minus:XF (match_dup 10)
+                                (float_extend:XF (match_dup 13))))
    (set (match_operand:XF 0 "register_operand" "")
        (plus:XF (match_dup 12) (match_dup 7)))]
   "TARGET_USE_FANCY_MATH_387
 
   for (i = 2; i < 13; i++)
     operands[i] = gen_reg_rtx (XFmode);
+
+  operands[13]
+    = validize_mem (force_const_mem (SFmode, CONST1_RTX (SFmode))); /* fld1 */
+
   emit_move_insn (operands[2], standard_80387_constant_rtx (5)); /* fldl2e */
-  emit_move_insn (operands[9], CONST1_RTX (XFmode));  /* fld1 */
 })
 
 (define_expand "expm1<mode>2"