aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@bitrange.com>2004-11-28 09:48:27 +0000
committerHans-Peter Nilsson <hp@gcc.gnu.org>2004-11-28 09:48:27 +0000
commit69ffa7aa5a5eaf6b8525bd86ff2479bd09448c51 (patch)
treea37af773a469ee92f5b34a1ea83236c1e0029852 /gcc
parent78a27531e02d317c06e0bb63f3858ee9117390ea (diff)
downloadgcc-69ffa7aa5a5eaf6b8525bd86ff2479bd09448c51.zip
gcc-69ffa7aa5a5eaf6b8525bd86ff2479bd09448c51.tar.gz
gcc-69ffa7aa5a5eaf6b8525bd86ff2479bd09448c51.tar.bz2
re PR target/18331 (mmix-knuth-mmixware testsuite failure: execute/ieee/fp-cmp-8.c gcc.dg/20040625-1.c)
PR target/18331 * config/mmix/mmix.md ("*movdicc_real_reversible"): Rename from "*movdicc_real". Only match reversible comparisons. ("*movdicc_real_nonreversible"): New pattern, split from "*movdicc_real". Match only nonreversible comparisons. Exclude reversed alternatives. ("*movdfcc_real_reversible", "*movdfcc_real_nonreversible"): Similar. From-SVN: r91416
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog11
-rw-r--r--gcc/config/mmix/mmix.md38
2 files changed, 45 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3984aaa..b9a65f6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,14 @@
+2004-11-28 Hans-Peter Nilsson <hp@bitrange.com>
+
+ PR target/18331
+ * config/mmix/mmix.md ("*movdicc_real_reversible"): Rename from
+ "*movdicc_real". Only match reversible comparisons.
+ ("*movdicc_real_nonreversible"): New pattern, split from
+ "*movdicc_real". Match only nonreversible comparisons. Exclude
+ reversed alternatives.
+ ("*movdfcc_real_reversible", "*movdfcc_real_nonreversible"):
+ Similar.
+
2004-11-27 Richard Henderson <rth@redhat.com>
* config/ia64/ia64.md: Move all define_predicate's ...
diff --git a/gcc/config/mmix/mmix.md b/gcc/config/mmix/mmix.md
index 389b243..827ed4b 100644
--- a/gcc/config/mmix/mmix.md
+++ b/gcc/config/mmix/mmix.md
@@ -769,7 +769,7 @@ DIVU %1,%1,%2\;GET %0,:rR\;NEGU %2,0,%0\;CSNN %0,$255,%2")
ZS%d2 %0,%3,%1
ZS%D2 %0,%3,%4")
-(define_insn "*movdicc_real"
+(define_insn "*movdicc_real_reversible"
[(set
(match_operand:DI 0 "register_operand" "=r ,r ,r ,r")
(if_then_else:DI
@@ -779,13 +779,28 @@ DIVU %1,%1,%2\;GET %0,:rR\;NEGU %2,0,%0\;CSNN %0,$255,%2")
(const_int 0)])
(match_operand:DI 1 "mmix_reg_or_8bit_operand" "rI,0 ,rI,GM")
(match_operand:DI 4 "mmix_reg_or_8bit_operand" "0 ,rI,GM,rI")))]
- ""
+ "REVERSIBLE_CC_MODE (GET_MODE (operands[3]))"
"@
CS%d2 %0,%3,%1
CS%D2 %0,%3,%4
ZS%d2 %0,%3,%1
ZS%D2 %0,%3,%4")
+(define_insn "*movdicc_real_nonreversible"
+ [(set
+ (match_operand:DI 0 "register_operand" "=r ,r")
+ (if_then_else:DI
+ (match_operator
+ 2 "mmix_comparison_operator"
+ [(match_operand 3 "mmix_reg_cc_operand" "r ,r")
+ (const_int 0)])
+ (match_operand:DI 1 "mmix_reg_or_8bit_operand" "rI,rI")
+ (match_operand:DI 4 "mmix_reg_or_0_operand" "0 ,GM")))]
+ "!REVERSIBLE_CC_MODE (GET_MODE (operands[3]))"
+ "@
+ CS%d2 %0,%3,%1
+ ZS%d2 %0,%3,%1")
+
(define_insn "*movdfcc_real_foldable"
[(set
(match_operand:DF 0 "register_operand" "=r ,r ,r ,r")
@@ -803,7 +818,7 @@ DIVU %1,%1,%2\;GET %0,:rR\;NEGU %2,0,%0\;CSNN %0,$255,%2")
ZS%d2 %0,%3,%1
ZS%D2 %0,%3,%4")
-(define_insn "*movdfcc_real"
+(define_insn "*movdfcc_real_reversible"
[(set
(match_operand:DF 0 "register_operand" "=r ,r ,r ,r")
(if_then_else:DF
@@ -813,13 +828,28 @@ DIVU %1,%1,%2\;GET %0,:rR\;NEGU %2,0,%0\;CSNN %0,$255,%2")
(const_int 0)])
(match_operand:DF 1 "mmix_reg_or_0_operand" "rGM,0 ,rGM,GM")
(match_operand:DF 4 "mmix_reg_or_0_operand" "0 ,rGM,GM ,rGM")))]
- ""
+ "REVERSIBLE_CC_MODE (GET_MODE (operands[3]))"
"@
CS%d2 %0,%3,%1
CS%D2 %0,%3,%4
ZS%d2 %0,%3,%1
ZS%D2 %0,%3,%4")
+(define_insn "*movdfcc_real_nonreversible"
+ [(set
+ (match_operand:DF 0 "register_operand" "=r ,r")
+ (if_then_else:DF
+ (match_operator
+ 2 "mmix_comparison_operator"
+ [(match_operand 3 "mmix_reg_cc_operand" "r ,r")
+ (const_int 0)])
+ (match_operand:DF 1 "mmix_reg_or_0_operand" "rGM,rGM")
+ (match_operand:DF 4 "mmix_reg_or_0_operand" "0 ,GM")))]
+ "!REVERSIBLE_CC_MODE (GET_MODE (operands[3]))"
+ "@
+ CS%d2 %0,%3,%1
+ ZS%d2 %0,%3,%1")
+
;; FIXME: scc patterns will probably help, I just skip them
;; right now. Revisit.