[Libre-soc-bugs] [Bug 325] create POWER9 TRAP pipeline

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Fri Jul 24 10:25:26 BST 2020


https://bugs.libre-soc.org/show_bug.cgi?id=325

--- Comment #126 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
i will commit this shortly.  do you note two things:

1) comments are added which "explain why".  removing comments is detrimental
   to communication and code maintenance.

2) is it now clear what i said: that the python slice numbering has to
   be LHS < RHS?  in each and every case (including TEs and TEe but
   now where field_slice is used 30, 31 you've *introduced* a bug)
   the BE indexing "LHS small number, RHS large number" is ***INVERTED***
   by the subtraction from 63.

with that commit (which i will do in a minute) you should now find bugs
and python exceptions come up when running the proof and the trap unit test
test_pipe_caller.py, which i will leave for you to fix.


diff --git a/src/soc/consts.py b/src/soc/consts.py
index fe29743e..8ed63eab 100644
--- a/src/soc/consts.py
+++ b/src/soc/consts.py
@@ -13,12 +13,15 @@ def field_slice(start, end):
     where the start and end bits use IBM conventions.  start < end.
     The range specified is inclusive on both ends.
     """
+    start = 63 - start
+    end = 63 - end
+    # XXX must do the endian-reversing BEFORE doing the comparison
+    # if done after, that instead asserts that (after modification)
+    # start *MUST* be greater than end!
     if start >= end:
         raise ValueError(
             "start ({}) must be less than end ({})".format(start, end)
         )
-    start = 63 - start
-    end = 63 - end
     return slice(end, start + 1)

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list