aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>2000-05-08 16:30:40 -0700
committerRichard Henderson <rth@gcc.gnu.org>2000-05-08 16:30:40 -0700
commite8e20f184bc4518d217e28a3be28cd854b6c4040 (patch)
treee1c73e0b6a6cab45bebf4999772125b8bf256bff
parent111afdb380be06688d0db2554ffa08a18cb3f945 (diff)
downloadgcc-e8e20f184bc4518d217e28a3be28cd854b6c4040.zip
gcc-e8e20f184bc4518d217e28a3be28cd854b6c4040.tar.gz
gcc-e8e20f184bc4518d217e28a3be28cd854b6c4040.tar.bz2
ia64.md (extendsfdf2): Split the nop case out of existance.
* config/ia64/ia64.md (extendsfdf2): Split the nop case out of existance. From-SVN: r33779
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/ia64/ia64.md16
2 files changed, 19 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 95a77c7..20873e6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,8 +1,15 @@
+2000-05-08 Richard Henderson <rth@cygnus.com>
+
+ * config/ia64/ia64.h (predicate_operator): Declare.
+
+ * config/ia64/ia64.md (extendsfdf2): Split the nop case out
+ of existance.
+
Mon 8 May 22:17:35 2000 Neil Booth <NeilB@earthling.net>
* cpplex.c (spell_token): New function.
- (TOKEN_LEN): Add 1 for whitespace.
- (_cpp_lex_file): Update to use spell_token.
+ (TOKEN_LEN): Add 1 for whitespace.
+ (_cpp_lex_file): Update to use spell_token.
* cpplib.h (E): Remove.
(TTYPE_TABLE): Update CPP_VSPACE entry.
diff --git a/gcc/config/ia64/ia64.md b/gcc/config/ia64/ia64.md
index 6b7eb15..a83fb34 100644
--- a/gcc/config/ia64/ia64.md
+++ b/gcc/config/ia64/ia64.md
@@ -520,16 +520,20 @@
;; Convert between floating point types of different sizes.
-;; ??? Optimization opportunity here.
+;; ??? Optimization opportunity here. Get rid of the insn altogether
+;; when we can. Should probably use a scheme like has been proposed
+;; for ia32 in dealing with operands that match unary operators. This
+;; would let combine merge the thing into adjacent insns.
-(define_insn "extendsfdf2"
+(define_insn_and_split "extendsfdf2"
[(set (match_operand:DF 0 "register_operand" "=f,f")
(float_extend:DF (match_operand:SF 1 "register_operand" "0,f")))]
""
- "@
- nop 0
- mov %0 = %1"
- [(set_attr "type" "unknown,F")])
+ "mov %0 = %1"
+ ""
+ [(set (match_dup 0) (float_extend:DF (match_dup 1)))]
+ "if (true_regnum (operands[0]) == true_regnum (operands[1])) DONE;"
+ [(set_attr "type" "F")])
(define_insn "truncdfsf2"
[(set (match_operand:SF 0 "register_operand" "=f")