changeset 224:f7ff02eeec2f

Added testcases for move and roxl/roxr. Made some small improvements to test tools.
author Mike Pavone <pavone@retrodev.com>
date Sun, 21 Apr 2013 11:40:18 -0700
parents 17534fb7c4f5
children 7348057e7a8c
files comparetests.py gentests.py maketests.py testcases.txt
diffstat 4 files changed, 38 insertions(+), 14 deletions(-) [+]
line wrap: on
line diff
--- 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:
--- 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()
 	
--- 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:
--- 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