Merge pull request #2390 from colinleroy/implement-shifts-by-7

Implement aslax7/shlax7/asrax7/shrax7
This commit is contained in:
Bob Andrews
2024-02-02 20:17:48 +01:00
committed by GitHub
9 changed files with 253 additions and 0 deletions

View File

@@ -3260,6 +3260,14 @@ void g_asr (unsigned flags, unsigned long val)
}
val -= 8;
}
if (val == 7) {
if (flags & CF_UNSIGNED) {
AddCodeLine ("jsr shrax7");
} else {
AddCodeLine ("jsr asrax7");
}
val = 0;
}
if (val >= 4) {
if (flags & CF_UNSIGNED) {
AddCodeLine ("jsr shrax4");
@@ -3402,6 +3410,14 @@ void g_asl (unsigned flags, unsigned long val)
AddCodeLine ("lda #$00");
val -= 8;
}
if (val == 7) {
if (flags & CF_UNSIGNED) {
AddCodeLine ("jsr shlax7");
} else {
AddCodeLine ("jsr aslax7");
}
val = 0;
}
if (val >= 4) {
if (flags & CF_UNSIGNED) {
AddCodeLine ("jsr shlax4");

View File

@@ -99,6 +99,7 @@ static const FuncInfo FuncInfoTable[] = {
{ "aslax2", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "aslax3", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "aslax4", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "aslax7", REG_AX, PSTATE_ALL | REG_AXY },
{ "aslaxy", REG_AXY, PSTATE_ALL | REG_AXY | REG_TMP1 },
{ "asleax1", REG_EAX, PSTATE_ALL | REG_EAX | REG_TMP1 },
{ "asleax2", REG_EAX, PSTATE_ALL | REG_EAX | REG_TMP1 },
@@ -108,6 +109,7 @@ static const FuncInfo FuncInfoTable[] = {
{ "asrax2", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "asrax3", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "asrax4", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "asrax7", REG_AX, PSTATE_ALL | REG_AX },
{ "asraxy", REG_AXY, PSTATE_ALL | REG_AXY | REG_TMP1 },
{ "asreax1", REG_EAX, PSTATE_ALL | REG_EAX | REG_TMP1 },
{ "asreax2", REG_EAX, PSTATE_ALL | REG_EAX | REG_TMP1 },
@@ -245,6 +247,7 @@ static const FuncInfo FuncInfoTable[] = {
{ "shlax2", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "shlax3", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "shlax4", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "shlax7", REG_AX, PSTATE_ALL | REG_AXY },
{ "shlaxy", REG_AXY, PSTATE_ALL | REG_AXY | REG_TMP1 },
{ "shleax1", REG_EAX, PSTATE_ALL | REG_EAX | REG_TMP1 },
{ "shleax2", REG_EAX, PSTATE_ALL | REG_EAX | REG_TMP1 },
@@ -254,6 +257,7 @@ static const FuncInfo FuncInfoTable[] = {
{ "shrax2", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "shrax3", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "shrax4", REG_AX, PSTATE_ALL | REG_AX | REG_TMP1 },
{ "shrax7", REG_AX, PSTATE_ALL | REG_AX },
{ "shraxy", REG_AXY, PSTATE_ALL | REG_AXY | REG_TMP1 },
{ "shreax1", REG_EAX, PSTATE_ALL | REG_EAX | REG_TMP1 },
{ "shreax2", REG_EAX, PSTATE_ALL | REG_EAX | REG_TMP1 },