back.pysim: implement *.

This commit is contained in:
whitequark 2018-12-18 18:02:21 +00:00
parent 07e9cfa939
commit 4199674edd
2 changed files with 8 additions and 0 deletions

View file

@ -113,6 +113,8 @@ class _RHSValueCompiler(AbstractValueTransformer):
return lambda state: normalize(lhs(state) + rhs(state), shape)
if value.op == "-":
return lambda state: normalize(lhs(state) - rhs(state), shape)
if value.op == "*":
return lambda state: normalize(lhs(state) * rhs(state), shape)
if value.op == "&":
return lambda state: normalize(lhs(state) & rhs(state), shape)
if value.op == "|":

View file

@ -66,6 +66,12 @@ class SimulatorUnitTestCase(FHDLTestCase):
self.assertStatement(stmt, [C(0, 4), C(1, 4)], C(-1, 4))
self.assertStatement(stmt, [C(0, 4), C(10, 4)], C(-10, 5))
def test_mul(self):
stmt = lambda y, a, b: y.eq(a * b)
self.assertStatement(stmt, [C(2, 4), C(1, 4)], C(2, 8))
self.assertStatement(stmt, [C(2, 4), C(2, 4)], C(4, 8))
self.assertStatement(stmt, [C(7, 4), C(7, 4)], C(49, 8))
def test_and(self):
stmt = lambda y, a, b: y.eq(a & b)
self.assertStatement(stmt, [C(0b1100, 4), C(0b1010, 4)], C(0b1000, 4))