diff options
| author | danglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-04-20 17:18:03 +0000 |
|---|---|---|
| committer | danglin <danglin@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-04-20 17:18:03 +0000 |
| commit | 819b6b3a39198c51b8e3199d11a097aaa322d1e6 (patch) | |
| tree | 8e1f0c3bde297f8da203b6c82596d2aecaa2eb83 /gcc | |
| parent | b30903faa888e2604db087926612c5a7cec6b695 (diff) | |
| download | ppe42-gcc-819b6b3a39198c51b8e3199d11a097aaa322d1e6.tar.gz ppe42-gcc-819b6b3a39198c51b8e3199d11a097aaa322d1e6.zip | |
PR/8705
* pa.md (movccfp): New expander.
(setccfp0, setccfp1): Rename to movccfp0 and movccfp1, respectively.
Reverse fcmp conditions.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@65858 138bc75d-0d04-0410-961f-82ee72b054a4
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 9ecfed750aa..f2167841c80 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 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")]) |

