@@ -47,14 +47,6 @@ def subset(self, other):
47
47
val_cmp = ((self .v & ~ other .m ) == other .v )
48
48
return mask_cmp & val_cmp
49
49
50
- # self_m_extended = ZeroExt(self.w - self.m.size(), self.m)
51
- # other_m_extended = ZeroExt(self.w - other.m.size(), other.m)
52
- # self_v_extended = ZeroExt(self.w - self.v.size(), self.v)
53
- # other_v_extended = ZeroExt(self.w - other.v.size(), other.v)
54
- # mask_cmp = (self_m_extended & ~other_m_extended) == BitVecVal(0, self.w)
55
- # val_cmp = (self_v_extended & ~other_m_extended) == other_v_extended
56
- # return mask_cmp & val_cmp
57
-
58
50
def union (self ,other ):
59
51
mask = self .m | other .m | (self .v ^ other .v )
60
52
val = self .v & ~ mask
@@ -64,12 +56,9 @@ def __invert__(self):
64
56
return TNum (~ self .v & ~ self .m , self .m )
65
57
66
58
def __neg__ (self ):
67
- return TNum (- self .v & ~ self .m , self .m )
59
+ tnum = TNum (BitVecVal (0 , self .w ), BitVecVal (0 , self .w ))
60
+ return tnum - self
68
61
69
- # val = If(-self.v & ~self.m == self.v, ZeroExt(1, -self.v & ~self.m), ZeroExt(1, -self.v & ~self.m))
70
- # mask = If(-self.v & ~self.m == self.v, ZeroExt(1, self.m), ZeroExt(1, self.m))
71
- # return TNum(val, mask)
72
-
73
62
def __and__ (self , other ):
74
63
alpha = self .v | self .m
75
64
beta = other .v | other .m
@@ -398,7 +387,6 @@ def test_uop(name, tf, tf_c=None, prec=False, width=4):
398
387
test_bop ("TXNOR" , lambda x , y : xnor_tnum (x , y ), xnor_bitvec , prec = True )
399
388
test_bop ("TNAND" , lambda x , y : nand_tnum (x , y ), nand_bitvec , prec = True )
400
389
test_bop ("TADD" , lambda x , y : x + y , prec = True )
401
-
402
390
test_bop ("TSUB" , lambda x , y : x - y , prec = True )
403
391
test_bop ("TSHL" , lambda x , y : x << y , prec = True )
404
392
test_bop ("TASHR" , lambda x , y : x >> y , prec = True )
@@ -408,5 +396,5 @@ def test_uop(name, tf, tf_c=None, prec=False, width=4):
408
396
test_bop ("CONCAT" , lambda x , y : concat_tnum (x , y ), concat_bitvec , prec = True )
409
397
410
398
test_uop ("INV" , lambda x : ~ x , prec = True )
411
- # test_uop("NEG", lambda x: -x, prec=True)
399
+ test_uop ("NEG" , lambda x : - x , prec = True )
412
400
# test_bop("TMUL", lambda x, y: x * y, prec=True)
0 commit comments