Revert "fix setvl. not setting CR0 properly"
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 26 Aug 2022 13:51:16 +0000 (14:51 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 26 Aug 2022 13:51:16 +0000 (14:51 +0100)
This reverts commit f48aefa37b06a398e953ce3bd877d7b2bbfb6213.

the approach of explicitly setting CR0 in pseudocode is not ok.
ISACaller.handle_comparison is the correct place to do it - and
i am not certain that there are special-cases needed (unlike svstep)

openpower/isa/simplev.mdwn
src/openpower/decoder/isa/caller.py

index d3b318ee15d0e7f50d74e29dce62b74c205c8f08..648f43d8e393fc40360fa94b7c0539b33f5f479e 100644 (file)
@@ -30,10 +30,6 @@ Pseudo-code:
         step <- SVSTATE_NEXT(SVi, 0b0)
         if _RT != 0 then
            GPR(_RT) <- [0]*57 || step
-        if Rc = 1 then
-            if step = 0 then c <- 0b001
-            else c <- 0b010
-            CR[32:35] <- c || XER[SO]
     else
         VLimm <- SVi + 1
         # set or get MVL
@@ -41,9 +37,7 @@ Pseudo-code:
         else           MVL <- SVSTATE[0:6]
         # set or get VL
         if vs = 0                then VL <- SVSTATE[7:13]
-        else if _RA != 0         then
-            if (RA) >u 0b1111111 then VL <- 0b1111111
-            else VL <- (RA)[57:63]
+        else if _RA != 0         then VL <- (RA)[57:63]
         else if _RT = 0          then VL <- VLimm[0:6]
         else if CTR >u 0b1111111 then VL <- 0b1111111
         else                          VL <- CTR[57:63]
@@ -58,10 +52,6 @@ Pseudo-code:
             # set requested Vertical-First mode, clear persist
             SVSTATE[63] <- vf
             SVSTATE[62] <- 0b0
-        if Rc = 1 then
-            if VL = 0 then c <- 0b001
-            else c <- 0b010
-            CR[32:35] <- c || XER[SO]
 
 Special Registers Altered:
 
index f3d9d8085115bc0c053116707b37a2cba5e40d6b..854d784994e9516b898d1712f0453fb42023f4b6 100644 (file)
@@ -1435,7 +1435,7 @@ class ISACaller(ISACallerHelper, ISAFPHelpers):
         if not self.is_svp64_mode or not pred_dst_zero:
             if hasattr(self.dec2.e.do, "rc"):
                 rc_en = yield self.dec2.e.do.rc.rc
-        if rc_en and ins_name not in ['svstep', 'setvl']:
+        if rc_en and ins_name not in ['svstep']:
             regnum, is_vec = yield from get_pdecode_cr_out(self.dec2, "CR0")
             self.handle_comparison(results, regnum)