def rotate_right(value, n): if isinstance(value, intbv): size = value._nrbits val = value._val elif isinstance(value, _Signal) and isinstance(value._val, intbv): size = value._nrbits if isinstance(value._val, intbv): val = value._val._val else: val = value._val else: raise TypeError("rotate_right: inappropriate first argument type: %s" % type(value)) if isinstance(n, intbv): nVal = n._val elif isinstance(n, integer_types): nVal = n elif isinstance(n, _Signal): if isinstance(n._val, intbv): nVal = n._val._val else: nVal = n._val elif isinstance(n, str): nVal = long(base, 2) else: raise TypeError("rotate_right: inappropriate second argument type: %s" % type(value)) mid = nVal return concat(val[mid:0], val[size:mid])
def ConcatToUnsizedBase(self, bases, extslist): for base, basestr in zip(bases, self.bases): for exts, extstr in zip(extslist, self.extslist): bv = concat(base, *exts) refstr = basestr + reduce(operator.add, extstr) ref = long(refstr, 2) self.assertEqual(bv, ref) self.assertEqual(len(bv), 0)
def ConcatToUnsizedBase(self, bases, extslist): for base, basestr in zip(bases, self.bases): for exts, extstr in zip(extslist, self.extslist): bv = concat(base, *exts) refstr = basestr + reduce(operator.add, extstr) ref = long(refstr, 2) assert bv == ref assert len(bv) == 0
def testUnsizedConcat(self): a = intbv(4) b = intbv(5) with pytest.raises(TypeError): concat(a, b)
def testWrongType(self): a = intbv(4) with pytest.raises(TypeError): concat(a, 5)