test SVP64 major opcode, start checking if it is EXT001 soon
[soc.git] / src / soc / decoder / selectable_int.py
index 8eabec3ed08597ab5b601beed9e042cd396ddb10..53e85036d444619d94f28e03d6f42de6dfcb8c76 100644 (file)
@@ -114,6 +114,13 @@ class FieldSelectableInt:
     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):
@@ -270,6 +277,7 @@ class SelectableInt:
     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
@@ -297,6 +305,7 @@ class SelectableInt:
     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