This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: ia64 cond_exec
On Mon, May 08, 2000 at 03:31:50PM -0700, Jim Wilson wrote:
> The change to extendsfdf2 to change "//nop" to "nop" had me confused for a
> while, as that just makes the code worse by adding an unnecessary nop.
> However, I suspect you needed to do this because we can't predicate a
> comment. I think an explanatory comment would be useful here.
I've removed the insn instead.
r~
* config/ia64/ia64.md (extendsfdf2): Split the nop case out
of existance.
Index: ia64.md
===================================================================
RCS file: /cvs/gcc/egcs/gcc/config/ia64/ia64.md,v
retrieving revision 1.9
diff -c -p -d -r1.9 ia64.md
*** ia64.md 2000/05/07 01:56:25 1.9
--- ia64.md 2000/05/08 23:28:13
***************
*** 520,535 ****
;; Convert between floating point types of different sizes.
! ;; ??? Optimization opportunity here.
! (define_insn "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")])
(define_insn "truncdfsf2"
[(set (match_operand:SF 0 "register_operand" "=f")
--- 520,539 ----
;; Convert between floating point types of different sizes.
! ;; ??? 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_and_split "extendsfdf2"
[(set (match_operand:DF 0 "register_operand" "=f,f")
(float_extend:DF (match_operand:SF 1 "register_operand" "0,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")