Add tests for all subtraction variants.

This commit is contained in:
Maxim Poliakovski
2020-02-04 01:00:37 +01:00
parent 03439b2a49
commit 1c5d0e640e
3 changed files with 161 additions and 2 deletions

View File

@@ -157,6 +157,48 @@ def gen_ppc_opcode(opc_str, imm):
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x218 << 1)
elif opc_str == "SRW.":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x218 << 1) + 1
elif opc_str == "SUBF":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x28 << 1)
elif opc_str == "SUBF.":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x28 << 1) + 1
elif opc_str == "SUBFO":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x228 << 1)
elif opc_str == "SUBFO.":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x228 << 1) + 1
elif opc_str == "SUBFC":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x8 << 1)
elif opc_str == "SUBFC.":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x8 << 1) + 1
elif opc_str == "SUBFCO":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x208 << 1)
elif opc_str == "SUBFCO.":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x208 << 1) + 1
elif opc_str == "SUBFE":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x88 << 1)
elif opc_str == "SUBFE.":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x88 << 1) + 1
elif opc_str == "SUBFEO":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x288 << 1)
elif opc_str == "SUBFEO.":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (4 << 11) + (0x288 << 1) + 1
elif opc_str == "SUBFIC":
return (0x08 << 26) + (3 << 21) + (3 << 16) + (imm & 0xFFFF)
elif opc_str == "SUBFME":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (0xE8 << 1)
elif opc_str == "SUBFME.":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (0xE8 << 1) + 1
elif opc_str == "SUBFMEO":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (0x2E8 << 1)
elif opc_str == "SUBFMEO.":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (0x2E8 << 1) + 1
elif opc_str == "SUBFZE":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (0xC8 << 1)
elif opc_str == "SUBFZE.":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (0xC8 << 1) + 1
elif opc_str == "SUBFZEO":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (0x2C8 << 1)
elif opc_str == "SUBFZEO.":
return (0x1F << 26) + (3 << 21) + (3 << 16) + (0x2C8 << 1) + 1
def gen_rot_opcode(opc_str, sh, mb, me):
if opc_str == "RLWIMI":
@@ -214,7 +256,7 @@ with open("instruction_tests_console.txt", "r") as in_file:
continue; # skip buggy rotation instructions tests
if lineno >= 2728 and lineno < 3248:
continue; # skip buggy srawi instructions tests
if lineno >= 3768:
if lineno >= 3886:
break
line = line.strip()

View File

@@ -3765,7 +3765,6 @@ SRW. :: rD 0x00000040 | rA 0x00000040 | rB 0x00000040 | XER: 0x00000000 | CR
SRW. :: rD 0x00000001 | rA 0x00000001 | rB 0x00000040 | XER: 0x00000000 | CR: 0x40000000
SRW. :: rD 0x7FFFFFFF | rA 0x7FFFFFFF | rB 0x00000040 | XER: 0x00000000 | CR: 0x40000000
SRW. :: rD 0xFFFFFFFF | rA 0xFFFFFFFF | rB 0x00000040 | XER: 0x00000000 | CR: 0x80000000
SUBF Variants
SUBF :: rD 0x00000000 | rA 0x00000000 | rB 0x00000000 | XER: 0x00000000 | CR: 0x00000000
SUBF :: rD 0x00000001 | rA 0x00000000 | rB 0x00000001 | XER: 0x00000000 | CR: 0x00000000
SUBF :: rD 0xFFFFFFFF | rA 0x00000001 | rB 0x00000000 | XER: 0x00000000 | CR: 0x00000000

View File

@@ -2093,3 +2093,121 @@ SRW.,0x7C632431,rD=0x00000040,rA=0x00000040,rB=0x00000040,XER=0x00000000,CR=0x40
SRW.,0x7C632431,rD=0x00000001,rA=0x00000001,rB=0x00000040,XER=0x00000000,CR=0x40000000
SRW.,0x7C632431,rD=0x7FFFFFFF,rA=0x7FFFFFFF,rB=0x00000040,XER=0x00000000,CR=0x40000000
SRW.,0x7C632431,rD=0xFFFFFFFF,rA=0xFFFFFFFF,rB=0x00000040,XER=0x00000000,CR=0x80000000
SUBF,0x7C632050,rD=0x00000000,rA=0x00000000,rB=0x00000000,XER=0x00000000,CR=0x00000000
SUBF,0x7C632050,rD=0x00000001,rA=0x00000000,rB=0x00000001,XER=0x00000000,CR=0x00000000
SUBF,0x7C632050,rD=0xFFFFFFFF,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x00000000
SUBF,0x7C632050,rD=0x7FFFFFFF,rA=0x00000001,rB=0x80000000,XER=0x00000000,CR=0x00000000
SUBF,0x7C632050,rD=0x80000000,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x00000000
SUBF,0x7C632050,rD=0x00000000,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x00000000
SUBF.,0x7C632051,rD=0x00000000,rA=0x00000000,rB=0x00000000,XER=0x00000000,CR=0x20000000
SUBF.,0x7C632051,rD=0x00000001,rA=0x00000000,rB=0x00000001,XER=0x00000000,CR=0x40000000
SUBF.,0x7C632051,rD=0xFFFFFFFF,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x80000000
SUBF.,0x7C632051,rD=0x7FFFFFFF,rA=0x00000001,rB=0x80000000,XER=0x00000000,CR=0x40000000
SUBF.,0x7C632051,rD=0x80000000,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x80000000
SUBF.,0x7C632051,rD=0x00000000,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x20000000
SUBFO,0x7C632450,rD=0x00000000,rA=0x00000000,rB=0x00000000,XER=0x00000000,CR=0x00000000
SUBFO,0x7C632450,rD=0x00000001,rA=0x00000000,rB=0x00000001,XER=0x00000000,CR=0x00000000
SUBFO,0x7C632450,rD=0xFFFFFFFF,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x00000000
SUBFO,0x7C632450,rD=0x7FFFFFFF,rA=0x00000001,rB=0x80000000,XER=0xC0000000,CR=0x00000000
SUBFO,0x7C632450,rD=0x80000000,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x00000000
SUBFO,0x7C632450,rD=0x00000000,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x00000000
SUBFO.,0x7C632451,rD=0x00000000,rA=0x00000000,rB=0x00000000,XER=0x00000000,CR=0x20000000
SUBFO.,0x7C632451,rD=0x00000001,rA=0x00000000,rB=0x00000001,XER=0x00000000,CR=0x40000000
SUBFO.,0x7C632451,rD=0xFFFFFFFF,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x80000000
SUBFO.,0x7C632451,rD=0x7FFFFFFF,rA=0x00000001,rB=0x80000000,XER=0xC0000000,CR=0x50000000
SUBFO.,0x7C632451,rD=0x80000000,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x80000000
SUBFO.,0x7C632451,rD=0x00000000,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x20000000
SUBFC,0x7C632010,rD=0x00000000,rA=0x00000000,rB=0x00000000,XER=0x20000000,CR=0x00000000
SUBFC,0x7C632010,rD=0x00000001,rA=0x00000000,rB=0x00000001,XER=0x20000000,CR=0x00000000
SUBFC,0x7C632010,rD=0xFFFFFFFF,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x00000000
SUBFC,0x7C632010,rD=0x7FFFFFFF,rA=0x00000001,rB=0x80000000,XER=0x20000000,CR=0x00000000
SUBFC,0x7C632010,rD=0x80000000,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0x20000000,CR=0x00000000
SUBFC,0x7C632010,rD=0x00000000,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x20000000,CR=0x00000000
SUBFC.,0x7C632011,rD=0x00000000,rA=0x00000000,rB=0x00000000,XER=0x20000000,CR=0x20000000
SUBFC.,0x7C632011,rD=0x00000001,rA=0x00000000,rB=0x00000001,XER=0x20000000,CR=0x40000000
SUBFC.,0x7C632011,rD=0xFFFFFFFF,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x80000000
SUBFC.,0x7C632011,rD=0x7FFFFFFF,rA=0x00000001,rB=0x80000000,XER=0x20000000,CR=0x40000000
SUBFC.,0x7C632011,rD=0x80000000,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0x20000000,CR=0x80000000
SUBFC.,0x7C632011,rD=0x00000000,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x20000000,CR=0x20000000
SUBFCO,0x7C632410,rD=0x00000000,rA=0x00000000,rB=0x00000000,XER=0x20000000,CR=0x00000000
SUBFCO,0x7C632410,rD=0x00000001,rA=0x00000000,rB=0x00000001,XER=0x20000000,CR=0x00000000
SUBFCO,0x7C632410,rD=0xFFFFFFFF,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x00000000
SUBFCO,0x7C632410,rD=0x7FFFFFFF,rA=0x00000001,rB=0x80000000,XER=0xE0000000,CR=0x00000000
SUBFCO,0x7C632410,rD=0x80000000,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0x20000000,CR=0x00000000
SUBFCO,0x7C632410,rD=0x00000000,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x20000000,CR=0x00000000
SUBFCO.,0x7C632411,rD=0x00000000,rA=0x00000000,rB=0x00000000,XER=0x20000000,CR=0x20000000
SUBFCO.,0x7C632411,rD=0x00000001,rA=0x00000000,rB=0x00000001,XER=0x20000000,CR=0x40000000
SUBFCO.,0x7C632411,rD=0xFFFFFFFF,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x80000000
SUBFCO.,0x7C632411,rD=0x7FFFFFFF,rA=0x00000001,rB=0x80000000,XER=0xE0000000,CR=0x50000000
SUBFCO.,0x7C632411,rD=0x80000000,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0x20000000,CR=0x80000000
SUBFCO.,0x7C632411,rD=0x00000000,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x20000000,CR=0x20000000
SUBFE,0x7C632110,rD=0xFFFFFFFF,rA=0x00000000,rB=0x00000000,XER=0x00000000,CR=0x00000000
SUBFE,0x7C632110,rD=0x00000000,rA=0x00000000,rB=0x00000001,XER=0x20000000,CR=0x00000000
SUBFE,0x7C632110,rD=0xFFFFFFFE,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x00000000
SUBFE,0x7C632110,rD=0x7FFFFFFE,rA=0x00000001,rB=0x80000000,XER=0x20000000,CR=0x00000000
SUBFE,0x7C632110,rD=0x7FFFFFFF,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0x20000000,CR=0x00000000
SUBFE,0x7C632110,rD=0xFFFFFFFF,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x00000000
SUBFE.,0x7C632111,rD=0xFFFFFFFF,rA=0x00000000,rB=0x00000000,XER=0x00000000,CR=0x80000000
SUBFE.,0x7C632111,rD=0x00000000,rA=0x00000000,rB=0x00000001,XER=0x20000000,CR=0x20000000
SUBFE.,0x7C632111,rD=0xFFFFFFFE,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x80000000
SUBFE.,0x7C632111,rD=0x7FFFFFFE,rA=0x00000001,rB=0x80000000,XER=0x20000000,CR=0x40000000
SUBFE.,0x7C632111,rD=0x7FFFFFFF,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0x20000000,CR=0x40000000
SUBFE.,0x7C632111,rD=0xFFFFFFFF,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x80000000
SUBFEO,0x7C632510,rD=0xFFFFFFFF,rA=0x00000000,rB=0x00000000,XER=0x00000000,CR=0x00000000
SUBFEO,0x7C632510,rD=0x00000000,rA=0x00000000,rB=0x00000001,XER=0x20000000,CR=0x00000000
SUBFEO,0x7C632510,rD=0xFFFFFFFE,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x00000000
SUBFEO,0x7C632510,rD=0x7FFFFFFF,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0xE0000000,CR=0x00000000
SUBFEO,0x7C632510,rD=0x7FFFFFFE,rA=0x00000001,rB=0x80000000,XER=0xE0000000,CR=0x00000000
SUBFEO,0x7C632510,rD=0xFFFFFFFF,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x00000000
SUBFEO.,0x7C632511,rD=0xFFFFFFFF,rA=0x00000000,rB=0x00000000,XER=0x00000000,CR=0x80000000
SUBFEO.,0x7C632511,rD=0x00000000,rA=0x00000000,rB=0x00000001,XER=0x20000000,CR=0x20000000
SUBFEO.,0x7C632511,rD=0xFFFFFFFE,rA=0x00000001,rB=0x00000000,XER=0x00000000,CR=0x80000000
SUBFEO.,0x7C632511,rD=0x7FFFFFFE,rA=0x00000001,rB=0x80000000,XER=0xE0000000,CR=0x50000000
SUBFEO.,0x7C632511,rD=0x7FFFFFFF,rA=0x7FFFFFFF,rB=0xFFFFFFFF,XER=0xE0000000,CR=0x50000000
SUBFEO.,0x7C632511,rD=0xFFFFFFFF,rA=0xFFFFFFFF,rB=0xFFFFFFFF,XER=0x00000000,CR=0x80000000
SUBFIC,0x20630000,rD=0x00000000,rA=0x00000000,XER=0x20000000,CR=0x00000000
SUBFIC,0x20630001,rD=0x00000001,rA=0x00000000,XER=0x20000000,CR=0x00000000
SUBFIC,0x20630000,rD=0xFFFFFFFF,rA=0x00000001,XER=0x00000000,CR=0x00000000
SUBFIC,0x20630001,rD=0x00000000,rA=0x00000001,XER=0x20000000,CR=0x00000000
SUBFIC,0x20637FFF,rD=0x80008000,rA=0x7FFFFFFF,XER=0x00000000,CR=0x00000000
SUBFIC,0x20637FFF,rD=0x00008000,rA=0xFFFFFFFF,XER=0x00000000,CR=0x00000000
SUBFME,0x7C6301D0,rD=0xFFFFFFFE,rA=0x00000000,XER=0x20000000,CR=0x00000000
SUBFME,0x7C6301D0,rD=0xFFFFFFFD,rA=0x00000001,XER=0x20000000,CR=0x00000000
SUBFME,0x7C6301D0,rD=0x7FFFFFFF,rA=0x7FFFFFFF,XER=0x20000000,CR=0x00000000
SUBFME,0x7C6301D0,rD=0x7FFFFFFE,rA=0x80000000,XER=0x20000000,CR=0x00000000
SUBFME,0x7C6301D0,rD=0xFFFFFFFF,rA=0xFFFFFFFF,XER=0x00000000,CR=0x00000000
SUBFME.,0x7C6301D1,rD=0xFFFFFFFE,rA=0x00000000,XER=0x20000000,CR=0x80000000
SUBFME.,0x7C6301D1,rD=0xFFFFFFFD,rA=0x00000001,XER=0x20000000,CR=0x80000000
SUBFME.,0x7C6301D1,rD=0x7FFFFFFF,rA=0x7FFFFFFF,XER=0x20000000,CR=0x40000000
SUBFME.,0x7C6301D1,rD=0x7FFFFFFE,rA=0x80000000,XER=0x20000000,CR=0x40000000
SUBFME.,0x7C6301D1,rD=0xFFFFFFFF,rA=0xFFFFFFFF,XER=0x00000000,CR=0x80000000
SUBFMEO,0x7C6305D0,rD=0xFFFFFFFE,rA=0x00000000,XER=0x20000000,CR=0x00000000
SUBFMEO,0x7C6305D0,rD=0xFFFFFFFD,rA=0x00000001,XER=0x20000000,CR=0x00000000
SUBFMEO,0x7C6305D0,rD=0x7FFFFFFF,rA=0x7FFFFFFF,XER=0xE0000000,CR=0x00000000
SUBFMEO,0x7C6305D0,rD=0x7FFFFFFE,rA=0x80000000,XER=0x20000000,CR=0x00000000
SUBFMEO,0x7C6305D0,rD=0xFFFFFFFF,rA=0xFFFFFFFF,XER=0x00000000,CR=0x00000000
SUBFMEO.,0x7C6305D1,rD=0xFFFFFFFE,rA=0x00000000,XER=0x20000000,CR=0x80000000
SUBFMEO.,0x7C6305D1,rD=0xFFFFFFFD,rA=0x00000001,XER=0x20000000,CR=0x80000000
SUBFMEO.,0x7C6305D1,rD=0x7FFFFFFF,rA=0x7FFFFFFF,XER=0xE0000000,CR=0x50000000
SUBFMEO.,0x7C6305D1,rD=0x7FFFFFFE,rA=0x80000000,XER=0x20000000,CR=0x40000000
SUBFMEO.,0x7C6305D1,rD=0xFFFFFFFF,rA=0xFFFFFFFF,XER=0x00000000,CR=0x80000000
SUBFZE,0x7C630190,rD=0xFFFFFFFF,rA=0x00000000,XER=0x00000000,CR=0x00000000
SUBFZE,0x7C630190,rD=0xFFFFFFFE,rA=0x00000001,XER=0x00000000,CR=0x00000000
SUBFZE,0x7C630190,rD=0x80000000,rA=0x7FFFFFFF,XER=0x00000000,CR=0x00000000
SUBFZE,0x7C630190,rD=0x7FFFFFFF,rA=0x80000000,XER=0x00000000,CR=0x00000000
SUBFZE,0x7C630190,rD=0x00000000,rA=0xFFFFFFFF,XER=0x00000000,CR=0x00000000
SUBFZE.,0x7C630191,rD=0xFFFFFFFF,rA=0x00000000,XER=0x00000000,CR=0x80000000
SUBFZE.,0x7C630191,rD=0xFFFFFFFE,rA=0x00000001,XER=0x00000000,CR=0x80000000
SUBFZE.,0x7C630191,rD=0x80000000,rA=0x7FFFFFFF,XER=0x00000000,CR=0x80000000
SUBFZE.,0x7C630191,rD=0x7FFFFFFF,rA=0x80000000,XER=0x00000000,CR=0x40000000
SUBFZE.,0x7C630191,rD=0x00000000,rA=0xFFFFFFFF,XER=0x00000000,CR=0x20000000
SUBFZEO,0x7C630590,rD=0xFFFFFFFF,rA=0x00000000,XER=0x00000000,CR=0x00000000
SUBFZEO,0x7C630590,rD=0xFFFFFFFE,rA=0x00000001,XER=0x00000000,CR=0x00000000
SUBFZEO,0x7C630590,rD=0x80000000,rA=0x7FFFFFFF,XER=0x00000000,CR=0x00000000
SUBFZEO,0x7C630590,rD=0x7FFFFFFF,rA=0x80000000,XER=0x00000000,CR=0x00000000
SUBFZEO,0x7C630590,rD=0x00000000,rA=0xFFFFFFFF,XER=0x00000000,CR=0x00000000
SUBFZEO.,0x7C630591,rD=0xFFFFFFFF,rA=0x00000000,XER=0x00000000,CR=0x80000000
SUBFZEO.,0x7C630591,rD=0xFFFFFFFE,rA=0x00000001,XER=0x00000000,CR=0x80000000
SUBFZEO.,0x7C630591,rD=0x80000000,rA=0x7FFFFFFF,XER=0x00000000,CR=0x80000000
SUBFZEO.,0x7C630591,rD=0x7FFFFFFF,rA=0x80000000,XER=0x00000000,CR=0x40000000
SUBFZEO.,0x7C630591,rD=0x00000000,rA=0xFFFFFFFF,XER=0x00000000,CR=0x20000000
Can't render this file because it has a wrong number of fields in line 85.