summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xcomparetests.py20
-rwxr-xr-xgentests.py11
-rwxr-xr-xmaketests.py4
-rw-r--r--testcases.txt17
4 files changed, 38 insertions, 14 deletions
diff --git a/comparetests.py b/comparetests.py
index 6aa65e2..5156895 100755
--- a/comparetests.py
+++ b/comparetests.py
@@ -4,14 +4,28 @@ import subprocess
from sys import exit,argv
prefixes = []
+skip = set()
for i in range(1, len(argv)):
- prefixes.append(argv[i])
+ if '.' in argv[i]:
+ f = open(argv[i])
+ for line in f:
+ parts = line.split()
+ for part in parts:
+ if part.endswith('.bin'):
+ skip.add(part)
+ f.close()
+ print 'Skipping',len(skip),'entries from previous report.'
+ else:
+ prefixes.append(argv[i])
-for path in glob('generated_tests/*.bin'):
+for path in glob('generated_tests/*/*.bin'):
+ if path in skip:
+ continue
if prefixes:
good = False
+ fname = path.split('/')[-1]
for prefix in prefixes:
- if path.startswith(prefix):
+ if fname.startswith(prefix):
good = True
break
if not good:
diff --git a/gentests.py b/gentests.py
index bb5cb7a..3e8f083 100755
--- a/gentests.py
+++ b/gentests.py
@@ -16,6 +16,8 @@ class Program(object):
instruction.consume_regs(self)
self.inst = instruction
+ def dirname(self):
+ return self.inst.name + '_' + self.inst.size
def name(self):
return str(self.inst).replace('.', '_').replace('#', '_').replace(',', '_').replace(' ', '_').replace('(', '[').replace(')', ']')
@@ -376,7 +378,7 @@ def get_variations(mode, size):
return rand_immediate(size)
elif mode.startswith('#(') and mode.endswith(')'):
inner = mode[2:-1]
- start,sep,end = inner.partition('-')
+ start,sep,end = inner.rpartition('-')
start,end = int(start),int(end)
if end-start > 16:
return [Immediate(randint(start, end)) for x in range(0,8)]
@@ -453,13 +455,16 @@ def process_entries(f):
entries.append(Entry(line))
return entries
-
+from os import path, mkdir
def main(args):
entries = process_entries(open('testcases.txt'))
for entry in entries:
programs = entry.programs()
for program in programs:
- f = open('generated_tests/' + program.name() + '.s68', 'w')
+ dname = program.dirname()
+ if not path.exists('generated_tests/' + dname):
+ mkdir('generated_tests/' + dname)
+ f = open('generated_tests/' + dname + '/' + program.name() + '.s68', 'w')
program.write_rom_test(f)
f.close()
diff --git a/maketests.py b/maketests.py
index 9179595..c74300f 100755
--- a/maketests.py
+++ b/maketests.py
@@ -4,11 +4,11 @@ import subprocess
from sys import exit
sources = set()
-for path in glob('generated_tests/*.s68'):
+for path in glob('generated_tests/*/*.s68'):
sources.add(path)
bins = set()
-for path in glob('generated_tests/*.bin'):
+for path in glob('generated_tests/*/*.bin'):
bins.add(path)
for path in sources:
diff --git a/testcases.txt b/testcases.txt
index 639e3eb..f7f5153 100644
--- a/testcases.txt
+++ b/testcases.txt
@@ -30,10 +30,15 @@ Name Sizes Src Modes Dst Modes
#btst l d;#(0-255) d
#rol bwl d;#(1-8) d
#ror bwl d;#(1-8) d
-abcd b d d
-abcd b -(a) -(a)
-sbcd b d d
-sbcd b -(a) -(a)
-muls w d;(a);(a)+;-(a);(n,a);(n,a,x);(n).w;(n).l;#n;(n,pc);(n,pc,x) d
-mulu w d;(a);(a)+;-(a);(n,a);(n,a,x);(n).w;(n).l;#n;(n,pc);(n,pc,x) d
+#abcd b d d
+#abcd b -(a) -(a)
+#sbcd b d d
+#sbcd b -(a) -(a)
+#muls w d;(a);(a)+;-(a);(n,a);(n,a,x);(n).w;(n).l;#n;(n,pc);(n,pc,x) d
+#mulu w d;(a);(a)+;-(a);(n,a);(n,a,x);(n).w;(n).l;#n;(n,pc);(n,pc,x) d
+#move bwl d;a;(a);(a)+;-(a);(n,a);(n,a,x);(n).w;(n).l;#n;(n,pc);(n,pc,x) d;(a);(a)+;-(a);(n,a);(n,a,x);(n).w;(n).l
+#movea wl d;a;(a);(a)+;-(a);(n,a);(n,a,x);(n).w;(n).l;#n;(n,pc);(n,pc,x) a
+moveq l #(-128-127) d
+roxl bwl d;#(1-8) d
+roxr bwl d;#(1-8) d