change minmax CR0 to be a compared with b, not the result compared with 0
authorJacob Lifshay <programmerjake@gmail.com>
Fri, 21 Apr 2023 01:06:06 +0000 (18:06 -0700)
committerJacob Lifshay <programmerjake@gmail.com>
Fri, 21 Apr 2023 01:06:47 +0000 (18:06 -0700)
See: https://bugs.libre-soc.org/show_bug.cgi?id=915

openpower/sv/rfc/ls013.mdwn

index 551e4c3ab27a37db8ced4878cda2787c27361ad1..e6e77bd7146459c42996450f18225ab77db41dba 100644 (file)
@@ -250,8 +250,16 @@ semantics therefore Saturated variants of these instructions need not be propose
         a <- b
         b <- t
     # store the entire selected source (even in word mode)
-    if a <u b then RT <- (RA|0)
-    else           RT <- (RB)
+    # if Rc = 1 then store the result of comparing a and b to CR0
+    if a <u b then
+        RT <- (RA|0)
+        if Rc = 1 then CR0 <- 0b100 || XER.SO
+    if a = b then
+        RT <- (RB)
+        if Rc = 1 then CR0 <- 0b001 || XER.SO
+    if a >u b then
+        RT <- (RB)
+        if Rc = 1 then CR0 <- 0b010 || XER.SO
 ```
 
 Compute the integer minimum/maximum according to `MMM` of `(RA|0)` and `(RB)`