# Rotate Left Word Immediate then AND with Mask M-Form * rlwinm RA,RS,SH,MB,ME (Rc=0) * rlwinm. RA,RS,SH,MB,ME (Rc=1) Pseudo-code: n <- SH r <- ROTL32((RS)[32:63], n) m <- MASK(MB+32, ME+32) RA <- r & m Special Registers Altered: CR0 (if Rc=1) # Rotate Left Word then AND with Mask M-Form * rlwnm RA,RS,RB,MB,ME (Rc=0) * rlwnm. RA,RS,RB,MB,ME (Rc=1) Pseudo-code: n <- (RB)[59:63] r <- ROTL32((RS)[32:63], n) m <- MASK(MB+32, ME+32) RA <- r & m Special Registers Altered: CR0 (if Rc=1) # Rotate Left Word Immediate then Mask Insert M-Form * rlwimi RA,RS,SH,MB,ME (Rc=0) * rlwimi. RA,RS,SH,MB,ME (Rc=1) Pseudo-code: n <- SH r <- ROTL32((RS)[32:63], n) m <- MASK(MB+32, ME+32) RA <- r&m | (RA) & ¬m Special Registers Altered: CR0 (if Rc=1) # Rotate Left Doubleword Immediate then Clear Left MD-Form * rldicl RA,RS,SH,MB (Rc=0) * rldicl. RA,RS,SH,MB (Rc=1) Pseudo-code: n <- sh r <- ROTL64((RS), n) b <- mb[5] || mb[0:4] m <- MASK(b, 63) RA <- r & m Special Registers Altered: CR0 (if Rc=1) # Rotate Left Doubleword Immediate then Clear Right MD-Form * rldicr RA,RS,SH,ME (Rc=0) * rldicr. RA,RS,SH,ME (Rc=1) Pseudo-code: n <- sh r <- ROTL64((RS), n) e <- me[5] || me[0:4] m <- MASK(0, e) RA <- r & m Special Registers Altered: CR0 (if Rc=1) # Rotate Left Doubleword Immediate then Clear MD-Form * rldic RA,RS,SH,MB (Rc=0) * rldic. RA,RS,SH,MB (Rc=1) Pseudo-code: n <- sh r <- ROTL64((RS), n) b <- mb[5] || mb[0:4] m <- MASK(b, ¬n) RA <- r & m Special Registers Altered: CR0 (if Rc=1) # Rotate Left Doubleword then Clear Left MDS-Form * rldcl RA,RS,RB,MB (Rc=0) * rldcl. RA,RS,RB,MB (Rc=1) Pseudo-code: n <- (RB)[58:63] r <- ROTL64((RS), n) b <- mb[5] || mb[0:4] m <- MASK(b, 63) RA <- r & m Special Registers Altered: CR0 (if Rc=1) # Rotate Left Doubleword then Clear Right MDS-Form * rldcr RA,RS,RB,ME (Rc=0) * rldcr. RA,RS,RB,ME (Rc=1) Pseudo-code: n <- (RB)[58:63] r <- ROTL64((RS), n) e <- me[5] || me[0:4] m <- MASK(0, e) RA <- r & m Special Registers Altered: CR0 (if Rc=1) # Rotate Left Doubleword Immediate then Mask Insert MD-Form * rldimi RA,RS,SH,MB (Rc=0) * rldimi. RA,RS,SH,MB (Rc=1) Pseudo-code: n <- sh r <- ROTL64((RS), n) b <- mb[5] || mb[0:4] m <- MASK(b, ¬n) RA <- r&m | (RA)& ¬m Special Registers Altered: CR0 (if Rc=1) # Shift Left Word X-Form * slw RA,RS,RB (Rc=0) * slw. RA,RS,RB (Rc=1) Pseudo-code: n <- (RB)[59:63] r <- ROTL32((RS)[32:63], n) if (RB)[58] = 0 then m <- MASK(32, 63-n) else m <- [0]*64 RA <- r & m Special Registers Altered: CR0 (if Rc=1) # Shift Right Word X-Form * srw RA,RS,RB (Rc=0) * srw. RA,RS,RB (Rc=1) Pseudo-code: n <- (RB)[59:63] r <- ROTL32((RS)[32:63], 64-n) if (RB)[58] = 0 then m <- MASK(n+32, 63) else m <- [0]*64 RA <- r & m Special Registers Altered: CR0 (if Rc=1) # Shift Right Algebraic Word Immediate X-Form * srawi RA,RS,SH (Rc=0) * srawi. RA,RS,SH (Rc=1) Pseudo-code: n <- SH r <- ROTL32((RS)[32:63], 64-n) m <- MASK(n+32, 63) s <- (RS)[32] RA <- r&m | ([s]*64)& ¬m carry <- s & ((r&¬m)[32:63] != 0) CA <- carry CA32 <- carry Special Registers Altered: CA CA32 CR0 (if Rc=1) # Shift Right Algebraic Word X-Form * sraw RA,RS,RB (Rc=0) * sraw. RA,RS,RB (Rc=1) Pseudo-code: n <- (RB)[59:63] r <- ROTL32((RS)[32:63], 64-n) if (RB)[58] = 0 then m <- MASK(n+32, 63) else m <- [0]*64 s <- (RS)[32] RA <- r&m | ([s]*64)& ¬m carry <- s & ((r&¬m)[32:63] != 0) CA <- carry CA32 <- carry Special Registers Altered: CA CA32 CR0 (if Rc=1) # Shift Left Doubleword X-Form * sld RA,RS,RB (Rc=0) * sld. RA,RS,RB (Rc=1) Pseudo-code: n <- (RB)[58:63] r <- ROTL64((RS), n) if (RB)[57] = 0 then m <- MASK(0, 63-n) else m <- [0]*64 RA <- r & m Special Registers Altered: CR0 (if Rc=1) # Shift Right Doubleword X-Form * srd RA,RS,RB (Rc=0) * srd. RA,RS,RB (Rc=1) Pseudo-code: n <- (RB)[58:63] r <- ROTL64((RS), 64-n) if (RB)[57] = 0 then m <- MASK(n, 63) else m <- [0]*64 RA <- r & m Special Registers Altered: CR0 (if Rc=1) # Shift Right Algebraic Doubleword Immediate XS-Form * sradi RA,RS,SH (Rc=0) * sradi. RA,RS,SH (Rc=1) Pseudo-code: n <- sh r <- ROTL64((RS), 64-n) m <- MASK(n, 63) s <- (RS)[0] RA <- r&m | ([s]*64)& ¬m carry <- s & ((r& ¬m) != 0) CA <- carry CA32 <- carry Special Registers Altered: CA CA32 CR0 (if Rc=1) # Shift Right Algebraic Doubleword X-Form * srad RA,RS,RB (Rc=0) * srad. RA,RS,RB (Rc=1) Pseudo-code: n <- (RB)[58:63] r <- ROTL64((RS), 64-n) if (RB)[57] = 0 then m <- MASK(n, 63) else m <- [0]*64 s <- (RS)[0] RA <- r&m | ([s]*64)& ¬m carry <- s & ((r&¬m) != 0) CA <- carry CA32 <- carry Special Registers Altered: CA CA32 CR0 (if Rc=1) # Extend-Sign Word and Shift Left Immediate XS-Form * extswsli RA,RS,SH (Rc=0) * extswsli. RA,RS,SH (Rc=1) Pseudo-code: n <- sh r <- ROTL64(EXTS64(RS[32:63]), n) m <- MASK(0, 63-n) RA <- r & m Special Registers Altered: CR0 (if Rc=1)