diff options
-rwxr-xr-x | comparetests.py | 20 | ||||
-rwxr-xr-x | gentests.py | 11 | ||||
-rwxr-xr-x | maketests.py | 4 | ||||
-rw-r--r-- | testcases.txt | 17 |
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 |