sim._pyrtl: mask bitwise binary operands.
Boolean negation produces negative integers, which when unmasked drastically affects the result of these operations.
This commit is contained in:
parent
59a83cf7eb
commit
99417d6499
|
@ -166,11 +166,11 @@ class _RHSValueCompiler(_ValueCompiler):
|
||||||
if value.operator == "%":
|
if value.operator == "%":
|
||||||
return f"zmod({sign(lhs)}, {sign(rhs)})"
|
return f"zmod({sign(lhs)}, {sign(rhs)})"
|
||||||
if value.operator == "&":
|
if value.operator == "&":
|
||||||
return f"({self(lhs)} & {self(rhs)})"
|
return f"({mask(lhs)} & {mask(rhs)})"
|
||||||
if value.operator == "|":
|
if value.operator == "|":
|
||||||
return f"({self(lhs)} | {self(rhs)})"
|
return f"({mask(lhs)} | {mask(rhs)})"
|
||||||
if value.operator == "^":
|
if value.operator == "^":
|
||||||
return f"({self(lhs)} ^ {self(rhs)})"
|
return f"({mask(lhs)} ^ {mask(rhs)})"
|
||||||
if value.operator == "<<":
|
if value.operator == "<<":
|
||||||
return f"({sign(lhs)} << {sign(rhs)})"
|
return f"({sign(lhs)} << {sign(rhs)})"
|
||||||
if value.operator == ">>":
|
if value.operator == ">>":
|
||||||
|
|
Loading…
Reference in a new issue