Mercurial > repos > blastem
changeset 2582:6c475ddefd6f
Add support for ccr/sr update instructions to 68K test generator
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 08 Feb 2025 13:34:07 -0800 |
parents | 9e10149c9e10 |
children | 0f7609fe03f2 |
files | gentests.py testcases.txt |
diffstat | 2 files changed, 14 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/gentests.py Sat Feb 08 12:51:35 2025 -0800 +++ b/gentests.py Sat Feb 08 13:34:07 2025 -0800 @@ -93,7 +93,7 @@ return self.kind def write_init(self, outfile, size, already): - if not str(self) in already: + if not str(self) in already and not self.kind in ('ccr', 'sr'): minv,maxv = get_size_range(size) val = randint(minv,maxv) already[str(self)] = val @@ -428,6 +428,8 @@ return [Immediate(randint(start, end)) for x in range(0,8)] else: return [Immediate(num) for num in range(start, end+1)] + elif mode in ('ccr', 'sr'): + return [Register(mode, 0)] else: print("Don't know what to do with source type", mode) return None @@ -447,7 +449,7 @@ self.dst.write_init(outfile, self.size, already) def invalidate_dest(self, already): - if type(self.dst) == Register: + if type(self.dst) == Register and not self.dst.kind in ('ccr', 'sr'): del already[str(self.dst)] def save_result(self, reg, always): @@ -458,7 +460,10 @@ src = Decrement(self.dst.reg) else: src = self.dst - return 'move.' + self.size + ' ' + str(src) + ', ' + str(reg) + if type(src) is Register and src.kind == 'ccr': + return 'move sr, ' + str(reg) + else: + return 'move.' + self.size + ' ' + str(src) + ', ' + str(reg) else: return ''
--- a/testcases.txt Sat Feb 08 12:51:35 2025 -0800 +++ b/testcases.txt Sat Feb 08 13:34:07 2025 -0800 @@ -85,4 +85,9 @@ swap w d tst bwl d;(a);(a)+;-(a);(n,a);(n,a,x);(n).w;(n).l lea l (a);(n,a);(n,a,x);(n).w;(n).l;(n,pc);(n,pc,x) a - +ori b #n ccr +ori w #n sr +andi b #n ccr +andi w #n sr +eori b #n ccr +eori w #n sr