From: johanknol Date: Wed, 14 Mar 2001 11:53:45 +0000 (+0000) Subject: Implemented the <<6 fix of Steve Drake X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=c797f99fa696d884316f1162a8d29e6b57b5f102;p=fw%2Fsdcc Implemented the <<6 fix of Steve Drake git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@682 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/src/ds390/gen.c b/src/ds390/gen.c index 59a96703..821b766f 100644 --- a/src/ds390/gen.c +++ b/src/ds390/gen.c @@ -6154,18 +6154,25 @@ AccAXLsh (char *x, int shCount) break; case 6: // AAAAAABB:CCCCCCDD - emitcode ("anl", "a,#0x%02x", SRMask[shCount]); // 000000BB:CCCCCCDD - emitcode ("mov", "c,acc.0"); // c = B - emitcode ("xch", "a,%s", x); // CCCCCCDD:000000BB - +#if 0 AccAXRrl1 (x); // BCCCCCCD:D000000B - AccAXRrl1 (x); // BBCCCCCC:DD000000 - +#else + emitcode("rrc","a"); + emitcode("xch","a,%s", x); + emitcode("rrc","a"); + emitcode("mov","c,acc.0"); //<< get correct bit + emitcode("xch","a,%s", x); + + emitcode("rrc","a"); + emitcode("xch","a,%s", x); + emitcode("rrc","a"); + emitcode("xch","a,%s", x); +#endif break; case 7: // a:x <<= 7 diff --git a/src/mcs51/gen.c b/src/mcs51/gen.c index 0b99a024..a305f416 100644 --- a/src/mcs51/gen.c +++ b/src/mcs51/gen.c @@ -5436,18 +5436,25 @@ AccAXLsh (char *x, int shCount) break; case 6: // AAAAAABB:CCCCCCDD - emitcode ("anl", "a,#0x%02x", SRMask[shCount]); // 000000BB:CCCCCCDD - emitcode ("mov", "c,acc.0"); // c = B - emitcode ("xch", "a,%s", x); // CCCCCCDD:000000BB - +#if 0 AccAXRrl1 (x); // BCCCCCCD:D000000B - AccAXRrl1 (x); // BBCCCCCC:DD000000 - +#else + emitcode("rrc","a"); + emitcode("xch","a,%s", x); + emitcode("rrc","a"); + emitcode("mov","c,acc.0"); //<< get correct bit + emitcode("xch","a,%s", x); + + emitcode("rrc","a"); + emitcode("xch","a,%s", x); + emitcode("rrc","a"); + emitcode("xch","a,%s", x); +#endif break; case 7: // a:x <<= 7