diff options
author | Jan Hubicka <jh@suse.cz> | 2003-01-20 14:37:03 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2003-01-20 13:37:03 +0000 |
commit | 5794139ae98c38ce6008be69522de112cba97472 (patch) | |
tree | 56bf3f55fc076c280708e6e0acc4339e891aefe7 /gcc | |
parent | 0a18ddf91cf5cef4809497139b0567f82c8ba7c4 (diff) | |
download | gcc-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/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/config/i386/i386.md | 7 |
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]; |