9d034f4b839198c618f52edce79ad57923109c9e
[soc.git] / src / soc / fu / test / common.py
1 class TestCase:
2 def __init__(self, program, name, regs=None, sprs=None, cr=0, mem=None,
3 msr=0):
4
5 self.program = program
6 self.name = name
7
8 if regs is None:
9 regs = [0] * 32
10 if sprs is None:
11 sprs = {}
12 if mem is None:
13 mem = {}
14 self.regs = regs
15 self.sprs = sprs
16 self.cr = cr
17 self.mem = mem
18 self.msr = msr
19
20 class ALUHelpers:
21
22 def set_int_ra(alu, dec2, inp):
23 if 'ra' in inp:
24 yield alu.p.data_i.ra.eq(inp['ra'])
25
26 def set_int_rb(alu, dec2, inp):
27 if 'rb' in inp:
28 yield alu.p.data_i.rb.eq(inp['rb'])
29 # If there's an immediate, set the B operand to that
30 imm_ok = yield dec2.e.imm_data.imm_ok
31 if imm_ok:
32 data2 = yield dec2.e.imm_data.imm
33 yield alu.p.data_i.b.eq(data2)
34
35 def set_xer_ca(alu, dec2, inp):
36 if 'xer_ca' in inp:
37 yield alu.p.data_i.xer_ca.eq(inp['xer_ca'])
38 print ("extra inputs: CA/32", bin(inp['xer_ca']))
39
40 def set_xer_so(alu, dec2, inp):
41 if 'xer_so' in inp:
42 so = inp['xer_so']
43 print ("extra inputs: so", so)
44 yield alu.p.data_i.xer_so.eq(so)
45