import unittest
-from soc.decoder.power_enums import (XER_bits, Function, spr_dict)
+from openpower.decoder.power_enums import (XER_bits, Function)
-# XXX bad practice: use of global variables
-from soc.fu.branch.test.test_pipe_caller import BranchTestCase
-from soc.fu.branch.test.test_pipe_caller import test_data
+from soc.fu.branch.test.test_pipe_caller import BranchTestCase, get_cu_inputs
from soc.fu.compunits.compunits import BranchFunctionUnit
from soc.fu.compunits.test.test_compunit import TestRunner
+from openpower.endian import bigendian
"""
class BranchTestRunner(TestRunner):
def __init__(self, test_data):
super().__init__(test_data, BranchFunctionUnit, self,
- Function.BRANCH)
+ Function.BRANCH, bigendian)
def get_cu_inputs(self, dec2, sim):
"""naming (res) must conform to BranchFunctionUnit input regspec
"""
- res = {}
- full_reg = yield dec2.e.read_cr_whole
-
- # CIA (PC)
- res['cia'] = sim.pc.CIA.value
- # CR A
- cr1_en = yield dec2.e.read_cr1.ok
- if cr1_en:
- cr1_sel = yield dec2.e.read_cr1.data
- res['cr_a'] = sim.crl[cr1_sel].get_range().value
-
- # SPR1
- spr_ok = yield dec2.e.read_spr1.ok
- spr_num = yield dec2.e.read_spr1.data
- if spr_ok:
- res['spr1'] = sim.spr[spr_dict[spr_num].SPR].value
-
- # SPR2
- spr_ok = yield dec2.e.read_spr2.ok
- spr_num = yield dec2.e.read_spr2.data
- if spr_ok:
- res['spr2'] = sim.spr[spr_dict[spr_num].SPR].value
-
- print ("get inputs", res)
+ res = yield from get_cu_inputs(dec2, sim)
return res
- def check_cu_outputs(self, res, dec2, sim, code):
+ def check_cu_outputs(self, res, dec2, sim, alu, code):
"""naming (res) must conform to BranchFunctionUnit output regspec
"""
- print ("check extra output", repr(code), res)
+ print("check extra output", repr(code), res)
# NIA (next instruction address aka PC)
branch_taken = 'nia' in res
self.assertEqual(branch_addr, sim.pc.CIA.value, code)
# Link SPR
- lk = yield dec2.e.lk
- branch_lk = 'spr2' in res
+ lk = yield dec2.e.do.lk
+ branch_lk = 'fast2' in res
self.assertEqual(lk, branch_lk, code)
if lk:
- branch_lr = res['spr2']
+ branch_lr = res['fast2']
self.assertEqual(sim.spr['LR'], branch_lr, code)
# CTR SPR
- ctr_ok = 'spr1' in res
+ ctr_ok = 'fast1' in res
if ctr_ok:
- ctr = res['spr1']
+ ctr = res['fast1']
self.assertEqual(sim.spr['CTR'], ctr, code)
+
if __name__ == "__main__":
unittest.main(exit=False)
suite = unittest.TestSuite()
- suite.addTest(BranchTestRunner(test_data))
+ suite.addTest(BranchTestRunner(BranchTestCase().test_data))
runner = unittest.TextTestRunner()
runner.run(suite)