From 8c7d377fa2a94ea39f7eb38df8aeb776452f49f0 Mon Sep 17 00:00:00 2001 From: John David Anglin Date: Sun, 20 Apr 2003 17:18:03 +0000 Subject: [PATCH] pa.md (movccfp): New expander. PR/8705 * pa.md (movccfp): New expander. (setccfp0, setccfp1): Rename to movccfp0 and movccfp1, respectively. Reverse fcmp conditions. From-SVN: r65858 --- gcc/ChangeLog | 7 +++++++ gcc/config/pa/pa.md | 24 +++++++++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9ecfed750aa..f2167841c80 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-04-20 John David Anglin + + PR/8705 + * pa.md (movccfp): New expander. + (setccfp0, setccfp1): Rename to movccfp0 and movccfp1, respectively. + Reverse fcmp conditions. + 2003-04-20 Marek Michalkiewicz * config/avr/avr.md (*cmpqi_sign_extend): Handle negative values diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index 0f50c8ff71d..523b971fd19 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -625,23 +625,37 @@ [(set_attr "length" "4") (set_attr "type" "fpcc")]) -;; The following two patterns are optimization placeholders. In almost +;; Provide a means to emit the movccfp0 and movccfp1 optimization +;; placeholders. This is necessary in rare situations when a +;; placeholder is re-emitted (see PR 8705). + +(define_expand "movccfp" + [(set (reg:CCFP 0) + (match_operand 0 "const_int_operand" ""))] + "! TARGET_SOFT_FLOAT" + " +{ + if ((unsigned HOST_WIDE_INT) INTVAL (operands[0]) > 1) + FAIL; +}") + +;; The following patterns are optimization placeholders. In almost ;; all cases, the user of the condition code will be simplified and the ;; original condition code setting insn should be eliminated. -(define_insn "*setccfp0" +(define_insn "*movccfp0" [(set (reg:CCFP 0) (const_int 0))] "! TARGET_SOFT_FLOAT" - "fcmp,dbl,!= %%fr0,%%fr0" + "fcmp,dbl,= %%fr0,%%fr0" [(set_attr "length" "4") (set_attr "type" "fpcc")]) -(define_insn "*setccfp1" +(define_insn "*movccfp1" [(set (reg:CCFP 0) (const_int 1))] "! TARGET_SOFT_FLOAT" - "fcmp,dbl,= %%fr0,%%fr0" + "fcmp,dbl,!= %%fr0,%%fr0" [(set_attr "length" "4") (set_attr "type" "fpcc")])