From b637c56aadc5b854ca28a8a111cf07324bc0e2ad Mon Sep 17 00:00:00 2001 From: notaz Date: Sat, 30 Jun 2007 22:24:39 +0000 Subject: [PATCH] some optimizations git-svn-id: file:///home/notaz/opt/svn/PicoDrive@178 be3aeb3a-fb24-0410-a615-afba39da0efa --- cpu/Cyclone/Cyclone.h | 2 +- cpu/Cyclone/Ea.cpp | 47 +++++++++----- cpu/Cyclone/Main.cpp | 8 ++- cpu/Cyclone/OpAny.cpp | 3 +- cpu/Cyclone/OpArith.cpp | 35 ++++++----- cpu/Cyclone/OpLogic.cpp | 94 ++++++++++++++++++---------- cpu/Cyclone/OpMove.cpp | 65 ++++++++++--------- cpu/Cyclone/app.h | 6 +- cpu/Cyclone/config.h | 2 +- cpu/Cyclone/tests/crash_cyclone.bin | Bin 0 -> 524 bytes cpu/Cyclone/tests/test_abcd.bin | Bin 0 -> 570 bytes cpu/Cyclone/tests/test_cmpm.bin | Bin 0 -> 618 bytes cpu/Cyclone/tests/test_div.bin | Bin 0 -> 604 bytes cpu/Cyclone/tests/test_misc.bin | Bin 0 -> 424960 bytes cpu/Cyclone/tests/test_negx.bin | Bin 0 -> 542 bytes cpu/Cyclone/tests/test_rol.bin | Bin 0 -> 578 bytes cpu/Cyclone/tests/test_shift.bin | Bin 0 -> 582 bytes 17 files changed, 160 insertions(+), 102 deletions(-) create mode 100755 cpu/Cyclone/tests/crash_cyclone.bin create mode 100755 cpu/Cyclone/tests/test_abcd.bin create mode 100755 cpu/Cyclone/tests/test_cmpm.bin create mode 100755 cpu/Cyclone/tests/test_div.bin create mode 100755 cpu/Cyclone/tests/test_misc.bin create mode 100755 cpu/Cyclone/tests/test_negx.bin create mode 100755 cpu/Cyclone/tests/test_rol.bin create mode 100755 cpu/Cyclone/tests/test_shift.bin diff --git a/cpu/Cyclone/Cyclone.h b/cpu/Cyclone/Cyclone.h index 67704fc..596cb99 100644 --- a/cpu/Cyclone/Cyclone.h +++ b/cpu/Cyclone/Cyclone.h @@ -24,7 +24,7 @@ struct Cyclone unsigned char irq; // [r7,#0x47] IRQ level unsigned int osp; // [r7,#0x48] Other Stack Pointer (USP/SSP) unsigned int vector; // [r7,#0x4c] IRQ vector (temporary) - unsigned int prev_pc;// [r7,#0x50] set to start address of currently executed opcode (if enabled in config.h) + unsigned int prev_pc;// [r7,#0x50] set to start address of currently executed opcode + 2 (if enabled in config.h) unsigned int unused; // [r7,#0x54] Unused int stopped; // [r7,#0x58] 1 == processor is in stopped state int cycles; // [r7,#0x5c] diff --git a/cpu/Cyclone/Ea.cpp b/cpu/Cyclone/Ea.cpp index 39ed8a2..22e5939 100644 --- a/cpu/Cyclone/Ea.cpp +++ b/cpu/Cyclone/Ea.cpp @@ -123,7 +123,7 @@ static int EaCalcReg(int r,int ea,int mask,int forceor,int shift,int noshift=0) // EaCalc - ARM Register 'a' = Effective Address // Trashes r0,r2 and r3 // size values 0, 1, 2 ~ byte, word, long -int EaCalc(int a,int mask,int ea,int size,int top) +int EaCalc(int a,int mask,int ea,int size,int top,int sign_extend) { char text[32]=""; int func=0; @@ -134,7 +134,7 @@ int EaCalc(int a,int mask,int ea,int size,int top) if (ea<0x10) { int noshift=0; - if (size>=2||(size==0&&top)) noshift=1; // Saves one opcode + if (size>=2||(size==0&&(top||!sign_extend))) noshift=1; // Saves one opcode ot(";@ EaCalc : Get register index into r%d:\n",a); @@ -180,8 +180,8 @@ int EaCalc(int a,int mask,int ea,int size,int top) if (ea<0x30) // ($nn,An) (di) { - EaCalcReg(2,8,mask,0,0); ot(" ldrsh r0,[r4],#2 ;@ Fetch offset\n"); pc_dirty=1; + EaCalcReg(2,8,mask,0,0); ot(" ldr r2,[r7,r2,lsl #2]\n"); ot(" add r%d,r0,r2 ;@ Add on offset\n",a); Cycles+=size<2 ? 8:12; // Extra cycles @@ -277,9 +277,10 @@ int EaCalc(int a,int mask,int ea,int size,int top) // 'a' and 'v' can be anything but 0 is generally best (for both) // If (ea<0x10) nothing is trashed, else r0-r3 is trashed // If 'top' is given, the ARM register v shifted to the top, e.g. 0xc000 -> 0xc0000000 -// Otherwise the ARM register v is sign extended, e.g. 0xc000 -> 0xffffc000 +// If top is 0 and sign_extend is not, then ARM register v is sign extended, +// e.g. 0xc000 -> 0xffffc000 (else it may or may not be sign extended) -int EaRead(int a,int v,int ea,int size,int mask,int top) +int EaRead(int a,int v,int ea,int size,int mask,int top,int sign_extend) { char text[32]=""; int shift=0; @@ -291,7 +292,7 @@ int EaRead(int a,int v,int ea,int size,int mask,int top) if (ea<0x10) { int lsl=0,low=0,i; - if (size>=2||(size==0&&top)) { + if (size>=2||(size==0&&(top||!sign_extend))) { if(mask) for (i=mask|0x8000; (i&1)==0; i>>=1) low++; // Find out how high up the EA mask is lsl=2-low; // Having a lsl #2 here saves one opcode @@ -316,18 +317,35 @@ int EaRead(int a,int v,int ea,int size,int mask,int top) if (top) asl=shift; - if (v!=a || asl) ot(" mov r%d,r%d,asl #%d\n",v,a,asl); + if (asl) ot(" mov r%d,r%d,asl #%d\n",v,a,asl); + else if (v!=a) ot(" mov r%d,r%d\n",v,a); ot("\n"); return 0; } if (ea>=0x3a && ea<=0x3b) MemHandler(2,size,a); // Fetch else MemHandler(0,size,a); // Read - if (v!=0 || shift) { - if (shift) ot(" mov r%d,r0,asl #%d\n",v,shift); - else ot(" mov r%d,r0\n",v); + if (sign_extend) + { + int d_reg=0; + if (shift) { + ot(" mov r%d,r%d,asl #%d\n",v,d_reg,shift); + d_reg=v; + } + if (!top && shift) { + ot(" mov r%d,r%d,asr #%d\n",v,d_reg,shift); + d_reg=v; + } + if (d_reg != v) + ot(" mov r%d,r%d\n",v,d_reg); + } + else + { + if (top && shift) + ot(" mov r%d,r0,asl #%d\n",v,shift); + else if (v!=0) + ot(" mov r%d,r0\n",v); } - if (top==0 && shift) ot(" mov r%d,r%d,asr #%d\n",v,v,shift); ot("\n"); return 0; } @@ -352,7 +370,7 @@ int EaCanRead(int ea,int size) // Write effective address (ARM Register 'a') with ARM register 'v' // Trashes r0-r3,r12,lr; 'a' can be 0 or 2+, 'v' can be 1 or higher // If a==0 and v==1 it's faster though. -int EaWrite(int a,int v,int ea,int size,int mask,int top) +int EaWrite(int a,int v,int ea,int size,int mask,int top,int sign_extend_ea) { char text[32]=""; int shift=0; @@ -366,7 +384,7 @@ int EaWrite(int a,int v,int ea,int size,int mask,int top) if (ea<0x10) { int lsl=0,low=0,i; - if (size>=2||(size==0&&top)) { + if (size>=2||(size==0&&(top||!sign_extend_ea))) { if(mask) for (i=mask|0x8000; (i&1)==0; i>>=1) low++; // Find out how high up the EA mask is lsl=2-low; // Having a lsl #x here saves one opcode @@ -386,7 +404,8 @@ int EaWrite(int a,int v,int ea,int size,int mask,int top) if (ea==0x3c) { ot("Error! Write EA=0x%x\n\n",ea); return 1; } - if (v!=1 || shift) ot(" mov r1,r%d,asr #%d\n",v,shift); + if (shift) ot(" mov r1,r%d,asr #%d\n",v,shift); + else if (v!=1) ot(" mov r1,r%d\n",v); MemHandler(1,size,a); // Call write handler diff --git a/cpu/Cyclone/Main.cpp b/cpu/Cyclone/Main.cpp index 80bbfd8..fce0c3d 100644 --- a/cpu/Cyclone/Main.cpp +++ b/cpu/Cyclone/Main.cpp @@ -10,6 +10,7 @@ char *Narm[4]={ "b", "h","",""}; // Normal ARM Extensions for operand sizes 0,1, char *Sarm[4]={"sb","sh","",""}; // Sign-extend ARM Extensions for operand sizes 0,1,2 int Cycles; // Current cycles for opcode int pc_dirty; // something changed PC during processing +static int arm_op_count; void ot(const char *format, ...) @@ -22,6 +23,9 @@ void ot(const char *format, ...) for(i=0, len=strlen(format); i < len && format[i] != '\n'; i++); if(i < len-1 && format[len-1] != '\n') printf("\nWARNING: possible improper newline placement:\n%s\n", format); + if (format[0] == ' ' && format[1] == ' ' && format[2] != ' ' && format[2] != '.') + arm_op_count++; + va_start(valist,format); if (AsmFile) vfprintf(AsmFile,format,valist); va_end(valist); @@ -441,7 +445,7 @@ int MemHandler(int type,int size,int addrreg) static void PrintOpcodes() { int op=0; - + printf("Creating Opcodes: ["); ot(";@ ---------------------------- Opcodes ---------------------------\n"); @@ -713,7 +717,9 @@ static int CycloneMake() ot("\n"); PrintFramework(); + arm_op_count = 0; PrintOpcodes(); + printf("~%i ARM instructions used for opcode handlers\n", arm_op_count); PrintJumpTable(); if (ms) ot(" END\n"); diff --git a/cpu/Cyclone/OpAny.cpp b/cpu/Cyclone/OpAny.cpp index c1f7110..3a40166 100644 --- a/cpu/Cyclone/OpAny.cpp +++ b/cpu/Cyclone/OpAny.cpp @@ -33,8 +33,7 @@ void OpStart(int op, int sea, int tea) #if (MEMHANDLERS_NEED_PREV_PC || MEMHANDLERS_NEED_CYCLES) if ((sea >= 0x10 && sea != 0x3c) || (tea >= 0x10 && tea != 0x3c)) { #if MEMHANDLERS_NEED_PREV_PC - ot(" sub r0,r4,#2\n"); - ot(" str r0,[r7,#0x50] ;@ Save prev PC\n"); + ot(" str r4,[r7,#0x50] ;@ Save prev PC + 2\n"); #endif #if MEMHANDLERS_NEED_CYCLES ot(" str r5,[r7,#0x5c] ;@ Save Cycles\n"); diff --git a/cpu/Cyclone/OpArith.cpp b/cpu/Cyclone/OpArith.cpp index c6f0bc8..9e956c0 100644 --- a/cpu/Cyclone/OpArith.cpp +++ b/cpu/Cyclone/OpArith.cpp @@ -8,6 +8,7 @@ int OpArith(int op) int type=0,size=0; int sea=0,tea=0; int use=0; + char *shiftstr=""; // Get source and target EA type=(op>>9)&7; if (type==4 || type>=7) return 1; @@ -26,17 +27,20 @@ int OpArith(int op) EaCalc(10,0x0000, sea,size,1); EaCalc(11,0x003f, tea,size,1); - EaRead(10, 10, sea,size,0,1); + EaRead(10, 10, sea,size,0,0,0); EaRead(11, 0, tea,size,0x003f,1); + if (size==0) shiftstr=",asl #24"; + else if (size==1) shiftstr=",asl #16"; + ot(";@ Do arithmetic:\n"); - if (type==0) ot(" orr r1,r0,r10\n"); - if (type==1) ot(" and r1,r0,r10\n"); - if (type==2) ot(" subs r1,r0,r10 ;@ Defines NZCV\n"); - if (type==3) ot(" adds r1,r0,r10 ;@ Defines NZCV\n"); - if (type==5) ot(" eor r1,r0,r10\n"); - if (type==6) ot(" cmp r0,r10 ;@ Defines NZCV\n"); + if (type==0) ot(" orr r1,r0,r10%s\n",shiftstr); + if (type==1) ot(" and r1,r0,r10%s\n",shiftstr); + if (type==2) ot(" subs r1,r0,r10%s ;@ Defines NZCV\n",shiftstr); + if (type==3) ot(" adds r1,r0,r10%s ;@ Defines NZCV\n",shiftstr); + if (type==5) ot(" eor r1,r0,r10%s\n",shiftstr); + if (type==6) ot(" cmp r0,r10%s ;@ Defines NZCV\n",shiftstr); if (type<2 || type==5) ot(" adds r1,r1,#0 ;@ Defines NZ, clears CV\n"); // 0,1,5 @@ -523,19 +527,20 @@ int OpAritha(int op) if(type==1) Cycles=6; - EaCalc ( 0,0x003f, sea,size); - EaRead ( 0, 10, sea,size,0x003f); + // must calculate reg EA first, because of situations like: suba.w (A0)+, A0 + EaCalc (10,0x0e00, dea,2,1); + EaRead (10, 11, dea,2,0x0e00); - EaCalc ( 0,0x0e00, dea,2,1); - EaRead ( 0, 1, dea,2,0x0e00); + EaCalc ( 0,0x003f, sea,size); + EaRead ( 0, 0, sea,size,0x003f); - if (type==0) ot(" sub r1,r1,r10\n"); - if (type==1) ot(" cmp r1,r10 ;@ Defines NZCV\n"); + if (type==0) ot(" sub r11,r11,r0\n"); + if (type==1) ot(" cmp r11,r0 ;@ Defines NZCV\n"); if (type==1) OpGetFlags(1,0); // Get Cmp flags - if (type==2) ot(" add r1,r1,r10\n"); + if (type==2) ot(" add r11,r11,r0\n"); ot("\n"); - if (type!=1) EaWrite( 0, 1, dea,2,0x0e00,1); + if (type!=1) EaWrite(10, 11, dea,2,0x0e00,1); OpEnd(sea); diff --git a/cpu/Cyclone/OpLogic.cpp b/cpu/Cyclone/OpLogic.cpp index 49ed29f..207ff45 100644 --- a/cpu/Cyclone/OpLogic.cpp +++ b/cpu/Cyclone/OpLogic.cpp @@ -36,15 +36,19 @@ int OpBtstReg(int op) if(size>=2) Cycles+=2; } - EaCalc (0,0x0e00,sea,0); - EaRead (0, 0,sea,0,0x0e00); + EaCalc (10,0x0e00,sea,0,0,0); + EaRead (10, 10,sea,0,0x0e00,0,0); + + EaCalc ( 0,0x003f,tea,size,0,0); + if (type>0) + ot(" mov r11,r0\n"); + EaRead ( 0, 0,tea,size,0x003f,0,0); + if (tea>=0x10) - ot(" and r10,r0,#7 ;@ mem - do mod 8\n"); - else ot(" and r10,r0,#31 ;@ reg - do mod 32\n"); + ot(" and r10,r10,#7 ;@ mem - do mod 8\n"); // size always 0 + else ot(" and r10,r10,#31 ;@ reg - do mod 32\n"); // size always 2 ot("\n"); - EaCalc(11,0x003f,tea,size); - EaRead(11, 0,tea,size,0x003f); ot(" mov r1,#1\n"); ot(" tst r0,r1,lsl r10 ;@ Do arithmetic\n"); ot(" bicne r9,r9,#0x40000000\n"); @@ -57,7 +61,7 @@ int OpBtstReg(int op) if (type==2) ot(" bic r1,r0,r1,lsl r10 ;@ Clear bit\n"); if (type==3) ot(" orr r1,r0,r1,lsl r10 ;@ Set bit\n"); ot("\n"); - EaWrite(11, 1,tea,size,0x003f); + EaWrite(11, 1,tea,size,0x003f,0,0); } OpEnd(tea); @@ -90,14 +94,14 @@ int OpBtstImm(int op) OpStart(op,sea,tea); - ot(" mov r10,#1\n"); ot("\n"); - EaCalc ( 0,0x0000,sea,0); - EaRead ( 0, 0,sea,0,0); + EaCalc ( 0,0x0000,sea,0,0,0); + EaRead ( 0, 0,sea,0,0,0,0); + ot(" mov r10,#1\n"); ot(" bic r9,r9,#0x40000000 ;@ Blank Z flag\n"); if (tea>=0x10) - ot(" and r0,r0,#7 ;@ mem - do mod 8\n"); - else ot(" and r0,r0,#0x1F ;@ reg - do mod 32\n"); + ot(" and r0,r0,#7 ;@ mem - do mod 8\n"); // size always 0 + else ot(" and r0,r0,#0x1F ;@ reg - do mod 32\n"); // size always 2 ot(" mov r10,r10,lsl r0 ;@ Make bit mask\n"); ot("\n"); @@ -108,8 +112,8 @@ int OpBtstImm(int op) if(size>=2) Cycles+=2; } - EaCalc (11,0x003f,tea,size); - EaRead (11, 0,tea,size,0x003f); + EaCalc (11,0x003f,tea,size,0,0); + EaRead (11, 0,tea,size,0x003f,0,0); ot(" tst r0,r10 ;@ Do arithmetic\n"); ot(" orreq r9,r9,#0x40000000 ;@ Get Z flag\n"); ot("\n"); @@ -120,7 +124,7 @@ int OpBtstImm(int op) if (type==2) ot(" bic r1,r0,r10 ;@ Clear bit\n"); if (type==3) ot(" orr r1,r0,r10 ;@ Set bit\n"); ot("\n"); - EaWrite(11, 1,tea,size,0x003f); + EaWrite(11, 1,tea,size,0x003f,0,0); } OpEnd(sea,tea); @@ -156,16 +160,16 @@ int OpNeg(int op) #endif } - EaCalc (10,0x003f,ea,size); + EaCalc (10,0x003f,ea,size,0,0); - if (type!=1) EaRead (10,0,ea,size,0x003f); // Don't need to read for 'clr' + if (type!=1) EaRead (10,0,ea,size,0x003f,0,0); // Don't need to read for 'clr' (or do we, for dummy read?) if (type==1) ot("\n"); if (type==0) { ot(";@ Negx:\n"); GetXBit(1); - if(size!=2) ot(" mov r0,r0,lsl #%i\n",size?16:24); + if(size!=2) ot(" mov r0,r0,asl #%i\n",size?16:24); ot(" rscs r1,r0,#0 ;@ do arithmetic\n"); ot(" orr r3,r9,#0xb0000000 ;@ for old Z\n"); OpGetFlags(1,1,0); @@ -188,7 +192,7 @@ int OpNeg(int op) if (type==2) { ot(";@ Neg:\n"); - if(size!=2) ot(" mov r0,r0,lsl #%i\n",size?16:24); + if(size!=2) ot(" mov r0,r0,asl #%i\n",size?16:24); ot(" rsbs r1,r0,#0\n"); OpGetFlags(1,1); if(size!=2) ot(" mov r1,r1,asr #%i\n",size?16:24); @@ -198,13 +202,18 @@ int OpNeg(int op) if (type==3) { ot(";@ Not:\n"); - ot(" mvn r1,r0\n"); + if(size!=2) { + ot(" mov r0,r0,asl #%i\n",size?16:24); + ot(" mvn r1,r0,asr #%i\n",size?16:24); + } + else + ot(" mvn r1,r0\n"); ot(" adds r1,r1,#0 ;@ Defines NZ, clears CV\n"); OpGetFlags(0,0); ot("\n"); } - EaWrite(10, 1,ea,size,0x003f); + EaWrite(10, 1,ea,size,0x003f,0,0); OpEnd(ea); @@ -284,8 +293,8 @@ int OpExt(int op) OpStart(op); Cycles=4; - EaCalc (10,0x0007,ea,size+1); - EaRead (10, 0,ea,size+1,0x0007); + EaCalc (10,0x0007,ea,size+1,0,0); + EaRead (10, 0,ea,size+1,0x0007,0,0); ot(" mov r0,r0,asl #%d\n",shift); ot(" adds r0,r0,#0 ;@ Defines NZ, clears CV\n"); @@ -293,7 +302,7 @@ int OpExt(int op) ot(" mov r1,r0,asr #%d\n",shift); ot("\n"); - EaWrite(10, 1,ea,size+1,0x0007); + EaWrite(10, 1,ea,size+1,0x0007,0,0); OpEnd(); return 0; @@ -325,22 +334,39 @@ int OpSet(int op) OpStart(op,ea); Cycles=8; if (ea<8) Cycles=4; - ot(" mov r1,#0\n"); + if (cc) + ot(" mov r1,#0\n"); - if (cc!=1) + switch (cc) { - ot(";@ Is the condition true?\n"); - if ((cc&~1)==2) ot(" eor r9,r9,#0x20000000 ;@ Invert carry for hi/ls\n"); - ot(" msr cpsr_flg,r9 ;@ ARM flags = 68000 flags\n"); - if ((cc&~1)==2) ot(" eor r9,r9,#0x20000000 ;@ Invert carry for hi/ls\n"); - ot(" mvn%s r1,r1\n",cond[cc]); + case 0: // T + ot(" mvn r1,#0\n"); + if (ea<8) Cycles+=2; + break; + case 1: // F + break; + case 2: // hi + ot(" ands r0,r9,#0x60000000 ;@ hi: !C && !Z\n"); + ot(" mvneq r1,r1\n"); + if (ea<8) ot(" subeq r5,r5,#2 ;@ Extra cycles\n"); + break; + case 3: // ls + ot(" tst r9,#0x60000000 ;@ ls: C || Z\n"); + ot(" mvnne r1,r1\n"); + if (ea<8) ot(" subne r5,r5,#2 ;@ Extra cycles\n"); + break; + default: + ot(";@ Is the condition true?\n"); + ot(" msr cpsr_flg,r9 ;@ ARM flags = 68000 flags\n"); + ot(" mvn%s r1,r1\n",cond[cc]); + if (ea<8) ot(" sub%s r5,r5,#2 ;@ Extra cycles\n",cond[cc]); + break; } - if (cc!=1 && ea<8) ot(" sub%s r5,r5,#2 ;@ Extra cycles\n",cond[cc]); ot("\n"); - EaCalc (0,0x003f, ea,size); - EaWrite(0, 1, ea,size,0x003f); + EaCalc (0,0x003f, ea,size,0,0); + EaWrite(0, 1, ea,size,0x003f,0,0); OpEnd(ea); return 0; diff --git a/cpu/Cyclone/OpMove.cpp b/cpu/Cyclone/OpMove.cpp index 95e3027..8dc5be6 100644 --- a/cpu/Cyclone/OpMove.cpp +++ b/cpu/Cyclone/OpMove.cpp @@ -130,19 +130,19 @@ int OpMove(int op) if (movea) size=2; // movea always expands to 32-bits - EaCalc (0,0x0e00,tea,size); + EaCalc (0,0x0e00,tea,size,0,0); #if SPLIT_MOVEL_PD if ((tea&0x38)==0x20 && size==2) { // -(An) ot(" mov r10,r0\n"); ot(" mov r11,r1\n"); ot(" add r0,r0,#2\n"); - EaWrite(0, 1,tea,1,0x0e00); + EaWrite(0, 1,tea,1,0x0e00,0,0); EaWrite(10, 11,tea,1,0x0e00,1); } else { - EaWrite(0, 1,tea,size,0x0e00); + EaWrite(0, 1,tea,size,0x0e00,0,0); } #else - EaWrite(0, 1,tea,size,0x0e00); + EaWrite(0, 1,tea,size,0x0e00,0,0); #endif #if CYCLONE_FOR_GENESIS && !MEMHANDLERS_CHANGE_CYCLES @@ -224,14 +224,14 @@ int OpMoveSr(int op) if (type==0 || type==1) { OpFlagsToReg(type==0); - EaCalc (0,0x003f,ea,size); - EaWrite(0, 1,ea,size,0x003f); + EaCalc (0,0x003f,ea,size,0,0); + EaWrite(0, 1,ea,size,0x003f,0,0); } if (type==2 || type==3) { - EaCalc(0,0x003f,ea,size); - EaRead(0, 0,ea,size,0x003f); + EaCalc(0,0x003f,ea,size,0,0); + EaRead(0, 0,ea,size,0x003f,0,0); OpRegToFlags(type==3); if (type==3) { SuperChange(op); @@ -264,8 +264,8 @@ int OpArithSr(int op) if (size) SuperCheck(op); - EaCalc(0,0x003f,ea,size); - EaRead(0, 10,ea,size,0x003f); + EaCalc(10,0x003f,ea,size); + EaRead(10, 10,ea,size,0x003f); OpFlagsToReg(size); if (type==0) ot(" orr r0,r1,r10\n"); @@ -341,57 +341,58 @@ int OpMovem(int op) OpStart(op,ea); - ot(" stmdb sp!,{r9} ;@ Push r9\n"); // can't just use r12 or lr here, because memhandlers touch them ot(" ldrh r11,[r4],#2 ;@ r11=register mask\n"); - ot("\n"); - ot(";@ Get the address into r9:\n"); - EaCalc(9,0x003f,cea,size); - ot(";@ r10=Register Index*4:\n"); - if (decr) ot(" mov r10,#0x3c ;@ order reversed for -(An)\n"); - else ot(" mov r10,#0\n"); + if (decr) ot(" mov r10,#0x40 ;@ order reversed for -(An)\n"); + else ot(" mov r10,#-4\n"); ot("\n"); - ot("MoreReg%.4x%s\n",op, ms?"":":"); + ot(";@ Get the address into r6:\n"); + EaCalc(6,0x003f,cea,size); - ot(" tst r11,#1\n"); - ot(" beq SkipReg%.4x\n",op); ot("\n"); + ot(" tst r11,r11\n"); // sanity check + ot(" beq NoRegs%.4x\n",op); - if (decr) ot(" sub r9,r9,#%d ;@ Pre-decrement address\n",1<@e0P{EdT%e6+$2YZ!K)D literal 0 HcmV?d00001 diff --git a/cpu/Cyclone/tests/test_cmpm.bin b/cpu/Cyclone/tests/test_cmpm.bin new file mode 100755 index 0000000000000000000000000000000000000000..e76185787596b4933339a51030d87212fbf10a78 GIT binary patch literal 618 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 W@^An7``ZA2kJ~dqfV=@ppZy=I%hA^W literal 0 HcmV?d00001 diff --git a/cpu/Cyclone/tests/test_negx.bin b/cpu/Cyclone/tests/test_negx.bin new file mode 100755 index 0000000000000000000000000000000000000000..1f6e6cf696d2ce5adc111b6feffc80d209f7542b GIT binary patch literal 542 zcmZQz00AZ-X1NE%6M%RX5Fdf^L1I+EtR4&ua6Adho&uzUfab?AFo;_Ku?!H005Q-l ztYJW01yu*s%YF{QhMNO5lQQ=OySh6nxV!qf273l80D*?HCRoVO($YlFE7ZrOG`Ao% zMZu|3AtcxZq<{bj_VD!c^mA8m^AB=%RWKr;T0z0xSHag?*U;F|R6*Ckpi|KcO$R7; z807!|XZR1K|Ns9V;p=hcK{uli(VN|nWU}#`)XmDtBU~+K& J|KG0=0s)GBWj+7^ literal 0 HcmV?d00001 diff --git a/cpu/Cyclone/tests/test_rol.bin b/cpu/Cyclone/tests/test_rol.bin new file mode 100755 index 0000000000000000000000000000000000000000..0cb0a412cd64c087b84bcb2d16456525618108cb GIT binary patch literal 578 zcmZQz00AZ@1_qXUKs*76R{{AzF)$w}hRlYEkxH|AFfhRJBq)0dkPZUc6T`qDZUMwH zKpX34rV0>iZ ra2(3!e_Y{k49aGBRN-*6fLX}~Xn*759S%ndn2Q)5@A&`UuMh$OHxz9b literal 0 HcmV?d00001 diff --git a/cpu/Cyclone/tests/test_shift.bin b/cpu/Cyclone/tests/test_shift.bin new file mode 100755 index 0000000000000000000000000000000000000000..c364f218c817a76856e3d9afb111e5cf041558fb GIT binary patch literal 582 zcmZQz00AZ@1_qXUKs*76R{{AzF)$w}hRlYEkxH|AFfhRJBq)0dkPZUc6T`qDZUMwH zKpX34rV0@(D va2(2JaQmbF|M3ckV^BW-;{=DJ3N}C&G!!ub)g38dE|Pz|;{SiYLI?x^3es-$ literal 0 HcmV?d00001 -- 2.39.2