diff options
author | John David Anglin <dave.anglin@nrc-cnrc.gc.ca> | 2003-04-20 17:18:03 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2003-04-20 17:18:03 +0000 |
commit | 8c7d377fa2a94ea39f7eb38df8aeb776452f49f0 (patch) | |
tree | 8e1f0c3bde297f8da203b6c82596d2aecaa2eb83 /gcc | |
parent | 5e77a357679635fe15bd3c4e4c904c6f40f81a13 (diff) | |
download | gcc-8c7d377fa2a94ea39f7eb38df8aeb776452f49f0.zip gcc-8c7d377fa2a94ea39f7eb38df8aeb776452f49f0.tar.gz gcc-8c7d377fa2a94ea39f7eb38df8aeb776452f49f0.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/pa/pa.md | 24 |
2 files changed, 26 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9ecfed7..f216784 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2003-04-20 John David Anglin <dave.anglin@nrc-cnrc.gc.ca> + + PR/8705 + * pa.md (movccfp): New expander. + (setccfp0, setccfp1): Rename to movccfp0 and movccfp1, respectively. + Reverse fcmp conditions. + 2003-04-20 Marek Michalkiewicz <marekm@amelek.gda.pl> * 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 0f50c8f..523b971 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")]) |