* config/ia64/ia64.md (extendsfdf2): Split the nop case out
of existance.
From-SVN: r33779
+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.
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.
* cpplib.h (E): Remove.
(TTYPE_TABLE): Update CPP_VSPACE entry.
;; Convert between floating point types of different sizes.
;; 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")))]
""
[(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")
(define_insn "truncdfsf2"
[(set (match_operand:SF 0 "register_operand" "=f")