change FPSCR to a required parameter of ISACallerHelper
authorJacob Lifshay <programmerjake@gmail.com>
Wed, 10 May 2023 05:17:49 +0000 (22:17 -0700)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 2 Jun 2023 18:51:18 +0000 (19:51 +0100)
src/openpower/decoder/helpers.py
src/openpower/decoder/isa/caller.py
src/openpower/decoder/isa/test_caller_svp64_dct.py
src/openpower/decoder/isa/test_caller_svp64_fft.py
src/openpower/decoder/isa/test_caller_transcendentals.py

index dacb11186ef8bebdb53ee36949ab3984fed5942d..d36d346ae131cd878d8d6ff0f5562420d9c6abee 100644 (file)
@@ -842,8 +842,11 @@ def log2(val):
 
 
 class ISACallerHelper:
-    def __init__(self, XLEN):
+    def __init__(self, XLEN, FPSCR):
         self.__XLEN = XLEN
+        if FPSCR is None:
+            FPSCR = FPSCRState()
+        self.__FPSCR = FPSCR
 
     @property
     def XLEN(self):
@@ -851,10 +854,7 @@ class ISACallerHelper:
 
     @property
     def FPSCR(self):
-        # fallback for when not used through ISACaller
-        # needed for tests that use DOUBLE2SINGLE without using ISACaller
-        self.__dict__["FPSCR"] = retval = FPSCRState()
-        return retval
+        return self.__FPSCR
 
     def EXTZXL(self, value, bits=None):
         if bits is None:
@@ -943,7 +943,8 @@ class ISACallerHelper:
 
 class HelperTests(unittest.TestCase, ISACallerHelper):
     def __init__(self, *args, **kwargs):
-        ISACallerHelper.__init__(self, 64) # TODO: dynamic (64/32/16/8)
+        # TODO: dynamic (64/32/16/8)
+        ISACallerHelper.__init__(self, 64, FPSCR=None)
         unittest.TestCase.__init__(self, *args, **kwargs)
 
     def test_MASK(self):
index 7e04fbfe63420e28226917e43c6d33b2a1e8b6fa..66205fa7c0710badf1e7eda3ea01001e6e209472 100644 (file)
@@ -1266,7 +1266,7 @@ class ISACaller(ISACallerHelper, ISAFPHelpers, StepLoop):
         self.decoder = decoder2.dec
         self.dec2 = decoder2
 
-        super().__init__(XLEN=self.namespace["XLEN"])
+        super().__init__(XLEN=self.namespace["XLEN"], FPSCR=self.fpscr)
 
     @property
     def XLEN(self):
index 0e3796b47a47a6aa80a8cb718a5684a84992a533..7fc6260c659800bfddcf0e74e31a9b925eff3f00 100644 (file)
@@ -15,7 +15,7 @@ from openpower.sv.trans.svp64 import SVP64Asm
 
 # really bad hack.  need to access the DOUBLE2SINGLE function auto-generated
 # from pseudo-code.
-fph = ISACallerFnHelper(XLEN=64)
+fph = ISACallerFnHelper(XLEN=64, FPSCR=None)
 
 
 def transform_inner_radix2_dct(vec, ctable):
index 649918a0b529a5e1e38a9673e34843ff86130e9e..67a6a4e98d303abaf859a29e7726a78abf26e2a3 100644 (file)
@@ -11,7 +11,7 @@ from openpower.sv.trans.svp64 import SVP64Asm
 
 # really bad hack.  need to access the DOUBLE2SINGLE function auto-generated
 # from pseudo-code.
-fph = ISACallerFnHelper(XLEN=64)
+fph = ISACallerFnHelper(XLEN=64, FPSCR=None)
 
 
 def transform_radix2(vec, exptable, reverse=False):
index 306ab1f62f5874a4ad58af5d1f84f9eeb9aa8e6d..3571c1b060e890a636898b9cf05377fd087a213f 100644 (file)
@@ -11,7 +11,7 @@ from openpower.sv.trans.svp64 import SVP64Asm
 
 # really bad hack.  need to access the DOUBLE2SINGLE function auto-generated
 # from pseudo-code.
-fph = ISACallerFnHelper(XLEN=64)
+fph = ISACallerFnHelper(XLEN=64, FPSCR=None)
 
 
 class FPTranscendentalsTestCase(FHDLTestCase):