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