# HG changeset patch # User Mike Pavone # Date 1366569618 25200 # Node ID f7ff02eeec2f53038013856073b06386ad3f53da # Parent 17534fb7c4f5c80f356e28f78b65691521932ac9 Added testcases for move and roxl/roxr. Made some small improvements to test tools. diff -r 17534fb7c4f5 -r f7ff02eeec2f comparetests.py --- a/comparetests.py Sat Apr 20 17:41:07 2013 -0700 +++ b/comparetests.py Sun Apr 21 11:40:18 2013 -0700 @@ -4,14 +4,28 @@ 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 -r 17534fb7c4f5 -r f7ff02eeec2f gentests.py --- a/gentests.py Sat Apr 20 17:41:07 2013 -0700 +++ b/gentests.py Sun Apr 21 11:40:18 2013 -0700 @@ -16,6 +16,8 @@ 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 @@ 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 @@ 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 -r 17534fb7c4f5 -r f7ff02eeec2f maketests.py --- a/maketests.py Sat Apr 20 17:41:07 2013 -0700 +++ b/maketests.py Sun Apr 21 11:40:18 2013 -0700 @@ -4,11 +4,11 @@ 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 -r 17534fb7c4f5 -r f7ff02eeec2f testcases.txt --- a/testcases.txt Sat Apr 20 17:41:07 2013 -0700 +++ b/testcases.txt Sun Apr 21 11:40:18 2013 -0700 @@ -30,10 +30,15 @@ #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