diff options
author | Richard Henderson <rth@cygnus.com> | 2000-05-08 16:30:40 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2000-05-08 16:30:40 -0700 |
commit | e8e20f184bc4518d217e28a3be28cd854b6c4040 (patch) | |
tree | e1c73e0b6a6cab45bebf4999772125b8bf256bff | |
parent | 111afdb380be06688d0db2554ffa08a18cb3f945 (diff) | |
download | gcc-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/ChangeLog | 11 | ||||
-rw-r--r-- | gcc/config/ia64/ia64.md | 16 |
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") |