added 261.a,b (16 bit rotate) by Stas Sergeev <stsp AT users.sourceforge.net> with...
authorfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 4 Dec 2004 11:15:06 +0000 (11:15 +0000)
committerfrief <frief@4a8a32a2-be11-0410-ad9d-d568d2c75423>
Sat, 4 Dec 2004 11:15:06 +0000 (11:15 +0000)
git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@3601 4a8a32a2-be11-0410-ad9d-d568d2c75423

src/mcs51/peeph.def

index 3af2821a7e6194da7f1cdedbc29654d43ce2219b..ad563da2204eb2e2957b03564f998035507470cf 100644 (file)
@@ -4148,3 +4148,48 @@ replace {
        sjmp    %20
 %3:
 } if labelJTInRange
+
+// applies to: a = (a << 1) | (a >> 15);
+replace {
+       mov     a,%1
+       add     a,%1
+       mov     %1,a
+       mov     a,%2
+       rlc     a
+       mov     %2,a
+       mov     a,%1
+       mov     acc.0,c
+       mov     %1,a
+} by {
+       ;       Peephole 261.a  optimized left rol
+       mov     a,%1
+       rlc     a
+       xch     a,%2
+       rlc     a
+       xch     a,%2
+       mov     acc.0,c
+       mov     %1,a
+}
+
+// applies to: a = (a << 15) | (a >> 1);
+replace {
+       clr     c
+       mov     a,%1
+       rrc     a
+       mov     %1,a
+       mov     a,%2
+       rrc     a
+       mov     %2,a
+       mov     a,%1
+       mov     acc.7,c
+       mov     %1,a
+} by {
+       ;       Peephole 261.b  optimized right rol
+       mov     a,%1
+       rrc     a
+       xch     a,%2
+       rrc     a
+       xch     a,%2
+       mov     acc.7,c
+       mov     %1,a
+}