PowerPC Instruction Set Reference
Documentation for PowerPC/Gekko microprocessor instructions
Quick Links
Table of Contents - Instructions (A-Z)
| Instruction | Mnemonic | Description |
| add | add / add. / addo / addo. | Add |
| addc | addc / addc. / addco / addco. | Add Carrying |
| adde | adde / adde. / addeo / addeo. | Add Extended |
| addi | addi / la / subi | Add Immediate |
| addic | addic / subic | Add Immediate Carrying |
| addic. | addic. / subic. | Add Immediate Carrying and Record |
| addis | addis / lis / subis | Add Immediate Shifted |
| addme | addme / addme. / addmeo / addmeo. | Add to Minus One Extended |
| addze | addze / addze. / addzeo / addzeo. | Add to Zero Extended |
| and | and / and. | AND |
| andc | andc / andc. | AND with Complement |
| andi | andi / andi. | AND Immediate |
| andi. | andi. | AND Immediate |
| andis | andis / andis. | AND Immediate Shifted |
| andis. | andis. | AND Immediate Shifted |
| b | b / ba / bla | Branch |
| bl | bl | Branch and Link |
| bc | bc / bca / bcl / bcla | Branch Conditional |
| bcctr | bcctr / bcctrl | Branch Conditional to Count Register |
| bclr | bclr / bclrl | Branch Conditional to Link Register |
| blr | blr / blrl | Branch to Link Register |
| bctr | bctr / bctrl | Branch to Count Register |
| beq | beq / beql | Branch if Equal |
| beqlr | beqlr / beqlrl | Branch if Equal to Link Register |
| bge | bge / bgel | Branch if Greater or Equal |
| blt | blt / bltl | Branch if Less Than |
| blrl | blrl | Branch to Link Register and Link |
| bne | bne / bnel | Branch if Not Equal |
| bdnz | bdnz / bdnzl | Branch if Decrement Not Zero |
| bdnzf | bdnzf / bdnzfl | Branch if Decrement Not Zero False |
| bdnzt | bdnzt / bdnztl | Branch if Decrement Not Zero True |
| cmp | cmp / cmpw | Compare |
| cmpi | cmpi / cmpwi | Compare Immediate |
| cmpl | cmpl / cmplw | Compare Logical |
| cmpli | cmpli / cmplwi | Compare Logical Immediate |
| cmplw | cmplw | Compare Logical Word |
| cmplwi | cmplwi | Compare Logical Immediate |
| cmpwi | cmpwi | Compare Word Immediate |
| cntlzw | cntlzw / cntlzw. | Count Leading Zeros Word |
| crand | crand | Condition Register AND |
| crandc | crandc | Condition Register AND with Complement |
| clrlwi | clrlwi | Clear Left Immediate |
| clrrwi | clrrwi | Clear Right Immediate |
| creqv | creqv / crset | Condition Register Equivalent |
| crnand | crnand | Condition Register NAND |
| crnor | crnor | Condition Register NOR |
| cror | cror | Condition Register OR |
| crorc | crorc | Condition Register OR with Complement |
| crxor | crxor / crclr | Condition Register XOR |
| dcba | dcba | Data Cache Block Allocate |
| dcbf | dcbf | Data Cache Block Flush |
| dcbi | dcbi | Data Cache Block Invalidate |
| dcbst | dcbst | Data Cache Block Store |
| dcbt | dcbt | Data Cache Block Touch |
| dcbtst | dcbtst | Data Cache Block Touch for Store |
| dcbz | dcbz | Data Cache Block Set to Zero |
| divw | divw / divw. / divwo / divwo. | Divide Word |
| divwu | divwu / divwu. / divwuo / divwuo. | Divide Word Unsigned |
| eciwx | eciwx | External Control In Word Indexed |
| ecowx | ecowx | External Control Out Word Indexed |
| eieio | eieio | Enforce In-Order Execution of I/O |
| eqv | eqv / eqv. | Equivalent |
| extsb | extsb / extsb. | Extend Sign Byte |
| extsh | extsh / extsh. | Extend Sign Half Word |
| extrwi | extrwi | Extract and Right-shift Word Immediate |
| fabs | fabs / fabs. | Floating Absolute Value |
| fadd | fadd / fadd. | Floating Add |
| fadds | fadds / fadds. | Floating Add Single |
| fcmpo | fcmpo | Floating Compare Ordered |
| fcmpu | fcmpu | Floating Compare Unordered |
| fctiw | fctiw / fctiw. | Floating Convert to Integer Word |
| fctiwz | fctiwz / fctiwz. | Floating Convert to Integer Word with Round toward Zero |
| fdiv | fdiv / fdiv. | Floating Divide |
| fdivs | fdivs / fdivs. | Floating Divide Single |
| fmadd | fmadd / fmadd. | Floating Multiply-Add |
| fmadds | fmadds / fmadds. | Floating Multiply-Add Single |
| fmr | fmr / fmr. | Floating Move Register |
| fmsub | fmsub / fmsub. | Floating Multiply-Subtract |
| fmsubs | fmsubs / fmsubs. | Floating Multiply-Subtract Single |
| fmul | fmul / fmul. | Floating Multiply |
| fmuls | fmuls / fmuls. | Floating Multiply Single |
| fnabs | fnabs / fnabs. | Floating Negative Absolute Value |
| fneg | fneg / fneg. | Floating Negate |
| fnmadd | fnmadd / fnmadd. | Floating Negative Multiply-Add |
| fnmadds | fnmadds / fnmadds. | Floating Negative Multiply-Add Single |
| fnmsub | fnmsub / fnmsub. | Floating Negative Multiply-Subtract |
| fnmsubs | fnmsubs / fnmsubs. | Floating Negative Multiply-Subtract Single |
| fres | fres / fres. | Floating Reciprocal Estimate Single |
| frsp | frsp / frsp. | Floating Round to Single Precision |
| frsqrte | frsqrte / frsqrte. | Floating Reciprocal Square Root Estimate |
| fsel | fsel / fsel. | Floating Select |
| fsqrt | fsqrt / fsqrt. | Floating Square Root |
| fsqrts | fsqrts / fsqrts. | Floating Square Root Single |
| fsub | fsub / fsub. | Floating Subtract |
| fsubs | fsubs / fsubs. | Floating Subtract Single |
| icbi | icbi | Instruction Cache Block Invalidate |
| icbt | icbt | Instruction Cache Block Touch |
| iccci | iccci | Instruction Cache Coherency Control |
| isync | isync | Instruction Synchronize |
| lbz | lbz | Load Byte and Zero |
| lbzu | lbzu | Load Byte and Zero with Update |
| lbzux | lbzux | Load Byte and Zero with Update Indexed |
| lbzx | lbzx | Load Byte and Zero Indexed |
| lfd | lfd | Load Floating-Point Double |
| lfdu | lfdu | Load Floating-Point Double with Update |
| lfdux | lfdux | Load Floating-Point Double with Update Indexed |
| lfdx | lfdx | Load Floating-Point Double Indexed |
| lfs | lfs | Load Floating-Point Single |
| lfsu | lfsu | Load Floating-Point Single with Update |
| lfsux | lfsux | Load Floating-Point Single with Update Indexed |
| lfsx | lfsx | Load Floating-Point Single Indexed |
| lha | lha | Load Half Word Algebraic |
| lhau | lhau | Load Half Word Algebraic with Update |
| lhaux | lhaux | Load Half Word Algebraic with Update Indexed |
| lhax | lhax | Load Half Word Algebraic Indexed |
| lhz | lhz | Load Half Word and Zero |
| lhzu | lhzu | Load Half Word and Zero with Update |
| lhzux | lhzux | Load Half Word and Zero with Update Indexed |
| li | li | Load Immediate |
| lis | lis | Load Immediate Shifted |
| lhzx | lhzx | Load Half Word and Zero Indexed |
| lmw | lmw | Load Multiple Word |
| lswi | lswi | Load String Word Immediate |
| lswx | lswx | Load String Word Indexed |
| lwa | lwa | Load Word Algebraic |
| lwarx | lwarx | Load Word and Reserve Indexed |
| lwaux | lwaux | Load Word Algebraic with Update Indexed |
| lwax | lwax | Load Word Algebraic Indexed |
| lwz | lwz | Load Word and Zero |
| lwzu | lwzu | Load Word and Zero with Update |
| lwzux | lwzux | Load Word and Zero with Update Indexed |
| lwzx | lwzx | Load Word and Zero Indexed |
| mcrf | mcrf | Move Condition Register Field |
| mcrfs | mcrfs | Move to Condition Register from FPSCR |
| mcrxr | mcrxr | Move to Condition Register from XER |
| mfcr | mfcr | Move from Condition Register |
| mffs | mffs / mffs. | Move from FPSCR |
| mflr | mflr | Move from Link Register |
| mtlr | mtlr | Move to Link Register |
| mfctr | mfctr | Move from Count Register |
| mfdar | mfdar | Move from DAR |
| mfsprg | mfsprg | Move from SPRG |
| mfsrr0 | mfsrr0 | Move from SRR0 |
| mfsrr1 | mfsrr1 | Move from SRR1 |
| mtctr | mtctr | Move to Count Register |
| mfmsr | mfmsr | Move from Machine State Register |
| mfspr | mfspr | Move from Special Purpose Register |
| mftb | mftb | Move from Time Base |
| mtcrf | mtcrf | Move to Condition Register Fields |
| mtfsb0 | mtfsb0 / mtfsb0. | Move to FPSCR Bit 0 |
| mtfsb1 | mtfsb1 / mtfsb1. | Move to FPSCR Bit 1 |
| mtfsf | mtfsf / mtfsf. | Move to FPSCR Fields |
| mtfsfi | mtfsfi / mtfsfi. | Move to FPSCR Field Immediate |
| mtmsr | mtmsr | Move to Machine State Register |
| mtspr | mtspr | Move to Special Purpose Register |
| mtsprg | mtsprg | Move to SPRG |
| mtsr | mtsr | Move to Segment Register |
| mtsrr0 | mtsrr0 | Move to SRR0 |
| mtsrr1 | mtsrr1 | Move to SRR1 |
| mulhw | mulhw / mulhw. | Multiply High Word |
| mulhwu | mulhwu / mulhwu. | Multiply High Word Unsigned |
| mulli | mulli | Multiply Low Immediate |
| mullw | mullw / mullw. / mullwo / mullwo. | Multiply Low Word |
| mr | mr / mr. | Move Register |
| nand | nand / nand. | NAND |
| neg | neg / neg. / nego / nego. | Negate |
| nor | nor / nor. | NOR |
| or | or / or. | OR |
| orc | orc / orc. | OR with Complement |
| ori | ori | OR Immediate |
| oris | oris | OR Immediate Shifted |
| rfi | rfi | Return from Interrupt |
| rlwimi | rlwimi / rlwimi. | Rotate Left Word Immediate then Mask Insert |
| rlwinm | rlwinm / rlwinm. | Rotate Left Word Immediate then AND with Mask |
| rlwnm | rlwnm / rlwnm. | Rotate Left Word then AND with Mask |
| sc | sc | System Call |
| slw | slw / slw. | Shift Left Word |
| slwi | slwi | Shift Left Word Immediate |
| sraw | sraw / sraw. | Shift Right Algebraic Word |
| srawi | srawi / srawi. | Shift Right Algebraic Word Immediate |
| srw | srw / srw. | Shift Right Word |
| srwi | srwi | Shift Right Word Immediate |
| stb | stb | Store Byte |
| stbu | stbu | Store Byte with Update |
| stbux | stbux | Store Byte with Update Indexed |
| stbx | stbx | Store Byte Indexed |
| stfd | stfd | Store Floating-Point Double |
| stfdu | stfdu | Store Floating-Point Double with Update |
| stfdux | stfdux | Store Floating-Point Double with Update Indexed |
| stfdx | stfdx | Store Floating-Point Double Indexed |
| stfiwx | stfiwx | Store Floating-Point as Integer Word Indexed |
| stfs | stfs | Store Floating-Point Single |
| stfsu | stfsu | Store Floating-Point Single with Update |
| stfsux | stfsux | Store Floating-Point Single with Update Indexed |
| stfsx | stfsx | Store Floating-Point Single Indexed |
| sth | sth | Store Half Word |
| sthu | sthu | Store Half Word with Update |
| sthux | sthux | Store Half Word with Update Indexed |
| sthx | sthx | Store Half Word Indexed |
| stmw | stmw | Store Multiple Word |
| stswi | stswi | Store String Word Immediate |
| stswx | stswx | Store String Word Indexed |
| stw | stw | Store Word |
| stwu | stwu | Store Word with Update |
| stwux | stwux | Store Word with Update Indexed |
| stwx | stwx | Store Word Indexed |
| stwcx | stwcx | Store Word Conditional Indexed |
| subf | subf / subf. / subfo / subfo. | Subtract From |
| subfc | subfc / subfc. / subfco / subfco. | Subtract From Carrying |
| subfe | subfe / subfe. / subfeo / subfeo. | Subtract From Extended |
| subfic | subfic | Subtract From Immediate Carrying |
| subfme | subfme / subfme. / subfmeo / subfmeo. | Subtract From Minus One Extended |
| subfze | subfze / subfze. / subfzeo / subfzeo. | Subtract From Zero Extended |
| sync | sync | Synchronize |
| tlbia | tlbia | Translation Lookaside Buffer Invalidate All |
| tlbie | tlbie | Translation Lookaside Buffer Invalidate Entry |
| tlbsync | tlbsync | Translation Lookaside Buffer Synchronize |
| tw | tw | Trap Word |
| twi | twi | Trap Word Immediate |
| xor | xor / xor. | XOR |
| xori | xori | XOR Immediate |
| xoris | xoris | XOR Immediate Shifted |