mirror of
https://github.com/steveicarus/iverilog.git
synced 2026-08-29 01:03:29 +02:00
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:
+2
-2
@@ -997,9 +997,9 @@ verinum::V operator & (verinum::V l, verinum::V r)
|
||||
verinum::V operator ^ (verinum::V l, verinum::V r)
|
||||
{
|
||||
if (l == verinum::V0)
|
||||
return r;
|
||||
return bit4_z2x(r);
|
||||
if (r == verinum::V0)
|
||||
return l;
|
||||
return bit4_z2x(l);
|
||||
if ((l == verinum::V1) && (r == verinum::V1))
|
||||
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&, 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, verinum::V r);
|
||||
extern verinum::V operator & (verinum::V l, verinum::V r);
|
||||
|
||||
Reference in New Issue
Block a user