1
0
mirror of https://github.com/cc65/cc65.git synced 2024-07-29 12:29:11 +00:00

Inline shifts in g_asl as is already the case in g_scale.

git-svn-id: svn://svn.cc65.org/cc65/trunk@3987 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
uz 2009-07-30 19:41:25 +00:00
parent 043acb1d98
commit 66391bfc25

View File

@ -3119,11 +3119,20 @@ void g_asl (unsigned flags, unsigned long val)
/* Done */ /* Done */
return; return;
} else if (val >= 1 && val <= 4) { } else if (val >= 1 && val <= 4) {
if (IS_Get (&CodeSizeFactor) >= (long) (val+1)*130) {
AddCodeLine ("stx tmp1");
while (val--) {
AddCodeLine ("asl a");
AddCodeLine ("rol tmp1");
}
AddCodeLine ("ldx tmp1");
} else {
if (flags & CF_UNSIGNED) { if (flags & CF_UNSIGNED) {
AddCodeLine ("jsr shlax%ld", val); AddCodeLine ("jsr shlax%ld", val);
} else { } else {
AddCodeLine ("jsr aslax%ld", val); AddCodeLine ("jsr aslax%ld", val);
} }
}
return; return;
} }
break; break;