V0.8: fix verinum XOR with z input
This patch mirrors what was done in development to fix the XOR of a z bit in verinum.
This commit is contained in:
parent
d134f6f074
commit
c8bffe728a
|
|
@ -997,9 +997,9 @@ verinum::V operator & (verinum::V l, verinum::V r)
|
||||||
verinum::V operator ^ (verinum::V l, verinum::V r)
|
verinum::V operator ^ (verinum::V l, verinum::V r)
|
||||||
{
|
{
|
||||||
if (l == verinum::V0)
|
if (l == verinum::V0)
|
||||||
return r;
|
return bit4_z2x(r);
|
||||||
if (r == verinum::V0)
|
if (r == verinum::V0)
|
||||||
return l;
|
return bit4_z2x(l);
|
||||||
if ((l == verinum::V1) && (r == verinum::V1))
|
if ((l == verinum::V1) && (r == verinum::V1))
|
||||||
return verinum::V0;
|
return verinum::V0;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -113,6 +113,9 @@ extern verinum trim_vnum(const verinum&);
|
||||||
extern std::ostream& operator<< (std::ostream&, const verinum&);
|
extern std::ostream& operator<< (std::ostream&, const verinum&);
|
||||||
extern std::ostream& operator<< (std::ostream&, verinum::V);
|
extern std::ostream& operator<< (std::ostream&, verinum::V);
|
||||||
|
|
||||||
|
inline verinum::V bit4_z2x(verinum::V bit)
|
||||||
|
{ return bit<2? bit : verinum::Vx; /* Relies on V0 and V1 being <2 */}
|
||||||
|
|
||||||
extern verinum::V operator ~ (verinum::V l);
|
extern verinum::V operator ~ (verinum::V l);
|
||||||
extern verinum::V operator | (verinum::V l, verinum::V r);
|
extern verinum::V operator | (verinum::V l, verinum::V r);
|
||||||
extern verinum::V operator & (verinum::V l, verinum::V r);
|
extern verinum::V operator & (verinum::V l, verinum::V r);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue