dingusppc/cpu/ppc/test/ppcdisasmtest.csv
2020-02-13 03:16:47 +01:00

9.0 KiB

1# Test data for PowerPC disassembler supplied as comma-separated values
2# Data format:
3# instruction address (hex), instruction code (hex), expected disassembly: opcode, [operands...]
4# unconditional branches
50xFFF03008,0x48000355,bl,0xFFF0335C
60xFFF03000,0x4280035C,b,0xFFF0335C
7# bcctr variants with simplified mnemonics
80xFFF03000,0x4E800420,bctr
90xFFF03000,0x4E800421,bctrl
100xFFF03000,0x4C820420,bnectr
110xFFF03000,0x4C820421,bnectrl
120xFFF03000,0x4C960420,bnectr,cr5
130xFFF03000,0x4C920421,bnectrl,cr4
140xFFF03000,0x4D980420,bltctr,cr6
150xFFF03000,0x4C9D0420,blectr,cr7
160xFFF03000,0x4D820420,beqctr
170xFFF03000,0x4D960420,beqctr,cr5
180xFFF03000,0x4CA80420,bgectr+,cr2
190xFFF03000,0x4C980421,bgectrl,cr6
200xFFF03000,0x4D810420,bgtctr
210xFFF03000,0x4D850420,bgtctr,cr1
220xFFF03000,0x4D8B0421,bsoctrl,cr2
230xFFF03000,0x4C830420,bnsctr
240xFFF03000,0x4C930420,bnsctr,cr4
25# bclr variants with simplified mnemonics
260xFFF03000,0x4E800020,blr
270xFFF03000,0x4E800021,blrl
280xFFF03000,0x4D800020,bltlr
290xFFF03000,0x4D840020,bltlr,cr1
300xFFF03000,0x4C810021,blelrl
310xFFF03000,0x4C8D0020,blelr,cr3
320xFFF03000,0x4DA20020,beqlr+
330xFFF03000,0x4DBE0021,beqlrl+,cr7
340xFFF03000,0x4CA80020,bgelr+,cr2
350xFFF03000,0x4DB90020,bgtlr+,cr6
360xFFF03000,0x4C8A0021,bnelrl,cr2
370xFFF03000,0x4D930020,bsolr,cr4
380xFFF03000,0x4C8F0021,bnslrl,cr3
390xFFF03000,0x4E000020,bdnzlr
400xFFF03000,0x4E200020,bdnzlr+
410xFFF03000,0x4E400020,bdzlr
420xFFF03000,0x4E400021,bdzlrl
430xFFF03000,0x4E600020,bdzlr+
440xFFF03000,0x4C000020,bdnzflr,lt
450xFFF03000,0x4C040020,bdnzflr,4*cr1+lt
460xFFF03000,0x4C5D0021,bdzflrl,4*cr7+gt
470xFFF03000,0x4D020020,bdnztlr,eq
480xFFF03000,0x4D530021,bdztlrl,4*cr4+so
49# conditional branches with simplified mnemonics, primary opcode 0x10
500xFFF0011C,0x409E2EE4,bne,cr7,0xFFF03000
510xFFF00100,0x40A60098,bne+,cr1,0xFFF00198
520xFFF00100,0x41820018,beq,0xFFF00118
530xFFF03004,0x41200054,bdnzt+,lt,0xFFF03058
540xFFF03004,0x40000054,bdnzf,lt,0xFFF03058
550xFFF03000,0x4106FFF4,bdnzt,4*cr1+eq,0xFFF02FF4
560xFFF03000,0x4001558F,bdnzfla,gt,0x0000558C
57# indexed load/store instructions, primary opcode 0x1F
580xFFF00100,0x7D49F02E,lwzx,r10,r9,r30
590xFFF00100,0x7FAB806E,lwzux,r29,r11,r16
600xFFF00100,0x7C0820AE,lbzx,r0,r8,r4
610xFFF00100,0x7F47E8EE,lbzux,r26,r7,r29
620xFFF00100,0x7C01612E,stwx,r0,r1,r12
630xFFF00100,0x7FC3996E,stwux,r30,r3,r19
640xFFF00100,0x7D2C09AE,stbx,r9,r12,r1
650xFFF00100,0x7C8531EE,stbux,r4,r5,r6
660xFFF00100,0x7C94DA2E,lhzx,r4,r20,r27
670xFFF00100,0x7C833A6E,lhzux,r4,r3,r7
680xFFF00100,0x7D8F62AE,lhax,r12,r15,r12
690xFFF00100,0x7C98DAEE,lhaux,r4,r24,r27
700xFFF00100,0x7C0C0B2E,sthx,r0,r12,r1
710xFFF00100,0x7C032B6E,sthux,r0,r3,r5
720xFFF00100,0x7C43242E,lfsx,fp2,r3,r4
730xFFF00100,0x7C43246E,lfsux,fp2,r3,r4
740xFFF00100,0x7D491CAE,lfdx,fp10,r9,r3
750xFFF00100,0x7C4324EE,lfdux,fp2,r3,r4
760xFFF00100,0x7C43252E,stfsx,fp2,r3,r4
770xFFF00100,0x7C43256E,stfsux,fp2,r3,r4
780xFFF00100,0x7C4325AE,stfdx,fp2,r3,r4
790xFFF00100,0x7C4325EE,stfdux,fp2,r3,r4
80# arithmetic instructions with immediate operand
810xFFF00100,0x1F00A81A,mulli,r24,r0,-0x57E6
820xFFF00100,0x1D8A4CCC,mulli,r12,r10,0x4CCC
830xFFF00100,0x207CFEE0,subfic,r3,r28,-0x120
840xFFF00100,0x20894E75,subfic,r4,r9,0x4E75
850xFFF00100,0x38BE0000,addi,r5,r30,0x0
860xFFF00100,0x3A2EFFF0,addi,r17,r14,-0x10
870xFFF00100,0x307F005E,addic,r3,r31,0x5E
880xFFF00100,0x30C4FFFF,addic,r6,r4,-0x1
890xFFF00100,0x34803012,addic.,r4,r0,0x3012
900xFFF00100,0x3E1F4A47,addis,r16,r31,0x4A47
910xFFF00100,0x3F3CFFF6,addis,r25,r28,-0xA
92# subtracts and friends, primary opcode 0x1F
930xFFF00100,0x7C03E810,subfc,r0,r3,r29
940xFFF00100,0x7CE03011,subfc.,r7,r0,r6
950xFFF00100,0x7CC47C10,subfco,r6,r4,r15
960xFFF00100,0x7CC46C11,subfco.,r6,r4,r13
970xFFF00100,0x7D800850,subf,r12,r0,r1
980xFFF00100,0x7C966851,subf.,r4,r22,r13
990xFFF00100,0x7C7B8C50,subfo,r3,r27,r17
1000xFFF00100,0x7D283C51,subfo.,r9,r8,r7
1010xFFF00100,0x7CE400D0,neg,r7,r4
1020xFFF00100,0x7CC900D1,neg.,r6,r9
1030xFFF00100,0x7C6B04D0,nego,r3,r11
1040xFFF00100,0x7FC004D1,nego.,r30,r0
1050xFFF00100,0x7D266110,subfe,r9,r6,r12
1060xFFF00100,0x7C693111,subfe.,r3,r9,r6
1070xFFF00100,0x7C642D10,subfeo,r3,r4,r5
1080xFFF00100,0x7C843511,subfeo.,r4,r4,r6
1090xFFF00100,0x7D6B0190,subfze,r11,r11
1100xFFF00100,0x7C430191,subfze.,r2,r3
1110xFFF00100,0x7C640590,subfzeo,r3,r4
1120xFFF00100,0x7C850591,subfzeo.,r4,r5
1130xFFF00100,0x7C4301D0,subfme,r2,r3
1140xFFF00100,0x7C4301D1,subfme.,r2,r3
1150xFFF00100,0x7D2A1A10,doz,r9,r10,r3
1160xFFF00100,0x7C642A11,doz.,r3,r4,r5
1170xFFF00100,0x7C851E10,dozo,r4,r5,r3
1180xFFF00100,0x7CA41E11,dozo.,r5,r4,r3
1190xFFF00100,0x7C1E02D0,abs,r0,r30
1200xFFF00100,0x7C3E02D1,abs.,r1,r30
1210xFFF00100,0x7FC306D0,abso,r30,r3
1220xFFF00100,0x7FC706D1,abso.,r30,r7
1230xFFF00100,0x7CE703D0,nabs,r7,r7
1240xFFF00100,0x7D0703D1,nabs.,r8,r7
1250xFFF00100,0x7D0907D0,nabso,r8,r9
1260xFFF00100,0x7D0A07D1,nabso.,r8,r10
127# additions, primary opcode 0x1F
1280xFFF00100,0x7C830014,addc,r4,r3,r0
1290xFFF00100,0x7FB8F015,addc.,r29,r24,r30
1300xFFF00100,0x7CDB0414,addco,r6,r27,r0
1310xFFF00100,0x7C880415,addco.,r4,r8,r0
1320xFFF00100,0x7D6BC914,adde,r11,r11,r25
1330xFFF00100,0x7D296115,adde.,r9,r9,r12
1340xFFF00100,0x7C842514,addeo,r4,r4,r4
1350xFFF00100,0x7C843515,addeo.,r4,r4,r6
1360xFFF00100,0x7CE80194,addze,r7,r8
1370xFFF00100,0x7C800195,addze.,r4,r0
138# FIXME addzeo
139# FIXME addzeo.
140# FIXME addme
141# FIXME addme.
142# FIXME addmeo
143# FIXME addmeo.
1440xFFF00100,0x7F03EA14,add,r24,r3,r29
1450xFFF00100,0x7ED6E215,add.,r22,r22,r28
1460xFFF00100,0x7D040614,addo,r8,r4,r0
1470xFFF00100,0x7DE40615,addo.,r15,r4,r0
148# integer multiplications & divisions, primary opcode 0x1F
1490xFFF00100,0x7C8C5016,mulhwu,r4,r12,r10
1500xFFF00100,0x7CA72017,mulhwu.,r5,r7,r4
1510xFFF00100,0x7CA72096,mulhw,r5,r7,r4
1520xFFF00100,0x7CA72097,mulhw.,r5,r7,r4
1530xFFF00100,0x7C9000D6,mul,r4,r16,r0
1540xFFF00100,0x7CA428D7,mul.,r5,r4,r5
155# FIXME mulo
156# FIXME mulo.
1570xFFF00100,0x7D0039D6,mullw,r8,r0,r7
1580xFFF00100,0x7C1DF1D7,mullw.,r0,r29,r30
1590xFFF00100,0x7CE725D6,mullwo,r7,r7,r4
1600xFFF00100,0x7CE725D7,mullwo.,r7,r7,r4
1610xFFF00100,0x7FEB2296,div,r31,r11,r4
1620xFFF00100,0x7C064297,div.,r0,r6,r8
163# FIXME divo
164# FIXME divo.
1650xFFF00100,0x7CA03AD6,divs,r5,r0,r7
1660xFFF00100,0x7C642AD7,divs.,r3,r4,r5
167# FIXME divso
168# FIXME divso.
1690xFFF00100,0x7F7C1B96,divwu,r27,r28,r3
1700xFFF00100,0x7C7B1B97,divwu.,r3,r27,r3
1710xFFF00100,0x7CE62796,divwuo,r7,r6,r4
1720xFFF00100,0x7CE62797,divwuo.,r7,r6,r4
1730xFFF00100,0x7C042BD6,divw,r0,r4,r5
1740xFFF00100,0x7C042BD7,divw.,r0,r4,r5
1750xFFF00100,0x7CA627D6,divwo,r5,r6,r4
1760xFFF00100,0x7CA627D7,divwo.,r5,r6,r4
177# move to condition register, primary opcode 0x1F
1780xFFF00100,0x7D818120,mtcrf,0x18,r12
1790xFFF00100,0x7D838120,mtcrf,0x38,r12
1800xFFF00100,0x7D080120,mtcrf,0x80,r8
1810xFFF00100,0x7E007120,mtcrf,0x07,r16
182# logical instructions, primary opcode 0x1F
1830xFFF00100,0x7FC32838,and,r3,r30,r5
1840xFFF00100,0x7C672039,and.,r7,r3,r4
1850xFFF00100,0x7D281878,andc,r8,r9,r3
1860xFFF00100,0x7DCE0079,andc.,r14,r14,r0
1870xFFF00100,0x7C8328F8,nor,r3,r4,r5
1880xFFF00100,0x7D4948F9,nor.,r9,r10,r9
1890xFFF00100,0x7ED53A38,eqv,r21,r22,r7
1900xFFF00100,0x7C622239,eqv.,r2,r3,r4
1910xFFF00100,0x7D645278,xor,r4,r11,r10
1920xFFF00100,0x7C600279,xor.,r0,r3,r0
1930xFFF00100,0x7C841B38,orc,r4,r4,r3
1940xFFF00100,0x7C841B39,orc.,r4,r4,r3
1950xFFF00100,0x7DE42378,or,r4,r15,r4
1960xFFF00100,0x7C632379,or.,r3,r3,r4
1970xFFF00100,0x7C6023B8,nand,r0,r3,r4
1980xFFF00100,0x7F8B63B9,nand.,r11,r28,r12
199# trap instructions
2000xFFF00100,0x7F800008,tw,28,r0,r0
201# integer load and stores
2020xFFF00100,0x80BF0808,lwz,r5,0x808(r31)
2030xFFF00100,0x80A2FFB8,lwz,r5,-0x48(r2)
2040xFFF00100,0x80002F3C,lwz,r0,0x2F3C
2050xFFF00100,0x8506003C,lwzu,r8,0x3C(r6)
2060xFFF00100,0x8403FFF8,lwzu,r0,-0x8(r3)
2070xFFF00100,0x88FD00FA,lbz,r7,0xFA(r29)
2080xFFF00100,0x889EFFF4,lbz,r4,-0xC(r30)
2090xFFF00100,0x8D480001,lbzu,r10,0x1(r8)
2100xFFF00100,0x8FC3FFFF,lbzu,r30,-0x1(r3)
2110xFFF00100,0x90600AFC,stw,r3,0xAFC
2120xFFF00100,0x9000F620,stw,r0,-0x9E0
2130xFFF00100,0x9146696E,stw,r10,0x696E(r6)
2140xFFF00100,0x9317FFF0,stw,r24,-0x10(r23)
2150xFFF00100,0x94050020,stwu,r0,0x20(r5)
2160xFFF00100,0x9421FFA0,stwu,r1,-0x60(r1)
2170xFFF00100,0x981F00FA,stb,r0,0xFA(r31)
2180xFFF00100,0x98829882,stb,r4,-0x677E(r2)
2190xFFF00100,0x9EFC000A,stbu,r23,0xA(r28)
2200xFFF00100,0x9FAEFFFC,stbu,r29,-0x4(r14)
2210xFFF00100,0xA22E6010,lhz,r17,0x6010(r14)
2220xFFF00100,0xA0C6FFF8,lhz,r6,-0x8(r6)
2230xFFF00100,0xA43C6010,lhzu,r1,0x6010(r28)
2240xFFF00100,0xA7BFFFFE,lhzu,r29,-0x2(r31)
2250xFFF00100,0xA820265F,lha,r1,0x265F
2260xFFF00100,0xA8B5201F,lha,r5,0x201F(r21)
2270xFFF00100,0xAAFEFE82,lha,r23,-0x17E(r30)
2280xFFF00100,0xAC08003C,lhau,r0,0x3C(r8)
2290xFFF00100,0xAC90FFFE,lhau,r4,-0x2(r16)
2300xFFF00100,0xB3E40012,sth,r31,0x12(r4)
2310xFFF00100,0xB02EFFFB,sth,r1,-0x5(r14)
2320xFFF00100,0xB4B81EF4,sthu,r5,0x1EF4(r24)
2330xFFF00100,0xB774FFFE,sthu,r27,-0x2(r20)
2340xFFF00100,0xBB61006C,lmw,r27,0x6C(r1)
2350xFFF00100,0xBB41FFE8,lmw,r26,-0x18(r1)
2360xFFF00100,0xBC410008,stmw,r2,0x8(r1)
2370xFFF00100,0xBFC1FFF8,stmw,r30,-0x8(r1)
238# various simplified (extended) mnemonics
2390xFFF00100,0x60000000,nop
2400xFFF00100,0x7C7C1B78,mr,r28,r3
2410xFFF00100,0x7C7C1B78,mr,r28,r3
2420xFFF00100,0x7DAA6B79,mr.,r10,r13
2430xFFF00100,0x38000000,li,r0,0x0
2440xFFF00100,0x3860FFCE,li,r3,-0x32
245# invalid opcodes/instruction forms
2460xFFF00100,0x7D49F02F,dc.l,0x7D49F02F
2470xFFF00100,0x7F800009,dc.l,0x7F800009
2480xFFF00100,0x7C6B0CD0,dc.l,0x7C6B0CD0
2490xFFF00100,0x7C642D90,dc.l,0x7C642D90
250# POWER/PPC601 specific instructions
251#0xFFF00100,0x7E3EE43A,maskir,r30,r17,r28