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 |
|