| PowerPC 601 RISC Microprocessor Instructions | ||||
| Mnemonic | Instruction | Format | Primary Op Code | Extended Op Code |
| a[o][.] | Add Carrying | XO | 31 | 10 |
| abs[o][.] | Absolute | XO | 31 | 360 |
| add[o][.] | Add | XO | 31 | 266 |
| addc[o][.] | Add Carrying | XO | 31 | 10 |
| adde[o][.] | Add Extended | XO | 31 | 138 |
| addi | Add Immediate | D | 14 | |
| addic | Add Immediate Carrying | D | 12 | |
| addic. | Add Immediate Carrying and Record | D | 13 | |
| addis | Add Immediate Shifted | D | 15 | |
| addme | Add to Minus One Extended | XO | 31 | 234 |
| addze[o][.] | Add to Zero Extended | XO | 31 | 202 |
| ae[o][.] | Add Extended | XO | 31 | 138 |
| ai | Add Immediate | D | 12 | |
| ai. | Add Immediate and Record | D | 13 | |
| ame[o][.] | Add to Minus One Extended | XO | 31 | 234 |
| and[.] | AND | X | 31 | 28 |
| andc[.] | AND with Complement | X | 31 | 60 |
| andi. | AND Immediate | D | 28 | |
| andil. | AND Immediate Lower | D | 28 | |
| andis. | AND Immediate Shifted | D | 29 | |
| andiu. | AND Immediate Upper | D | 29 | |
| aze[o][.] | Add to Zero Extended | XO | 31 | 202 |
| b[l][a] | Branch | I | 18 | |
| bc[l][a] | Branch Conditional | B | 16 | |
| bcc[l] | Branch Conditional to Count Register | XL | 19 | 528 |
| bcctr[l] | Branch Conditional to Count Register | XL | 19 | 528 |
| bclr[l] | Branch Conditional Link Register | XL | 19 | 16 |
| bcr[l] | Branch Conditional Register | XL | 19 | 16 |
| cal | Compute Address Lower | D | 14 | |
| cau | Compute Address Upper | D | 15 | |
| cax[o][.] | Compute Address | XO | 31 | 266 |
| clcs | Cache Line Compute Size | X | 31 | 531 |
| cmp | Compare | X | 31 | 0 |
| cmpi | Compare Immediate | D | 11 | |
| cmpl | Compare Logical | X | 31 | 32 |
| cmpli | Compare Logical Immediate | D | 10 | |
| cntlz[.] | Count Leading Zeros | X | 31 | 26 |
| cntlzw[.] | Count Leading Zeros Word | X | 31 | 26 |
| crand | Condition Register AND | XL | 19 | 257 |
| crandc | Condition Register AND with Complement | XL | 19 | 129 |
| creqv | Condition Register Equivalent | XL | 19 | 289 |
| crnand | Condition Register NAND | XL | 19 | 225 |
| crnor | Condition Register NOR | XL | 19 | 33 |
| cror | Condition Register OR | XL | 19 | 449 |
| crorc | Condition Register OR with Complement | XL | 19 | 417 |
| crxor | Condition Register XOR | XL | 19 | 193 |
| dcbf | Data Cache Block Flush | X | 31 | 86 |
| dcbi | Data Cache Block Invalidate | X | 31 | 470 |
| dcbst | Data Cache Block Store | X | 31 | 54 |
| dcbt | Data Cache Block Touch | X | 31 | 278 |
| dcbtst | Data Cache Block Touch for Store | X | 31 | 246 |
| dcbz | Data Cache Block Set to Zero | X | 31 | 1014 |
| dcs | Data Cache Synchronize | X | 31 | 598 |
| div[o][.] | Divide | XO | 31 | 331 |
| divs[o][.] | Divide Short | XO | 31 | 363 |
| divw[o][.] | Divide Word | XO | 31 | 491 |
| divwu[o][.] | Divide Word Unsigned | XO | 31 | 459 |
| doz[o][.] | Difference or Zero | XO | 31 | 264 |
| dozi | Difference or Zero Immediate | D | 09 | |
| eciwx | External Control in Word Indexed | X | 31 | 310 |
| ecowx | External Control out Word Indexed | X | 31 | 438 |
| eieio | Enforce In-order Execution of I/O | X | 31 | 854 |
| eqv[.] | Equivalent | X | 31 | 284 |
| exts[.] | Extend Sign | X | 31 | 922 |
| extsb[.] | Extend Sign Byte | X | 31 | 954 |
| extsh[.] | Extend Sign Halfword | XO | 31 | 922 |
| fa[.] | Floating Add | A | 63 | 21 |
| fabs[.] | Floating Absolute Value | X | 63 | 264 |
| fadd[.] | Floating Add | A | 63 | 21 |
| fadds[.] | Floating Add Single | A | 59 | 21 |
| fcir[.] | Floating Convert to Integer Word | X | 63 | 14 |
| fcirz[.] | Floating Convert to Integer Word with Round to Zero | X | 63 | 15 |
| fcmpo | Floating Compare Ordered | X | 63 | 32 |
| fcmpu | Floating Compare Unordered | XL | 63 | 0 |
| fctiw[.] | Floating Convert to Integer Word | X | 63 | 14 |
| fctiwz[.] | Floating Convert to Integer Word with Round to Zero | XL | 63 | 15 |
| fd[.] | Floating Divide | A | 63 | 18 |
| fdiv[.] | Floating Divide | A | 63 | 18 |
| fdivs[.] | Floating Divide Single | A | 59 | 18 |
| fm[.] | Floating Multiply | A | 63 | 25 |
| fma[.] | Floating Multiply-Add | A | 63 | 29 |
| fmadd[.] | Floating Multiply-Add | A | 63 | 29 |
| fmadds[.] | Floating Multiply-Add Single | A | 59 | 29 |
| fmr[.] | Floating Move Register | X | 63 | 72 |
| fms[.] | Floating Multiply-Subtract | A | 63 | 28 |
| fmsub[.] | Floating Multiply-Subtract | A | 63 | 28 |
| fmsubs[.] | Floating Multiply-Subtract Single | A | 59 | 28 |
| fmul[.] | Floating Multiply | A | 63 | 25 |
| fmuls[.] | Floating Multiply Single | A | 59 | 25 |
| fnabs[.] | Floating Negative Absolute Value | X | 63 | 136 |
| fneg[.] | Floating Negate | X | 63 | 40 |
| fnma[.] | Floating Negative Multiply-Add | A | 63 | 31 |
| fnmadd[.] | Floating Negative Multiply-Add | A | 63 | 31 |
| fnmadds[.] | Floating Negative Multiply-Add Single | A | 59 | 31 |
| fnms[.] | Floating Negative Multiply-Subtract | A | 63 | 30 |
| fnmsub[.] | Floating Negative Multiply-Subtract | A | 63 | 30 |
| fnmsubs[.] | Floating Negative Multiply-Subtract Single | A | 59 | 30 |
| frsp[.] | Floating Round to Single Precision | X | 63 | 12 |
| fs[.] | Floating Subtract | A | 63 | 20 |
| fsub[.] | Floating Subtract | A | 63 | 20 |
| fsubs[.] | Floating Subtract Single | A | 59 | 20 |
| icbi | Instruction Cache Block Invalidate | X | 31 | 982 |
| ics | Instruction Cache Synchronize | X | 19 | 150 |
| isync | Instruction Synchronize | X | 19 | 150 |
| l | Load | D | 32 | |
| lbrx | Load Byte-Reversed Indexed | X | 31 | 534 |
| lbz | Load Byte and Zero | D | 34 | |
| lbzu | Load Byte and Zero with Update | D | 35 | |
| lbzux | Load Byte and Zero with Update Indexed | X | 31 | 119 |
| lbzx | Load Byte and Zero Indexed | X | 31 | 87 |
| lfd | Load Floating-Point Double | D | 50 | |
| lfdu | Load Floating-Point Double with Update | D | 51 | |
| lfdux | Load Floating-Point Double with Update Indexed | X | 31 | 631 |
| lfdx | Load Floating-Point Double Indexed | X | 31 | 599 |
| lfs | Load Floating-Point Single | D | 48 | |
| lfsu | Load Floating-Point Single with Update | D | 49 | |
| lfsux | Load Floating-Point Single with Update Indexed | X | 31 | 567 |
| lfsx | Load Floating-Point Single Indexed | X | 31 | 535 |
| lha | Load Half Algebraic | D | 42 | |
| lhau | Load Half Algebraic with Update | D | 43 | |
| lhaux | Load Half Algebraic with Update Indexed | X | 31 | 375 |
| lhax | Load Half Algebraic Indexed | X | 31 | 343 |
| lhbrx | Load Half Byte-Reversed Indexed | X | 31 | 790 |
| lhz | Load Half and Zero | D | 40 | |
| lhzu | Load Half and Zero with Update | D | 41 | |
| lhzux | Load Half and Zero with Update Indexed | X | 31 | 331 |
| lhzx | Load Half and Zero Indexed | X | 31 | 279 |
| lm | Load Multiple | D | 46 | |
| lmw | Load Multiple Word | D | 46 | |
| lscbx | Load String and Compare Byte Indexed | X | 31 | 277 |
| lsi | Load String Immediate | X | 31 | 597 |
| lswi | Load String Word Immediate | X | 31 | 597 |
| lswx | Load String Word Indexed | X | 31 | 533 |
| lsx | Load String Indexed | X | 31 | 533 |
| lu | Load with Update | D | 33 | |
| lux | Load with Update Indexed | X | 31 | 55 |
| lwarx | Load Word and Reserve Indexed | X | 31 | 20 |
| lwbrx | Load Word Byte-Reversed Indexed | X | 31 | 534 |
| lwz | Load Word and Zero | D | 32 | |
| lwzu | Load Word with Zero Update | D | 33 | |
| lwzux | Load Word and Zero with Update Indexed | X | 31 | 55 |
| lwzx | Load Word and Zero Indexed | X | 31 | 23 |
| lx | Load Indexed | X | 31 | 23 |
| maskg[.] | Mask Generate | X | 31 | 29 |
| maskir[.] | Mask Insert from Register | X | 31 | 541 |
| mcrf | Move Condition Register Field | XL | 19 | 0 |
| mcrfs | Move to Condition Register from FPSCR | X | 63 | 64 |
| mcrxr | Move to Condition Register from XER | X | 31 | 512 |
| mfcr | Move from Condition Register | X | 31 | 19 |
| mffs[.] | Move from FPSCR | X | 63 | 583 |
| mfmsr | Move from Machine State Register | X | 31 | 83 |
| mfspr | Move from Special-Purpose Register | X | 31 | 339 |
| mfsr | Move from Segment Register | X | 31 | 595 |
| mfsrin | Move from Segment Register Indirect | X | 31 | 659 |
| mtcrf | Move to Condition Register Fields | XFX | 31 | 144 |
| mtfsb0[.] | Move to FPSCR Bit 0 | X | 63 | 70 |
| mtfsb1[.] | Move to FPSCR Bit 1 | X | 63 | 38 |
| mtfsf[.] | Move to FPSCR Fields | XFL | 63 | 711 |
| mtfsfi[.] | Move to FPSCR Field Immediate | X | 63 | 134 |
| mtmsr | Move to Machine State Register | X | 31 | 146 |
| mtspr | Move to Special-Purpose Register | X | 31 | 467 |
| mtsr | Move to Segment Register | X | 31 | 210 |
| mtsri | Move to Segment Register Indirect | X | 31 | 242 |
| mtsrin | Move to Segment Register Indirect | X | 31 | 242 |
| mul[o][.] | Multiply | XO | 31 | 107 |
| mulhw[.] | Multiply High Word | XO | 31 | 75 |
| mulhwu[.] | Multiply High Word Unsigned | XO | 31 | 11 |
| muli | Multiply Immediate | D | 07 | |
| mulli | Multiply Low Immediate | D | 07 | |
| mullw[o][.] | Multiply Low Word | XO | 31 | 235 |
| muls[o][.] | Multiply Short | XO | 31 | 235 |
| nabs[o][.] | Negative Absolute | XO | 31 | 488 |
| nand[.] | NAND | X | 31 | 476 |
| neg[o][.] | Negate | XO | 31 | 104 |
| nor[.] | NOR | X | 31 | 124 |
| or[.] | OR | X | 31 | 444 |
| orc[.] | OR with Complement | X | 31 | 412 |
| ori | OR Immediate | D | 24 | |
| oril | OR Immediate Lower | D | 24 | |
| oris | OR Immediate Shifted | D | 25 | |
| oriu | OR Immediate Upper | D | 25 | |
| rfi | Return from Interrupt | X | 19 | 50 |
| rlimi[.] | Rotate Left Immediate then Mask Insert | M | 20 | |
| rlinm[.] | Rotate Left Immediate then AND with Mask | M | 21 | |
| rlmi[.] | Rotate Left then Mask Insert | M | 22 | |
| rlnm[.] | Rotate Left then AND with Mask | M | 23 | |
| rlwimi[.] | Rotate Left Word Immediate then Mask Insert | M | 20 | |
| rlwinm[.] | Rotate Left Word Immediate then AND with Mask | M | 21 | |
| rlwnm[.] | Rotate Left Word then AND with Mask | M | 23 | |
| rrib[.] | Rotate Right and Insert Bit | X | 31 | 537 |
| sc | System Call | SC | 17 | |
| sf[o][.] | Subtract from | XO | 31 | 08 |
| sfe[o][.] | Subtract from Extended | XO | 31 | 136 |
| sfi | Subtract from Immediate | D | 08 | |
| sfme[o][.] | Subtract from Minus One Extended | XO | 31 | 232 |
| sfze[o][.] | Subtract from Zero Extended | XO | 31 | 200 |
| si | Subtract Immediate | D | 12 | |
| si. | Subtract Immediate and Record | D | 13 | |
| sl[.] | Shift Left | X | 31 | 24 |
| sle[.] | Shift Left Extended | X | 31 | 153 |
| sleq[.] | Shift Left Extended with MQ | X | 31 | 217 |
| sliq[.] | Shift Left Immediate with MQ | X | 31 | 184 |
| slliq[.] | Shift Left Long Immediate with MQ | X | 31 | 248 |
| sllq[.] | Shift Left Long with MQ | X | 31 | 216 |
| slq[.] | Shift Left with MQ | X | 31 | 152 |
| slw[.] | Shift Left Word | X | 31 | 24 |
| sr[.] | Shift Right | X | 31 | 536 |
| sra[.] | Shift Right Algebraic | X | 31 | 792 |
| srai[.] | Shift Right Algebraic Immediate | X | 31 | 824 |
| sraiq[.] | Shift Right Algebraic Immediate with MQ | X | 31 | 952 |
| sraq[.] | Shift Right Algebraic with MQ | X | 31 | 920 |
| sraw[.] | Shift Right Algebraic Word | X | 31 | 792 |
| srawi[.] | Shift Right Algebraic Word Immediate | X | 31 | 824 |
| sre[.] | Shift Right Extended | X | 31 | 665 |
| srea[.] | Shift Right Extended Algebraic | X | 31 | 921 |
| sreq[.] | Shift Right Extended with MQ | X | 31 | 729 |
| sriq[.] | Shift Right Immediate with MQ | X | 31 | 696 |
| srliq[.] | Shift Right Long Immediate with MQ | X | 31 | 760 |
| srlq[.] | Shift Right Long with MQ | X | 31 | 728 |
| srq[.] | Shift RIght with MQ | X | 31 | 664 |
| srw[.] | Shift Right Word | X | 31 | 536 |
| st | Store | D | 36 | |
| stb | Store Byte | D | 38 | |
| stbrx | Store Byte-Reversed Indexed | X | 31 | 662 |
| stbu | Store Byte with Update | D | 31 | 215 |
| stbux | Store Byte with Update Indexed | X | 31 | 247 |
| stbx | Store Byte Indexed | X | 31 | 215 |
| stfd | Store Floating-Point Double | D | 54 | |
| stfdu | Store Floating-Point Double with Update | D | 55 | |
| stfdux | Store Floating-Point Double with Update Indexed | X | 31 | 759 |
| stfdx | Store Floating-Point Double Indexed | X | 31 | 727 |
| stfs | Store Floating-Point Single | D | 52 | |
| stfsu | Store Floating-Point Single with Update | D | 53 | |
| stfsux | Store Floating-Point Single with Update Indexed | X | 31 | 695 |
| stfsx | Store Floating-Point Single Indexed | X | 31 | 663 |
| sth | Store Half | D | 44 | |
| sthbrx | Store Half Byte-Reverse Indexed | X | 31 | 918 |
| sthu | Store Half with Update | D | 45 | |
| sthux | Store Half with Update Indexed | X | 31 | 439 |
| sthx | Store Half Indexed | X | 31 | 407 |
| stm | Store Multiple | D | 47 | |
| stmw | Store Multiple Word | D | 47 | |
| stsi | Store String Immediate | X | 31 | 725 |
| stswi | Store String Word Immediate | X | 31 | 725 |
| stswx | Store String Word Indexed | X | 31 | 661 |
| stsx | Store String Indexed | X | 31 | 661 |
| stu | Store with Update | D | 37 | |
| stux | Store with Update Indexed | X | 31 | 183 |
| stw | Store | D | 36 | |
| stwbrx | Store Word Byte-Reversed Indexed | X | 31 | 662 |
| stwcx. | Store Word Conditional Indexed | X | 31 | 150 |
| stwu | Store Word with Update | D | 37 | |
| stwux | Store Word with Update Indexed | X | 31 | 183 |
| stwx | Store Word Indexed | X | 31 | 151 |
| stx | Store Indexed | X | 31 | 151 |
| subf[o][.] | Subtract from | XO | 31 | 40 |
| subfc[o][.] | Subtract from Carrying | XO | 31 | 08 |
| subfe[o][.] | Subtract from Extended | XO | 31 | 136 |
| subfic | Subtract from Immediate Carrying | D | 08 | |
| subfme[o][.] | Subtract from Minus One Extended | XO | 31 | 232 |
| subfze[o][.] | Subtract from Zero Extended | XO | 31 | 200 |
| sync | Synchronize | X | 31 | 598 |
| t | Trap | X | 31 | 04 |
| ti | Trap Immediate | D | 03 | |
| tlbie | Translation Look-aside Buffer Invalidate Entry | X | 31 | 306 |
| tw | Trap Word | X | 31 | 04 |
| twi | Trap Word Immediate | D | 03 | |
| xor[.] | XOR | X | 31 | 316 |
| xori | XOR Immediate | D | 26 | |
| xoril | XOR Immediate Lower | D | 26 | |
| xoris | XOR Immediate Shift | D | 27 | |
| xoriu | XOR Immediate Upper | D | 27 | |