1 ! Copyright (C) 2011 Erik Charlebois.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: kernel namespaces words math math.order locals math.bitwise io.binary make ;
6 ! This vocabulary implements the V2.06B Power ISA found at http://www.power.org.
7 ! The names are standard and the operand order is the same as in the specification,
8 ! except that displacement in d-form and ds-form instructions come after the base
11 ! For example, in assembler syntax, stores are written like:
13 ! In Factor, we write:
16 : insn ( operand opcode -- )
17 { 26 0 } bitfield 4 >be % ;
19 : a-insn ( rt ra rb rc xo rc opcode -- )
20 [ { 0 1 6 11 16 21 } bitfield ] dip insn ;
22 : b-insn ( bo bi bd aa lk opcode -- )
23 [ { 0 1 2 16 21 } bitfield ] dip insn ;
25 : d-insn ( rt ra d opcode -- )
26 [ HEX: ffff bitand { 0 16 21 } bitfield ] dip insn ;
28 : ds-insn ( rt ra ds rc opcode -- )
29 [ [ HEX: 3fff bitand ] dip { 0 2 16 21 } bitfield ] dip insn ;
31 : evx-insn ( rt ra rb xo opcode -- )
32 [ { 0 11 16 21 } bitfield ] dip insn ;
34 : i-insn ( li aa lk opcode -- )
35 [ { 0 1 2 } bitfield ] dip insn ;
37 : m-insn ( rs ra sh mb me rc opcode -- )
38 [ { 0 1 6 11 16 21 } bitfield ] dip insn ;
40 :: md-insn ( rs ra sh mb xo sh5 rc opcode -- )
41 mb [ HEX: 1f bitand 1 shift ] [ -5 shift ] bi bitor :> mb
42 rs ra sh mb xo sh5 rc opcode
43 [ { 0 1 2 5 11 16 21 } bitfield ] dip insn ;
45 :: mds-insn ( rs ra rb mb xo rc opcode -- )
46 mb [ HEX: 1f bitand 1 shift ] [ -5 shift ] bi bitor :> mb
47 rs ra rb mb xo rc opcode
48 [ { 0 1 5 11 16 21 } bitfield ] dip insn ;
50 : sc-insn ( lev opcode -- )
51 [ 1 { 1 5 } bitfield ] dip insn ;
53 : va-insn ( vrt vra vrb vrc xo opcode -- )
54 [ { 0 6 11 16 21 } bitfield ] dip insn ;
56 : vc-insn ( vrt vra vrb rc xo opcode -- )
57 [ { 0 10 11 16 21 } bitfield ] dip insn ;
59 : vx-insn ( vrt vra vrb xo opcode -- )
60 [ { 0 11 16 21 } bitfield ] dip insn ;
62 : x-insn ( rt ra rb xo rc opcode -- )
63 [ { 0 1 11 16 21 } bitfield ] dip insn ;
65 : xfl-insn ( l flm w frb xo rc opcode -- )
66 [ { 0 1 11 16 17 25 } bitfield ] dip insn ;
68 : xfx-insn ( rs spr xo rc opcode -- )
69 [ { 0 1 11 21 } bitfield ] dip insn ;
71 : xl-insn ( bo bi bb xo lk opcode -- )
72 [ { 0 1 11 16 21 } bitfield ] dip insn ;
74 : xo-insn ( rt ra rb oe xo rc opcode -- )
75 [ { 0 1 10 11 16 21 } bitfield ] dip insn ;
77 : xs-insn ( rs ra sh xo sh5 rc opcode -- )
78 [ { 0 1 2 11 16 21 } bitfield ] dip insn ;
80 :: xx1-insn ( rt ra rb xo opcode -- )
81 rt HEX: 1f bitand ra rb xo rt -5 shift
82 { 0 1 11 16 21 } bitfield opcode insn ;
84 :: xx2-insn ( rt ra rb xo opcode -- )
85 rt HEX: 1f bitand ra rb HEX: 1f bitand xo
86 rb -5 shift rt -5 shift
87 { 0 1 2 11 16 21 } bitfield opcode insn ;
89 :: xx3-insn ( rt ra rb xo opcode -- )
90 rt HEX: 1f bitand ra HEX: 1f bitand rb HEX: 1f bitand
91 xo ra -5 shift rb -5 shift rt -5 shift
92 { 0 1 2 3 11 16 21 } bitfield opcode insn ;
94 :: xx3-rc-insn ( rt ra rb rc xo opcode -- )
95 rt HEX: 1f bitand ra HEX: 1f bitand rb HEX: 1f bitand
96 rc xo ra -5 shift rb -5 shift rt -5 shift
97 { 0 1 2 3 10 11 16 21 } bitfield opcode insn ;
99 :: xx3-rc-dm-insn ( rt ra rb rc dm xo opcode -- )
100 rt HEX: 1f bitand ra HEX: 1f bitand rb HEX: 1f bitand
101 rc dm xo ra -5 shift rb -5 shift rt -5 shift
102 { 0 1 2 3 8 10 11 16 21 } bitfield opcode insn ;
104 :: xx4-insn ( rt ra rb rc xo opcode -- )
105 rt HEX: 1f bitand ra HEX: 1f bitand rb HEX: 1f bitand
106 rc HEX: 1f bitand xo rc -5 shift ra -5 shift rb
108 { 0 1 2 3 4 6 11 16 21 } bitfield opcode insn ;
110 : z22-insn ( bf fra dcm xo rc opcode -- )
111 [ { 0 1 10 16 21 } bitfield ] dip insn ;
113 : z23-insn ( frt te frb rmc xo rc opcode -- )
114 [ { 0 1 9 11 16 21 } bitfield ] dip insn ;
116 ! 2.4 Branch Instructions
117 GENERIC: B ( target_addr/label -- )
118 M: integer B ( target_addr -- ) -2 shift 0 0 18 i-insn ;
120 GENERIC: BL ( target_addr/label -- )
121 M: integer BL ( target_addr -- ) -2 shift 0 1 18 i-insn ;
123 : BA ( target_addr -- ) -2 shift 1 0 18 i-insn ;
124 : BLA ( target_addr -- ) -2 shift 1 1 18 i-insn ;
126 GENERIC: BC ( bo bi target_addr/label -- )
127 M: integer BC ( bo bi target_addr -- ) -2 shift 0 0 16 b-insn ;
129 : BCA ( bo bi target_addr -- ) -2 shift 1 0 16 b-insn ;
130 : BCL ( bo bi target_addr -- ) -2 shift 0 1 16 b-insn ;
131 : BCLA ( bo bi target_addr -- ) -2 shift 1 1 16 b-insn ;
133 : BCLR ( bo bi bh -- ) 16 0 19 xl-insn ;
134 : BCLRL ( bo bi bh -- ) 16 1 19 xl-insn ;
135 : BCCTR ( bo bi bh -- ) 528 0 19 xl-insn ;
136 : BCCTRL ( bo bi bh -- ) 528 1 19 xl-insn ;
138 ! 2.5.1 Condition Register Logical Instructions
139 : CRAND ( bt ba bb -- ) 527 0 19 xl-insn ;
140 : CRNAND ( bt ba bb -- ) 225 0 19 xl-insn ;
141 : CROR ( bt ba bb -- ) 449 0 19 xl-insn ;
142 : CRXOR ( bt ba bb -- ) 193 0 19 xl-insn ;
143 : CRNOR ( bt ba bb -- ) 33 0 19 xl-insn ;
144 : CREQV ( bt ba bb -- ) 289 0 19 xl-insn ;
145 : CRANDC ( bt ba bb -- ) 129 0 19 xl-insn ;
146 : CRORC ( bt ba bb -- ) 417 0 19 xl-insn ;
148 ! 2.5.2 Condition Register Field Instruction
149 : MCRF ( bf bfa -- ) [ 2 shift ] bi@ 0 0 0 19 xl-insn ;
151 ! 2.6 System Call Instruction
152 : SC ( lev -- ) 17 sc-insn ;
154 ! 3.3.2 Fixed-Point Load Instructions
155 : LBZ ( rt ra d -- ) 34 d-insn ;
156 : LBZU ( rt ra d -- ) 35 d-insn ;
157 : LHZ ( rt ra d -- ) 40 d-insn ;
158 : LHZU ( rt ra d -- ) 41 d-insn ;
159 : LHA ( rt ra d -- ) 42 d-insn ;
160 : LHAU ( rt ra d -- ) 43 d-insn ;
161 : LWZ ( rt ra d -- ) 32 d-insn ;
162 : LWZU ( rt ra d -- ) 33 d-insn ;
163 : LBZX ( rt ra rb -- ) 87 0 31 x-insn ;
164 : LBZUX ( rt ra rb -- ) 119 0 31 x-insn ;
165 : LHZX ( rt ra rb -- ) 279 0 31 x-insn ;
166 : LHZUX ( rt ra rb -- ) 311 0 31 x-insn ;
167 : LHAX ( rt ra rb -- ) 343 0 31 x-insn ;
168 : LHAUX ( rt ra rb -- ) 375 0 31 x-insn ;
169 : LWZX ( rt ra rb -- ) 23 0 31 x-insn ;
170 : LWZUX ( rt ra rb -- ) 55 0 31 x-insn ;
172 ! 3.3.2.1 64-bit Fixed-Point Load Instructions
173 : LWA ( rt ra ds -- ) -2 shift 2 58 ds-insn ;
174 : LD ( rt ra ds -- ) -2 shift 0 58 ds-insn ;
175 : LDU ( rt ra ds -- ) -2 shift 1 58 ds-insn ;
176 : LWAX ( rt ra rb -- ) 341 0 31 x-insn ;
177 : LWAUX ( rt ra rb -- ) 373 0 31 x-insn ;
178 : LDX ( rt ra rb -- ) 21 0 31 x-insn ;
179 : LDUX ( rt ra rb -- ) 53 0 31 x-insn ;
181 ! 3.3.3 Fixed-Point Store Instructions
182 : STB ( rs ra d -- ) 38 d-insn ;
183 : STBU ( rs ra d -- ) 39 d-insn ;
184 : STH ( rs ra d -- ) 44 d-insn ;
185 : STHU ( rs ra d -- ) 45 d-insn ;
186 : STW ( rs ra d -- ) 36 d-insn ;
187 : STWU ( rs ra d -- ) 37 d-insn ;
188 : STBX ( rs ra rb -- ) 215 0 31 x-insn ;
189 : STBUX ( rs ra rb -- ) 247 0 31 x-insn ;
190 : STHX ( rs ra rb -- ) 407 0 31 x-insn ;
191 : STHUX ( rs ra rb -- ) 439 0 31 x-insn ;
192 : STWX ( rs ra rb -- ) 151 0 31 x-insn ;
193 : STWUX ( rs ra rb -- ) 183 0 31 x-insn ;
195 ! 3.3.3.1 64-bit Fixed-Point Store Instructions
196 : STD ( rs ra ds -- ) -2 shift 0 62 ds-insn ;
197 : STDU ( rs ra ds -- ) -2 shift 1 62 ds-insn ;
198 : STDX ( rs ra rb -- ) 149 0 31 x-insn ;
199 : STDUX ( rs ra rb -- ) 181 0 31 x-insn ;
201 ! 3.3.4 Fixed-Point Load and Store with Byte Reversal Instructions
202 : LHBRX ( rt ra rb -- ) 790 0 31 x-insn ;
203 : LWBRX ( rt ra rb -- ) 534 0 31 x-insn ;
204 : STHBRX ( rs ra rb -- ) 918 0 31 x-insn ;
205 : STWBRX ( rs ra rb -- ) 662 0 31 x-insn ;
207 ! 3.3.4.1 64-bit Fixed-Point Load and Store with Byte Reversal Instructions
208 : LDBRX ( rt ra rb -- ) 532 0 31 x-insn ;
209 : STDBRX ( rs ra rb -- ) 660 0 31 x-insn ;
211 ! 3.3.5 Fixed-Point Load and Store Multiple Instructions
212 : LMW ( rt ra d -- ) 46 d-insn ;
213 : STMW ( rs ra d -- ) 47 d-insn ;
215 ! 3.3.6 Fixed-Point Move Assist Instructions
216 : LSWI ( rt ra nb -- ) 597 0 31 x-insn ;
217 : LSWX ( rt ra rb -- ) 533 0 31 x-insn ;
218 : STSWI ( rs ra nb -- ) 725 0 31 x-insn ;
219 : STSWX ( rs ra rb -- ) 661 0 31 x-insn ;
221 ! 3.3.8 Fixed-Point Arithmetic Instructions
222 : ADDI ( rt ra si -- ) 14 d-insn ;
223 : ADDIS ( rt ra si -- ) 15 d-insn ;
224 : ADDIC ( rt ra si -- ) 12 d-insn ;
225 : ADDIC. ( rt ra si -- ) 13 d-insn ;
226 : SUBFIC ( rt ra si -- ) 8 d-insn ;
227 : MULLI ( rt ra si -- ) 7 d-insn ;
228 : ADD ( rt ra rb -- ) 0 266 0 31 xo-insn ;
229 : ADD. ( rt ra rb -- ) 0 266 1 31 xo-insn ;
230 : ADDO ( rt ra rb -- ) 1 266 0 31 xo-insn ;
231 : ADDO. ( rt ra rb -- ) 1 266 1 31 xo-insn ;
232 : ADDC ( rt ra rb -- ) 0 10 0 31 xo-insn ;
233 : ADDC. ( rt ra rb -- ) 0 10 1 31 xo-insn ;
234 : ADDCO ( rt ra rb -- ) 1 10 0 31 xo-insn ;
235 : ADDCO. ( rt ra rb -- ) 1 10 1 31 xo-insn ;
236 : ADDE ( rt ra rb -- ) 0 138 0 31 xo-insn ;
237 : ADDE. ( rt ra rb -- ) 0 138 1 31 xo-insn ;
238 : ADDEO ( rt ra rb -- ) 1 138 0 31 xo-insn ;
239 : ADDEO. ( rt ra rb -- ) 1 138 1 31 xo-insn ;
240 : ADDME ( rt ra -- ) 0 0 234 0 31 xo-insn ;
241 : ADDME. ( rt ra -- ) 0 0 234 1 31 xo-insn ;
242 : ADDMEO ( rt ra -- ) 0 1 234 0 31 xo-insn ;
243 : ADDMEO. ( rt ra -- ) 0 1 234 1 31 xo-insn ;
244 : ADDZE ( rt ra -- ) 0 0 202 0 31 xo-insn ;
245 : ADDZE. ( rt ra -- ) 0 0 202 1 31 xo-insn ;
246 : ADDZEO ( rt ra -- ) 0 1 202 0 31 xo-insn ;
247 : ADDZEO. ( rt ra -- ) 0 1 202 1 31 xo-insn ;
248 : SUBF ( rt ra rb -- ) 0 40 0 31 xo-insn ;
249 : SUBF. ( rt ra rb -- ) 0 40 1 31 xo-insn ;
250 : SUBFO ( rt ra rb -- ) 1 40 0 31 xo-insn ;
251 : SUBFO. ( rt ra rb -- ) 1 40 1 31 xo-insn ;
252 : SUBFC ( rt ra rb -- ) 0 8 0 31 xo-insn ;
253 : SUBFC. ( rt ra rb -- ) 0 8 1 31 xo-insn ;
254 : SUBFCO ( rt ra rb -- ) 1 8 0 31 xo-insn ;
255 : SUBFCO. ( rt ra rb -- ) 1 8 1 31 xo-insn ;
256 : SUBFE ( rt ra rb -- ) 0 136 0 31 xo-insn ;
257 : SUBFE. ( rt ra rb -- ) 0 136 1 31 xo-insn ;
258 : SUBFEO ( rt ra rb -- ) 1 136 0 31 xo-insn ;
259 : SUBFEO. ( rt ra rb -- ) 1 136 1 31 xo-insn ;
260 : SUBFME ( rt ra -- ) 0 0 232 0 31 xo-insn ;
261 : SUBFME. ( rt ra -- ) 0 0 232 1 31 xo-insn ;
262 : SUBFMEO ( rt ra -- ) 0 1 232 0 31 xo-insn ;
263 : SUBFMEO. ( rt ra -- ) 0 1 232 1 31 xo-insn ;
264 : SUBFZE ( rt ra -- ) 0 0 200 0 31 xo-insn ;
265 : SUBFZE. ( rt ra -- ) 0 0 200 1 31 xo-insn ;
266 : SUBFZEO ( rt ra -- ) 0 1 200 0 31 xo-insn ;
267 : SUBFZEO. ( rt ra -- ) 0 1 200 1 31 xo-insn ;
268 : NEG ( rt ra -- ) 0 0 104 0 31 xo-insn ;
269 : NEG. ( rt ra -- ) 0 0 104 1 31 xo-insn ;
270 : NEGO ( rt ra -- ) 0 1 104 0 31 xo-insn ;
271 : NEGO. ( rt ra -- ) 0 1 104 1 31 xo-insn ;
272 : MULLW ( rt ra rb -- ) 0 235 0 31 xo-insn ;
273 : MULLW. ( rt ra rb -- ) 0 235 1 31 xo-insn ;
274 : MULLWO ( rt ra rb -- ) 1 235 0 31 xo-insn ;
275 : MULLWO. ( rt ra rb -- ) 1 235 1 31 xo-insn ;
276 : MULHW ( rt ra rb -- ) 0 75 0 31 xo-insn ;
277 : MULHW. ( rt ra rb -- ) 0 75 1 31 xo-insn ;
278 : MULHWU ( rt ra rb -- ) 0 11 0 31 xo-insn ;
279 : MULHWU. ( rt ra rb -- ) 0 11 1 31 xo-insn ;
280 : DIVW ( rt ra rb -- ) 0 491 0 31 xo-insn ;
281 : DIVW. ( rt ra rb -- ) 0 491 1 31 xo-insn ;
282 : DIVWO ( rt ra rb -- ) 1 491 0 31 xo-insn ;
283 : DIVWO. ( rt ra rb -- ) 1 491 1 31 xo-insn ;
284 : DIVWU ( rt ra rb -- ) 0 459 0 31 xo-insn ;
285 : DIVWU. ( rt ra rb -- ) 0 459 1 31 xo-insn ;
286 : DIVWUO ( rt ra rb -- ) 1 459 0 31 xo-insn ;
287 : DIVWUO. ( rt ra rb -- ) 1 459 1 31 xo-insn ;
288 : DIVWE ( rt ra rb -- ) 0 427 0 31 xo-insn ;
289 : DIVWE. ( rt ra rb -- ) 0 427 1 31 xo-insn ;
290 : DIVWEO ( rt ra rb -- ) 1 427 0 31 xo-insn ;
291 : DIVWEO. ( rt ra rb -- ) 1 427 1 31 xo-insn ;
292 : DIVWEU ( rt ra rb -- ) 0 395 0 31 xo-insn ;
293 : DIVWEU. ( rt ra rb -- ) 0 395 1 31 xo-insn ;
294 : DIVWEUO ( rt ra rb -- ) 1 395 0 31 xo-insn ;
295 : DIVWEUO. ( rt ra rb -- ) 1 395 1 31 xo-insn ;
297 ! 3.3.8.1 64-bit Fixed-Point Arithmetic Instructions
298 : MULLD ( rt ra rb -- ) 0 233 0 31 xo-insn ;
299 : MULLD. ( rt ra rb -- ) 0 233 1 31 xo-insn ;
300 : MULLDO ( rt ra rb -- ) 1 233 0 31 xo-insn ;
301 : MULLDO. ( rt ra rb -- ) 1 233 1 31 xo-insn ;
302 : MULHD ( rt ra rb -- ) 0 73 0 31 xo-insn ;
303 : MULHD. ( rt ra rb -- ) 0 73 1 31 xo-insn ;
304 : MULHDU ( rt ra rb -- ) 0 9 0 31 xo-insn ;
305 : MULHDU. ( rt ra rb -- ) 0 9 1 31 xo-insn ;
306 : DIVD ( rt ra rb -- ) 0 489 0 31 xo-insn ;
307 : DIVD. ( rt ra rb -- ) 0 489 1 31 xo-insn ;
308 : DIVDO ( rt ra rb -- ) 1 489 0 31 xo-insn ;
309 : DIVDO. ( rt ra rb -- ) 1 489 1 31 xo-insn ;
310 : DIVDU ( rt ra rb -- ) 0 457 0 31 xo-insn ;
311 : DIVDU. ( rt ra rb -- ) 0 457 1 31 xo-insn ;
312 : DIVDUO ( rt ra rb -- ) 1 457 0 31 xo-insn ;
313 : DIVDUO. ( rt ra rb -- ) 1 457 1 31 xo-insn ;
314 : DIVDE ( rt ra rb -- ) 0 425 0 31 xo-insn ;
315 : DIVDE. ( rt ra rb -- ) 0 425 1 31 xo-insn ;
316 : DIVDEO ( rt ra rb -- ) 1 425 0 31 xo-insn ;
317 : DIVDEO. ( rt ra rb -- ) 1 425 1 31 xo-insn ;
318 : DIVDEU ( rt ra rb -- ) 0 393 0 31 xo-insn ;
319 : DIVDEU. ( rt ra rb -- ) 0 393 1 31 xo-insn ;
320 : DIVDEUO ( rt ra rb -- ) 1 393 0 31 xo-insn ;
321 : DIVDEUO. ( rt ra rb -- ) 1 393 1 31 xo-insn ;
323 ! 3.3.9 Fixed-Point Compare Instructions
324 : CMPI ( bf l ra si -- ) [ [ 2 shift ] dip bitor ] 2dip 11 d-insn ;
325 : CMPLI ( bf l ra ui -- ) [ [ 2 shift ] dip bitor ] 2dip 10 d-insn ;
326 : CMP ( bf l ra rb -- ) [ [ 2 shift ] dip bitor ] 2dip 0 0 31 x-insn ;
327 : CMPL ( bf l ra rb -- ) [ [ 2 shift ] dip bitor ] 2dip 32 0 31 x-insn ;
329 ! 3.3.10 Fixed-Point Trap Instructions
330 : TWI ( to ra si -- ) 3 d-insn ;
331 : TDI ( to ra si -- ) 2 d-insn ;
332 : TW ( to ra rb -- ) 4 0 31 x-insn ;
333 : TD ( to ra rb -- ) 68 0 31 x-insn ;
335 ! 3.3.11 Fixed-Point Select
336 : ISEL ( rt ra rb bc -- ) 15 0 31 a-insn ;
338 ! 3.3.12 Fixed-Point Logical Instructions
339 : ANDI. ( ra rs ui -- ) [ swap ] dip 28 d-insn ;
340 : ANDIS. ( ra rs ui -- ) [ swap ] dip 29 d-insn ;
341 : ORI ( ra rs ui -- ) [ swap ] dip 24 d-insn ;
342 : ORIS ( ra rs ui -- ) [ swap ] dip 25 d-insn ;
343 : XORI ( ra rs ui -- ) [ swap ] dip 26 d-insn ;
344 : XORIS ( ra rs ui -- ) [ swap ] dip 27 d-insn ;
345 : AND ( ra rs rb -- ) [ swap ] dip 28 0 31 x-insn ;
346 : AND. ( ra rs rb -- ) [ swap ] dip 28 1 31 x-insn ;
347 : OR ( ra rs rb -- ) [ swap ] dip 444 0 31 x-insn ;
348 : OR. ( ra rs rb -- ) [ swap ] dip 444 1 31 x-insn ;
349 : XOR ( ra rs rb -- ) [ swap ] dip 316 0 31 x-insn ;
350 : XOR. ( ra rs rb -- ) [ swap ] dip 316 1 31 x-insn ;
351 : NAND ( ra rs rb -- ) [ swap ] dip 476 0 31 x-insn ;
352 : NAND. ( ra rs rb -- ) [ swap ] dip 476 1 31 x-insn ;
353 : NOR ( ra rs rb -- ) [ swap ] dip 124 0 31 x-insn ;
354 : NOR. ( ra rs rb -- ) [ swap ] dip 124 1 31 x-insn ;
355 : ANDC ( ra rs rb -- ) [ swap ] dip 60 0 31 x-insn ;
356 : ANDC. ( ra rs rb -- ) [ swap ] dip 60 1 31 x-insn ;
357 : EQV ( ra rs rb -- ) [ swap ] dip 284 0 31 x-insn ;
358 : EQV. ( ra rs rb -- ) [ swap ] dip 284 1 31 x-insn ;
359 : ORC ( ra rs rb -- ) [ swap ] dip 412 0 31 x-insn ;
360 : ORC. ( ra rs rb -- ) [ swap ] dip 412 1 31 x-insn ;
361 : CMPB ( ra rs rb -- ) [ swap ] dip 508 0 31 x-insn ;
362 : EXTSB ( ra rs -- ) swap 0 954 0 31 x-insn ;
363 : EXTSB. ( ra rs -- ) swap 0 954 1 31 x-insn ;
364 : EXTSH ( ra rs -- ) swap 0 922 0 31 x-insn ;
365 : EXTSH. ( ra rs -- ) swap 0 922 1 31 x-insn ;
366 : CNTLZW ( ra rs -- ) swap 0 26 0 31 x-insn ;
367 : CNTLZW. ( ra rs -- ) swap 0 26 1 31 x-insn ;
368 : POPCNTB ( ra rs -- ) swap 0 122 0 31 x-insn ;
369 : POPCNTW ( ra rs -- ) swap 0 378 0 31 x-insn ;
370 : PRTYD ( ra rs -- ) swap 0 186 0 31 x-insn ;
371 : PRTYW ( ra rs -- ) swap 0 154 0 31 x-insn ;
373 ! 3.3.12.1 64-bit Fixed-Point Logical Instructions
374 : EXTSW ( ra rs -- ) swap 0 986 0 31 x-insn ;
375 : EXTSW. ( ra rs -- ) swap 0 986 1 31 x-insn ;
376 : CNTLZD ( ra rs -- ) swap 0 58 0 31 x-insn ;
377 : CNTLZD. ( ra rs -- ) swap 0 58 1 31 x-insn ;
378 : POPCNTD ( ra rs -- ) swap 0 506 0 31 x-insn ;
379 : BPERMD ( ra rs rb -- ) [ swap ] dip 252 0 31 x-insn ;
381 ! 3.3.13.1 Fixed-Point Rotate and Shift Instructions
382 : RLWINM ( ra rs sh mb me -- ) [ swap ] 3dip 0 21 m-insn ;
383 : RLWINM. ( ra rs sh mb me -- ) [ swap ] 3dip 1 21 m-insn ;
384 : RLWNM ( ra rs rb mb me -- ) [ swap ] 3dip 0 23 m-insn ;
385 : RLWNM. ( ra rs rb mb me -- ) [ swap ] 3dip 1 23 m-insn ;
386 : RLWIMI ( ra rs sh mb me -- ) [ swap ] 3dip 0 20 m-insn ;
387 : RLWIMI. ( ra rs sh mb me -- ) [ swap ] 3dip 1 20 m-insn ;
389 ! 3.3.13.1 64-bit Fixed-Point Rotate Instructions
390 : RLDICL ( ra rs sh mb -- )
391 [ swap ] 2dip over [ HEX: 1f bitand ] [ ] [ -5 shift ]
392 tri* 0 swap 0 30 md-insn ;
393 : RLDICL. ( ra rs sh mb -- )
394 [ swap ] 2dip over [ HEX: 1f bitand ] [ ] [ -5 shift ]
395 tri* 0 swap 1 30 md-insn ;
396 : RLDICR ( ra rs sh me -- )
397 [ swap ] 2dip over [ HEX: 1f bitand ] [ ] [ -5 shift ]
398 tri* 1 swap 0 30 md-insn ;
399 : RLDICR. ( ra rs sh me -- )
400 [ swap ] 2dip over [ HEX: 1f bitand ] [ ] [ -5 shift ]
401 tri* 1 swap 1 30 md-insn ;
402 : RLDIC ( ra rs sh mb -- )
403 [ swap ] 2dip over [ HEX: 1f bitand ] [ ] [ -5 shift ]
404 tri* 2 swap 0 30 md-insn ;
405 : RLDIC. ( ra rs sh mb -- )
406 [ swap ] 2dip over [ HEX: 1f bitand ] [ ] [ -5 shift ]
407 tri* 2 swap 1 30 md-insn ;
408 : RLDCL ( ra rs rb mb -- ) [ swap ] 2dip 8 0 30 mds-insn ;
409 : RLDCL. ( ra rs rb mb -- ) [ swap ] 2dip 8 1 30 mds-insn ;
410 : RLDCR ( ra rs rb me -- ) [ swap ] 2dip 9 0 30 mds-insn ;
411 : RLDCR. ( ra rs rb me -- ) [ swap ] 2dip 9 1 30 mds-insn ;
412 : RLDIMI ( ra rs sh mb -- )
413 [ swap ] 2dip over [ HEX: 1f bitand ] [ ] [ -5 shift ]
414 tri* 3 swap 0 30 md-insn ;
415 : RLDIMI. ( ra rs sh mb -- )
416 [ swap ] 2dip over [ HEX: 1f bitand ] [ ] [ -5 shift ]
417 tri* 3 swap 1 30 md-insn ;
419 ! 3.3.13.2 Fixed-Point Shift Instructions
420 : SLW ( ra rs rb -- ) [ swap ] dip 24 0 31 x-insn ;
421 : SLW. ( ra rs rb -- ) [ swap ] dip 24 1 31 x-insn ;
422 : SRW ( ra rs rb -- ) [ swap ] dip 536 0 31 x-insn ;
423 : SRW. ( ra rs rb -- ) [ swap ] dip 536 1 31 x-insn ;
424 : SRAWI ( ra rs sh -- ) [ swap ] dip 824 0 31 x-insn ;
425 : SRAWI. ( ra rs sh -- ) [ swap ] dip 824 1 31 x-insn ;
426 : SRAW ( ra rs rb -- ) [ swap ] dip 792 0 31 x-insn ;
427 : SRAW. ( ra rs rb -- ) [ swap ] dip 792 1 31 x-insn ;
429 ! 3.3.13.2.1 64-bit Fixed-Point Shift Instructions
430 : SLD ( ra rs rb -- ) [ swap ] dip 27 0 31 x-insn ;
431 : SLD. ( ra rs rb -- ) [ swap ] dip 27 1 31 x-insn ;
432 : SRD ( ra rs rb -- ) [ swap ] dip 539 0 31 x-insn ;
433 : SRD. ( ra rs rb -- ) [ swap ] dip 539 1 31 x-insn ;
434 : SRAD ( ra rs rb -- ) [ swap ] dip 794 0 31 x-insn ;
435 : SRAD. ( ra rs rb -- ) [ swap ] dip 794 1 31 x-insn ;
436 : SRADI ( ra rs sh -- )
437 [ swap ] dip [ HEX: 1f bitand ] [ -5 shift ] bi
438 413 swap 0 31 xs-insn ;
439 : SRADI. ( ra rs sh -- )
440 [ swap ] dip [ HEX: 1f bitand ] [ -5 shift ] bi
441 413 swap 1 31 xs-insn ;
443 ! 3.3.14 BCD Assist Instructions
444 : CDTBCD ( ra rs -- ) swap 0 282 0 31 x-insn ;
445 : CBCDTD ( ra rs -- ) swap 0 314 0 31 x-insn ;
446 : ADDG6S ( rt ra rb -- ) 0 74 0 31 xo-insn ;
448 ! 3.3.15 Move To/From System Register Instructions
449 : MTSPR ( spr rs -- ) swap 467 0 31 xfx-insn ;
450 : MFSPR ( rt spr -- ) 339 0 31 xfx-insn ;
451 : MTCRF ( fxm rs -- ) swap HEX: ff bitand 1 shift 144 0 31 xfx-insn ;
452 : MFCR ( rt -- ) 0 19 0 31 xfx-insn ;
454 ! 3.3.15.1 Move To/From One Condition Register Field Instructions
455 : MTOCRF ( fxm rs -- ) swap HEX: 100 bitor 1 shift 144 0 31 xfx-insn ;
456 : MFOCRF ( rt fxm -- ) HEX: 100 bitor 1 shift 19 0 31 xfx-insn ;
458 ! 3.3.15.2 Move To/From System Registers (Category: Embedded)
459 : MCRXR ( bf -- ) 2 shift 0 0 512 0 31 x-insn ;
460 : MTDCRUX ( rs ra -- ) 0 419 0 31 x-insn ;
461 : MFDCRUX ( rt ra -- ) 0 291 0 31 x-insn ;
463 ! 4.6.2 Floating-Point Load Instructions
464 : LFS ( frt ra d -- ) 48 d-insn ;
465 : LFSU ( frt ra d -- ) 49 d-insn ;
466 : LFD ( frt ra d -- ) 50 d-insn ;
467 : LFDU ( frt ra d -- ) 51 d-insn ;
468 : LFSX ( frt ra rb -- ) 535 0 31 x-insn ;
469 : LFSUX ( frt ra rb -- ) 567 0 31 x-insn ;
470 : LFDX ( frt ra rb -- ) 599 0 31 x-insn ;
471 : LFDUX ( frt ra rb -- ) 631 0 31 x-insn ;
472 : LFIWAX ( frt ra rb -- ) 855 0 31 x-insn ;
473 : LFIWZX ( frt ra rb -- ) 887 0 31 x-insn ;
475 ! 4.6.3 Floating-Point Store Instructions
476 : STFS ( frs ra d -- ) 52 d-insn ;
477 : STFSU ( frs ra d -- ) 53 d-insn ;
478 : STFD ( frs ra d -- ) 54 d-insn ;
479 : STFDU ( frs ra d -- ) 55 d-insn ;
480 : STFSX ( frs ra rb -- ) 663 0 31 x-insn ;
481 : STFSUX ( frs ra rb -- ) 695 0 31 x-insn ;
482 : STFDX ( frs ra rb -- ) 727 0 31 x-insn ;
483 : STFDUX ( frs ra rb -- ) 759 0 31 x-insn ;
484 : STFIWX ( frs ra rb -- ) 983 0 31 x-insn ;
486 ! 4.6.4 Floating-Point Load Store Doubleword Pair Instructions
487 : LFDP ( frtp ra ds -- ) 0 57 ds-insn ; deprecated
488 : STFDP ( frsp ra ds -- ) 0 61 ds-insn ; deprecated
489 : LFDPX ( frtp ra rb -- ) 791 0 31 x-insn ; deprecated
490 : STFDPX ( frsp ra rb -- ) 919 0 31 x-insn ; deprecated
492 ! 4.6.5 Floating-Point Move Instructions
493 : FMR ( frt frb -- ) [ 0 ] dip 72 0 63 x-insn ;
494 : FMR. ( frt frb -- ) [ 0 ] dip 72 1 63 x-insn ;
495 : FABS ( frt frb -- ) [ 0 ] dip 264 0 63 x-insn ;
496 : FABS. ( frt frb -- ) [ 0 ] dip 264 1 63 x-insn ;
497 : FNABS ( frt frb -- ) [ 0 ] dip 136 0 63 x-insn ;
498 : FNABS. ( frt frb -- ) [ 0 ] dip 136 1 63 x-insn ;
499 : FNEG ( frt frb -- ) [ 0 ] dip 40 0 63 x-insn ;
500 : FNEG. ( frt frb -- ) [ 0 ] dip 40 1 63 x-insn ;
501 : FCPSGN ( frt fra frb -- ) 8 0 63 x-insn ;
502 : FCPSGN. ( frt fra frb -- ) 8 1 63 x-insn ;
504 ! 4.6.6.1 Floating-Point Elementary Arithmetic Instructions
505 : FADD ( frt fra frb -- ) 0 21 0 63 a-insn ;
506 : FADD. ( frt fra frb -- ) 0 21 1 63 a-insn ;
507 : FADDS ( frt fra frb -- ) 0 21 0 59 a-insn ;
508 : FADDS. ( frt fra frb -- ) 0 21 1 59 a-insn ;
509 : FSUB ( frt fra frb -- ) 0 20 0 63 a-insn ;
510 : FSUB. ( frt fra frb -- ) 0 20 1 63 a-insn ;
511 : FSUBS ( frt fra frb -- ) 0 20 0 59 a-insn ;
512 : FSUBS. ( frt fra frb -- ) 0 20 1 59 a-insn ;
513 : FMUL ( frt fra frc -- ) 0 swap 25 0 63 a-insn ;
514 : FMUL. ( frt fra frc -- ) 0 swap 25 1 63 a-insn ;
515 : FMULS ( frt fra frb -- ) 0 25 0 59 a-insn ;
516 : FMULS. ( frt fra frb -- ) 0 25 1 59 a-insn ;
517 : FDIV ( frt fra frb -- ) 0 18 0 63 a-insn ;
518 : FDIV. ( frt fra frb -- ) 0 18 1 63 a-insn ;
519 : FDIVS ( frt fra frb -- ) 0 18 0 59 a-insn ;
520 : FDIVS. ( frt fra frb -- ) 0 18 1 59 a-insn ;
521 : FSQRT ( frt frb -- ) [ 0 ] dip 0 22 0 63 a-insn ;
522 : FSQRT. ( frt frb -- ) [ 0 ] dip 0 22 1 63 a-insn ;
523 : FSQRTS ( frt frb -- ) [ 0 ] dip 0 22 0 59 a-insn ;
524 : FSQRTS. ( frt frb -- ) [ 0 ] dip 0 22 1 59 a-insn ;
525 : FRE ( frt frb -- ) [ 0 ] dip 0 24 0 63 a-insn ;
526 : FRE. ( frt frb -- ) [ 0 ] dip 0 24 1 63 a-insn ;
527 : FRES ( frt frb -- ) [ 0 ] dip 0 24 0 59 a-insn ;
528 : FRES. ( frt frb -- ) [ 0 ] dip 0 24 1 59 a-insn ;
529 : FRSQRTE ( frt frb -- ) [ 0 ] dip 0 26 0 63 a-insn ;
530 : FRSQRTE. ( frt frb -- ) [ 0 ] dip 0 26 1 63 a-insn ;
531 : FRSQRTES ( frt frb -- ) [ 0 ] dip 0 26 0 59 a-insn ;
532 : FRSQRTES. ( frt frb -- ) [ 0 ] dip 0 26 1 59 a-insn ;
533 : FTDIV ( bf fra frb -- ) [ 2 shift ] 2dip 128 0 63 x-insn ;
534 : FTSQRT ( bf frb -- ) [ 2 shift 0 ] dip 160 0 63 x-insn ;
536 ! 4.6.6.2 Floating-Point Multiply-Add Instructions
537 : FMADD ( frt fra frc frb -- ) swap 29 0 63 a-insn ;
538 : FMADD. ( frt fra frc frb -- ) swap 29 1 63 a-insn ;
539 : FMADDS ( frt fra frc frb -- ) swap 29 0 59 a-insn ;
540 : FMADDS. ( frt fra frc frb -- ) swap 29 1 59 a-insn ;
541 : FMSUB ( frt fra frc frb -- ) swap 28 0 63 a-insn ;
542 : FMSUB. ( frt fra frc frb -- ) swap 28 1 63 a-insn ;
543 : FMSUBS ( frt fra frc frb -- ) swap 28 0 59 a-insn ;
544 : FMSUBS. ( frt fra frc frb -- ) swap 28 1 59 a-insn ;
545 : FNMADD ( frt fra frc frb -- ) swap 31 0 63 a-insn ;
546 : FNMADD. ( frt fra frc frb -- ) swap 31 1 63 a-insn ;
547 : FNMADDS ( frt fra frc frb -- ) swap 31 0 59 a-insn ;
548 : FNMADDS. ( frt fra frc frb -- ) swap 31 1 59 a-insn ;
549 : FNMSUB ( frt fra frc frb -- ) swap 30 0 63 a-insn ;
550 : FNMSUB. ( frt fra frc frb -- ) swap 30 1 63 a-insn ;
551 : FNMSUBS ( frt fra frc frb -- ) swap 30 0 59 a-insn ;
552 : FNMSUBS. ( frt fra frc frb -- ) swap 30 1 59 a-insn ;
554 ! 4.6.7.1 Floating-Point Rounding Instruction
555 : FRSP ( frt frb -- ) [ 0 ] dip 12 0 63 x-insn ;
556 : FRSP. ( frt frb -- ) [ 0 ] dip 12 1 63 x-insn ;
558 ! 4.6.7.2 Floating-Point Convert To/From Integer Instructions
559 : FCTID ( frt frb -- ) [ 0 ] dip 814 0 63 x-insn ;
560 : FCTID. ( frt frb -- ) [ 0 ] dip 814 1 63 x-insn ;
561 : FCTIDZ ( frt frb -- ) [ 0 ] dip 815 0 63 x-insn ;
562 : FCTIDZ. ( frt frb -- ) [ 0 ] dip 815 1 63 x-insn ;
563 : FCTIDU ( frt frb -- ) [ 0 ] dip 942 0 63 x-insn ;
564 : FCTIDU. ( frt frb -- ) [ 0 ] dip 942 1 63 x-insn ;
565 : FCTIDUZ ( frt frb -- ) [ 0 ] dip 943 0 63 x-insn ;
566 : FCTIDUZ. ( frt frb -- ) [ 0 ] dip 943 1 63 x-insn ;
567 : FCTIW ( frt frb -- ) [ 0 ] dip 14 0 63 x-insn ;
568 : FCTIW. ( frt frb -- ) [ 0 ] dip 14 1 63 x-insn ;
569 : FCTIWZ ( frt frb -- ) [ 0 ] dip 15 0 63 x-insn ;
570 : FCTIWZ. ( frt frb -- ) [ 0 ] dip 15 1 63 x-insn ;
571 : FCTIWU ( frt frb -- ) [ 0 ] dip 142 0 63 x-insn ;
572 : FCTIWU. ( frt frb -- ) [ 0 ] dip 142 1 63 x-insn ;
573 : FCTIWUZ ( frt frb -- ) [ 0 ] dip 143 0 63 x-insn ;
574 : FCTIWUZ. ( frt frb -- ) [ 0 ] dip 143 1 63 x-insn ;
575 : FCFID ( frt frb -- ) [ 0 ] dip 846 0 63 x-insn ;
576 : FCFID. ( frt frb -- ) [ 0 ] dip 846 1 63 x-insn ;
577 : FCFIDU ( frt frb -- ) [ 0 ] dip 974 0 63 x-insn ;
578 : FCFIDU. ( frt frb -- ) [ 0 ] dip 974 1 63 x-insn ;
579 : FCFIDS ( frt frb -- ) [ 0 ] dip 846 0 59 x-insn ;
580 : FCFIDS. ( frt frb -- ) [ 0 ] dip 846 1 59 x-insn ;
581 : FCFIDUS ( frt frb -- ) [ 0 ] dip 974 0 59 x-insn ;
582 : FCFIDUS. ( frt frb -- ) [ 0 ] dip 974 1 59 x-insn ;
584 ! 4.6.7.3 Floating Round to Integer Instructions
585 : FRIN ( frt frb -- ) [ 0 ] dip 392 0 63 x-insn ;
586 : FRIN. ( frt frb -- ) [ 0 ] dip 392 1 63 x-insn ;
587 : FRIZ ( frt frb -- ) [ 0 ] dip 424 0 63 x-insn ;
588 : FRIZ. ( frt frb -- ) [ 0 ] dip 424 1 63 x-insn ;
589 : FRIP ( frt frb -- ) [ 0 ] dip 456 0 63 x-insn ;
590 : FRIP. ( frt frb -- ) [ 0 ] dip 456 1 63 x-insn ;
591 : FRIM ( frt frb -- ) [ 0 ] dip 488 0 63 x-insn ;
592 : FRIM. ( frt frb -- ) [ 0 ] dip 488 1 63 x-insn ;
594 ! 4.6.8 Floating-Point Compare Instructions
595 : FCMPU ( bf fra frb -- ) [ 2 shift ] 2dip 0 0 63 x-insn ;
596 : FCMPO ( bf fra frb -- ) [ 2 shift ] 2dip 32 0 63 x-insn ;
598 ! 4.6.9 Floating-Point Select Instruction
599 : FSEL ( frt fra frc frb -- ) swap 23 0 63 a-insn ;
600 : FSEL. ( frt fra frc frb -- ) swap 23 1 63 a-insn ;
602 ! 4.6.10 Floating-Point Status and Control Register Instructions
603 : MFFS ( frt -- ) 0 0 583 0 63 x-insn ;
604 : MFFS. ( frt -- ) 0 0 583 1 63 x-insn ;
605 : MCRFS ( bf bfa -- ) [ 2 shift ] bi@ 0 64 0 63 x-insn ;
606 : MTFSFI ( bf u w -- ) swap [ 2 shift ] [ 1 bitand ] [ 1 shift ]
607 tri* 134 0 63 x-insn ;
608 : MTFSFI. ( bf u w -- ) swap [ 2 shift ] [ 1 bitand ] [ 1 shift ]
609 tri* 134 1 63 x-insn ;
610 :: MTFSF ( flm frb l w -- ) l flm w frb 711 0 63 xfl-insn ;
611 :: MTFSF. ( flm frb l w -- ) l flm w frb 711 1 63 xfl-insn ;
612 : MTFSB0 ( bt -- ) 0 0 70 0 63 x-insn ;
613 : MTFSB0. ( bt -- ) 0 0 70 1 63 x-insn ;
614 : MTFSB1 ( bt -- ) 0 0 38 0 63 x-insn ;
615 : MTFSB1. ( bt -- ) 0 0 38 1 63 x-insn ;
617 ! 5.6.1 DFP Arithmetic Instructions
618 : DADD ( frt fra frb -- ) 2 0 59 x-insn ;
619 : DADD. ( frt fra frb -- ) 2 1 59 x-insn ;
620 : DADDQ ( frtp frap frbp -- ) 2 0 63 x-insn ;
621 : DADDQ. ( frtp frap frbp -- ) 2 1 63 x-insn ;
622 : DSUB ( frt fra frb -- ) 514 0 59 x-insn ;
623 : DSUB. ( frt fra frb -- ) 514 1 59 x-insn ;
624 : DSUBQ ( frtp frap frbp -- ) 514 0 63 x-insn ;
625 : DSUBQ. ( frtp frap frbp -- ) 514 1 63 x-insn ;
626 : DMUL ( frp fra frb -- ) 34 0 59 x-insn ;
627 : DMUL. ( frt fra frb -- ) 34 1 59 x-insn ;
628 : DMULQ ( frtp frap frbp -- ) 34 0 63 x-insn ;
629 : DMULQ. ( frtp frap frbp -- ) 34 1 63 x-insn ;
630 : DDIV ( frp fra frb -- ) 546 0 59 x-insn ;
631 : DDIV. ( frt fra frb -- ) 546 1 59 x-insn ;
632 : DDIVQ ( frtp frap frbp -- ) 546 0 63 x-insn ;
633 : DDIVQ. ( frtp frap frbp -- ) 546 1 63 x-insn ;
635 ! 5.6.2 DFP Compare Instructions
636 : DCMPU ( bf fra frb -- ) [ 2 shift ] 2dip 642 0 59 x-insn ;
637 : DCMPUQ ( bf frap frbp -- ) [ 2 shift ] 2dip 642 0 63 x-insn ;
638 : DCMPO ( bf fra frb -- ) [ 2 shift ] 2dip 130 0 59 x-insn ;
639 : DCMPOQ ( bf frap frbp -- ) [ 2 shift ] 2dip 130 0 63 x-insn ;
641 ! 5.6.3 DFP Test Instructions
642 : DTSTDC ( bf fra dcm -- ) [ 2 shift ] 2dip 194 0 59 z22-insn ;
643 : DTSTDCQ ( bf frap dgm -- ) [ 2 shift ] 2dip 194 0 63 z22-insn ;
644 : DTSTDG ( bf fra dcm -- ) [ 2 shift ] 2dip 226 0 59 z22-insn ;
645 : DTSTDGQ ( bf frap dgm -- ) [ 2 shift ] 2dip 226 0 63 z22-insn ;
646 : DTSTEX ( bf fra frb -- ) [ 2 shift ] 2dip 162 0 59 x-insn ;
647 : DTSTEXQ ( bf frap frbp -- ) [ 2 shift ] 2dip 162 0 63 x-insn ;
648 : DTSTSF ( bf fra frb -- ) [ 2 shift ] 2dip 674 0 59 x-insn ;
649 : DTSTSFQ ( bf frap frbp -- ) [ 2 shift ] 2dip 674 0 63 x-insn ;
651 ! 5.6.4 DFP Quantum Adjustment Instructions
652 : DQUAI ( te frt frb rmc -- ) [ swap ] 2dip 67 0 59 z23-insn ;
653 : DQUAI. ( te frt frb rmc -- ) [ swap ] 2dip 67 1 59 z23-insn ;
654 : DQUAIQ ( te frtp frbp rmc -- ) [ swap ] 2dip 67 0 63 z23-insn ;
655 : DQUAIQ. ( te frtp frbp rmc -- ) [ swap ] 2dip 67 1 63 z23-insn ;
656 : DQUA ( frt fra frb rmc -- ) 3 0 59 z23-insn ;
657 : DQUA. ( frt fra frb rmc -- ) 3 1 59 z23-insn ;
658 : DQUAQ ( frtp frap frbp rmc -- ) 3 0 63 z23-insn ;
659 : DQUAQ. ( frtp frap frbp rmc -- ) 3 1 63 z23-insn ;
660 : DRRND ( frt fra frb rmc -- ) 35 0 59 z23-insn ;
661 : DRRND. ( frt fra frb rmc -- ) 35 1 59 z23-insn ;
662 : DRRNDQ ( frtp frap frbp rmc -- ) 35 0 63 z23-insn ;
663 : DRRNDQ. ( frtp frap frbp rmc -- ) 35 1 63 z23-insn ;
664 : DRINTX ( r frt frb rmc -- ) [ swap ] 2dip 99 0 59 z23-insn ;
665 : DRINTX. ( r frt frb rmc -- ) [ swap ] 2dip 99 1 59 z23-insn ;
666 : DRINTXQ ( r frtp frbp rmc -- ) [ swap ] 2dip 99 0 63 z23-insn ;
667 : DRINTXQ. ( r frtp frbp rmc -- ) [ swap ] 2dip 99 1 63 z23-insn ;
668 : DRINTN ( r frt frb rmc -- ) [ swap ] 2dip 227 0 59 z23-insn ;
669 : DRINTN. ( r frt frb rmc -- ) [ swap ] 2dip 227 1 59 z23-insn ;
670 : DRINTNQ ( r frtp frbp rmc -- ) [ swap ] 2dip 227 0 63 z23-insn ;
671 : DRINTNQ. ( r frtp frbp rmc -- ) [ swap ] 2dip 227 1 63 z23-insn ;
673 ! 5.6.5.1 DFP Data-Format Conversion Instructions
674 : DCTDP ( frt frb -- ) 0 swap 258 0 59 x-insn ;
675 : DCTDP. ( frt frb -- ) 0 swap 258 1 59 x-insn ;
676 : DCTQPQ ( frtp frbp -- ) 0 swap 258 0 63 x-insn ;
677 : DCTQPQ. ( frtp frbp -- ) 0 swap 258 1 63 x-insn ;
678 : DSRP ( frt frb -- ) 0 swap 770 0 59 x-insn ;
679 : DSRP. ( frt frb -- ) 0 swap 770 1 59 x-insn ;
680 : DRDPQ ( frtp frbp -- ) 0 swap 770 0 63 x-insn ;
681 : DRDPQ. ( frtp frbp -- ) 0 swap 770 1 63 x-insn ;
683 ! 5.6.5.2 DFP Data-Type Conversion Instructions
684 : DCFFIX ( frt frb -- ) 0 swap 802 0 59 x-insn ;
685 : DCFFIX. ( frt frb -- ) 0 swap 802 1 59 x-insn ;
686 : DCFFIXQ ( frtp frbp -- ) 0 swap 802 0 63 x-insn ;
687 : DCFFIXQ. ( frtp frbp -- ) 0 swap 802 1 63 x-insn ;
688 : DCTFIX ( frt frb -- ) 0 swap 290 0 59 x-insn ;
689 : DCTFIX. ( frt frb -- ) 0 swap 290 1 59 x-insn ;
690 : DCTFIXQ ( frtp frbp -- ) 0 swap 290 0 63 x-insn ;
691 : DCTFIXQ. ( frtp frbp -- ) 0 swap 290 1 63 x-insn ;
693 ! 5.6.6 DFP Format Instructions
694 : DDEDPD ( sp frt frb -- ) [ swap 3 shift ] dip 322 0 59 x-insn ;
695 : DDEDPD. ( sp frt frb -- ) [ swap 3 shift ] dip 322 1 59 x-insn ;
696 : DDEDPDQ ( sp frtp frbp -- ) [ swap 3 shift ] dip 322 0 63 x-insn ;
697 : DDEDPDQ. ( sp frtp frbp -- ) [ swap 3 shift ] dip 322 1 63 x-insn ;
698 : DENBCD ( s frt frb -- ) [ swap 4 shift ] dip 834 0 59 x-insn ;
699 : DENBCD. ( s frt frb -- ) [ swap 4 shift ] dip 834 1 59 x-insn ;
700 : DENBCDQ ( s frtp frbp -- ) [ swap 4 shift ] dip 834 0 63 x-insn ;
701 : DENBCDQ. ( s frtp frbp -- ) [ swap 4 shift ] dip 834 1 63 x-insn ;
702 : DXEX ( frt frb -- ) 0 swap 354 0 59 x-insn ;
703 : DXEX. ( frt frb -- ) 0 swap 354 1 59 x-insn ;
704 : DXEXQ ( frtp frbp -- ) 0 swap 354 0 63 x-insn ;
705 : DXEXQ. ( frtp frbp -- ) 0 swap 354 1 63 x-insn ;
706 : DIEX ( frt fra frb -- ) 866 0 59 x-insn ;
707 : DIEX. ( frt fra frb -- ) 866 1 59 x-insn ;
708 : DIEXQ ( frtp frap frbp -- ) 866 0 63 x-insn ;
709 : DIEXQ. ( frtp frap frbp -- ) 866 1 63 x-insn ;
710 : DSCLI ( frt fra sh -- ) 66 0 59 z22-insn ;
711 : DSCLI. ( frt fra sh -- ) 66 1 59 z22-insn ;
712 : DSCLIQ ( frtp frap sh -- ) 66 0 63 z22-insn ;
713 : DSCLIQ. ( frtp frap sh -- ) 66 1 63 z22-insn ;
714 : DSCRI ( frt fra sh -- ) 98 0 59 z22-insn ;
715 : DSCRI. ( frt fra sh -- ) 98 1 59 z22-insn ;
716 : DSCRIQ ( frtp frap sh -- ) 98 0 63 z22-insn ;
717 : DSCRIQ. ( frtp frap sh -- ) 98 1 63 z22-insn ;
719 ! 6.7.2 Vector Load Instructions
720 : LVEBX ( vrt ra rb -- ) 7 0 31 x-insn ;
721 : LVEHX ( vrt ra rb -- ) 39 0 31 x-insn ;
722 : LVEWX ( vrt ra rb -- ) 71 0 31 x-insn ;
723 : LVX ( vrt ra rb -- ) 103 0 31 x-insn ;
724 : LVXL ( vrt ra rb -- ) 359 0 31 x-insn ;
726 ! 6.7.3 Vector Store Instructions
727 : STVEBX ( vrs ra rb -- ) 135 0 31 x-insn ;
728 : STVEHX ( vrs ra rb -- ) 167 0 31 x-insn ;
729 : STVEWX ( vrs ra rb -- ) 199 0 31 x-insn ;
730 : STVX ( vrs ra rb -- ) 231 0 31 x-insn ;
731 : STVXL ( vrs ra rb -- ) 487 0 31 x-insn ;
733 ! 6.7.4 Vector Alignment Support Instructions
734 : LVSL ( vrt ra rb -- ) 6 0 31 x-insn ;
735 : LVSR ( vrt ra rb -- ) 38 0 31 x-insn ;
737 ! 6.8.1 Vector Pack and Unpack Instructions
738 : VPKUHUM ( vrt vra vrb -- ) 14 4 vx-insn ;
739 : VPKUWUM ( vrt vra vrb -- ) 78 4 vx-insn ;
740 : VPKUHUS ( vrt vra vrb -- ) 142 4 vx-insn ;
741 : VPKUWUS ( vrt vra vrb -- ) 206 4 vx-insn ;
742 : VPKSHUS ( vrt vra vrb -- ) 270 4 vx-insn ;
743 : VPKSWUS ( vrt vra vrb -- ) 334 4 vx-insn ;
744 : VPKSHSS ( vrt vra vrb -- ) 398 4 vx-insn ;
745 : VPKSWSS ( vrt vra vrb -- ) 462 4 vx-insn ;
746 : VPKPX ( vrt vra vrb -- ) 782 4 vx-insn ;
747 : VUPKHSB ( vrt vrb -- ) 0 swap 526 4 vx-insn ;
748 : VUPKHSH ( vrt vrb -- ) 0 swap 590 4 vx-insn ;
749 : VUPKLSB ( vrt vrb -- ) 0 swap 654 4 vx-insn ;
750 : VUPKLSH ( vrt vrb -- ) 0 swap 718 4 vx-insn ;
751 : VUPKHPX ( vrt vrb -- ) 0 swap 846 4 vx-insn ;
752 : VUPKLPX ( vrt vrb -- ) 0 swap 974 4 vx-insn ;
754 ! 6.8.2 Vector Merge Instructions
755 : VMRGHB ( vrt vra vrb -- ) 12 4 vx-insn ;
756 : VMRGHH ( vrt vra vrb -- ) 76 4 vx-insn ;
757 : VMRGHW ( vrt vra vrb -- ) 140 4 vx-insn ;
758 : VMRGLB ( vrt vra vrb -- ) 268 4 vx-insn ;
759 : VMRGLH ( vrt vra vrb -- ) 332 4 vx-insn ;
760 : VMRGLW ( vrt vra vrb -- ) 396 4 vx-insn ;
762 ! 6.8.3 Vector Splat Instructions
763 : VSPLTB ( vrt vrb uim -- ) swap 524 4 vx-insn ;
764 : VSPLTH ( vrt vrb uim -- ) swap 588 4 vx-insn ;
765 : VSPLTW ( vrt vrb uim -- ) swap 652 4 vx-insn ;
766 : VSPLTISB ( vrt sim -- ) 0 780 4 vx-insn ;
767 : VSPLTISH ( vrt sim -- ) 0 844 4 vx-insn ;
768 : VSPLTISW ( vrt sim -- ) 0 908 4 vx-insn ;
770 ! 6.8.4 Vector Permute Instruction
771 : VPERM ( vrt vra vrb vrc -- ) 43 4 va-insn ;
773 ! 6.8.5 Vector Select Instruction
774 : VSEL ( vrt vra vrb vrc -- ) 42 4 va-insn ;
776 ! 6.8.6 Vector Shift Instructions
777 : VSL ( vrt vra vrb -- ) 452 4 vx-insn ;
778 : VSR ( vrt vra vrb -- ) 708 4 vx-insn ;
779 : VSLO ( vrt vra vrb -- ) 1036 4 vx-insn ;
780 : VSRO ( vrt vra vrb -- ) 1100 4 vx-insn ;
781 : VSLDOI ( vrt vra vrb shb -- ) 44 4 va-insn ;
783 ! 6.9.1.1 Vector Integer Add Instructions
784 : VADDCUW ( vrt vra vrb -- ) 384 4 vx-insn ;
785 : VADDSHS ( vrt vra vrb -- ) 832 4 vx-insn ;
786 : VADDSBS ( vrt vra vrb -- ) 768 4 vx-insn ;
787 : VADDSWS ( vrt vra vrb -- ) 896 4 vx-insn ;
788 : VADDUBM ( vrt vra vrb -- ) 0 4 vx-insn ;
789 : VADDUHM ( vrt vra vrb -- ) 64 4 vx-insn ;
790 : VADDUWM ( vrt vra vrb -- ) 128 4 vx-insn ;
791 : VADDUBS ( vrt vra vrb -- ) 512 4 vx-insn ;
792 : VADDUHS ( vrt vra vrb -- ) 576 4 vx-insn ;
793 : VADDUWS ( vrt vra vrb -- ) 640 4 vx-insn ;
795 ! 6.9.1.2 Vector Integer Subtract Instructions
796 : VSUBCUW ( vrt vra vrb -- ) 1408 4 vx-insn ;
797 : VSUBSBS ( vrt vra vrb -- ) 1792 4 vx-insn ;
798 : VSUBSHS ( vrt vra vrb -- ) 1856 4 vx-insn ;
799 : VSUBSWS ( vrt vra vrb -- ) 1920 4 vx-insn ;
800 : VSUBUBM ( vrt vra vrb -- ) 1024 4 vx-insn ;
801 : VSUBUHM ( vrt vra vrb -- ) 1088 4 vx-insn ;
802 : VSUBUWM ( vrt vra vrb -- ) 1152 4 vx-insn ;
803 : VSUBUBS ( vrt vra vrb -- ) 1536 4 vx-insn ;
804 : VSUBUHS ( vrt vra vrb -- ) 1600 4 vx-insn ;
805 : VSUBUWS ( vrt vra vrb -- ) 1664 4 vx-insn ;
807 ! 6.9.1.3 Vector Integer Multiply Instructions
808 : VMULESB ( vrt vra vrb -- ) 776 4 vx-insn ;
809 : VMULESH ( vrt vra vrb -- ) 840 4 vx-insn ;
810 : VMULEUB ( vrt vra vrb -- ) 520 4 vx-insn ;
811 : VMULEUH ( vrt vra vrb -- ) 584 4 vx-insn ;
812 : VMULOSB ( vrt vra vrb -- ) 264 4 vx-insn ;
813 : VMULOSH ( vrt vra vrb -- ) 328 4 vx-insn ;
814 : VMULOUB ( vrt vra vrb -- ) 8 4 vx-insn ;
815 : VMULOUH ( vrt vra vrb -- ) 72 4 vx-insn ;
817 ! 6.9.1.4 Vector Integer Multiply-Add/Sum Instructions
818 : VMHADDSHS ( vrt vra vrb vrc -- ) 32 4 va-insn ;
819 : VMHRADDSHS ( vrt vra vrb vrc -- ) 33 4 va-insn ;
820 : VMLADDUHM ( vrt vra vrb vrc -- ) 34 4 va-insn ;
821 : VMSUMUBM ( vrt vra vrb vrc -- ) 36 4 va-insn ;
822 : VMSUMMBM ( vrt vra vrb vrc -- ) 37 4 va-insn ;
823 : VMSUMSHM ( vrt vra vrb vrc -- ) 40 4 va-insn ;
824 : VMSUMSHS ( vrt vra vrb vrc -- ) 41 4 va-insn ;
825 : VMSUMUHM ( vrt vra vrb vrc -- ) 38 4 va-insn ;
826 : VMSUMUHS ( vrt vra vrb vrc -- ) 39 4 va-insn ;
828 ! 6.9.1.5 Vector Integer Sum-Across Intructions
829 : VSUMSWS ( vrt vra vrb -- ) 1928 4 vx-insn ;
830 : VSUM2SWS ( vrt vra vrb -- ) 1672 4 vx-insn ;
831 : VSUM4SBS ( vrt vra vrb -- ) 1800 4 vx-insn ;
832 : VSUM4UBS ( vrt vra vrb -- ) 1544 4 vx-insn ;
833 : VSUM4SHS ( vrt vra vrb -- ) 1608 4 vx-insn ;
835 ! 6.9.1.6 Vector Integer Average Instructions
836 : VAVGSB ( vrt vra vrb -- ) 1282 4 vx-insn ;
837 : VAVGSH ( vrt vra vrb -- ) 1346 4 vx-insn ;
838 : VAVGSW ( vrt vra vrb -- ) 1410 4 vx-insn ;
839 : VAVGUB ( vrt vra vrb -- ) 1026 4 vx-insn ;
840 : VAVGUH ( vrt vra vrb -- ) 1090 4 vx-insn ;
841 : VAVGUW ( vrt vra vrb -- ) 1154 4 vx-insn ;
843 ! 6.9.1.7 Vector Integer Maximum and Minimum Instructions
844 : VMAXSB ( vrt vra vrb -- ) 258 4 vx-insn ;
845 : VMAXSH ( vrt vra vrb -- ) 322 4 vx-insn ;
846 : VMAXSW ( vrt vra vrb -- ) 386 4 vx-insn ;
847 : VMAXUB ( vrt vra vrb -- ) 2 4 vx-insn ;
848 : VMAXUH ( vrt vra vrb -- ) 66 4 vx-insn ;
849 : VMAXUW ( vrt vra vrb -- ) 130 4 vx-insn ;
850 : VMINSB ( vrt vra vrb -- ) 770 4 vx-insn ;
851 : VMINSH ( vrt vra vrb -- ) 834 4 vx-insn ;
852 : VMINSW ( vrt vra vrb -- ) 898 4 vx-insn ;
853 : VMINUB ( vrt vra vrb -- ) 514 4 vx-insn ;
854 : VMINUH ( vrt vra vrb -- ) 578 4 vx-insn ;
855 : VMINUW ( vrt vra vrb -- ) 642 4 vx-insn ;
857 ! 6.9.2 Vector Integer Compare Instructions
858 : VCMPEQUB ( vrt vra vrb -- ) 0 6 4 vc-insn ;
859 : VCMPEQUB. ( vrt vra vrb -- ) 1 6 4 vc-insn ;
860 : VCMPEQUH ( vrt vra vrb -- ) 0 70 4 vc-insn ;
861 : VCMPEQUH. ( vrt vra vrb -- ) 1 70 4 vc-insn ;
862 : VCMPEQUW ( vrt vra vrb -- ) 0 134 4 vc-insn ;
863 : VCMPEQUW. ( vrt vra vrb -- ) 1 134 4 vc-insn ;
864 : VCMPGTSB ( vrt vra vrb -- ) 0 774 4 vc-insn ;
865 : VCMPGTSB. ( vrt vra vrb -- ) 1 774 4 vc-insn ;
866 : VCMPGTSH ( vrt vra vrb -- ) 0 838 4 vc-insn ;
867 : VCMPGTSH. ( vrt vra vrb -- ) 1 838 4 vc-insn ;
868 : VCMPGTSW ( vrt vra vrb -- ) 0 902 4 vc-insn ;
869 : VCMPGTSW. ( vrt vra vrb -- ) 1 902 4 vc-insn ;
870 : VCMPGTUB ( vrt vra vrb -- ) 0 518 4 vc-insn ;
871 : VCMPGTUB. ( vrt vra vrb -- ) 1 518 4 vc-insn ;
872 : VCMPGTUH ( vrt vra vrb -- ) 0 582 4 vc-insn ;
873 : VCMPGTUH. ( vrt vra vrb -- ) 1 582 4 vc-insn ;
874 : VCMPGTUW ( vrt vra vrb -- ) 0 646 4 vc-insn ;
875 : VCMPGTUW. ( vrt vra vrb -- ) 1 646 4 vc-insn ;
877 ! 6.9.3 Vector Logical Instructions
878 : VAND ( vrt vra vrb -- ) 1028 4 vx-insn ;
879 : VANDC ( vrt vra vrb -- ) 1092 4 vx-insn ;
880 : VNOR ( vrt vra vrb -- ) 1284 4 vx-insn ;
881 : VOR ( vrt vra vrb -- ) 1156 4 vx-insn ;
882 : VXOR ( vrt vra vrb -- ) 1220 4 vx-insn ;
884 ! 6.9.4 Vector Integer Rotate and Shift Instructions
885 : VRLB ( vrt vra vrb -- ) 4 4 vx-insn ;
886 : VRLH ( vrt vra vrb -- ) 68 4 vx-insn ;
887 : VRLW ( vrt vra vrb -- ) 132 4 vx-insn ;
888 : VSLB ( vrt vra vrb -- ) 260 4 vx-insn ;
889 : VSLH ( vrt vra vrb -- ) 324 4 vx-insn ;
890 : VSLW ( vrt vra vrb -- ) 388 4 vx-insn ;
891 : VSRB ( vrt vra vrb -- ) 516 4 vx-insn ;
892 : VSRH ( vrt vra vrb -- ) 580 4 vx-insn ;
893 : VSRW ( vrt vra vrb -- ) 644 4 vx-insn ;
894 : VSRAB ( vrt vra vrb -- ) 772 4 vx-insn ;
895 : VSRAH ( vrt vra vrb -- ) 836 4 vx-insn ;
896 : VSRAW ( vrt vra vrb -- ) 900 4 vx-insn ;
898 ! 6.10.1 Vector Floating-Point Arithmetic Instructions
899 : VADDFP ( vrt vra vrb -- ) 10 4 vx-insn ;
900 : VSUBFP ( vrt vra vrb -- ) 74 4 vx-insn ;
901 : VMADDFP ( vrt vra vrb -- ) 46 4 vx-insn ;
902 : VNMSUBFP ( vrt vra vrb -- ) 47 4 vx-insn ;
904 ! 6.10.2 Vector Floating-Point Maximum and Minimum Instructions
905 : VMAXFP ( vrt vra vrb -- ) 1034 4 vx-insn ;
906 : VMINFP ( vrt vra vrb -- ) 1098 4 vx-insn ;
908 ! 6.10.3 Vector Floating-Point Rounding and Conversion Instructions
909 : VCTSXS ( vrt vrb uim -- ) swap 970 4 vx-insn ;
910 : VCTUXS ( vrt vrb uim -- ) swap 906 4 vx-insn ;
911 : VCFSX ( vrt vrb uim -- ) swap 842 4 vx-insn ;
912 : VCFUX ( vrt vrb uim -- ) swap 778 4 vx-insn ;
913 : VRFIM ( vrt vrb -- ) 0 swap 714 4 vx-insn ;
914 : VRFIN ( vrt vrb -- ) 0 swap 522 4 vx-insn ;
915 : VRFIP ( vrt vrb -- ) 0 swap 650 4 vx-insn ;
916 : VRFIX ( vrt vrb -- ) 0 swap 586 4 vx-insn ;
918 ! 6.10.4 Vector Floating-Point Compare Instructions
919 : VCMPBFP ( vrt vra vrb -- ) 0 966 4 vc-insn ;
920 : VCMPBFP. ( vrt vra vrb -- ) 1 966 4 vc-insn ;
921 : VCMPEQFP ( vrt vra vrb -- ) 0 198 4 vc-insn ;
922 : VCMPEQFP. ( vrt vra vrb -- ) 1 198 4 vc-insn ;
923 : VCMPGEFP ( vrt vra vrb -- ) 0 454 4 vc-insn ;
924 : VCMPGEFP. ( vrt vra vrb -- ) 1 454 4 vc-insn ;
925 : VCMPGTFP ( vrt vra vrb -- ) 0 710 4 vc-insn ;
926 : VCMPGTFP. ( vrt vra vrb -- ) 1 710 4 vc-insn ;
928 ! 6.10.5 Vector Floating-Point Estimate Instructions
929 : VEXPTEFP ( vrt vrb -- ) 0 swap 394 4 vx-insn ;
930 : VLOGEFP ( vrt vrb -- ) 0 swap 458 4 vx-insn ;
931 : VREFP ( vrt vrb -- ) 0 swap 266 4 vx-insn ;
932 : VRSQRTEFP ( vrt vrb -- ) 0 swap 330 4 vx-insn ;
934 ! 6.10.6 Vector Status and Control Register Instructions
935 : MTVSCR ( vrb -- ) [ 0 0 ] dip 1604 4 vx-insn ;
936 : MFVSCR ( vrt -- ) 0 0 1540 4 vx-insn ;
938 ! 7.7 VSX Instruction Descriptions
939 : LXSDX ( xt ra rb -- ) 588 31 xx1-insn ;
940 : LXVD2X ( xt ra rb -- ) 844 31 xx1-insn ;
941 : LXVDSX ( xt ra rb -- ) 332 31 xx1-insn ;
942 : LXVW4X ( xt ra rb -- ) 780 31 xx1-insn ;
943 : STXSDX ( xs ra rb -- ) 716 31 xx1-insn ;
944 : STXVD2X ( xs ra rb -- ) 972 31 xx1-insn ;
945 : STXVW4X ( xs ra rb -- ) 908 31 xx1-insn ;
946 : XSABSDP ( xt xb -- ) 0 swap 345 60 xx2-insn ;
947 : XSADDDP ( xt xa xb -- ) 32 60 xx3-insn ;
948 : XSCMPODP ( bf xa xb -- ) [ 2 shift ] 2dip 43 60 xx3-insn ;
949 : XSCMPUDP ( bf xa xb -- ) [ 2 shift ] 2dip 35 60 xx3-insn ;
950 : XSCPSGNDP ( xt xa xb -- ) 176 60 xx3-insn ;
951 : XSCVDPSP ( xt xb -- ) 0 swap 265 60 xx2-insn ;
952 : XSCVDPSXDS ( xt xb -- ) 0 swap 344 60 xx2-insn ;
953 : XSCVDPSXWS ( xt xb -- ) 0 swap 88 60 xx2-insn ;
954 : XSCVDPUXDS ( xt xb -- ) 0 swap 328 60 xx2-insn ;
955 : XSCVDPUXWS ( xt xb -- ) 0 swap 72 60 xx2-insn ;
956 : XSCVSPDP ( xt xb -- ) 0 swap 329 60 xx2-insn ;
957 : XSCVSXDDP ( xt xb -- ) 0 swap 376 60 xx2-insn ;
958 : XSCUXDDP ( xt xb -- ) 0 swap 360 60 xx2-insn ;
959 : XSDIVDP ( xt xa xb -- ) 56 60 xx3-insn ;
960 : XSMADDADP ( xt xa xb -- ) 33 60 xx3-insn ;
961 : XSMADDMDP ( xt xa xb -- ) 41 60 xx3-insn ;
962 : XSMAXDP ( xt xa xb -- ) 160 60 xx3-insn ;
963 : XSMINDP ( xt xa xb -- ) 168 60 xx3-insn ;
964 : XSMSUBADP ( xt xa xb -- ) 49 60 xx3-insn ;
965 : XSMSUBMDP ( xt xa xb -- ) 57 60 xx3-insn ;
966 : XSMULDP ( xt xa xb -- ) 48 60 xx3-insn ;
967 : XSNABSDP ( xt xb -- ) 0 swap 361 60 xx2-insn ;
968 : XSNEGDP ( xt xb -- ) 0 swap 377 60 xx2-insn ;
969 : XSNMADDADP ( xt xa xb -- ) 161 60 xx3-insn ;
970 : XSNMADDMDP ( xt xa xb -- ) 169 60 xx3-insn ;
971 : XSNMSUBADP ( xt xa xb -- ) 177 60 xx3-insn ;
972 : XSNMSUBMDP ( xt xa xb -- ) 185 60 xx3-insn ;
973 : XSRDPI ( xt xb -- ) 0 swap 73 60 xx2-insn ;
974 : XSRDPIC ( xt xb -- ) 0 swap 107 60 xx2-insn ;
975 : XSRDPIM ( xt xb -- ) 0 swap 121 60 xx2-insn ;
976 : XSRDPIP ( xt xb -- ) 0 swap 105 60 xx2-insn ;
977 : XSRDPIZ ( xt xb -- ) 0 swap 89 60 xx2-insn ;
978 : XSREDP ( xt xb -- ) 0 swap 90 60 xx2-insn ;
979 : XSRSQRTEDP ( xt xb -- ) 0 swap 74 60 xx2-insn ;
980 : XSSQRTDP ( xt xb -- ) 0 swap 75 60 xx2-insn ;
981 : XSSUBDP ( xt xa xb -- ) 40 60 xx3-insn ;
982 : XSTDIVDP ( bf xa xb -- ) [ 2 shift ] 2dip 61 60 xx3-insn ;
983 : XSTSQRTDP ( bf xb -- ) [ 2 shift ] dip 0 swap 106 60 xx2-insn ;
984 : XVABSDP ( xt xb -- ) 0 swap 473 60 xx2-insn ;
985 : XVABSSP ( xt xb -- ) 0 swap 409 60 xx2-insn ;
986 : XVADDDP ( xt xa xb -- ) 96 60 xx3-insn ;
987 : XVADDSP ( xt xa xb -- ) 64 60 xx3-insn ;
988 : XVCMPEQDP ( xt xa xb -- ) 0 99 60 xx3-rc-insn ;
989 : XVCMPEQDP. ( xt xa xb -- ) 1 99 60 xx3-rc-insn ;
990 : XVCMPEQSP ( xt xa xb -- ) 0 67 60 xx3-rc-insn ;
991 : XVCMPEQSP. ( xt xa xb -- ) 1 67 60 xx3-rc-insn ;
992 : XVCMPGEDP ( xt xa xb -- ) 0 115 60 xx3-rc-insn ;
993 : XVCMPGEDP. ( xt xa xb -- ) 1 115 60 xx3-rc-insn ;
994 : XVCMPGESP ( xt xa xb -- ) 0 83 60 xx3-rc-insn ;
995 : XVCMPGESP. ( xt xa xb -- ) 1 83 60 xx3-rc-insn ;
996 : XVCMPGTDP ( xt xa xb -- ) 0 107 60 xx3-rc-insn ;
997 : XVCMPGTDP. ( xt xa xb -- ) 1 107 60 xx3-rc-insn ;
998 : XVCMPGTSP ( xt xa xb -- ) 0 75 60 xx3-rc-insn ;
999 : XVCMPGTSP. ( xt xa xb -- ) 1 75 60 xx3-rc-insn ;
1000 : XVCPSGNDP ( xt xa xb -- ) 240 60 xx3-insn ;
1001 : XVCPSGNSP ( xt xa xb -- ) 208 60 xx3-insn ;
1002 : XVCVDPSP ( xt xb -- ) 0 swap 393 60 xx2-insn ;
1003 : XVCVDPSXDS ( xt xb -- ) 0 swap 472 60 xx2-insn ;
1004 : XVCVDPSXWS ( xt xb -- ) 0 swap 216 60 xx2-insn ;
1005 : XVCVDPUXDS ( xt xb -- ) 0 swap 456 60 xx2-insn ;
1006 : XVCVDPUXWS ( xt xb -- ) 0 swap 200 60 xx2-insn ;
1007 : XVCVSPDP ( xt xb -- ) 0 swap 457 60 xx2-insn ;
1008 : XVCVSPSXDS ( xt xb -- ) 0 swap 408 60 xx2-insn ;
1009 : XVCVSPSXWS ( xt xb -- ) 0 swap 152 60 xx2-insn ;
1010 : XVCVSPUXDS ( xt xb -- ) 0 swap 392 60 xx2-insn ;
1011 : XVCVSPUXWS ( xt xb -- ) 0 swap 136 60 xx2-insn ;
1012 : XVCVSXDDP ( xt xb -- ) 0 swap 504 60 xx2-insn ;
1013 : XVCVSXDSP ( xt xb -- ) 0 swap 440 60 xx2-insn ;
1014 : XVCVSXWDP ( xt xb -- ) 0 swap 248 60 xx2-insn ;
1015 : XVCVSXWSP ( xt xb -- ) 0 swap 184 60 xx2-insn ;
1016 : XVCVUXDDP ( xt xb -- ) 0 swap 488 60 xx2-insn ;
1017 : XVCVUXDSP ( xt xb -- ) 0 swap 424 60 xx2-insn ;
1018 : XVCVUXWDP ( xt xb -- ) 0 swap 232 60 xx2-insn ;
1019 : XVCVUXWSP ( xt xb -- ) 0 swap 168 60 xx2-insn ;
1020 : XVDIVDP ( xt xa xb -- ) 120 60 xx3-insn ;
1021 : XVDIVSP ( xt xa xb -- ) 88 60 xx3-insn ;
1022 : XVMADDADP ( xt xa xb -- ) 97 60 xx3-insn ;
1023 : XVMADDMDP ( xt xa xb -- ) 105 60 xx3-insn ;
1024 : XVMADDASP ( xt xa xb -- ) 65 60 xx3-insn ;
1025 : XVMADDMSP ( xt xa xb -- ) 73 60 xx3-insn ;
1026 : XVMAXDP ( xt xa xb -- ) 224 60 xx3-insn ;
1027 : XVMAXSP ( xt xa xb -- ) 192 60 xx3-insn ;
1028 : XVMINDP ( xt xa xb -- ) 232 60 xx3-insn ;
1029 : XVMINSP ( xt xa xb -- ) 200 60 xx3-insn ;
1030 : XVMSUBADP ( xt xa xb -- ) 113 60 xx3-insn ;
1031 : XVMSUBMDP ( xt xa xb -- ) 121 60 xx3-insn ;
1032 : XVMSUBASP ( xt xa xb -- ) 81 60 xx3-insn ;
1033 : XVMSUBMSP ( xt xa xb -- ) 89 60 xx3-insn ;
1034 : XVMULDP ( xt xa xb -- ) 112 60 xx3-insn ;
1035 : XVMULSP ( xt xa xb -- ) 80 60 xx3-insn ;
1036 : XVNABSDP ( xt xb -- ) 0 swap 489 60 xx2-insn ;
1037 : XVNABSSP ( xt xb -- ) 0 swap 425 60 xx2-insn ;
1038 : XVNEGDP ( xt xb -- ) 0 swap 505 60 xx2-insn ;
1039 : XVNEGSP ( xt xb -- ) 0 swap 441 60 xx2-insn ;
1040 : XVNMADDADP ( xt xa xb -- ) 225 60 xx3-insn ;
1041 : XVNMADDMDP ( xt xa xb -- ) 233 60 xx3-insn ;
1042 : XVNMADDASP ( xt xa xb -- ) 193 60 xx3-insn ;
1043 : XVNMADDMSP ( xt xa xb -- ) 201 60 xx3-insn ;
1044 : XVNMSUBADP ( xt xa xb -- ) 241 60 xx3-insn ;
1045 : XVNMSUBMDP ( xt xa xb -- ) 249 60 xx3-insn ;
1046 : XVNMSUBASP ( xt xa xb -- ) 209 60 xx3-insn ;
1047 : XVNMSUBMSP ( xt xa xb -- ) 217 60 xx3-insn ;
1048 : XVRDPI ( xt xb -- ) 0 swap 201 60 xx2-insn ;
1049 : XVRDPIC ( xt xb -- ) 0 swap 235 60 xx2-insn ;
1050 : XVRDPIM ( xt xb -- ) 0 swap 249 60 xx2-insn ;
1051 : XVRDPIP ( xt xb -- ) 0 swap 233 60 xx2-insn ;
1052 : XVRDPIZ ( xt xb -- ) 0 swap 217 60 xx2-insn ;
1053 : XVREDP ( xt xb -- ) 0 swap 218 60 xx2-insn ;
1054 : XVRESP ( xt xb -- ) 0 swap 154 60 xx2-insn ;
1055 : XVRSPI ( xt xb -- ) 0 swap 137 60 xx2-insn ;
1056 : XVRSPIC ( xt xb -- ) 0 swap 171 60 xx2-insn ;
1057 : XVRSPIM ( xt xb -- ) 0 swap 185 60 xx2-insn ;
1058 : XVRSPIP ( xt xb -- ) 0 swap 169 60 xx2-insn ;
1059 : XVRSPIZ ( xt xb -- ) 0 swap 153 60 xx2-insn ;
1060 : XVRSQRTEDP ( xt xb -- ) 0 swap 202 60 xx2-insn ;
1061 : XVRSQRTESP ( xt xb -- ) 0 swap 138 60 xx2-insn ;
1062 : XVSQRTDP ( xt xb -- ) 0 swap 203 60 xx2-insn ;
1063 : XVSQRTSP ( xt xb -- ) 0 swap 139 60 xx2-insn ;
1064 : XVSUBDP ( xt xb -- ) 0 swap 104 60 xx2-insn ;
1065 : XVSUBSP ( xt xb -- ) 0 swap 72 60 xx2-insn ;
1066 : XVTDIVDP ( bf xa xb -- ) [ 2 shift ] 2dip 125 60 xx3-insn ;
1067 : XVTDIVSP ( bf xa xb -- ) [ 2 shift ] 2dip 93 60 xx3-insn ;
1068 : XVTSQRTDP ( bf xa xb -- ) [ 2 shift ] 2dip 234 60 xx3-insn ;
1069 : XVTSQRTSP ( bf xa xb -- ) [ 2 shift ] 2dip 170 60 xx3-insn ;
1070 : XXLAND ( xt xa xb -- ) 130 60 xx3-insn ;
1071 : XXLANDC ( xt xa xb -- ) 138 60 xx3-insn ;
1072 : XXLNOR ( xt xa xb -- ) 162 60 xx3-insn ;
1073 : XXLOR ( xt xa xb -- ) 146 60 xx3-insn ;
1074 : XXLXOR ( xt xa xb -- ) 154 60 xx3-insn ;
1075 : XXMRGHW ( xt xa xb -- ) 18 60 xx3-insn ;
1076 : XXMRGLW ( xt xa xb -- ) 50 60 xx3-insn ;
1077 : XXPERMDI ( xt xa xb dm -- ) 0 swap 10 60 xx3-rc-dm-insn ;
1078 : XXSEL ( xt xa xb xc -- ) 3 60 xx4-insn ;
1079 : XXSLDWI ( xt xa xb sh -- ) 0 swap 2 60 xx3-rc-dm-insn ;
1080 : XVSPLTW ( xt xb uim -- ) swap 164 60 xx2-insn ;
1082 ! 8.3.9 SPE Instruction Set
1083 : BRINC ( rt ra rb -- ) 527 4 evx-insn ;
1084 : EVABS ( rt ra -- ) 0 520 4 evx-insn ;
1085 : EVADDIW ( rt rb ui -- ) swap 514 4 evx-insn ;
1086 : EVADDSMIAAW ( rt ra -- ) 0 1225 4 evx-insn ;
1087 : EVADDSSIAAW ( rt ra -- ) 0 1217 4 evx-insn ;
1088 : EVADDUMIAAW ( rt ra -- ) 0 1224 4 evx-insn ;
1089 : EVADDUSIAWW ( rt ra -- ) 0 1216 4 evx-insn ;
1090 : EVADDW ( rt ra rb -- ) 512 4 evx-insn ;
1091 : EVAND ( rt ra rb -- ) 529 4 evx-insn ;
1092 : EVANDC ( rt ra rb -- ) 530 4 evx-insn ;
1093 : EVCMPEQ ( bf ra rb -- ) [ 2 shift ] 2dip 564 4 evx-insn ;
1094 : EVCMPGTS ( bf ra rb -- ) [ 2 shift ] 2dip 561 4 evx-insn ;
1095 : EVCMPGTU ( bf ra rb -- ) [ 2 shift ] 2dip 560 4 evx-insn ;
1096 : EVCMPLTS ( bf ra rb -- ) [ 2 shift ] 2dip 563 4 evx-insn ;
1097 : EVCMPLTU ( bf ra rb -- ) [ 2 shift ] 2dip 562 4 evx-insn ;
1098 : EVCNTLSW ( rt ra -- ) 0 526 4 evx-insn ;
1099 : EVCNTLZW ( rt ra -- ) 0 525 4 evx-insn ;
1100 : EVDIVWS ( rt ra rb -- ) 1222 4 evx-insn ;
1101 : EVDIVWU ( rt ra rb -- ) 1223 4 evx-insn ;
1102 : EVEQV ( rt ra rb -- ) 537 4 evx-insn ;
1103 : EVEXTSB ( rt ra -- ) 0 522 4 evx-insn ;
1104 : EVEXTSH ( rt ra -- ) 0 523 4 evx-insn ;
1105 : EVLDD ( rt ra d -- ) 769 4 evx-insn ;
1106 : EVLDDX ( rt ra rb -- ) 768 4 evx-insn ;
1107 : EVLDH ( rt ra d -- ) 773 4 evx-insn ;
1108 : EVLDHX ( rt ra rb -- ) 772 4 evx-insn ;
1109 : EVLDW ( rt ra d -- ) 771 4 evx-insn ;
1110 : EVLDWX ( rt ra rb -- ) 770 4 evx-insn ;
1111 : EVLHHESPLAT ( rt ra d -- ) 777 4 evx-insn ;
1112 : EVLHHESPLATX ( rt ra rb -- ) 776 4 evx-insn ;
1113 : EVLHHOSSPLAT ( rt ra d -- ) 783 4 evx-insn ;
1114 : EVLHHOSSPLATX ( rt ra rb -- ) 782 4 evx-insn ;
1115 : EVLHHOUSPLAT ( rt ra d -- ) 781 4 evx-insn ;
1116 : EVLHHOUSPLATX ( rt ra rb -- ) 780 4 evx-insn ;
1117 : EVLWHE ( rt ra d -- ) 785 4 evx-insn ;
1118 : EVLWHEX ( rt ra rb -- ) 784 4 evx-insn ;
1119 : EVLWHOS ( rt ra d -- ) 791 4 evx-insn ;
1120 : EVLWHOSX ( rt ra rb -- ) 790 4 evx-insn ;
1121 : EVLWHOU ( rt ra d -- ) 789 4 evx-insn ;
1122 : EVLWHOUX ( rt ra rb -- ) 788 4 evx-insn ;
1123 : EVLWHSPLAT ( rt ra d -- ) 797 4 evx-insn ;
1124 : EVLWHSPLATX ( rt ra rb -- ) 796 4 evx-insn ;
1125 : EVLWWSPLAT ( rt ra d -- ) 793 4 evx-insn ;
1126 : EVLWWSPLATX ( rt ra d -- ) 792 4 evx-insn ;
1127 : EVMERGEHI ( rt ra rb -- ) 556 4 evx-insn ;
1128 : EVMERGELO ( rt ra rb -- ) 557 4 evx-insn ;
1129 : EVMERGEHILO ( rt ra rb -- ) 558 4 evx-insn ;
1130 : EVMERGELOHI ( rt ra rb -- ) 559 4 evx-insn ;
1131 : EVMHEGSMFAA ( rt ra rb -- ) 1323 4 evx-insn ;
1132 : EVMHEGSMFAN ( rt ra rb -- ) 1451 4 evx-insn ;
1133 : EVMHEGSMIAA ( rt ra rb -- ) 1321 4 evx-insn ;
1134 : EVMHEGSMIAN ( rt ra rb -- ) 1449 4 evx-insn ;
1135 : EVMHEGUMIAA ( rt ra rb -- ) 1320 4 evx-insn ;
1136 : EVMHEGUMIAN ( rt ra rb -- ) 1448 4 evx-insn ;
1137 : EVMHESMF ( rt ra rb -- ) 1035 4 evx-insn ;
1138 : EVMHESMFA ( rt ra rb -- ) 1067 4 evx-insn ;
1139 : EVMHESMFAAW ( rt ra rb -- ) 1291 4 evx-insn ;
1140 : EVMHESMFANW ( rt ra rb -- ) 1419 4 evx-insn ;
1141 : EVMHESMI ( rt ra rb -- ) 1033 4 evx-insn ;
1142 : EVMHESMIA ( rt ra rb -- ) 1065 4 evx-insn ;
1143 : EVMHESMIAAW ( rt ra rb -- ) 1289 4 evx-insn ;
1144 : EVMHESMIANW ( rt ra rb -- ) 1417 4 evx-insn ;
1145 : EVMHESSF ( rt ra rb -- ) 1027 4 evx-insn ;
1146 : EVMHESSFA ( rt ra rb -- ) 1059 4 evx-insn ;
1147 : EVMHESSFAAW ( rt ra rb -- ) 1283 4 evx-insn ;
1148 : EVMHESSFANW ( rt ra rb -- ) 1411 4 evx-insn ;
1149 : EVMHESSIAAW ( rt ra rb -- ) 1281 4 evx-insn ;
1150 : EVMHESSIANW ( rt ra rb -- ) 1409 4 evx-insn ;
1151 : EVMHEUMI ( rt ra rb -- ) 1032 4 evx-insn ;
1152 : EVMHEUMIA ( rt ra rb -- ) 1064 4 evx-insn ;
1153 : EVMHEUMIAAW ( rt ra rb -- ) 1288 4 evx-insn ;
1154 : EVMHEUMIANW ( rt ra rb -- ) 1416 4 evx-insn ;
1155 : EVMHEUSIAAW ( rt ra rb -- ) 1280 4 evx-insn ;
1156 : EVMHEUSIANW ( rt ra rb -- ) 1408 4 evx-insn ;
1157 : EVMHOGSMFAA ( rt ra rb -- ) 1327 4 evx-insn ;
1158 : EVMHOGSMFAN ( rt ra rb -- ) 1455 4 evx-insn ;
1159 : EVMHOGSMIAA ( rt ra rb -- ) 1325 4 evx-insn ;
1160 : EVMHOGSMIAN ( rt ra rb -- ) 1453 4 evx-insn ;
1161 : EVMHOGUMIAA ( rt ra rb -- ) 1324 4 evx-insn ;
1162 : EVMHOGUMIAN ( rt ra rb -- ) 1452 4 evx-insn ;
1163 : EVMHOSMF ( rt ra rb -- ) 1039 4 evx-insn ;
1164 : EVMHOSMFA ( rt ra rb -- ) 1071 4 evx-insn ;
1165 : EVMHOSMFAAW ( rt ra rb -- ) 1295 4 evx-insn ;
1166 : EVMHOSMFANW ( rt ra rb -- ) 1423 4 evx-insn ;
1167 : EVMHOSMI ( rt ra rb -- ) 1037 4 evx-insn ;
1168 : EVMHOSMIA ( rt ra rb -- ) 1069 4 evx-insn ;
1169 : EVMHOSMIAAW ( rt ra rb -- ) 1293 4 evx-insn ;
1170 : EVMHOSMIANW ( rt ra rb -- ) 1421 4 evx-insn ;
1171 : EVMHOSSF ( rt ra rb -- ) 1031 4 evx-insn ;
1172 : EVMHOSSFA ( rt ra rb -- ) 1063 4 evx-insn ;
1173 : EVMHOSSFAAW ( rt ra rb -- ) 1287 4 evx-insn ;
1174 : EVMHOSSFANW ( rt ra rb -- ) 1415 4 evx-insn ;
1175 : EVMHOSSIAAW ( rt ra rb -- ) 1285 4 evx-insn ;
1176 : EVMHOSSIANW ( rt ra rb -- ) 1413 4 evx-insn ;
1177 : EVMHOUMI ( rt ra rb -- ) 1036 4 evx-insn ;
1178 : EVMHOUMIA ( rt ra rb -- ) 1068 4 evx-insn ;
1179 : EVMHOUMIAAW ( rt ra rb -- ) 1292 4 evx-insn ;
1180 : EVMHOUMIANW ( rt ra rb -- ) 1420 4 evx-insn ;
1181 : EVMHOUSIAAW ( rt ra rb -- ) 1284 4 evx-insn ;
1182 : EVMHOUSIANW ( rt ra rb -- ) 1412 4 evx-insn ;
1183 : EVMRA ( rt ra rb -- ) 1220 4 evx-insn ;
1184 : EVMWHSMF ( rt ra rb -- ) 1103 4 evx-insn ;
1185 : EVMWHSMFA ( rt ra rb -- ) 1135 4 evx-insn ;
1186 : EVMWHSMI ( rt ra rb -- ) 1101 4 evx-insn ;
1187 : EVMWHSMIA ( rt ra rb -- ) 1133 4 evx-insn ;
1188 : EVMWHSSF ( rt ra rb -- ) 1095 4 evx-insn ;
1189 : EVMWHSSFA ( rt ra rb -- ) 1127 4 evx-insn ;
1190 : EVMWHUMI ( rt ra rb -- ) 1100 4 evx-insn ;
1191 : EVMWHUMIA ( rt ra rb -- ) 1132 4 evx-insn ;
1192 : EVMWLSMIAAW ( rt ra rb -- ) 1353 4 evx-insn ;
1193 : EVMWLSMIANW ( rt ra rb -- ) 1481 4 evx-insn ;
1194 : EVMWLSSIAAW ( rt ra rb -- ) 1345 4 evx-insn ;
1195 : EVMWLSSIANW ( rt ra rb -- ) 1473 4 evx-insn ;
1196 : EVMWLUMI ( rt ra rb -- ) 1096 4 evx-insn ;
1197 : EVMWLUMIA ( rt ra rb -- ) 1128 4 evx-insn ;
1198 : EVMWLUMIAAW ( rt ra rb -- ) 1352 4 evx-insn ;
1199 : EVMWLUMIANW ( rt ra rb -- ) 1480 4 evx-insn ;
1200 : EVMWLUSIAAW ( rt ra rb -- ) 1344 4 evx-insn ;
1201 : EVMWLUSIANW ( rt ra rb -- ) 1472 4 evx-insn ;
1202 : EVMWSMF ( rt ra rb -- ) 1115 4 evx-insn ;
1203 : EVMWSMFA ( rt ra rb -- ) 1147 4 evx-insn ;
1204 : EVMWSMFAA ( rt ra rb -- ) 1371 4 evx-insn ;
1205 : EVMWSMFAN ( rt ra rb -- ) 1499 4 evx-insn ;
1206 : EVMWSMI ( rt ra rb -- ) 1113 4 evx-insn ;
1207 : EVMWSMIA ( rt ra rb -- ) 1145 4 evx-insn ;
1208 : EVMWSMIAA ( rt ra rb -- ) 1369 4 evx-insn ;
1209 : EVMWSMIAN ( rt ra rb -- ) 1497 4 evx-insn ;
1210 : EVMWSSF ( rt ra rb -- ) 1107 4 evx-insn ;
1211 : EVMWSSFA ( rt ra rb -- ) 1139 4 evx-insn ;
1212 : EVMWSSFAA ( rt ra rb -- ) 1363 4 evx-insn ;
1213 : EVMWSSFAN ( rt ra rb -- ) 1491 4 evx-insn ;
1214 : EVMWUMI ( rt ra rb -- ) 1112 4 evx-insn ;
1215 : EVMWUMIA ( rt ra rb -- ) 1144 4 evx-insn ;
1216 : EVMWUMIAA ( rt ra rb -- ) 1368 4 evx-insn ;
1217 : EVMWUMIAN ( rt ra rb -- ) 1496 4 evx-insn ;
1218 : EVNAND ( rt ra rb -- ) 542 4 evx-insn ;
1219 : EVNEG ( rt ra rb -- ) 521 4 evx-insn ;
1220 : EVNOR ( rt ra rb -- ) 536 4 evx-insn ;
1221 : EVOR ( rt ra rb -- ) 535 4 evx-insn ;
1222 : EVORC ( rt ra rb -- ) 539 4 evx-insn ;
1223 : EVRLW ( rt ra rb -- ) 552 4 evx-insn ;
1224 : EVRLWI ( rt ra rb -- ) 554 4 evx-insn ;
1225 : EVRNDW ( rt ra rb -- ) 524 4 evx-insn ;
1226 : EVSEL ( rt ra rb -- ) 79 4 evx-insn ;
1227 : EVSLW ( rt ra rb -- ) 548 4 evx-insn ;
1228 : EVSLWI ( rt ra rb -- ) 550 4 evx-insn ;
1229 : EVSPLATFI ( rt ra rb -- ) 555 4 evx-insn ;
1230 : EVSPLATI ( rt ra rb -- ) 553 4 evx-insn ;
1231 : EVSRWIS ( rt ra rb -- ) 547 4 evx-insn ;
1232 : EVSRWIU ( rt ra rb -- ) 546 4 evx-insn ;
1233 : EVSRWS ( rt ra rb -- ) 545 4 evx-insn ;
1234 : EVSRWU ( rt ra rb -- ) 544 4 evx-insn ;
1235 : EVSTDD ( rt ra d -- ) 801 4 evx-insn ;
1236 : EVSTDDX ( rt ra rb -- ) 800 4 evx-insn ;
1237 : EVSTDH ( rt ra d -- ) 805 4 evx-insn ;
1238 : EVSTDHX ( rt ra rb -- ) 804 4 evx-insn ;
1239 : EVSTDW ( rt ra d -- ) 803 4 evx-insn ;
1240 : EVSTDWX ( rt ra rb -- ) 802 4 evx-insn ;
1241 : EVSTWHE ( rt ra d -- ) 817 4 evx-insn ;
1242 : EVSTWHEX ( rt ra rb -- ) 816 4 evx-insn ;
1243 : EVSTWHO ( rt ra d -- ) 821 4 evx-insn ;
1244 : EVSTWHOX ( rt ra rb -- ) 820 4 evx-insn ;
1245 : EVSTWWE ( rt ra d -- ) 825 4 evx-insn ;
1246 : EVSTWWEX ( rt ra rb -- ) 824 4 evx-insn ;
1247 : EVSTWWO ( rt ra d -- ) 829 4 evx-insn ;
1248 : EVSTWWOX ( rt ra rb -- ) 828 4 evx-insn ;
1249 : EVSUBFSMIAAW ( rt ra -- ) 0 1227 4 evx-insn ;
1250 : EVSUBFSSIAAW ( rt ra -- ) 0 1219 4 evx-insn ;
1251 : EVSUBFUMIAAW ( rt ra -- ) 0 1226 4 evx-insn ;
1252 : EVSUBFUSIAAW ( rt ra -- ) 0 1218 4 evx-insn ;
1253 : EVSUBFW ( rt ra rb -- ) 516 4 evx-insn ;
1254 : EVSUBIFW ( rt ui rb -- ) 518 4 evx-insn ;
1255 : EVXOR ( rt ra rb -- ) 534 4 evx-insn ;
1257 ! 9.3.2 SPE Embedded Float Vector Insturctions
1258 : EVFSABS ( rt ra -- ) 0 644 4 evx-insn ;
1259 : EVFSNABS ( rt ra -- ) 0 645 4 evx-insn ;
1260 : EVFSNEG ( rt ra -- ) 0 646 4 evx-insn ;
1261 : EVFSADD ( rt ra rb -- ) 640 4 evx-insn ;
1262 : EVFSSUB ( rt ra rb -- ) 641 4 evx-insn ;
1263 : EVFSMUL ( rt ra rb -- ) 648 4 evx-insn ;
1264 : EVFSDIV ( rt ra rb -- ) 649 4 evx-insn ;
1265 : EVFSCMPGT ( bf ra rb -- ) [ 2 shift ] 2dip 652 4 evx-insn ;
1266 : EVFSCMPLT ( bf ra rb -- ) [ 2 shift ] 2dip 653 4 evx-insn ;
1267 : EVFSCMPEQ ( bf ra rb -- ) [ 2 shift ] 2dip 654 4 evx-insn ;
1268 : EVFSTSTGT ( bf ra rb -- ) [ 2 shift ] 2dip 668 4 evx-insn ;
1269 : EVFSTSTLT ( bf ra rb -- ) [ 2 shift ] 2dip 669 4 evx-insn ;
1270 : EVFSTSTEQ ( bf ra rb -- ) [ 2 shift ] 2dip 670 4 evx-insn ;
1271 : EVFSCFSI ( rt rb -- ) 0 swap 657 4 evx-insn ;
1272 : EVFSCFUI ( rt rb -- ) 0 swap 656 4 evx-insn ;
1273 : EVFSCFSF ( rt rb -- ) 0 swap 659 4 evx-insn ;
1274 : EVFSCFUF ( rt rb -- ) 0 swap 658 4 evx-insn ;
1275 : EVFSCTSI ( rt rb -- ) 0 swap 661 4 evx-insn ;
1276 : EVFSCTSIZ ( rt rb -- ) 0 swap 666 4 evx-insn ;
1277 : EVFSCTUI ( rt rb -- ) 0 swap 660 4 evx-insn ;
1278 : EVFSCTUIZ ( rt rb -- ) 0 swap 664 4 evx-insn ;
1279 : EVFSCTSF ( rt rb -- ) 0 swap 663 4 evx-insn ;
1280 : EVFSCTUF ( rt rb -- ) 0 swap 662 4 evx-insn ;
1282 ! 9.3.3 SPE Embedded Float Scalar Single Instructions
1283 : EFSABS ( rt ra -- ) 0 708 4 evx-insn ;
1284 : EFSNABS ( rt ra -- ) 0 709 4 evx-insn ;
1285 : EFSNEG ( rt ra -- ) 0 710 4 evx-insn ;
1286 : EFSADD ( rt ra rb -- ) 704 4 evx-insn ;
1287 : EFSSUB ( rt ra rb -- ) 705 4 evx-insn ;
1288 : EFSMUL ( rt ra rb -- ) 712 4 evx-insn ;
1289 : EFSDIV ( rt ra rb -- ) 713 4 evx-insn ;
1290 : EFSCMPGT ( bf ra rb -- ) [ 2 shift ] 2dip 716 4 evx-insn ;
1291 : EFSCMPLT ( bf ra rb -- ) [ 2 shift ] 2dip 717 4 evx-insn ;
1292 : EFSCMPEQ ( bf ra rb -- ) [ 2 shift ] 2dip 718 4 evx-insn ;
1293 : EFSTSTGT ( bf ra rb -- ) [ 2 shift ] 2dip 732 4 evx-insn ;
1294 : EFSTSTLT ( bf ra rb -- ) [ 2 shift ] 2dip 733 4 evx-insn ;
1295 : EFSTSTEQ ( bf ra rb -- ) [ 2 shift ] 2dip 734 4 evx-insn ;
1296 : EFSCFSI ( rt rb -- ) 0 swap 721 4 evx-insn ;
1297 : EFSCFUI ( rt rb -- ) 0 swap 720 4 evx-insn ;
1298 : EFSCFSF ( rt rb -- ) 0 swap 723 4 evx-insn ;
1299 : EFSCFUF ( rt rb -- ) 0 swap 722 4 evx-insn ;
1300 : EFSCTSI ( rt rb -- ) 0 swap 725 4 evx-insn ;
1301 : EFSCTUI ( rt rb -- ) 0 swap 724 4 evx-insn ;
1302 : EFSCTSIZ ( rt rb -- ) 0 swap 730 4 evx-insn ;
1303 : EFSCTUIZ ( rt rb -- ) 0 swap 728 4 evx-insn ;
1304 : EFSCTSF ( rt rb -- ) 0 swap 727 4 evx-insn ;
1305 : EFSCTUF ( rt rb -- ) 0 swap 726 4 evx-insn ;
1307 ! 9.3.4 SPE Embedded Float Scalar Double Instructions
1308 : EFDABS ( rt ra -- ) 0 740 4 evx-insn ;
1309 : EFDNABS ( rt ra -- ) 0 741 4 evx-insn ;
1310 : EFDNEG ( rt ra -- ) 0 742 4 evx-insn ;
1311 : EFDADD ( rt ra rb -- ) 736 4 evx-insn ;
1312 : EFDSUB ( rt ra rb -- ) 737 4 evx-insn ;
1313 : EFDMUL ( rt ra rb -- ) 744 4 evx-insn ;
1314 : EFDDIV ( rt ra rb -- ) 745 4 evx-insn ;
1315 : EFDCMPGT ( bf ra rb -- ) [ 2 shift ] 2dip 748 4 evx-insn ;
1316 : EFDCMPLT ( bf ra rb -- ) [ 2 shift ] 2dip 749 4 evx-insn ;
1317 : EFDCMPEQ ( bf ra rb -- ) [ 2 shift ] 2dip 750 4 evx-insn ;
1318 : EFDTSTGT ( bf ra rb -- ) [ 2 shift ] 2dip 764 4 evx-insn ;
1319 : EFDTSTLT ( bf ra rb -- ) [ 2 shift ] 2dip 765 4 evx-insn ;
1320 : EFDTSTEQ ( bf ra rb -- ) [ 2 shift ] 2dip 766 4 evx-insn ;
1321 : EFDCFSI ( rt rb -- ) 0 swap 753 4 evx-insn ;
1322 : EFDCFUI ( rt rb -- ) 0 swap 752 4 evx-insn ;
1323 : EFDCFSID ( rt rb -- ) 0 swap 739 4 evx-insn ;
1324 : EFDCFUID ( rt rb -- ) 0 swap 738 4 evx-insn ;
1325 : EFDCFSF ( rt rb -- ) 0 swap 755 4 evx-insn ;
1326 : EFDCTSI ( rt rb -- ) 0 swap 757 4 evx-insn ;
1327 : EFDCFUF ( rt rb -- ) 0 swap 754 4 evx-insn ;
1328 : EFDCTUI ( rt rb -- ) 0 swap 756 4 evx-insn ;
1329 : EFDCTSIDZ ( rt rb -- ) 0 swap 747 4 evx-insn ;
1330 : EFDCTUIDZ ( rt rb -- ) 0 swap 746 4 evx-insn ;
1331 : EFDCTSIZ ( rt rb -- ) 0 swap 762 4 evx-insn ;
1332 : EFDCTUIZ ( rt rb -- ) 0 swap 760 4 evx-insn ;
1333 : EFDCTSF ( rt rb -- ) 0 swap 759 4 evx-insn ;
1334 : EFDCTUF ( rt rb -- ) 0 swap 758 4 evx-insn ;
1335 : EFDCFS ( rt rb -- ) 0 swap 751 4 evx-insn ;
1336 : EFSCFD ( rt rb -- ) 0 swap 719 4 evx-insn ;
1338 ! 10.0 Legacy Move Assist Instruction
1339 : DLMZB ( ra rs rb -- ) [ swap ] dip 0 78 31 x-insn ; deprecated
1340 : DLMZB. ( ra rs rb -- ) [ swap ] dip 1 78 31 x-insn ; deprecated
1342 ! 11.0 Legacy Integer Multiply-Accumulate Instructions
1343 : MACCHW ( rt ra rb -- ) 0 172 0 4 xo-insn ; deprecated
1344 : MACCHW. ( rt ra rb -- ) 0 172 1 4 xo-insn ; deprecated
1345 : MACCHWO ( rt ra rb -- ) 1 172 0 4 xo-insn ; deprecated
1346 : MACCHWO. ( rt ra rb -- ) 1 172 1 4 xo-insn ; deprecated
1347 : MACCHWS ( rt ra rb -- ) 0 236 0 4 xo-insn ; deprecated
1348 : MACCHWS. ( rt ra rb -- ) 0 236 1 4 xo-insn ; deprecated
1349 : MACCHWSO ( rt ra rb -- ) 1 236 0 4 xo-insn ; deprecated
1350 : MACCHWSO. ( rt ra rb -- ) 1 236 1 4 xo-insn ; deprecated
1351 : MACCHWU ( rt ra rb -- ) 0 140 0 4 xo-insn ; deprecated
1352 : MACCHWU. ( rt ra rb -- ) 0 140 1 4 xo-insn ; deprecated
1353 : MACCHWUO ( rt ra rb -- ) 1 140 0 4 xo-insn ; deprecated
1354 : MACCHWUO. ( rt ra rb -- ) 1 140 1 4 xo-insn ; deprecated
1355 : MACCHWSU ( rt ra rb -- ) 0 204 0 4 xo-insn ; deprecated
1356 : MACCHWSU. ( rt ra rb -- ) 0 204 1 4 xo-insn ; deprecated
1357 : MACCHWSUO ( rt ra rb -- ) 1 204 0 4 xo-insn ; deprecated
1358 : MACCHWSUO. ( rt ra rb -- ) 1 204 1 4 xo-insn ; deprecated
1359 : MACHHW ( rt ra rb -- ) 0 44 0 4 xo-insn ; deprecated
1360 : MACHHW. ( rt ra rb -- ) 0 44 1 4 xo-insn ; deprecated
1361 : MACHHWO ( rt ra rb -- ) 1 44 0 4 xo-insn ; deprecated
1362 : MACHHWO. ( rt ra rb -- ) 1 44 1 4 xo-insn ; deprecated
1363 : MACHHWS ( rt ra rb -- ) 0 108 0 4 xo-insn ; deprecated
1364 : MACHHWS. ( rt ra rb -- ) 0 108 1 4 xo-insn ; deprecated
1365 : MACHHWSO ( rt ra rb -- ) 1 108 0 4 xo-insn ; deprecated
1366 : MACHHWSO. ( rt ra rb -- ) 1 108 1 4 xo-insn ; deprecated
1367 : MACHHWU ( rt ra rb -- ) 0 12 0 4 xo-insn ; deprecated
1368 : MACHHWU. ( rt ra rb -- ) 0 12 1 4 xo-insn ; deprecated
1369 : MACHHWUO ( rt ra rb -- ) 1 12 0 4 xo-insn ; deprecated
1370 : MACHHWUO. ( rt ra rb -- ) 1 12 1 4 xo-insn ; deprecated
1371 : MACHHWSU ( rt ra rb -- ) 0 76 0 4 xo-insn ; deprecated
1372 : MACHHWSU. ( rt ra rb -- ) 0 76 1 4 xo-insn ; deprecated
1373 : MACHHWSUO ( rt ra rb -- ) 1 76 0 4 xo-insn ; deprecated
1374 : MACHHWSUO. ( rt ra rb -- ) 1 76 1 4 xo-insn ; deprecated
1375 : MACLHW ( rt ra rb -- ) 0 428 0 4 xo-insn ; deprecated
1376 : MACLHW. ( rt ra rb -- ) 0 428 1 4 xo-insn ; deprecated
1377 : MACLHWO ( rt ra rb -- ) 1 428 0 4 xo-insn ; deprecated
1378 : MACLHWO. ( rt ra rb -- ) 1 428 1 4 xo-insn ; deprecated
1379 : MACLHWS ( rt ra rb -- ) 0 492 0 4 xo-insn ; deprecated
1380 : MACLHWS. ( rt ra rb -- ) 0 492 1 4 xo-insn ; deprecated
1381 : MACLHWSO ( rt ra rb -- ) 1 492 0 4 xo-insn ; deprecated
1382 : MACLHWSO. ( rt ra rb -- ) 1 492 1 4 xo-insn ; deprecated
1383 : MACLHWU ( rt ra rb -- ) 0 396 0 4 xo-insn ; deprecated
1384 : MACLHWU. ( rt ra rb -- ) 0 396 1 4 xo-insn ; deprecated
1385 : MACLHWUO ( rt ra rb -- ) 1 396 0 4 xo-insn ; deprecated
1386 : MACLHWUO. ( rt ra rb -- ) 1 396 1 4 xo-insn ; deprecated
1387 : MACLHWSU ( rt ra rb -- ) 0 460 0 4 xo-insn ; deprecated
1388 : MACLHWSU. ( rt ra rb -- ) 0 460 1 4 xo-insn ; deprecated
1389 : MACLHWSUO ( rt ra rb -- ) 1 460 0 4 xo-insn ; deprecated
1390 : MACLHWSUO. ( rt ra rb -- ) 1 460 1 4 xo-insn ; deprecated
1391 : MULCHW ( rt ra rb -- ) 168 0 4 x-insn ; deprecated
1392 : MULCHW. ( rt ra rb -- ) 168 1 4 x-insn ; deprecated
1393 : MULCHWU ( rt ra rb -- ) 136 0 4 x-insn ; deprecated
1394 : MULCHWU. ( rt ra rb -- ) 136 1 4 x-insn ; deprecated
1395 : MULHHW ( rt ra rb -- ) 40 0 4 x-insn ; deprecated
1396 : MULHHW. ( rt ra rb -- ) 40 1 4 x-insn ; deprecated
1397 : MULHHWU ( rt ra rb -- ) 8 0 4 x-insn ; deprecated
1398 : MULHHWU. ( rt ra rb -- ) 8 1 4 x-insn ; deprecated
1399 : MULLHW ( rt ra rb -- ) 424 0 4 x-insn ; deprecated
1400 : MULLHW. ( rt ra rb -- ) 424 1 4 x-insn ; deprecated
1401 : MULLHWU ( rt ra rb -- ) 392 0 4 x-insn ; deprecated
1402 : MULLHWU. ( rt ra rb -- ) 392 1 4 x-insn ; deprecated
1403 : NMACCHW ( rt ra rb -- ) 0 174 0 4 xo-insn ; deprecated
1404 : NMACCHW. ( rt ra rb -- ) 0 174 1 4 xo-insn ; deprecated
1405 : NMACCHWO ( rt ra rb -- ) 1 174 0 4 xo-insn ; deprecated
1406 : NMACCHWO. ( rt ra rb -- ) 1 174 1 4 xo-insn ; deprecated
1407 : NMACCHWS ( rt ra rb -- ) 0 238 0 4 xo-insn ; deprecated
1408 : NMACCHWS. ( rt ra rb -- ) 0 238 1 4 xo-insn ; deprecated
1409 : NMACCHWSO ( rt ra rb -- ) 1 238 0 4 xo-insn ; deprecated
1410 : NMACCHWSO. ( rt ra rb -- ) 1 238 1 4 xo-insn ; deprecated
1411 : NMACHHW ( rt ra rb -- ) 0 46 0 4 xo-insn ; deprecated
1412 : NMACHHW. ( rt ra rb -- ) 0 46 1 4 xo-insn ; deprecated
1413 : NMACHHWO ( rt ra rb -- ) 1 46 0 4 xo-insn ; deprecated
1414 : NMACHHWO. ( rt ra rb -- ) 1 46 1 4 xo-insn ; deprecated
1415 : NMACHHWS ( rt ra rb -- ) 0 110 0 4 xo-insn ; deprecated
1416 : NMACHHWS. ( rt ra rb -- ) 0 110 1 4 xo-insn ; deprecated
1417 : NMACHHWSO ( rt ra rb -- ) 1 110 0 4 xo-insn ; deprecated
1418 : NMACHHWSO. ( rt ra rb -- ) 1 110 1 4 xo-insn ; deprecated
1419 : NMACHLW ( rt ra rb -- ) 0 430 0 4 xo-insn ; deprecated
1420 : NMACHLW. ( rt ra rb -- ) 0 430 1 4 xo-insn ; deprecated
1421 : NMACHLWO ( rt ra rb -- ) 1 430 0 4 xo-insn ; deprecated
1422 : NMACHLWO. ( rt ra rb -- ) 1 430 1 4 xo-insn ; deprecated
1423 : NMACHLWS ( rt ra rb -- ) 0 494 0 4 xo-insn ; deprecated
1424 : NMACHLWS. ( rt ra rb -- ) 0 494 1 4 xo-insn ; deprecated
1425 : NMACHLWSO ( rt ra rb -- ) 1 494 0 4 xo-insn ; deprecated
1426 : NMACHLWSO. ( rt ra rb -- ) 1 494 1 4 xo-insn ; deprecated
1428 ! E.2.2 Simple Branch Mnemonics
1429 : BLR ( -- ) HEX: 14 0 0 BCLR ;
1430 : BCTR ( -- ) HEX: 14 0 0 BCCTR ;
1431 : BLRL ( -- ) HEX: 14 0 0 BCLRL ;
1432 : BCTRL ( -- ) HEX: 14 0 0 BCCTRL ;
1433 : BT ( bi target_addr -- ) [ HEX: C ] 2dip BC ;
1434 : BTA ( bi target_addr -- ) [ HEX: C ] 2dip BCA ;
1435 : BTLR ( bi target_addr -- ) [ HEX: C ] 2dip BCLR ;
1436 : BTCTR ( bi target_addr -- ) [ HEX: C ] 2dip BCCTR ;
1437 : BTL ( bi target_addr -- ) [ HEX: C ] 2dip BCL ;
1438 : BTLA ( bi target_addr -- ) [ HEX: C ] 2dip BCLA ;
1439 : BTLRL ( bi target_addr -- ) [ HEX: C ] 2dip BCLRL ;
1440 : BTCTRL ( bi target_addr -- ) [ HEX: C ] 2dip BCCTRL ;
1441 : BF ( bi target_addr -- ) [ HEX: 4 ] 2dip BC ;
1442 : BFA ( bi target_addr -- ) [ HEX: 4 ] 2dip BCA ;
1443 : BFLR ( bi target_addr -- ) [ HEX: 4 ] 2dip BCLR ;
1444 : BFCTR ( bi target_addr -- ) [ HEX: 4 ] 2dip BCCTR ;
1445 : BFL ( bi target_addr -- ) [ HEX: 4 ] 2dip BCL ;
1446 : BFLA ( bi target_addr -- ) [ HEX: 4 ] 2dip BCLA ;
1447 : BFLRL ( bi target_addr -- ) [ HEX: 4 ] 2dip BCLRL ;
1448 : BFCTRL ( bi target_addr -- ) [ HEX: 4 ] 2dip BCCTRL ;
1449 : BDNZ ( target_addr -- ) [ HEX: 10 0 ] dip BC ;
1450 : BDNZA ( target_addr -- ) [ HEX: 10 0 ] dip BCA ;
1451 : BDNZLR ( target_addr -- ) [ HEX: 10 0 ] dip BCLR ;
1452 : BDNZL ( target_addr -- ) [ HEX: 10 0 ] dip BCL ;
1453 : BDNZLA ( target_addr -- ) [ HEX: 10 0 ] dip BCLA ;
1454 : BDNZLRL ( target_addr -- ) [ HEX: 10 0 ] dip BCLRL ;
1455 : BDNZT ( bi target_addr -- ) [ HEX: 8 ] 2dip BC ;
1456 : BDNZTA ( bi target_addr -- ) [ HEX: 8 ] 2dip BCA ;
1457 : BDNZTLR ( bi target_addr -- ) [ HEX: 8 ] 2dip BCLR ;
1458 : BDNZTL ( bi target_addr -- ) [ HEX: 8 ] 2dip BCL ;
1459 : BDNZTLA ( bi target_addr -- ) [ HEX: 8 ] 2dip BCLA ;
1460 : BDNZTLRL ( bi target_addr -- ) [ HEX: 8 ] 2dip BCLRL ;
1461 : BDNZF ( bi target_addr -- ) [ HEX: 0 ] 2dip BC ;
1462 : BDNZFA ( bi target_addr -- ) [ HEX: 0 ] 2dip BCA ;
1463 : BDNZFLR ( bi target_addr -- ) [ HEX: 0 ] 2dip BCLR ;
1464 : BDNZFL ( bi target_addr -- ) [ HEX: 0 ] 2dip BCL ;
1465 : BDNZFLA ( bi target_addr -- ) [ HEX: 0 ] 2dip BCLA ;
1466 : BDNZFLRL ( bi target_addr -- ) [ HEX: 0 ] 2dip BCLRL ;
1467 : BDZ ( target_addr -- ) [ HEX: 12 0 ] dip BC ;
1468 : BDZA ( target_addr -- ) [ HEX: 12 0 ] dip BCA ;
1469 : BDZLR ( target_addr -- ) [ HEX: 12 0 ] dip BCLR ;
1470 : BDZL ( target_addr -- ) [ HEX: 12 0 ] dip BCL ;
1471 : BDZLA ( target_addr -- ) [ HEX: 12 0 ] dip BCLA ;
1472 : BDZLRL ( target_addr -- ) [ HEX: 12 0 ] dip BCLRL ;
1473 : BDZT ( bi target_addr -- ) [ HEX: A ] 2dip BC ;
1474 : BDZTA ( bi target_addr -- ) [ HEX: A ] 2dip BCA ;
1475 : BDZTLR ( bi target_addr -- ) [ HEX: A ] 2dip BCLR ;
1476 : BDZTL ( bi target_addr -- ) [ HEX: A ] 2dip BCL ;
1477 : BDZTLA ( bi target_addr -- ) [ HEX: A ] 2dip BCLA ;
1478 : BDZTLRL ( bi target_addr -- ) [ HEX: A ] 2dip BCLRL ;
1479 : BDZF ( bi target_addr -- ) [ HEX: 2 ] 2dip BC ;
1480 : BDZFA ( bi target_addr -- ) [ HEX: 2 ] 2dip BCA ;
1481 : BDZFLR ( bi target_addr -- ) [ HEX: 2 ] 2dip BCLR ;
1482 : BDZFL ( bi target_addr -- ) [ HEX: 2 ] 2dip BCL ;
1483 : BDZFLA ( bi target_addr -- ) [ HEX: 2 ] 2dip BCLA ;
1484 : BDZFLRL ( bi target_addr -- ) [ HEX: 2 ] 2dip BCLRL ;
1486 ! E.2.3 Branch Mnemonics Incorporating Conditions
1487 : BLT ( cr target_addr -- ) [ 4 * 0 + ] dip [ 12 ] 2dip BC ;
1488 : BLTA ( cr target_addr -- ) [ 4 * 0 + ] dip [ 12 ] 2dip BCA ;
1489 : BLTLR ( cr target_addr -- ) [ 4 * 0 + ] dip [ 12 ] 2dip BCLR ;
1490 : BLTCTR ( cr target_addr -- ) [ 4 * 0 + ] dip [ 12 ] 2dip BCCTR ;
1491 : BLTL ( cr target_addr -- ) [ 4 * 0 + ] dip [ 12 ] 2dip BCL ;
1492 : BLTLA ( cr target_addr -- ) [ 4 * 0 + ] dip [ 12 ] 2dip BCLA ;
1493 : BLTLRL ( cr target_addr -- ) [ 4 * 0 + ] dip [ 12 ] 2dip BCLRL ;
1494 : BLTCTRL ( cr target_addr -- ) [ 4 * 0 + ] dip [ 12 ] 2dip BCCTRL ;
1495 : BGT ( cr target_addr -- ) [ 4 * 1 + ] dip [ 12 ] 2dip BC ;
1496 : BGTA ( cr target_addr -- ) [ 4 * 1 + ] dip [ 12 ] 2dip BCA ;
1497 : BGTLR ( cr target_addr -- ) [ 4 * 1 + ] dip [ 12 ] 2dip BCLR ;
1498 : BGTCTR ( cr target_addr -- ) [ 4 * 1 + ] dip [ 12 ] 2dip BCCTR ;
1499 : BGTL ( cr target_addr -- ) [ 4 * 1 + ] dip [ 12 ] 2dip BCL ;
1500 : BGTLA ( cr target_addr -- ) [ 4 * 1 + ] dip [ 12 ] 2dip BCLA ;
1501 : BGTLRL ( cr target_addr -- ) [ 4 * 1 + ] dip [ 12 ] 2dip BCLRL ;
1502 : BGTCTRL ( cr target_addr -- ) [ 4 * 1 + ] dip [ 12 ] 2dip BCCTRL ;
1503 : BEQ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 12 ] 2dip BC ;
1504 : BEQA ( cr target_addr -- ) [ 4 * 2 + ] dip [ 12 ] 2dip BCA ;
1505 : BEQLR ( cr target_addr -- ) [ 4 * 2 + ] dip [ 12 ] 2dip BCLR ;
1506 : BEQCTR ( cr target_addr -- ) [ 4 * 2 + ] dip [ 12 ] 2dip BCCTR ;
1507 : BEQL ( cr target_addr -- ) [ 4 * 2 + ] dip [ 12 ] 2dip BCL ;
1508 : BEQLA ( cr target_addr -- ) [ 4 * 2 + ] dip [ 12 ] 2dip BCLA ;
1509 : BEQLRL ( cr target_addr -- ) [ 4 * 2 + ] dip [ 12 ] 2dip BCLRL ;
1510 : BEQCTRL ( cr target_addr -- ) [ 4 * 2 + ] dip [ 12 ] 2dip BCCTRL ;
1511 : BSO ( cr target_addr -- ) [ 4 * 3 + ] dip [ 12 ] 2dip BC ;
1512 : BSOA ( cr target_addr -- ) [ 4 * 3 + ] dip [ 12 ] 2dip BCA ;
1513 : BSOLR ( cr target_addr -- ) [ 4 * 3 + ] dip [ 12 ] 2dip BCLR ;
1514 : BSOCTR ( cr target_addr -- ) [ 4 * 3 + ] dip [ 12 ] 2dip BCCTR ;
1515 : BSOL ( cr target_addr -- ) [ 4 * 3 + ] dip [ 12 ] 2dip BCL ;
1516 : BSOLA ( cr target_addr -- ) [ 4 * 3 + ] dip [ 12 ] 2dip BCLA ;
1517 : BSOLRL ( cr target_addr -- ) [ 4 * 3 + ] dip [ 12 ] 2dip BCLRL ;
1518 : BSOCTRL ( cr target_addr -- ) [ 4 * 3 + ] dip [ 12 ] 2dip BCCTRL ;
1519 : BNL ( cr target_addr -- ) [ 4 * 0 + ] dip [ 4 ] 2dip BC ;
1520 : BNLA ( cr target_addr -- ) [ 4 * 0 + ] dip [ 4 ] 2dip BCA ;
1521 : BNLLR ( cr target_addr -- ) [ 4 * 0 + ] dip [ 4 ] 2dip BCLR ;
1522 : BNLCTR ( cr target_addr -- ) [ 4 * 0 + ] dip [ 4 ] 2dip BCCTR ;
1523 : BNLL ( cr target_addr -- ) [ 4 * 0 + ] dip [ 4 ] 2dip BCL ;
1524 : BNLLA ( cr target_addr -- ) [ 4 * 0 + ] dip [ 4 ] 2dip BCLA ;
1525 : BNLLRL ( cr target_addr -- ) [ 4 * 0 + ] dip [ 4 ] 2dip BCLRL ;
1526 : BNLCTRL ( cr target_addr -- ) [ 4 * 0 + ] dip [ 4 ] 2dip BCCTRL ;
1527 : BNG ( cr target_addr -- ) [ 4 * 1 + ] dip [ 4 ] 2dip BC ;
1528 : BNGA ( cr target_addr -- ) [ 4 * 1 + ] dip [ 4 ] 2dip BCA ;
1529 : BNGLR ( cr target_addr -- ) [ 4 * 1 + ] dip [ 4 ] 2dip BCLR ;
1530 : BNGCTR ( cr target_addr -- ) [ 4 * 1 + ] dip [ 4 ] 2dip BCCTR ;
1531 : BNGL ( cr target_addr -- ) [ 4 * 1 + ] dip [ 4 ] 2dip BCL ;
1532 : BNGLA ( cr target_addr -- ) [ 4 * 1 + ] dip [ 4 ] 2dip BCLA ;
1533 : BNGLRL ( cr target_addr -- ) [ 4 * 1 + ] dip [ 4 ] 2dip BCLRL ;
1534 : BNGCTRL ( cr target_addr -- ) [ 4 * 1 + ] dip [ 4 ] 2dip BCCTRL ;
1535 : BNE ( cr target_addr -- ) [ 4 * 2 + ] dip [ 4 ] 2dip BC ;
1536 : BNEA ( cr target_addr -- ) [ 4 * 2 + ] dip [ 4 ] 2dip BCA ;
1537 : BNELR ( cr target_addr -- ) [ 4 * 2 + ] dip [ 4 ] 2dip BCLR ;
1538 : BNECTR ( cr target_addr -- ) [ 4 * 2 + ] dip [ 4 ] 2dip BCCTR ;
1539 : BNEL ( cr target_addr -- ) [ 4 * 2 + ] dip [ 4 ] 2dip BCL ;
1540 : BNELA ( cr target_addr -- ) [ 4 * 2 + ] dip [ 4 ] 2dip BCLA ;
1541 : BNELRL ( cr target_addr -- ) [ 4 * 2 + ] dip [ 4 ] 2dip BCLRL ;
1542 : BNECTRL ( cr target_addr -- ) [ 4 * 2 + ] dip [ 4 ] 2dip BCCTRL ;
1543 : BNS ( cr target_addr -- ) [ 4 * 3 + ] dip [ 4 ] 2dip BC ;
1544 : BNSA ( cr target_addr -- ) [ 4 * 3 + ] dip [ 4 ] 2dip BCA ;
1545 : BNSLR ( cr target_addr -- ) [ 4 * 3 + ] dip [ 4 ] 2dip BCLR ;
1546 : BNSCTR ( cr target_addr -- ) [ 4 * 3 + ] dip [ 4 ] 2dip BCCTR ;
1547 : BNSL ( cr target_addr -- ) [ 4 * 3 + ] dip [ 4 ] 2dip BCL ;
1548 : BNSLA ( cr target_addr -- ) [ 4 * 3 + ] dip [ 4 ] 2dip BCLA ;
1549 : BNSLRL ( cr target_addr -- ) [ 4 * 3 + ] dip [ 4 ] 2dip BCLRL ;
1550 : BNSCTRL ( cr target_addr -- ) [ 4 * 3 + ] dip [ 4 ] 2dip BCCTRL ;
1551 : BUN ( cr target_addr -- ) BSO ;
1552 : BUNA ( cr target_addr -- ) BSOA ;
1553 : BUNLR ( cr target_addr -- ) BSOLR ;
1554 : BUNCTR ( cr target_addr -- ) BSOCTR ;
1555 : BUNL ( cr target_addr -- ) BSOL ;
1556 : BUNLA ( cr target_addr -- ) BSOLA ;
1557 : BUNLRL ( cr target_addr -- ) BSOLRL ;
1558 : BUNCTRL ( cr target_addr -- ) BSOCTRL ;
1559 : BNU ( cr target_addr -- ) BNS ;
1560 : BNUA ( cr target_addr -- ) BNSA ;
1561 : BNULR ( cr target_addr -- ) BNSLR ;
1562 : BNUCTR ( cr target_addr -- ) BNSCTR ;
1563 : BNUL ( cr target_addr -- ) BNSL ;
1564 : BNULA ( cr target_addr -- ) BNSLA ;
1565 : BNULRL ( cr target_addr -- ) BNSLRL ;
1566 : BNUCTRL ( cr target_addr -- ) BNSCTRL ;
1567 : BLE ( cr target_addr -- ) BNG ;
1568 : BLEA ( cr target_addr -- ) BNGA ;
1569 : BLELR ( cr target_addr -- ) BNGLR ;
1570 : BLECTR ( cr target_addr -- ) BNGCTR ;
1571 : BLEL ( cr target_addr -- ) BNGL ;
1572 : BLELA ( cr target_addr -- ) BNGLA ;
1573 : BLELRL ( cr target_addr -- ) BNGLRL ;
1574 : BLECTRL ( cr target_addr -- ) BNGCTRL ;
1575 : BGE ( cr target_addr -- ) BNL ;
1576 : BGEA ( cr target_addr -- ) BNLA ;
1577 : BGELR ( cr target_addr -- ) BNLLR ;
1578 : BGECTR ( cr target_addr -- ) BNLCTR ;
1579 : BGEL ( cr target_addr -- ) BNLL ;
1580 : BGELA ( cr target_addr -- ) BNLLA ;
1581 : BGELRL ( cr target_addr -- ) BNLLRL ;
1582 : BGECTRL ( cr target_addr -- ) BNLCTRL ;
1584 ! E.2.4 Branch Prediction
1585 : BT+ ( bi target_addr -- ) [ HEX: F ] 2dip BC ;
1586 : BTA+ ( bi target_addr -- ) [ HEX: F ] 2dip BCA ;
1587 : BTLR+ ( bi target_addr -- ) [ HEX: F ] 2dip BCLR ;
1588 : BTCTR+ ( bi target_addr -- ) [ HEX: F ] 2dip BCCTR ;
1589 : BTL+ ( bi target_addr -- ) [ HEX: F ] 2dip BCL ;
1590 : BTLA+ ( bi target_addr -- ) [ HEX: F ] 2dip BCLA ;
1591 : BTLRL+ ( bi target_addr -- ) [ HEX: F ] 2dip BCLRL ;
1592 : BTCTRL+ ( bi target_addr -- ) [ HEX: F ] 2dip BCCTRL ;
1593 : BF+ ( bi target_addr -- ) [ HEX: 7 ] 2dip BC ;
1594 : BFA+ ( bi target_addr -- ) [ HEX: 7 ] 2dip BCA ;
1595 : BFLR+ ( bi target_addr -- ) [ HEX: 7 ] 2dip BCLR ;
1596 : BFCTR+ ( bi target_addr -- ) [ HEX: 7 ] 2dip BCCTR ;
1597 : BFL+ ( bi target_addr -- ) [ HEX: 7 ] 2dip BCL ;
1598 : BFLA+ ( bi target_addr -- ) [ HEX: 7 ] 2dip BCLA ;
1599 : BFLRL+ ( bi target_addr -- ) [ HEX: 7 ] 2dip BCLRL ;
1600 : BFCTRL+ ( bi target_addr -- ) [ HEX: 7 ] 2dip BCCTRL ;
1601 : BDNZ+ ( target_addr -- ) [ HEX: 19 0 ] dip BC ;
1602 : BDNZA+ ( target_addr -- ) [ HEX: 19 0 ] dip BCA ;
1603 : BDNZLR+ ( target_addr -- ) [ HEX: 19 0 ] dip BCLR ;
1604 : BDNZL+ ( target_addr -- ) [ HEX: 19 0 ] dip BCL ;
1605 : BDNZLA+ ( target_addr -- ) [ HEX: 19 0 ] dip BCLA ;
1606 : BDNZLRL+ ( target_addr -- ) [ HEX: 19 0 ] dip BCLRL ;
1607 : BDZ+ ( target_addr -- ) [ HEX: 1B 0 ] dip BC ;
1608 : BDZA+ ( target_addr -- ) [ HEX: 1B 0 ] dip BCA ;
1609 : BDZLR+ ( target_addr -- ) [ HEX: 1B 0 ] dip BCLR ;
1610 : BDZL+ ( target_addr -- ) [ HEX: 1B 0 ] dip BCL ;
1611 : BDZLA+ ( target_addr -- ) [ HEX: 1B 0 ] dip BCLA ;
1612 : BDZLRL+ ( target_addr -- ) [ HEX: 1B 0 ] dip BCLRL ;
1613 : BT- ( bi target_addr -- ) [ HEX: E ] 2dip BC ;
1614 : BTA- ( bi target_addr -- ) [ HEX: E ] 2dip BCA ;
1615 : BTLR- ( bi target_addr -- ) [ HEX: E ] 2dip BCLR ;
1616 : BTCTR- ( bi target_addr -- ) [ HEX: E ] 2dip BCCTR ;
1617 : BTL- ( bi target_addr -- ) [ HEX: E ] 2dip BCL ;
1618 : BTLA- ( bi target_addr -- ) [ HEX: E ] 2dip BCLA ;
1619 : BTLRL- ( bi target_addr -- ) [ HEX: E ] 2dip BCLRL ;
1620 : BTCTRL- ( bi target_addr -- ) [ HEX: E ] 2dip BCCTRL ;
1621 : BF- ( bi target_addr -- ) [ HEX: 6 ] 2dip BC ;
1622 : BFA- ( bi target_addr -- ) [ HEX: 6 ] 2dip BCA ;
1623 : BFLR- ( bi target_addr -- ) [ HEX: 6 ] 2dip BCLR ;
1624 : BFCTR- ( bi target_addr -- ) [ HEX: 6 ] 2dip BCCTR ;
1625 : BFL- ( bi target_addr -- ) [ HEX: 6 ] 2dip BCL ;
1626 : BFLA- ( bi target_addr -- ) [ HEX: 6 ] 2dip BCLA ;
1627 : BFLRL- ( bi target_addr -- ) [ HEX: 6 ] 2dip BCLRL ;
1628 : BFCTRL- ( bi target_addr -- ) [ HEX: 6 ] 2dip BCCTRL ;
1629 : BDNZ- ( target_addr -- ) [ HEX: 18 0 ] dip BC ;
1630 : BDNZA- ( target_addr -- ) [ HEX: 18 0 ] dip BCA ;
1631 : BDNZLR- ( target_addr -- ) [ HEX: 18 0 ] dip BCLR ;
1632 : BDNZL- ( target_addr -- ) [ HEX: 18 0 ] dip BCL ;
1633 : BDNZLA- ( target_addr -- ) [ HEX: 18 0 ] dip BCLA ;
1634 : BDNZLRL- ( target_addr -- ) [ HEX: 18 0 ] dip BCLRL ;
1635 : BDZ- ( target_addr -- ) [ HEX: 1A 0 ] dip BC ;
1636 : BDZA- ( target_addr -- ) [ HEX: 1A 0 ] dip BCA ;
1637 : BDZLR- ( target_addr -- ) [ HEX: 1A 0 ] dip BCLR ;
1638 : BDZL- ( target_addr -- ) [ HEX: 1A 0 ] dip BCL ;
1639 : BDZLA- ( target_addr -- ) [ HEX: 1A 0 ] dip BCLA ;
1640 : BDZLRL- ( target_addr -- ) [ HEX: 1A 0 ] dip BCLRL ;
1641 : BLT+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 15 ] 2dip BC ;
1642 : BLTA+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 15 ] 2dip BCA ;
1643 : BLTLR+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 15 ] 2dip BCLR ;
1644 : BLTCTR+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 15 ] 2dip BCCTR ;
1645 : BLTL+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 15 ] 2dip BCL ;
1646 : BLTLA+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 15 ] 2dip BCLA ;
1647 : BLTLRL+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 15 ] 2dip BCLRL ;
1648 : BLTCTRL+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 15 ] 2dip BCCTRL ;
1649 : BGT+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 15 ] 2dip BC ;
1650 : BGTA+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 15 ] 2dip BCA ;
1651 : BGTLR+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 15 ] 2dip BCLR ;
1652 : BGTCTR+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 15 ] 2dip BCCTR ;
1653 : BGTL+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 15 ] 2dip BCL ;
1654 : BGTLA+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 15 ] 2dip BCLA ;
1655 : BGTLRL+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 15 ] 2dip BCLRL ;
1656 : BGTCTRL+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 15 ] 2dip BCCTRL ;
1657 : BEQ+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 15 ] 2dip BC ;
1658 : BEQA+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 15 ] 2dip BCA ;
1659 : BEQLR+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 15 ] 2dip BCLR ;
1660 : BEQCTR+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 15 ] 2dip BCCTR ;
1661 : BEQL+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 15 ] 2dip BCL ;
1662 : BEQLA+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 15 ] 2dip BCLA ;
1663 : BEQLRL+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 15 ] 2dip BCLRL ;
1664 : BEQCTRL+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 15 ] 2dip BCCTRL ;
1665 : BSO+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 15 ] 2dip BC ;
1666 : BSOA+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 15 ] 2dip BCA ;
1667 : BSOLR+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 15 ] 2dip BCLR ;
1668 : BSOCTR+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 15 ] 2dip BCCTR ;
1669 : BSOL+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 15 ] 2dip BCL ;
1670 : BSOLA+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 15 ] 2dip BCLA ;
1671 : BSOLRL+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 15 ] 2dip BCLRL ;
1672 : BSOCTRL+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 15 ] 2dip BCCTRL ;
1673 : BNL+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 7 ] 2dip BC ;
1674 : BNLA+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 7 ] 2dip BCA ;
1675 : BNLLR+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 7 ] 2dip BCLR ;
1676 : BNLCTR+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 7 ] 2dip BCCTR ;
1677 : BNLL+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 7 ] 2dip BCL ;
1678 : BNLLA+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 7 ] 2dip BCLA ;
1679 : BNLLRL+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 7 ] 2dip BCLRL ;
1680 : BNLCTRL+ ( cr target_addr -- ) [ 4 * 0 + ] dip [ 7 ] 2dip BCCTRL ;
1681 : BNG+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 7 ] 2dip BC ;
1682 : BNGA+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 7 ] 2dip BCA ;
1683 : BNGLR+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 7 ] 2dip BCLR ;
1684 : BNGCTR+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 7 ] 2dip BCCTR ;
1685 : BNGL+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 7 ] 2dip BCL ;
1686 : BNGLA+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 7 ] 2dip BCLA ;
1687 : BNGLRL+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 7 ] 2dip BCLRL ;
1688 : BNGCTRL+ ( cr target_addr -- ) [ 4 * 1 + ] dip [ 7 ] 2dip BCCTRL ;
1689 : BNE+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 7 ] 2dip BC ;
1690 : BNEA+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 7 ] 2dip BCA ;
1691 : BNELR+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 7 ] 2dip BCLR ;
1692 : BNECTR+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 7 ] 2dip BCCTR ;
1693 : BNEL+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 7 ] 2dip BCL ;
1694 : BNELA+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 7 ] 2dip BCLA ;
1695 : BNELRL+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 7 ] 2dip BCLRL ;
1696 : BNECTRL+ ( cr target_addr -- ) [ 4 * 2 + ] dip [ 7 ] 2dip BCCTRL ;
1697 : BNS+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 7 ] 2dip BC ;
1698 : BNSA+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 7 ] 2dip BCA ;
1699 : BNSLR+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 7 ] 2dip BCLR ;
1700 : BNSCTR+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 7 ] 2dip BCCTR ;
1701 : BNSL+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 7 ] 2dip BCL ;
1702 : BNSLA+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 7 ] 2dip BCLA ;
1703 : BNSLRL+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 7 ] 2dip BCLRL ;
1704 : BNSCTRL+ ( cr target_addr -- ) [ 4 * 3 + ] dip [ 7 ] 2dip BCCTRL ;
1705 : BUN+ ( cr target_addr -- ) BSO+ ;
1706 : BUNA+ ( cr target_addr -- ) BSOA+ ;
1707 : BUNLR+ ( cr target_addr -- ) BSOLR+ ;
1708 : BUNCTR+ ( cr target_addr -- ) BSOCTR+ ;
1709 : BUNL+ ( cr target_addr -- ) BSOL+ ;
1710 : BUNLA+ ( cr target_addr -- ) BSOLA+ ;
1711 : BUNLRL+ ( cr target_addr -- ) BSOLRL+ ;
1712 : BUNCTRL+ ( cr target_addr -- ) BSOCTRL+ ;
1713 : BNU+ ( cr target_addr -- ) BNS+ ;
1714 : BNUA+ ( cr target_addr -- ) BNSA+ ;
1715 : BNULR+ ( cr target_addr -- ) BNSLR+ ;
1716 : BNUCTR+ ( cr target_addr -- ) BNSCTR+ ;
1717 : BNUL+ ( cr target_addr -- ) BNSL+ ;
1718 : BNULA+ ( cr target_addr -- ) BNSLA+ ;
1719 : BNULRL+ ( cr target_addr -- ) BNSLRL+ ;
1720 : BNUCTRL+ ( cr target_addr -- ) BNSCTRL+ ;
1721 : BLE+ ( cr target_addr -- ) BNG+ ;
1722 : BLEA+ ( cr target_addr -- ) BNGA+ ;
1723 : BLELR+ ( cr target_addr -- ) BNGLR+ ;
1724 : BLECTR+ ( cr target_addr -- ) BNGCTR+ ;
1725 : BLEL+ ( cr target_addr -- ) BNGL+ ;
1726 : BLELA+ ( cr target_addr -- ) BNGLA+ ;
1727 : BLELRL+ ( cr target_addr -- ) BNGLRL+ ;
1728 : BLECTRL+ ( cr target_addr -- ) BNGCTRL+ ;
1729 : BGE+ ( cr target_addr -- ) BNL+ ;
1730 : BGEA+ ( cr target_addr -- ) BNLA+ ;
1731 : BGELR+ ( cr target_addr -- ) BNLLR+ ;
1732 : BGECTR+ ( cr target_addr -- ) BNLCTR+ ;
1733 : BGEL+ ( cr target_addr -- ) BNLL+ ;
1734 : BGELA+ ( cr target_addr -- ) BNLLA+ ;
1735 : BGELRL+ ( cr target_addr -- ) BNLLRL+ ;
1736 : BGECTRL+ ( cr target_addr -- ) BNLCTRL+ ;
1737 : BLT- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 14 ] 2dip BC ;
1738 : BLTA- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 14 ] 2dip BCA ;
1739 : BLTLR- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 14 ] 2dip BCLR ;
1740 : BLTCTR- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 14 ] 2dip BCCTR ;
1741 : BLTL- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 14 ] 2dip BCL ;
1742 : BLTLA- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 14 ] 2dip BCLA ;
1743 : BLTLRL- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 14 ] 2dip BCLRL ;
1744 : BLTCTRL- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 14 ] 2dip BCCTRL ;
1745 : BGT- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 14 ] 2dip BC ;
1746 : BGTA- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 14 ] 2dip BCA ;
1747 : BGTLR- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 14 ] 2dip BCLR ;
1748 : BGTCTR- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 14 ] 2dip BCCTR ;
1749 : BGTL- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 14 ] 2dip BCL ;
1750 : BGTLA- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 14 ] 2dip BCLA ;
1751 : BGTLRL- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 14 ] 2dip BCLRL ;
1752 : BGTCTRL- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 14 ] 2dip BCCTRL ;
1753 : BEQ- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 14 ] 2dip BC ;
1754 : BEQA- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 14 ] 2dip BCA ;
1755 : BEQLR- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 14 ] 2dip BCLR ;
1756 : BEQCTR- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 14 ] 2dip BCCTR ;
1757 : BEQL- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 14 ] 2dip BCL ;
1758 : BEQLA- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 14 ] 2dip BCLA ;
1759 : BEQLRL- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 14 ] 2dip BCLRL ;
1760 : BEQCTRL- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 14 ] 2dip BCCTRL ;
1761 : BSO- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 14 ] 2dip BC ;
1762 : BSOA- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 14 ] 2dip BCA ;
1763 : BSOLR- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 14 ] 2dip BCLR ;
1764 : BSOCTR- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 14 ] 2dip BCCTR ;
1765 : BSOL- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 14 ] 2dip BCL ;
1766 : BSOLA- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 14 ] 2dip BCLA ;
1767 : BSOLRL- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 14 ] 2dip BCLRL ;
1768 : BSOCTRL- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 14 ] 2dip BCCTRL ;
1769 : BNL- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 6 ] 2dip BC ;
1770 : BNLA- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 6 ] 2dip BCA ;
1771 : BNLLR- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 6 ] 2dip BCLR ;
1772 : BNLCTR- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 6 ] 2dip BCCTR ;
1773 : BNLL- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 6 ] 2dip BCL ;
1774 : BNLLA- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 6 ] 2dip BCLA ;
1775 : BNLLRL- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 6 ] 2dip BCLRL ;
1776 : BNLCTRL- ( cr target_addr -- ) [ 4 * 0 + ] dip [ 6 ] 2dip BCCTRL ;
1777 : BNG- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 6 ] 2dip BC ;
1778 : BNGA- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 6 ] 2dip BCA ;
1779 : BNGLR- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 6 ] 2dip BCLR ;
1780 : BNGCTR- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 6 ] 2dip BCCTR ;
1781 : BNGL- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 6 ] 2dip BCL ;
1782 : BNGLA- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 6 ] 2dip BCLA ;
1783 : BNGLRL- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 6 ] 2dip BCLRL ;
1784 : BNGCTRL- ( cr target_addr -- ) [ 4 * 1 + ] dip [ 6 ] 2dip BCCTRL ;
1785 : BNE- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 6 ] 2dip BC ;
1786 : BNEA- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 6 ] 2dip BCA ;
1787 : BNELR- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 6 ] 2dip BCLR ;
1788 : BNECTR- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 6 ] 2dip BCCTR ;
1789 : BNEL- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 6 ] 2dip BCL ;
1790 : BNELA- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 6 ] 2dip BCLA ;
1791 : BNELRL- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 6 ] 2dip BCLRL ;
1792 : BNECTRL- ( cr target_addr -- ) [ 4 * 2 + ] dip [ 6 ] 2dip BCCTRL ;
1793 : BNS- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 6 ] 2dip BC ;
1794 : BNSA- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 6 ] 2dip BCA ;
1795 : BNSLR- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 6 ] 2dip BCLR ;
1796 : BNSCTR- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 6 ] 2dip BCCTR ;
1797 : BNSL- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 6 ] 2dip BCL ;
1798 : BNSLA- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 6 ] 2dip BCLA ;
1799 : BNSLRL- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 6 ] 2dip BCLRL ;
1800 : BNSCTRL- ( cr target_addr -- ) [ 4 * 3 + ] dip [ 6 ] 2dip BCCTRL ;
1801 : BUN- ( cr target_addr -- ) BSO- ;
1802 : BUNA- ( cr target_addr -- ) BSOA- ;
1803 : BUNLR- ( cr target_addr -- ) BSOLR- ;
1804 : BUNCTR- ( cr target_addr -- ) BSOCTR- ;
1805 : BUNL- ( cr target_addr -- ) BSOL- ;
1806 : BUNLA- ( cr target_addr -- ) BSOLA- ;
1807 : BUNLRL- ( cr target_addr -- ) BSOLRL- ;
1808 : BUNCTRL- ( cr target_addr -- ) BSOCTRL- ;
1809 : BNU- ( cr target_addr -- ) BNS- ;
1810 : BNUA- ( cr target_addr -- ) BNSA- ;
1811 : BNULR- ( cr target_addr -- ) BNSLR- ;
1812 : BNUCTR- ( cr target_addr -- ) BNSCTR- ;
1813 : BNUL- ( cr target_addr -- ) BNSL- ;
1814 : BNULA- ( cr target_addr -- ) BNSLA- ;
1815 : BNULRL- ( cr target_addr -- ) BNSLRL- ;
1816 : BNUCTRL- ( cr target_addr -- ) BNSCTRL- ;
1817 : BLE- ( cr target_addr -- ) BNG- ;
1818 : BLEA- ( cr target_addr -- ) BNGA- ;
1819 : BLELR- ( cr target_addr -- ) BNGLR- ;
1820 : BLECTR- ( cr target_addr -- ) BNGCTR- ;
1821 : BLEL- ( cr target_addr -- ) BNGL- ;
1822 : BLELA- ( cr target_addr -- ) BNGLA- ;
1823 : BLELRL- ( cr target_addr -- ) BNGLRL- ;
1824 : BLECTRL- ( cr target_addr -- ) BNGCTRL- ;
1825 : BGE- ( cr target_addr -- ) BNL- ;
1826 : BGEA- ( cr target_addr -- ) BNLA- ;
1827 : BGELR- ( cr target_addr -- ) BNLLR- ;
1828 : BGECTR- ( cr target_addr -- ) BNLCTR- ;
1829 : BGEL- ( cr target_addr -- ) BNLL- ;
1830 : BGELA- ( cr target_addr -- ) BNLLA- ;
1831 : BGELRL- ( cr target_addr -- ) BNLLRL- ;
1832 : BGECTRL- ( cr target_addr -- ) BNLCTRL- ;
1834 ! E.3 Condition Register Logical Mnemonics
1835 : CRSET ( bx -- ) dup dup CREQV ;
1836 : CRCLR ( bx -- ) dup dup CRXOR ;
1837 : CRMOVE ( bx by -- ) dup CROR ;
1838 : CRNOT ( bx by -- ) dup CRNOR ;
1840 ! E.4.1 Subtract Immediate
1841 : SUBI ( dst src1 src2 -- ) neg ADDI ;
1842 : SUBIS ( dst src1 src2 -- ) neg ADDIS ;
1843 : SUBIC ( dst src1 src2 -- ) neg ADDIC ;
1844 : SUBIC. ( dst src1 src2 -- ) neg ADDIC. ;
1847 : SUB ( rx ry rz -- ) swap SUBF ;
1848 : SUB. ( rx ry rz -- ) swap SUBF. ;
1849 : SUBO ( rx ry rz -- ) swap SUBFO ;
1850 : SUBO. ( rx ry rz -- ) swap SUBFO. ;
1851 : SUBC ( rx ry rz -- ) swap SUBFC ;
1852 : SUBC. ( rx ry rz -- ) swap SUBFC. ;
1853 : SUBCO ( rx ry rz -- ) swap SUBFCO ;
1854 : SUBCO. ( rx ry rz -- ) swap SUBFCO. ;
1856 ! E.5.1 Double Word Comparisons
1857 : CMPDI ( bf ra si -- ) [ 1 ] 2dip CMPI ;
1858 : CMPD ( bf ra rb -- ) [ 1 ] 2dip CMP ;
1859 : CMPLDI ( bf ra ui -- ) [ 1 ] 2dip CMPLI ;
1860 : CMPLD ( bf ra rb -- ) [ 1 ] 2dip CMPL ;
1862 ! E.5.2 Word Comparisons
1863 : CMPWI ( bf ra si -- ) [ 0 ] 2dip CMPI ;
1864 : CMPW ( bf ra rb -- ) [ 0 ] 2dip CMP ;
1865 : CMPLWI ( bf ra ui -- ) [ 0 ] 2dip CMPLI ;
1866 : CMPLW ( bf ra rb -- ) [ 0 ] 2dip CMPL ;
1868 ! E.6 Trap Mnemonics
1869 : TRAP ( -- ) 31 0 0 TW ;
1870 : TDUI ( rx n -- ) [ 31 ] 2dip TDI ;
1871 : TDU ( rx ry -- ) [ 31 ] 2dip TD ;
1872 : TWUI ( rx n -- ) [ 31 ] 2dip TWI ;
1873 : TWU ( rx ry -- ) [ 31 ] 2dip TW ;
1874 : TDLTI ( rx n -- ) [ 16 ] 2dip TDI ;
1875 : TDLT ( rx ry -- ) [ 16 ] 2dip TD ;
1876 : TWLTI ( rx n -- ) [ 16 ] 2dip TWI ;
1877 : TWLT ( rx ry -- ) [ 16 ] 2dip TW ;
1878 : TDLEI ( rx n -- ) [ 20 ] 2dip TDI ;
1879 : TDLE ( rx ry -- ) [ 20 ] 2dip TD ;
1880 : TWLEI ( rx n -- ) [ 20 ] 2dip TWI ;
1881 : TWLE ( rx ry -- ) [ 20 ] 2dip TW ;
1882 : TDEQI ( rx n -- ) [ 4 ] 2dip TDI ;
1883 : TDEQ ( rx ry -- ) [ 4 ] 2dip TD ;
1884 : TWEQI ( rx n -- ) [ 4 ] 2dip TWI ;
1885 : TWEQ ( rx ry -- ) [ 4 ] 2dip TW ;
1886 : TDGEI ( rx n -- ) [ 12 ] 2dip TDI ;
1887 : TDGE ( rx ry -- ) [ 12 ] 2dip TD ;
1888 : TWGEI ( rx n -- ) [ 12 ] 2dip TWI ;
1889 : TWGE ( rx ry -- ) [ 12 ] 2dip TW ;
1890 : TDGTI ( rx n -- ) [ 8 ] 2dip TDI ;
1891 : TDGT ( rx ry -- ) [ 8 ] 2dip TD ;
1892 : TWGTI ( rx n -- ) [ 8 ] 2dip TWI ;
1893 : TWGT ( rx ry -- ) [ 8 ] 2dip TW ;
1894 : TDNLI ( rx n -- ) [ 12 ] 2dip TDI ;
1895 : TDNL ( rx ry -- ) [ 12 ] 2dip TD ;
1896 : TWNLI ( rx n -- ) [ 12 ] 2dip TWI ;
1897 : TWNL ( rx ry -- ) [ 12 ] 2dip TW ;
1898 : TDNEI ( rx n -- ) [ 24 ] 2dip TDI ;
1899 : TDNE ( rx ry -- ) [ 24 ] 2dip TD ;
1900 : TWNEI ( rx n -- ) [ 24 ] 2dip TWI ;
1901 : TWNE ( rx ry -- ) [ 24 ] 2dip TW ;
1902 : TDNGI ( rx n -- ) [ 20 ] 2dip TDI ;
1903 : TDNG ( rx ry -- ) [ 20 ] 2dip TD ;
1904 : TWNGI ( rx n -- ) [ 20 ] 2dip TWI ;
1905 : TWNG ( rx ry -- ) [ 20 ] 2dip TW ;
1906 : TDLLTI ( rx n -- ) [ 2 ] 2dip TDI ;
1907 : TDLLT ( rx ry -- ) [ 2 ] 2dip TD ;
1908 : TWLLTI ( rx n -- ) [ 2 ] 2dip TWI ;
1909 : TWLLT ( rx ry -- ) [ 2 ] 2dip TW ;
1910 : TDLLEI ( rx n -- ) [ 6 ] 2dip TDI ;
1911 : TDLLE ( rx ry -- ) [ 6 ] 2dip TD ;
1912 : TWLLEI ( rx n -- ) [ 6 ] 2dip TWI ;
1913 : TWLLE ( rx ry -- ) [ 6 ] 2dip TW ;
1914 : TDLGEI ( rx n -- ) [ 5 ] 2dip TDI ;
1915 : TDLGE ( rx ry -- ) [ 5 ] 2dip TD ;
1916 : TWLGEI ( rx n -- ) [ 5 ] 2dip TWI ;
1917 : TWLGE ( rx ry -- ) [ 5 ] 2dip TW ;
1918 : TDLGTI ( rx n -- ) [ 1 ] 2dip TDI ;
1919 : TDLGT ( rx ry -- ) [ 1 ] 2dip TD ;
1920 : TWLGTI ( rx n -- ) [ 1 ] 2dip TWI ;
1921 : TWLGT ( rx ry -- ) [ 1 ] 2dip TW ;
1922 : TDLNLI ( rx n -- ) [ 5 ] 2dip TDI ;
1923 : TDLNL ( rx ry -- ) [ 5 ] 2dip TD ;
1924 : TWLNLI ( rx n -- ) [ 5 ] 2dip TWI ;
1925 : TWLNL ( rx ry -- ) [ 5 ] 2dip TW ;
1926 : TDLNGI ( rx n -- ) [ 6 ] 2dip TDI ;
1927 : TDLNG ( rx ry -- ) [ 6 ] 2dip TD ;
1928 : TWLNGI ( rx n -- ) [ 6 ] 2dip TWI ;
1929 : TWLNG ( rx ry -- ) [ 6 ] 2dip TW ;
1931 ! E.7.1 Operations on Doublewords
1932 : EXTLDI ( ra rs n b -- ) swap 1 - RLDICR ;
1933 : EXTLDI. ( ra rs n b -- ) swap 1 - RLDICR. ;
1934 : EXTRDI ( ra rs n b -- ) [ + ] [ drop 64 swap - ] 2bi RLDICL ;
1935 : EXTRDI. ( ra rs n b -- ) [ + ] [ drop 64 swap - ] 2bi RLDICL. ;
1936 : INSRDI ( ra rs n b -- ) [ + 64 swap - ] [ nip ] 2bi RLDIMI ;
1937 : INSRDI. ( ra rs n b -- ) [ + 64 swap - ] [ nip ] 2bi RLDIMI. ;
1938 : ROTLDI ( ra rs n -- ) 0 RLDICL ;
1939 : ROTLDI. ( ra rs n -- ) 0 RLDICL. ;
1940 : ROTRDI ( ra rs n -- ) 64 swap - 0 RLDICL ;
1941 : ROTRDI. ( ra rs n -- ) 64 swap - 0 RLDICL. ;
1942 : ROTLD ( ra rs rb -- ) 0 RLDCL ;
1943 : ROTLD. ( ra rs rb -- ) 0 RLDCL. ;
1944 : SLDI ( ra rs n -- ) dup 63 swap - RLDICR ;
1945 : SLDI. ( ra rs n -- ) dup 63 swap - RLDICR. ;
1946 : SRDI ( ra rs n -- ) dup [ 64 swap - ] dip RLDICL ;
1947 : SRDI. ( ra rs n -- ) dup [ 64 swap - ] dip RLDICL. ;
1948 : CLRLDI ( ra rs n -- ) 0 swap RLDICL ;
1949 : CLRLDI. ( ra rs n -- ) 0 swap RLDICL. ;
1950 : CLRRDI ( ra rs n -- ) 0 swap 63 swap - RLDICR ;
1951 : CLRRDI. ( ra rs n -- ) 0 swap 63 swap - RLDICR. ;
1952 : CLRLSLDI ( ra rs b n -- ) swap over - RLDIC ;
1953 : CLRLSLDI. ( ra rs b n -- ) swap over - RLDIC. ;
1955 ! E.7.2 Operations on Words
1956 : EXTLWI ( ra rs n b -- ) swap 0 1 - RLWINM ;
1957 : EXTLWI. ( ra rs n b -- ) swap 0 1 - RLWINM. ;
1958 : EXTRWI ( ra rs n b -- ) swap dup [ + ] dip 32 swap - 31 RLWINM ;
1959 : EXTRWI. ( ra rs n b -- ) swap dup [ + ] dip 32 swap - 31 RLWINM. ;
1960 : INSLWI ( ra rs n b -- ) [ [ drop 32 ] dip - ] [ nip ] [ + 1 - ] 2tri RLWIMI ;
1961 : INSLWI. ( ra rs n b -- ) [ [ drop 32 ] dip - ] [ nip ] [ + 1 - ] 2tri RLWIMI. ;
1962 : INSRWI ( ra rs n b -- ) [ + 32 swap - ] [ nip ] [ + 1 - ] 2tri RLWIMI ;
1963 : INSRWI. ( ra rs n b -- ) [ + 32 swap - ] [ nip ] [ + 1 - ] 2tri RLWIMI. ;
1964 : ROTLWI ( ra rs n -- ) 0 31 RLWINM ;
1965 : ROTLWI. ( ra rs n -- ) 0 31 RLWINM. ;
1966 : ROTRWI ( ra rs n -- ) 32 swap - 0 31 RLWINM ;
1967 : ROTRWI. ( ra rs n -- ) 32 swap - 0 31 RLWINM. ;
1968 : ROTLW ( ra rs rb -- ) 0 31 RLWNM ;
1969 : ROTLW. ( ra rs rb -- ) 0 31 RLWNM. ;
1970 : SLWI ( ra rs n -- ) 0 over 31 swap - RLWINM ;
1971 : SLWI. ( ra rs n -- ) 0 over 31 swap - RLWINM. ;
1972 : SRWI ( ra rs n -- ) [ 32 swap - ] [ ] bi 31 RLWINM ;
1973 : SRWI. ( ra rs n -- ) [ 32 swap - ] [ ] bi 31 RLWINM. ;
1974 : CLRLWI ( ra rs n -- ) 0 swap 31 RLWINM ;
1975 : CLRLWI. ( ra rs n -- ) 0 swap 31 RLWINM. ;
1976 : CLRRWI ( ra rs n -- ) [ 0 0 ] dip 31 swap - RLWINM ;
1977 : CLRRWI. ( ra rs n -- ) [ 0 0 ] dip 31 swap - RLWINM. ;
1978 : CLRLSLWI ( ra rs b n -- ) [ nip ] [ - ] [ nip 31 swap - ] 2tri RLWINM ;
1979 : CLRLSLWI. ( ra rs b n -- ) [ nip ] [ - ] [ nip 31 swap - ] 2tri RLWINM. ;
1981 ! E.8 Move To/From Special Purpose Registers Mnemonics
1982 : MFXER ( rx -- ) 1 5 shift MFSPR ;
1983 : MFLR ( rx -- ) 8 5 shift MFSPR ;
1984 : MFCTR ( rx -- ) 9 5 shift MFSPR ;
1985 : MFUAMR ( rx -- ) 13 5 shift MFSPR ;
1986 : MFPPR ( rx -- ) 896 -5 shift MFSPR ;
1987 : MFPPR32 ( rx -- ) 898 -5 shift MFSPR ;
1988 : MTXER ( rx -- ) 1 5 shift swap MTSPR ;
1989 : MTLR ( rx -- ) 8 5 shift swap MTSPR ;
1990 : MTCTR ( rx -- ) 9 5 shift swap MTSPR ;
1991 : MTUAMR ( rx -- ) 13 5 shift swap MTSPR ;
1992 : MTPPR ( rx -- ) 896 -5 shift swap MTSPR ;
1993 : MTPPR32 ( rx -- ) 898 -5 shift swap MTSPR ;
1995 ! E.9 Miscellaneous Mnemonics
1996 : NOP ( -- ) 0 0 0 ORI ;
1997 : XNOP ( -- ) 0 0 0 XORI ;
1998 : LI ( dst value -- ) 0 swap ADDI ;
1999 : LIS ( dst value -- ) 0 swap ADDIS ;
2000 : LA ( rx ry d -- ) ADDI ;
2001 : MR ( dst src -- ) dup OR ;
2002 : MR. ( dst src -- ) dup OR. ;
2003 : NOT ( dst src -- ) dup NOR ;
2004 : NOT. ( dst src -- ) dup NOR. ;
2005 : MTCR ( rx -- ) HEX: ff swap MTCRF ; deprecated