from soc.decoder.selectable_int import SelectableInt
from soc.simulator.program import Program
from soc.decoder.isa.all import ISA
-
+from soc.config.endian import bigendian
from soc.fu.test.common import (TestCase, ALUHelpers)
from soc.fu.div.pipeline import DIVBasePipe
tc = TestCase(prog, self.test_name, initial_regs, initial_sprs)
self.test_data.append(tc)
- def test_0_regression(self):
+ def tst_0_regression(self):
for i in range(40):
lst = ["divwo 3, 1, 2"]
initial_regs = [0] * 32
initial_regs[1] = 0xbc716835f32ac00c
initial_regs[2] = 0xcdf69a7f7042db66
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_1_regression(self):
+ def tst_1_regression(self):
lst = ["divwo 3, 1, 2"]
initial_regs = [0] * 32
initial_regs[1] = 0x10000000000000000-4
initial_regs[2] = 0x10000000000000000-2
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_2_regression(self):
+ def tst_2_regression(self):
lst = ["divwo 3, 1, 2"]
initial_regs = [0] * 32
initial_regs[1] = 0xffffffffffff9321
initial_regs[2] = 0xffffffffffff7012
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_3_regression(self):
+ def tst_3_regression(self):
lst = ["divwo. 3, 1, 2"]
initial_regs = [0] * 32
initial_regs[1] = 0x1b8e32f2458746af
initial_regs[2] = 0x6b8aee2ccf7d62e9
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_4_regression(self):
+ def tst_4_regression(self):
lst = ["divw 3, 1, 2"]
initial_regs = [0] * 32
initial_regs[1] = 0x1c4e6c2f3aa4a05c
initial_regs[2] = 0xe730c2eed6cc8dd7
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_5_regression(self):
+ def tst_5_regression(self):
lst = ["divw 3, 1, 2",
"divwo. 6, 4, 5"]
initial_regs = [0] * 32
initial_regs[2] = 0xe730c2eed6cc8dd7
initial_regs[4] = 0x1b8e32f2458746af
initial_regs[5] = 0x6b8aee2ccf7d62e9
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_6_regression(self):
+ def tst_6_regression(self):
# CR0 not getting set properly for this one
# turns out that overflow is not set correctly in
# fu/div/output_stage.py calc_overflow
initial_regs = [0] * 32
initial_regs[1] = 0x61c1cc3b80f2a6af
initial_regs[2] = 0x9dc66a7622c32bc0
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
def test_7_regression(self):
# https://bugs.libre-soc.org/show_bug.cgi?id=425
initial_regs = [0] * 32
initial_regs[1] = 0xf1791627e05e8096
initial_regs[2] = 0xffc868bf4573da0b
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_divw_by_zero_1(self):
+ def tst_divw_by_zero_1(self):
lst = ["divw. 3, 1, 2"]
initial_regs = [0] * 32
initial_regs[1] = 0x1
initial_regs[2] = 0x0
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_divw_overflow2(self):
+ def tst_divw_overflow2(self):
lst = ["divw. 3, 1, 2"]
initial_regs = [0] * 32
initial_regs[1] = 0x80000000
initial_regs[2] = 0xffffffffffffffff # top bits don't seem to matter
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_divw_overflow3(self):
+ def tst_divw_overflow3(self):
lst = ["divw. 3, 1, 2"]
initial_regs = [0] * 32
initial_regs[1] = 0x80000000
initial_regs[2] = 0xffffffff
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_rand_divw(self):
+ def tst_rand_divw(self):
insns = ["divw", "divw.", "divwo", "divwo."]
for i in range(40):
choice = random.choice(insns)
initial_regs = [0] * 32
initial_regs[1] = log_rand(32)
initial_regs[2] = log_rand(32)
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_divwuo_regression_1(self):
+ def tst_divwuo_regression_1(self):
lst = ["divwuo. 3, 1, 2"]
initial_regs = [0] * 32
initial_regs[1] = 0x7591a398c4e32b68
initial_regs[2] = 0x48674ab432867d69
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_divwuo_1(self):
+ def tst_divwuo_1(self):
lst = ["divwuo. 3, 1, 2"]
initial_regs = [0] * 32
initial_regs[1] = 0x50
initial_regs[2] = 0x2
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_rand_divwu(self):
+ def tst_rand_divwu(self):
insns = ["divwu", "divwu.", "divwuo", "divwuo."]
for i in range(40):
choice = random.choice(insns)
initial_regs = [0] * 32
initial_regs[1] = log_rand(32)
initial_regs[2] = log_rand(32)
- self.run_tst_program(Program(lst), initial_regs)
+ self.run_tst_program(Program(lst, bigendian), initial_regs)
- def test_ilang(self):
+ def tst_ilang(self):
pspec = DIVPipeSpec(id_wid=2)
alu = DIVBasePipe(pspec)
vl = rtlil.convert(alu, ports=alu.ports())
program = test.program
self.subTest(test.name)
sim = ISA(pdecode2, test.regs, test.sprs, test.cr,
- test.mem, test.msr)
+ test.mem, test.msr,
+ bigendian=bigendian)
gen = program.generate_instructions()
instructions = list(zip(gen, program.assembly.splitlines()))
yield Settle()
print ("before: so/ov/32", so, ov, ov32)
# ask the decoder to decode this binary data (endian'd)
- yield pdecode2.dec.bigendian.eq(0) # little / big?
+ yield pdecode2.dec.bigendian.eq(bigendian) # little / big?
yield instruction.eq(ins) # raw binary instr.
yield Settle()
fn_unit = yield pdecode2.e.do.fn_unit