This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH, AVR]PING^2 Fix PR target/41885 AVR Rotate patterns
- From: "Anatoly Sokolov" <aesok at post dot ru>
- To: "Andrew Hutchinson" <andrewhutchinson at cox dot net>, <gcc-patches at gcc dot gnu dot org>
- Cc: "Weddington, Eric" <Eric dot Weddington at atmel dot com>
- Date: Wed, 6 Jan 2010 22:23:06 +0300
- Subject: Re: [PATCH, AVR]PING^2 Fix PR target/41885 AVR Rotate patterns
- References: <4B3F4DBC.4040900@cox.net>
Hi Andy.
@@ -4232,6 +4232,142 @@
return "";
}
+/* Create RTL split patterns for byte sized rotate expressions. This
+ produces a series of move instructions and considers overlap situations.
+ /* Work out if byte or word move is needed. Odd byte rotates need
QImode.
+ Word move if no scratch is needed, otherwise use size of scratch.
*/
Two spaces between sentences.
+ struct {
+ rtx src,dst;
+ int links;
+ } move[size+8];
Change to:
+ struct {
+ rtx src, dst;
+ int links;
+ } move[size + 8];
+ int blocked = -1;
+ int moves = 0;
+ /* Go through move list and perform non-conflicting moves. As each
+ non-overlapping move is made, it may remove other conflicts
+ so the process is repeated until no conflicts remain. */
Two spaces between sentences.
2010-1-2 Andy Hutchinson <hutchinsonandy@gcc.gnu.org>
PR target/41885
* avr.md (rotlqi3): Add CONST_INT_P check.
(rotlhi3): Delete.
(rotlhi3_8): Delete.
(rotlsi3): Delete.
(rotlsi3_8): Delete.
(rotlsi3_16): Delete.
(rotlsi3_24): Delete.
(rotl<mode>3): New.
(*rotw<mode>3): New.
(*rotb<mode>3): New.
*avr.c (avr_rotate_bytes): New function.
*avr-proto.h (avr_rotate_bytes): New function.
Ok.
Aanatoly.