aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2003-01-20 14:37:03 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2003-01-20 13:37:03 +0000
commit5794139ae98c38ce6008be69522de112cba97472 (patch)
tree56bf3f55fc076c280708e6e0acc4339e891aefe7 /gcc
parent0a18ddf91cf5cef4809497139b0567f82c8ba7c4 (diff)
downloadgcc-5794139ae98c38ce6008be69522de112cba97472.zip
gcc-5794139ae98c38ce6008be69522de112cba97472.tar.gz
gcc-5794139ae98c38ce6008be69522de112cba97472.tar.bz2
* i386.md (SSE cmov splitter): Handle memory operand in operand 5.
From-SVN: r61506
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/config/i386/i386.md7
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 095161f..ff97b31 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+Mon Jan 20 14:36:23 CET 2003 Jan Hubicka <jh@suse.cz>
+
+ * i386.md (SSE cmov splitter): Handle memory operand in operand 5.
+
2003-01-20 Andreas Schwab <schwab@suse.de>
* system.h: Don't declare strsignal if the decl test hasn't been
diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md
index 936bade..688cf6b 100644
--- a/gcc/config/i386/i386.md
+++ b/gcc/config/i386/i386.md
@@ -17229,7 +17229,7 @@
(define_split
[(set (match_operand 0 "register_operand" "")
(if_then_else (match_operator 1 "comparison_operator"
- [(match_operand 4 "register_operand" "")
+ [(match_operand 4 "nonimmediate_operand" "")
(match_operand 5 "nonimmediate_operand" "")])
(match_operand 2 "nonmemory_operand" "")
(match_operand 3 "nonmemory_operand" "")))]
@@ -17255,13 +17255,16 @@
}
}
PUT_MODE (operands[1], GET_MODE (operands[0]));
- if (!sse_comparison_operator (operands[1], VOIDmode))
+ if (!sse_comparison_operator (operands[1], VOIDmode)
+ || !rtx_equal_p (operands[0], operands[4]))
{
rtx tmp = operands[5];
operands[5] = operands[4];
operands[4] = tmp;
PUT_CODE (operands[1], swap_condition (GET_CODE (operands[1])));
}
+ if (!rtx_equal_p (operands[0], operands[4]))
+ abort ();
if (const0_operand (operands[2], GET_MODE (operands[0])))
{
operands[7] = operands[3];