add special register sections
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 30 Mar 2020 17:59:25 +0000 (18:59 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Mon, 30 Mar 2020 17:59:25 +0000 (18:59 +0100)
openpower/isa/fixedarith.mdwn

index fb17b836c61b64fbaae1f370f747c602ae8da787..c016db358032b4de2bce437f60bd895cda0fda40 100644 (file)
@@ -7,6 +7,9 @@ D-Form
     if RA = 0 then RT <- EXTS(SI)
     else           RT <- (RA) + EXTS(SI)
 
+Special Registers Altered:
+    None
+
 # Add Immediate Shifted
 
 D-Form
@@ -16,6 +19,9 @@ D-Form
     if RA = 0 then RT <- EXTS(SI || 160)
     else           RT <- (RA) + EXTS(SI || [0]*16)
 
+Special Registers Altered:
+    None
+
 # Add PC Immediate Shifted
 
 DX-Form
@@ -25,6 +31,8 @@ DX-Form
     D <- d0||d1||d2
     RT <- NIA + EXTS(D || [0]*16)
 
+Special Registers Altered:
+    None
 
 # Add
 
@@ -37,6 +45,10 @@ XO-Form
 
     RT <- (RA) + (RB)
 
+Special Registers Altered:
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Subtract From
 
 XO-Form
@@ -48,6 +60,10 @@ XO-Form
 
     RT <- ¬(RA) + (RB) + 1
 
+Special Registers Altered:
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Add Immediate Carrying
 
 D-Form
@@ -56,6 +72,9 @@ D-Form
 
     RT <- (RA) + EXTS(SI)
 
+Special Registers Altered:
+    CA CA32
+
 # Add Immediate Carrying and Record
 
 D-Form
@@ -64,6 +83,9 @@ D-Form
 
     RT <- (RA) + EXTS(SI)
 
+Special Registers Altered:
+    CR0 CA CA32
+
 # Subtract From Immediate Carrying
 
 D-Form
@@ -72,6 +94,9 @@ D-Form
 
     RT <- ¬(RA) + EXTS(SI) + 1
 
+Special Registers Altered:
+    CA CA32
+
 # Add Carrying
 
 XO-Form
@@ -83,6 +108,11 @@ XO-Form
 
     RT <- (RA) + (RB)
 
+Special Registers Altered:
+    CA CA32
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Subtract From Carrying
 
 XO-Form
@@ -94,6 +124,11 @@ XO-Form
 
     RT <- ¬(RA) + (RB) + 1
 
+Special Registers Altered:
+    CA CA32
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Add Extended
 
 XO-Form
@@ -105,6 +140,11 @@ XO-Form
 
     RT <- (RA) + (RB) + CA
 
+Special Registers Altered:
+    CA CA32
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Subtract From Extended
 
 XO-Form
@@ -116,6 +156,11 @@ XO-Form
 
     RT <- ¬(RA) + (RB) + CA
 
+Special Registers Altered:
+    CA CA32
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Add to Minus One Extended
 
 XO-Form
@@ -127,6 +172,11 @@ XO-Form
 
     RT <- (RA) + CA - 1
 
+Special Registers Altered:
+    CA CA32
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Subtract From Minus One Extended
 
 XO-Form
@@ -138,6 +188,11 @@ XO-Form
 
     RT <- ¬(RA) + CA - 1
 
+Special Registers Altered:
+    CA CA32
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Add Extended using alternate carry bit
 
 Z23-Form
@@ -146,6 +201,9 @@ Z23-Form
 
     if CY=0 then RT <- (RA) + (RB) + OV
 
+Special Registers Altered:
+    OV OV32                (if CY=0 )
+
 # Subtract From Zero Extended
 
 XO-form
@@ -157,6 +215,11 @@ XO-form
 
     RT <- ¬(RA) + CA
 
+Special Registers Altered:
+    CA CA32
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Add to Zero Extended
 
 XO-form
@@ -168,6 +231,11 @@ XO-form
 
     RT <- (RA) + CA
 
+Special Registers Altered:
+    CA CA32
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Negate
 
 XO-form
@@ -179,6 +247,10 @@ XO-form
 
 RT <- ¬(RA) + 1
 
+Special Registers Altered:
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Multiply Low Immediate
 
 D-form
@@ -188,6 +260,9 @@ D-form
     prod[0:127] <- (RA) * EXTS(SI)
     RT <- prod[64:127]
 
+Special Registers Altered:
+    None
+
 # Multiply High Word
 
 XO-form
@@ -199,6 +274,9 @@ XO-form
     RT[32:63] <- prod[0:31]
     RT[0:31] <- undefined
 
+Special Registers Altered:
+    CR0 (bits 0:2 undefined in 64-bit mode) (if Rc=1)
+
 # Multiply Low Word
 
 XO-form
@@ -210,6 +288,10 @@ XO-form
 
     RT <- (RA)[32:63] * (RB)[32:63]
 
+Special Registers Altered:
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Multiply High Word Unsigned
 
 XO-form
@@ -221,6 +303,9 @@ XO-form
     RT[32:63] <- prod[0:31]
     RT[0:31] <- undefined
 
+Special Registers Altered:
+    CR0 (bits 0:2 undefined in 64-bit mode) (if Rc=1)
+
 # Divide Word
 
 XO-form
@@ -235,6 +320,10 @@ XO-form
     RT[32:63] <- dividend / divisor
     RT[0:31] <- undefined
 
+Special Registers Altered:
+    CR0 (bits 0:2 undefined in 64-bit mode) (if Rc=1)
+    SO OV OV32                              (if OE=1)
+
 # Divide Word Unsigned
 
 XO-form
@@ -249,6 +338,10 @@ XO-form
     RT[32:63] <-  dividend / divisor
     RT[0:31] <- undefined
 
+Special Registers Altered:
+    CR0 (bits 0:2 undefined in 64-bit mode) (if Rc=1)
+    SO OV OV32                              (if OE=1)
+
 # Divide Word Extended
 
 XO-form
@@ -263,6 +356,10 @@ XO-form
     RT[32:63] <- dividend /  divisor
     RT[0:31] <- undefined
 
+Special Registers Altered:
+    CR0 (bits 0:2 undefined in 64-bit mode) (if Rc=1)
+    SO OV OV32                              (if OE=1)
+
 # Divide Word Extended Unsigned
 
 XO-form
@@ -277,7 +374,11 @@ XO-form
     RT[32:63] <- dividend / divisor
     RT[0:31] <- undefined
 
-# Modulo Signed Word X-form
+Special Registers Altered:
+    CR0 (bits 0:2 undefined in 64-bit mode) (if Rc=1)
+    SO OV OV32                              (if OE=1)
+
+# Modulo Signed Word
 
 X-form
 
@@ -288,7 +389,10 @@ X-form
     RT[32:63] <- dividend % divisor
     RT[0:31 ] <- undefined
 
-# Modulo Unsigned Word X-form
+Special Registers Altered:
+   None
+
+# Modulo Unsigned Word
 
 X-form
 
@@ -299,6 +403,8 @@ X-form
     RT[32:63] <- dividend % divisor
     RT[0:31 ] <- undefined
 
+Special Registers Altered:
+   None
 
 # Deliver A Random Number
 
@@ -308,6 +414,9 @@ X-form
 
     RT <- random(L)
 
+Special Registers Altered:
+    none
+
 # Multiply Low Doubleword
 
 XO-form
@@ -320,6 +429,10 @@ XO-form
     prod[0:127] <- (RA) * (RB)
     RT <- prod[64:127]
 
+Special Registers Altered:
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Multiply High Doubleword
 
 XO-form
@@ -330,6 +443,9 @@ XO-form
     prod[0:127] <- (RA) *  (RB)
     RT <- prod[0:63]
 
+Special Registers Altered:
+    CR0                     (if Rc=1)
+
 # Multiply High Doubleword Unsigned
 
 XO-form
@@ -340,6 +456,9 @@ XO-form
     prod[0:127] <- (RA) *  (RB)
     RT <- prod[0:63]
 
+Special Registers Altered:
+    CR0                    (if Rc=1)
+
 # Multiply-Add High Doubleword VA-form
 
 VA-form
@@ -350,6 +469,9 @@ VA-form
     sum[0:127] <- prod + EXTS(RC)
     RT <- sum[0:63]
 
+Special Registers Altered:
+   None
+
 # Multiply-Add High Doubleword Unsigned
 
 VA-form
@@ -360,6 +482,9 @@ VA-form
     sum[0:127] <- prod + EXTZ(RC)
     RT <- sum[0:63]
 
+Special Registers Altered:
+   None
+
 # Multiply-Add Low Doubleword
 
 VA-form
@@ -371,6 +496,9 @@ VA-form
     sum[0:127] <- prod + EXTS(RC)
     RT <- sum[64:127]
 
+Special Registers Altered:
+   None
+
 # Divide Doubleword
 
 XO-form
@@ -384,6 +512,10 @@ XO-form
     divisor[0:63] <- (RB)
     RT <- dividend / divisor
 
+Special Registers Altered:
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Divide Doubleword Unsigned
 
 XO-form
@@ -397,6 +529,10 @@ XO-form
     divisor[0:63] <- (RB)
     RT <- dividend / divisor
 
+Special Registers Altered:
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Divide Doubleword Extended
 
 XO-form
@@ -410,6 +546,10 @@ XO-form
     divisor[0:63] <- (RB)
     RT <- dividend / divisor
 
+Special Registers Altered:
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Divide Doubleword Extended Unsigned
 
 XO-form
@@ -423,6 +563,10 @@ XO-form
     divisor[0:63] <- (RB)
     RT <- dividend / divisor
 
+Special Registers Altered:
+    CR0                     (if Rc=1)
+    SO OV OV32             (if OE=1)
+
 # Modulo Signed Doubleword
 
 X-form
@@ -433,6 +577,9 @@ X-form
     divisor  <- (RB)
     RT       <- dividend % divisor
 
+Special Registers Altered:
+   None
+
 # Modulo Unsigned Doubleword
 
 X-form
@@ -443,3 +590,6 @@ X-form
     divisor  <- (RB)
     RT       <- dividend % divisor
 
+Special Registers Altered:
+   None
+