summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgentests.py17
-rw-r--r--testcases.txt8
2 files changed, 19 insertions, 6 deletions
diff --git a/gentests.py b/gentests.py
index 3e8f083..9aa6a92 100755
--- a/gentests.py
+++ b/gentests.py
@@ -23,10 +23,21 @@ class Program(object):
def write_rom_test(self, outfile):
outfile.write('\tdc.l $0, start\n')
+ needdivzero = self.inst.name.startswith('div')
for i in xrange(0x8, 0x100, 0x4):
- outfile.write('\tdc.l empty_handler\n')
- outfile.write('\tdc.b "SEGA"\nempty_handler:\n\trte\nstart:\n')
- outfile.write('\tmove #0, CCR\n')
+ if needdivzero and i == 0x14:
+ outfile.write('\tdc.l div_zero_handler\n')
+ else:
+ outfile.write('\tdc.l empty_handler\n')
+ outfile.write('\tdc.b "SEGA"\nempty_handler:\n\trte\n')
+ if needdivzero:
+ outfile.write('div_zero_handler:\n')
+ div_zero_count = self.get_dreg()
+ outfile.write('\taddq #1, ' + str(div_zero_count) + '\n')
+ outfile.write('\trte\n')
+ outfile.write('start:\n\tmove #0, CCR\n')
+ if needdivzero:
+ outfile.write('\tmoveq #0, ' + str(div_zero_count) + '\n')
already = {}
self.inst.write_init(outfile, already)
if 'label' in already:
diff --git a/testcases.txt b/testcases.txt
index f7f5153..b4f1958 100644
--- a/testcases.txt
+++ b/testcases.txt
@@ -38,7 +38,9 @@ Name Sizes Src Modes Dst Modes
#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
+#moveq l #(-128-127) d
+#roxl bwl d;#(1-8) d
+#roxr bwl d;#(1-8) d
+divs w d;(a);(a)+;-(a);(n,a);(n,a,x);(n).w;(n).l;#n;(n,pc);(n,pc,x) d
+divu w d;(a);(a)+;-(a);(n,a);(n,a,x);(n).w;(n).l;#n;(n,pc);(n,pc,x) d