aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJohn David Anglin <dave.anglin@nrc-cnrc.gc.ca>2003-04-20 17:18:03 +0000
committerJohn David Anglin <danglin@gcc.gnu.org>2003-04-20 17:18:03 +0000
commit8c7d377fa2a94ea39f7eb38df8aeb776452f49f0 (patch)
tree8e1f0c3bde297f8da203b6c82596d2aecaa2eb83 /gcc
parent5e77a357679635fe15bd3c4e4c904c6f40f81a13 (diff)
downloadgcc-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/ChangeLog7
-rw-r--r--gcc/config/pa/pa.md24
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")])