aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorUros Bizjak <uros@gcc.gnu.org>2007-02-20 10:39:25 +0100
committerUros Bizjak <uros@gcc.gnu.org>2007-02-20 10:39:25 +0100
commit6bdcc60c754f23ad4cdaa61df43ef5acb1c5465b (patch)
tree34fe7eb033ec375c634fcf66dc7c41d8c0fbf918 /gcc
parent77bb16aaddaf66bb78104f920ca779966101fb2a (diff)
downloadgcc-6bdcc60c754f23ad4cdaa61df43ef5acb1c5465b.zip
gcc-6bdcc60c754f23ad4cdaa61df43ef5acb1c5465b.tar.gz
gcc-6bdcc60c754f23ad4cdaa61df43ef5acb1c5465b.tar.bz2
i386.md (expm1xf2): Reorder insn sequence for better code generation.
* config/i386/i386.md (expm1xf2): Reorder insn sequence for better code generation. From-SVN: r122158
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog17
-rw-r--r--gcc/config/i386/i386.md12
2 files changed, 19 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 48f7de8..d577878 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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>
@@ -826,7 +831,7 @@
* 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.
@@ -2333,8 +2338,8 @@
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>
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index ad7ae22..7dae8e1 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -17145,11 +17145,12 @@
(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)
@@ -17158,7 +17159,8 @@
(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
@@ -17168,9 +17170,11 @@
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"