From 18fae8fbc9b38b80522efd5165ddebb97521326a Mon Sep 17 00:00:00 2001 From: Luke Kenneth Casson Leighton Date: Mon, 30 Mar 2020 18:59:25 +0100 Subject: [PATCH] add special register sections --- openpower/isa/fixedarith.mdwn | 154 +++++++++++++++++++++++++++++++++- 1 file changed, 152 insertions(+), 2 deletions(-) diff --git a/openpower/isa/fixedarith.mdwn b/openpower/isa/fixedarith.mdwn index fb17b836c..c016db358 100644 --- a/openpower/isa/fixedarith.mdwn +++ b/openpower/isa/fixedarith.mdwn @@ -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 + -- 2.30.2