projects
/
soc.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
0b49807
)
Add tests for EXTS64, fix EXTS64
author
Michael Nolan
<mtnolan2640@gmail.com>
Mon, 30 Mar 2020 23:45:31 +0000
(19:45 -0400)
committer
Michael Nolan
<mtnolan2640@gmail.com>
Mon, 30 Mar 2020 23:45:31 +0000
(19:45 -0400)
src/soc/decoder/helpers.py
patch
|
blob
|
history
diff --git
a/src/soc/decoder/helpers.py
b/src/soc/decoder/helpers.py
index db17c5bc9172a39d45f091f9507c0dceae72d1fa..849328d6543fb132711b24f6315ddda5df99a5ee 100644
(file)
--- a/
src/soc/decoder/helpers.py
+++ b/
src/soc/decoder/helpers.py
@@
-1,10
+1,10
@@
import unittest
def exts(value, bits):
sign = 1 << (bits - 1)
import unittest
def exts(value, bits):
sign = 1 << (bits - 1)
- return (value
* (sign - 1)) - (value *
sign)
+ return (value
& (sign - 1)) - (value &
sign)
def EXTS64(value):
def EXTS64(value):
- return exts(value,
64
) & ((1<<64)-1)
+ return exts(value,
32
) & ((1<<64)-1)
def rotl(value, bits, wordlen):
mask = (1 << wordlen) - 1
def rotl(value, bits, wordlen):
mask = (1 << wordlen) - 1
@@
-70,6
+70,17
@@
class HelperTests(unittest.TestCase):
self.assertHex(ROTL32(value, 17), 0x7ddfbd5b)
self.assertHex(ROTL32(value, 25), 0xdfbd5b7d)
self.assertHex(ROTL32(value, 30), 0xf7ab6fbb)
self.assertHex(ROTL32(value, 17), 0x7ddfbd5b)
self.assertHex(ROTL32(value, 25), 0xdfbd5b7d)
self.assertHex(ROTL32(value, 30), 0xf7ab6fbb)
+
+ def test_EXTS64(self):
+ value_a = 0xdeadbeef # r1
+ value_b = 0x73123456 # r2
+ value_c = 0x80000000 # r3
+
+ self.assertHex(EXTS64(value_a), 0xffffffffdeadbeef)
+ self.assertHex(EXTS64(value_b), value_b)
+ self.assertHex(EXTS64(value_c), 0xffffffff80000000)
+
+
def assertHex(self, a, b):
msg = "{:x} != {:x}".format(a, b)
def assertHex(self, a, b):
msg = "{:x} != {:x}".format(a, b)