603e Instructions
Last updated: 4 December 1997
Important: This is not 'simplified mnemonic' used in this doc, so when you see instructions don't panic :))
Index: Integer Instructions
Interger Arithmetic Instructions
Interger Compare Instructions
Integer Logical Instructions
Integer Rotate Instructions
Integer Shift Instructions
Integer Load Instructions
Integer Store Instructions
Integer Load and Store with Byte-Reverse Instructions
Integer Load and Store Multiple Instructions
Integer Load and Store String Instructions
Floating-Point Instructions
Floating-Point Arithmetic Instructions
Floating-Point Multiply-Add Instructions
Floating-Point Rounding and Conversion Instructions
Floating-Point Compare Instructions
Floating-Point Status and Control Register Instructions
Floating-Point Move Instructtions
Floating-Point Load Instructions
Floating-Point Store Instructions
Branch and Flow Control Instructions
Branch Instructions
Condition Register Logical Instructions
Some Others :)
Trap Instructions
Move to/from Condition Register Intstructions
Memory Synchronisation Instructions
VEA Instructions
Processor Control Instructions
Memory Synchronisation Instructions
User-Level Cache Instructions
External Control Instructions
OEA Instructions
System Linkage Instructions
Move to/from Machine State Register Instructions
Move to/from Special-Purpose Register Instructions
Memory Control Instructions
System linkage instructions
Segment Register Manipulation Instructions
Translation lookaside Buffer Management Instructions
Integer Arithmetic Instructions
Name Mnemonic Operand Syntax
Add immediate addi rD,rA,SIMM
Add immediate Shifted addis rD,rA,SIMM
Add add (add. addo addo.) rD,rA,rB
Sub from subf (subf. subfo subfo.) rD,rA,rB
Add Immediate Carrying addic rD,rA,SIMM
Add Immediate Carrying & Record addic. rD,rA,SIMM
Sub from Immediate Carrying subfic rD,rA,SIMM
Add Carrying addc (addc. addco addco.) rD,rA,rB
Sub from Carrying subfc (subfc. subfco subfco.) rD,rA,rB
Add Extended adde (adde. addeo addeo.) rD,rA,rB
Sub from Extended subfe (subfe. subfeo subfeo.) rD,rA,rB
Add to Minus One Extended addme (addme. addmeo addmeo.) rD,rA
Sub from Minus One Extended subfme (subfme. subfmeo subfmeo.) rD,rA
Add to Zero Extended addze (addze. addzeo addzeo.) rD,rA
Sub from Zero Extended subfze (subfze subfzeo subfzeo.) rD,rA
Negate neg (neg. nego nego.) rD,rA
Multiply Low Immediate mulli rD,rA,SIMM
Multiply Low mullw (mullw. mullwo mullwo.) rD,rA,rB
Multiply High Word mulhw (mulhw.) rD,rA,rB
Multiply High Word Unsigned mulhwu (mulhwu.) rD,rA,rB
Divide Word divw (divw. divwo divwo.) rD,rA,rB
Divide Word Unsigned divwu (divwu. divwuo divwuo.) rD,rA,rB
Integer Compare Instructions
Name Mnemonic Operand Syntax
Compare Immediate cmpi crfD,L,rA,SIMM
Compare cmp crfD,L,rA,rB
Compare Logical Immediate cmpli crfD,L,rA,UIMM
Compare Logical cmpl crfD,L,rA,rB
Integer Logical Instructions
Name Mnemonic Operand Syntax
AND Immediate andi. rA,rS,UIMM
AND Immediate Shifted andis. rA,rS,UIMM
OR Immediate ori rA,rS,UIMM
OR Immediate Shifted oris rA,rS,UIMM
XOR Immediate xori rA,rS,UIMM
XOR Immediate Shifted xoris rA,rS,UIMM
AND and (and.) rA,rS,rB
OR or (or.) rA,rS,rB
XOR xor (xor.) rA,rS,rB
NAND nand (nand.) rA,rS,rB
NOR nor (nor.) rA,rS,rB
Equivalent eqv (eqv.) rA,rS,rB
AND with Complement andc (andc.) rA,rS,rB
OR with Complement orc (orc.) rA,rS,rB
Extend Sign Byte extsb (extsb.) rA,rS
Extend Sign Half Word extsh (extsh.) rA,rS
Count Leading Zeros Word cntlzw (cntlzw.) rA,rS
Integer Rotate Instructions
NOTE: R='Rotate Left Word'
Name Mnemonic Operand Syntax
R Immediate then AND with Mask rlwinm (rlwinm.) rA,rS,SH,MB,ME
R then AND with Mask rlwnm (rlwnm.) rA,rS,rB,MB,ME
R Immediate the Mask Insert rlwimi (rlwimi.) rA,rS,rB,MB,ME
Integer Shift Instructions
NOTE: SR='Shift Right'
Name Mnemonic Operand Syntax
Shift Left Word slw (slw.) rA,rS,rB
SR Word srw (srw.) rA,rS,rB
SR Algebraic Word Immediate srawi (srawi.) rA,rS,SH
SR Algebraic Word sraw (sraw.) rA,rS,rB
Integer Load Instructions
Name Mnemonic Operand Syntax
Load Byte and Zero lbz rD,d(rA)
Load Byte and Zero Indexed lbzx rD,rA,rB
Load Byte and Zero Update lbzu rD,d(rA)
Load Byte and Zero Update Indexed lbzux rD,rA,rB
Load Half Word and Zero lhz rD,d(rA)
Load Half Word and Zero Indexed lhzx rD,rA,rB
Load Half Word and Zero Update lhzu rD,d(rA)
Load Half Word and Zero Update Indexed lhzux rD,rA,rB
Load Half Word Algebraic lha rD,d(rA)
Load Half Word Algebraic Indexed lhax rD,rA,rB
Load Half Word Algebraic with Update lhau rD,d(rA)
Load Half Word Algebraic with Update Indexed lhaux rD,rA,rB
Load Word and Zero lwz rD,d(rA)
Load Word and Zero Indexed lwzx rD,rA,rB
Load Word and Zero Update lwzu rD,d(rA)
Load Word and Zero Update Indexed lwzux rD,rA,rB
Integer Store Instructions
Name Mnemonic Operand Syntax
Store Byte stb rS,d(rA)
Store Byte Indexed stbx rS,rA,rB
Store Byte with Update stbu rS,d(rA)
Store Byte with Update Indexed stbux rS,rA,rB
Store Half Word sth rS,d(rA)
Store Half Word Indexed sthx rS,rA,rB
Store Half Word with Update sthu rS,d(rA)
Store Half Word with Update Indexed sthux rS,rA,rB
Store Word stw rS,d(rA)
Store Word Indexed stwx rS,rA,rB
Store Word with Update stwu rS,d(rA)
Store Word with Update Indexed stwux rS,rA,rB
Integer Load and Store with Byte-Reverse Instructions
Name Mnemonic Operand Syntax
Load Half Word Byte-Reverse Indexed lhbrx rD,rA,rB
Load Word Byte-Reverse Indexed lwbrx rD,rA,rB
Store Half Word Byte-Reverse Indexed shbrx rS,rA,rB
Sotre Word Byte-Reverse Indexed swbrx rS,rA,rB
Integer Load and Store Multiple Instructions
Name Mnemonic Operand Syntax
Load Multiple Word lmw rD,d(rA)
Store Multiple Word stmw rS,d(rA)
Integer Load and Store String Instructions
Name Mnemonic Operand Syntax
Load String Word Immediate lswi rD,rA,NB
Load Sting Word Indexed lswx rD,rA,rB
Store String Word Immediate stswi rS,rA,NB
Store Sting Word Indexed stswx rS,rA,rB
Floating Point Arithmetic Instructions
Name Mnemonic Operand Syntax
Add (Double Precision) fadd (fadd.) frD,frA,frB
Add Single fadds (fadds.) frD,frA,frB
Subtract (Double Precision) fsub (fsub.) frD,frA,frB
Subtract Single fsubs (fsubs.) frD,frA,frB
Multiply (Double Precision) fmul (fmul.) frD,frA,frC
Multiply Single fmuls (fmuls.) frD,frA,frC
Divide (Double Precision) fdiv (fdiv.) frD,frA,frB
Divide Single fdivs (fdivs.) frD,frA,frB
Reciprocal Estimate Single fres (fres.) frD,frB
Reciprocal Square Root Estimate frsqrte (frsqte.) frD,frB
Select fsel (fsel.) frD,frA,frC,frB
Floating Point Multiply-Add Instructions
Name Mnemonic Operand Syntax
Multiply-Add (Double Precision) fmadd (fmadd.) frD,frA,frC,frB
Multiply-Add Single fmadds (fmadds.) frD,frA,frC,frB
Multiply-Sub (Double Precision) fmsub (fmsub.) frD,frA,frC,frB
Multiply-Sub Single fmsubs (fmsubs.) frD,frA,frC,frB
Negative Mul-Add (Double) fnmadd (fnmadd.) frD,frA,frC,frB
Negative Mul-Add Single fnmadds (fnmadds.) frD,frA,frC,frB
Negative Mul-Sub (Double) fnmsub (fnmsub.) frD,frA,frC,frB
Negative Mul-Sub Single fnmsubs (fnmsubs.) frD,frA,frC,frB
Floating Point Rounding and Conversion Instructions
Note: CIW='Convert to Integer Word'
Name Mnemonic Operand Syntax
Round to Single-Precision frsp (frsp.) frD,frB
CIW fctiw (fctiw.) frD,frB
CIW with Round toward Zero fctiwz (fctiwz.) frD,frB
Floating Point Compare Instructions
Name Mnemonic Operand Syntax
Compare Unordered fcmpu crfD,frA,frB
Compare Ordered fcmpo crfD,frA,frB
Floating Point Status and Control Register Instructions
Name Mnemonic Operand Syntax
Move from FPSCR mffs (mffs.) frD
Move to Condition Register from FPSCR mcrfs crfD,crfS
Move to FPSCR Field Immediate mtfsfi (mtfsfi.) crfD,IMM
Move to FPSCR Field mtfsf (mtfsf.) FM,frB
Move to FPSCR bit 0 mtfsb0 (mtfsb0.) crbD
Move to FPSCR Bit 1 mtfsb1 (mtfsb1.) crbD
Floating Point Move Instructions
Name Mnemonic Operand Syntax
Move Register fmr (fmr.) frD,frB
Negate fneg (fneg.) frD,frB
Absolute Value fabs (fabs.) frD,frB
Negative Absolute Value fnabs (fnabs.) frD,frB
Floating-Point Load Instructions
Name Mnemonic Operand Syntax
Load FloatingPoint Single lfs frD,d(rA)
Load FloatingPoint Single Indexed lfsx frD,rA,rB
Load FloatingPoint Single with Update lfsu frD,d(rA)
Load FloatingPoint Single with Update Indexed lfsux frD,rA,rB
Load FloatingPoint Double lfd frD,d(rA)
Load FloatingPoint Double Indexed lfdx frD,rA,rB
Load FloatingPoint Double with Update lfdu frD,d(rA)
Load FloatingPoint Double with Update Indexed lfdux frD,rA,rB
Floating-Point Store Instructions
Name Mnemonic Operand Syntax
Store FloatingPoint Single stfs frS,d(rA)
Store FloatingPoint Single Indexed stfsx frS,rA,rB
Store FloatingPoint Single with Update stfsu frS,d(rA)
Store FloatingPoint Single with Update Indexed stfsux frS,rA,rB
Store FloatingPoint Double stfd frS,d(rA)
Store FloatingPoint Double Indexed stfdx frS,rA,rB
Store FloatingPoint Double with Update stfdu frS,d(rA)
Store FloatingPoint Double with Update Indexed stfdux frS,rA,rB
Store FloatingPoint as Interger Word Indexed stfiwx frS,rA,rB
Branch Instructions
Name Mnemonic Operand Syntax
Branch b (ba bl bla) target addr
Branch Conditional bc (bca bcl bcla) BO,Bl,target addr
Branch Conditional to Link Reg bclr (bclrl) BO,Bl
Branch Conditional to Count Reg bcctr (bcctrl) BO,Bl
Condition Register Logical Instructions
Name Mnemonic Operand Syntax
Condition Register AND crand crbD,crbA,crbB
Condition Register OR cror crbD,crbA,crbB
Condition Register XOR crxor crbD,crbA,crbB
Condition Register NAND crnand crbD,crbA,crbB
Condition Register NOR crnor crbD,crbA,crbB
Condition Register Equivalent creqv crbD,crbA,crbB
Condition Register AND with Complement crandc crbD,crbA,crbB
Condition Register OR with Complement crorc crbD,crbA,crbB
Move Condition Register Field mcrf crfD,crfS
Trap
Name Mnemonic Operand Syntax
Trap Word Immediate twi TO,rA,SIMM
Trap Word tw TO,rA,rB
Move to/from Condition Register Instructions
Name Mnemonic Operand Syntax
Move to Condition Register Fields mtcrf CRM,rS
Move to Condition Register from XER mcrxr crfD
Move from Condition Register mfcr rD
Memory Synchronisation Instructions (UISA)
Name Mnemonic Operand Syntax
Load Word and Reserve Indexed lwarx rD,rA,rB
Store Word Conditional Indexed stwcx. rS,rA,rB
Synchronize sync --
Processor Control Instructions (VEA)
Name Mnemonic Operand Syntax
Move from Time Base mftb rD,TBR
Memory Synchronization Instructions (VEA)
Name Mnemonic Operand Syntax
Enforce In-Order Execution of I/O eieio --
Instruction Synchronize isync --
User-Level Cache Instructions (VEA)
Name Mnemonic Operand Syntax
Data Cache Block Touch dcbt rA,rB
Data Cache Block Touch for Store dcbtst rA,rB
Data Cache Block Set to Zero dcbz rA,rB
Data Cache Block Store dcbst rA,rB
Data Cache Block Flush dcbf rA,rB
Instruction Cache Block Invalidate icbi rA,rB
External Control Instructions (VEA)
Name Mnemonic Operand Syntax
External Control in Word Indexed eciwx rD,rA,rB
External Control Out Word Indexed ecowx rS,rA,rB
System Linkage Instructions (OEA)
Name Mnemonic Operand Syntax
System Call sc --
Return from Interrupt rfi --
Move to/from Machine State Register Instructions (OEA)
Name Mnemonic Operand Syntax
Move to Machine State Register mtmsr rS
Move from Machine State Register mfmsr rD
Move to/from Special-Purpose Register Instructions (OEA)
Name Mnemonic Operand Syntax
Move to Special-Purpose Register mtspr SPR,rS
Move from Special-Purpose Register mfspr rD,SPR
Memory Control Instructions (OEA)
Name Mnemonic Operand Syntax
Data Cache Block Invalidate dcbi rA,rB
Segment Register Manipulation Instructions (OEA)
Name Mnemonic Operand Syntax
Move to Segment Register mtsr SR,rS
Move to Segment Register Indirect mtsrin rS,rB
Move from Segment Register mfsr rD,SR
Move from Segment Register Indirect mfsrin rD,rB
Translation Lookaside Buffer Management Instructions (OEA)
Name Mnemonic Operand Syntax
TLB Invalidate Entry tlbie rB
TLB Synchronize tlbsync --
Load Data TLB Entry tlbld rB
Load Instruction TLB Entry tlbli rB