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