Mercurial > repos > blastem
comparison gentests.py @ 487:c08a4efeee7f opengl
Update opengl branch from default. Fix build breakage unrelated to merge
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 26 Oct 2013 22:38:47 -0700 |
parents | bfbb8613efb4 |
children | 097c172839d4 |
comparison
equal
deleted
inserted
replaced
449:7696d824489d | 487:c08a4efeee7f |
---|---|
69 def consume_areg(self, num): | 69 def consume_areg(self, num): |
70 self.avail_aregs.discard(num) | 70 self.avail_aregs.discard(num) |
71 | 71 |
72 def get_dreg(self): | 72 def get_dreg(self): |
73 return Register('d', self.avail_dregs.pop()) | 73 return Register('d', self.avail_dregs.pop()) |
74 | |
75 class Dummy(object): | |
76 def __str__(self): | |
77 return '' | |
78 def write_init(self, outfile, size, already): | |
79 pass | |
80 def consume_regs(self, program): | |
81 pass | |
82 | |
83 dummy_op = Dummy() | |
74 | 84 |
75 class Register(object): | 85 class Register(object): |
76 def __init__(self, kind, num): | 86 def __init__(self, kind, num): |
77 self.kind = kind | 87 self.kind = kind |
78 self.num = num | 88 self.num = num |
439 | 449 |
440 def consume_regs(self, program): | 450 def consume_regs(self, program): |
441 self.src.consume_regs(program) | 451 self.src.consume_regs(program) |
442 self.dst.consume_regs(program) | 452 self.dst.consume_regs(program) |
443 | 453 |
454 class Inst1Op(Inst2Op): | |
455 def __init__(self, name, size, dst): | |
456 super(Inst1Op, self).__init__(name, size, dummy_op, dst) | |
457 | |
458 def __str__(self): | |
459 return self.name + '.' + self.size + ' ' + str(self.dst) | |
460 | |
444 class Entry(object): | 461 class Entry(object): |
445 def __init__(self, line): | 462 def __init__(self, line): |
446 fields = split_fields(line) | 463 fields = split_fields(line) |
447 self.name = fields[0] | 464 self.name = fields[0] |
448 sizes = fields[1] | 465 sizes = fields[1] |
449 sources = fields[2].split(';') | 466 sources = fields[2].split(';') |
450 dests = fields[3].split(';') | 467 if len(fields) > 3: |
468 dests = fields[3].split(';') | |
469 else: | |
470 dests = None | |
451 combos = [] | 471 combos = [] |
452 for size in sizes: | 472 for size in sizes: |
453 for source in sources: | 473 for source in sources: |
454 if size != 'b' or source != 'a': | 474 if size != 'b' or source != 'a': |
455 for dest in dests: | 475 if dests: |
456 if size != 'b' or dest != 'a': | 476 for dest in dests: |
457 combos.append((size, source, dest)) | 477 if size != 'b' or dest != 'a': |
478 combos.append((size, source, dest)) | |
479 else: | |
480 combos.append((size, None, source)) | |
458 self.cases = combos | 481 self.cases = combos |
459 | 482 |
460 def programs(self): | 483 def programs(self): |
461 res = [] | 484 res = [] |
462 for (size, src, dst) in self.cases: | 485 for (size, src, dst) in self.cases: |
463 sources = get_variations(src, size) | |
464 dests = get_variations(dst, size) | 486 dests = get_variations(dst, size) |
465 for source in sources: | 487 if src: |
488 sources = get_variations(src, size) | |
489 for source in sources: | |
490 for dest in dests: | |
491 res.append(Program(Inst2Op(self.name, size, source, dest))) | |
492 else: | |
466 for dest in dests: | 493 for dest in dests: |
467 res.append(Program(Inst2Op(self.name, size, source, dest))) | 494 res.append(Program(Inst1Op(self.name, size, dest))) |
468 return res | 495 return res |
469 | 496 |
470 def process_entries(f): | 497 def process_entries(f): |
471 entries = [] | 498 entries = [] |
472 for line in f: | 499 for line in f: |