projects
/
soc.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
test SVP64 major opcode, start checking if it is EXT001 soon
[soc.git]
/
src
/
soc
/
decoder
/
selectable_int.py
diff --git
a/src/soc/decoder/selectable_int.py
b/src/soc/decoder/selectable_int.py
index 8eabec3ed08597ab5b601beed9e042cd396ddb10..53e85036d444619d94f28e03d6f42de6dfcb8c76 100644
(file)
--- a/
src/soc/decoder/selectable_int.py
+++ b/
src/soc/decoder/selectable_int.py
@@
-114,6
+114,13
@@
class FieldSelectableInt:
def __repr__(self):
return "FieldSelectableInt(si=%s, br=%s)" % (self.si, self.br)
def __repr__(self):
return "FieldSelectableInt(si=%s, br=%s)" % (self.si, self.br)
+ def asint(self, msb0=False):
+ res = 0
+ brlen = len(self.br)
+ for i, key in enumerate(self.br):
+ res |= self.si[key].value << ((brlen-i-1) if msb0 else i)
+ return res
+
class FieldSelectableIntTestCase(unittest.TestCase):
def test_arith(self):
class FieldSelectableIntTestCase(unittest.TestCase):
def test_arith(self):
@@
-270,6
+277,7
@@
class SelectableInt:
def __getitem__(self, key):
if isinstance(key, SelectableInt):
key = key.value
def __getitem__(self, key):
if isinstance(key, SelectableInt):
key = key.value
+ print("getitem", key, self.bits, hex(self.value))
if isinstance(key, int):
assert key < self.bits, "key %d accessing %d" % (key, self.bits)
assert key >= 0
if isinstance(key, int):
assert key < self.bits, "key %d accessing %d" % (key, self.bits)
assert key >= 0
@@
-297,6
+305,7
@@
class SelectableInt:
def __setitem__(self, key, value):
if isinstance(key, SelectableInt):
key = key.value
def __setitem__(self, key, value):
if isinstance(key, SelectableInt):
key = key.value
+ print("setitem", key, self.bits, hex(self.value))
if isinstance(key, int):
assert key < self.bits
assert key >= 0
if isinstance(key, int):
assert key < self.bits
assert key >= 0