1; IQ10-only CPU description. -*- Scheme -*-
2;
3; Copyright 2001, 2002, 2007, 2009 Free Software Foundation, Inc.
4;
5; Contributed by Red Hat Inc; developed under contract from Vitesse.
6;
7; This file is part of the GNU Binutils.
8;
9; This program is free software; you can redistribute it and/or modify
10; it under the terms of the GNU General Public License as published by
11; the Free Software Foundation; either version 3 of the License, or
12; (at your option) any later version.
13;
14; This program is distributed in the hope that it will be useful,
15; but WITHOUT ANY WARRANTY; without even the implied warranty of
16; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17; GNU General Public License for more details.
18;
19; You should have received a copy of the GNU General Public License
20; along with this program; if not, write to the Free Software
21; Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
22; MA 02110-1301, USA.
23
24
25; Instructions.
26
27(dni andoui-q10 "iq10 and upper ones immediate" (MACH10 USES-RS USES-RT)
28     "andoui $rt,$rs,$hi16"
29     (+ OP10_ANDOUI rs rt hi16)
30     (set rt (and rs (or (sll hi16 16) #xFFFF)))
31     ())
32
33(dni andoui2-q10 "iq10 and upper ones immediate" (ALIAS NO-DIS MACH10 USES-RS USES-RT)
34     "andoui ${rt-rs},$hi16"
35     (+ OP10_ANDOUI rt-rs hi16)
36     (set rt-rs (and rt-rs (or (sll hi16 16) #xFFFF)))
37     ())
38
39(dni orui-q10 "or upper immediate" (MACH10 USES-RS USES-RT)
40     "orui $rt,$rs,$hi16"
41     (+ OP10_ORUI rs rt hi16)
42     (set rt (or rs (sll hi16 16)))
43     ())
44
45(dni orui2-q10 "or upper immediate" (ALIAS NO-DIS MACH10 USES-RS USES-RT)
46     "orui ${rt-rs},$hi16"
47     (+ OP10_ORUI rt-rs hi16)
48     (set rt-rs (or rt-rs (sll hi16 16)))
49     ())
50
51(dni mrgbq10 "merge bytes" (MACH10 USES-RD USES-RS USES-RT)
52     "mrgb $rd,$rs,$rt,$maskq10"
53     (+ OP_SPECIAL rs rt rd maskq10 FUNC_MRGB)
54     (sequence ((SI temp))
55	       (if (bitclear? mask 0)
56		   (set temp (and rs #xFF))
57		   (set temp (and rt #xFF)))
58	       (if (bitclear? mask 1)
59		   (set temp (or temp (and rs #xFF00)))
60		   (set temp (or temp (and rt #xFF00))))
61	       (if (bitclear? mask 2)
62		   (set temp (or temp (and rs #xFF0000)))
63		   (set temp (or temp (and rt #xFF0000))))
64	       (if (bitclear? mask 3)
65		   (set temp (or temp (and rs #xFF000000)))
66		   (set temp (or temp (and rt #xFF000000))))
67	       (set rd temp))
68     ())
69
70(dni mrgbq102 "merge bytes" (ALIAS NO-DIS MACH10 USES-RD USES-RS USES-RT)
71     "mrgb ${rd-rs},$rt,$maskq10"
72     (+ OP_SPECIAL rt rd-rs maskq10 FUNC_MRGB)
73     (sequence ((SI temp))
74	       (if (bitclear? mask 0)
75		   (set temp (and rd-rs #xFF))
76		   (set temp (and rt #xFF)))
77	       (if (bitclear? mask 1)
78		   (set temp (or temp (and rd-rs #xFF00)))
79		   (set temp (or temp (and rt #xFF00))))
80	       (if (bitclear? mask 2)
81		   (set temp (or temp (and rd-rs #xFF0000)))
82		   (set temp (or temp (and rt #xFF0000))))
83	       (if (bitclear? mask 3)
84		   (set temp (or temp (and rd-rs #xFF000000)))
85		   (set temp (or temp (and rt #xFF000000))))
86	       (set rd-rs temp))
87     ())
88
89; In the future, we'll want the j & jal to use the 21 bit target, with
90; the upper five bits shifted up.  For now, give 'em the 16 bit target.
91
92(dni jq10 "jump" (MACH10)
93     "j $jmptarg"
94     (+ OP_J (f-rs 0) (f-rt 0) jmptarg)
95;     "j $jmptargq10"
96;     (+ OP_J upper-5-jmptargq10 (f-rt 0) lower-16-jmptargq10)
97     (delay 1 (set pc jmptarg))
98     ())
99
100(dni jalq10 "jump and link" (MACH10 USES-RT)
101     "jal $rt,$jmptarg"
102     (+ OP_JAL (f-rs 0) rt jmptarg)
103;     "jal $rt,$jmptargq10"
104;     (+ OP_JAL upper-5-jmptargq10 rt lower-16-jmptargq10)
105     (delay 1
106	    (sequence ()
107		      (set rt (add pc 8))
108		      (set pc jmptarg)))
109     ())
110
111(dni jalq10-2 "jump and link, implied r31" (MACH10 USES-RT)
112     "jal $jmptarg"
113     (+ OP_JAL (f-rs 0) (f-rt 31) jmptarg)
114     (delay 1
115	    (sequence ()
116		      (set rt (add pc 8))
117		      (set pc jmptarg)))
118     ())
119
120; Branch instructions.
121
122(dni bbil "branch bit immediate likely" (MACH10 USES-RS)
123     "bbil $rs($bitnum),$offset"
124     (+ OP10_BBIL rs bitnum offset)
125     (if (bitset? rs bitnum)
126	 (delay 1 (set pc offset))
127	 (skip 1))
128     ())
129
130(dni bbinl "branch bit immediate negated likely" (MACH10 USES-RS)
131     "bbinl $rs($bitnum),$offset"
132     (+ OP10_BBINL rs bitnum offset)
133     (if (bitclear? rs bitnum)
134	 (delay 1 (set pc offset))
135	 (skip 1))
136     ())
137
138(dni bbvl "branch bit variable likely" (MACH10 USES-RS USES-RT)
139     "bbvl $rs,$rt,$offset"
140     (+ OP10_BBVL rs rt offset)
141     (if (bitset? rs (and rt #x1F))
142	 (delay 1 (set pc offset))
143	 (skip 1))
144     ())
145
146(dni bbvnl "branch bit variable negated likely" (MACH10 USES-RS USES-RT)
147     "bbvnl $rs,$rt,$offset"
148     (+ OP10_BBVNL rs rt offset)
149     (if (bitclear? rs (and rt #x1F))
150	 (delay 1 (set pc offset))
151	 (skip 1))
152     ())
153
154(dni bgtzal "branch if greater than zero and link" (MACH10 USES-RS USES-R31)
155     "bgtzal $rs,$offset"
156     (+ OP_REGIMM rs FUNC_BGTZAL offset)
157     (if (gt rs 0)
158	 (sequence ()
159		   (set (reg h-gr 31) (add pc 8))
160		   (delay 1 (set pc offset))))
161     ())
162
163(dni bgtzall
164     "branch if greater than zero and link likely" (MACH10 USES-RS USES-R31)
165     "bgtzall $rs,$offset"
166     (+ OP_REGIMM rs FUNC_BGTZALL offset)
167     (if (gt rs 0)
168	 (sequence ()
169		   (set (reg h-gr 31) (add pc 8))
170		   (delay 1 (set pc offset)))
171	 (skip 1))
172     ())
173
174(dni blezal "branch if less than or equal to zero and link" (MACH10 USES-RS USES-R31)
175     "blezal $rs,$offset"
176     (+ OP_REGIMM rs FUNC_BLEZAL offset)
177     (if (le rs 0)
178	 (sequence ()
179		   (set (reg h-gr 31) (add pc 8))
180		   (delay 1 (set pc offset))))
181     ())
182
183(dni blezall
184     "branch if less than or equal to zero and link likely" (MACH10 USES-RS USES-R31)
185     "blezall $rs,$offset"
186     (+ OP_REGIMM rs FUNC_BLEZALL offset)
187     (if (le rs 0)
188	 (sequence ()
189		   (set (reg h-gr 31) (add pc 8))
190		   (delay 1 (set pc offset)))
191	 (skip 1))
192     ())
193
194(dni bgtz-q10 "branch if greater than zero" (MACH10 USES-RS)
195     "bgtz $rs,$offset"
196     (+ OP_REGIMM rs FUNC_BGTZ offset)
197     (if (gt rs 0)
198	 (delay 1 (set pc offset)))
199     ())
200
201(dni bgtzl-q10 "branch if greater than zero likely" (MACH10 USES-RS)
202     "bgtzl $rs,$offset"
203     (+ OP_REGIMM rs FUNC_BGTZL offset)
204     (if (gt rs 0)
205	 (delay 1 (set pc offset))
206	 (skip 1))
207     ())
208
209
210(dni blez-q10 "branch if less than or equal to zero" (MACH10 USES-RS)
211     "blez $rs,$offset"
212     (+ OP_REGIMM rs FUNC_BLEZ offset)
213     (if (le rs 0)
214	 (delay 1 (set pc offset)))
215     ())
216
217(dni blezl-q10 "branch if less than or equal to zero likely" (MACH10 USES-RS)
218     "blezl $rs,$offset"
219     (+ OP_REGIMM rs FUNC_BLEZL offset)
220     (if (le rs 0)
221	 (delay 1 (set pc offset))
222	 (skip 1))
223     ())
224
225(dni bmb-q10 "branch if matching byte-lane" (MACH10 USES-RS USES-RT)
226     "bmb $rs,$rt,$offset"
227     (+ OP10_BMB rs rt offset)
228     (sequence ((BI branch?))
229	       (set branch? 0)
230	       (if (eq (and rs #xFF) (and rt #xFF))
231		   (set branch? 1))
232	       (if (eq (and rs #xFF00) (and rt #xFF00))
233		   (set branch? 1))
234	       (if (eq (and rs #xFF0000) (and rt #xFF0000))
235		   (set branch? 1))
236	       (if (eq (and rs #xFF000000) (and rt #xFF000000))
237		   (set branch? 1))
238	       (if branch?
239		   (delay 1 (set pc offset))))
240     ())
241
242(dni bmbl "branch if matching byte-lane likely" (MACH10 USES-RS USES-RT)
243     "bmbl $rs,$rt,$offset"
244     (+ OP10_BMBL rs rt offset)
245     (sequence ((BI branch?))
246	       (set branch? 0)
247	       (if (eq (and rs #xFF) (and rt #xFF))
248		   (set branch? 1))
249	       (if (eq (and rs #xFF00) (and rt #xFF00))
250		   (set branch? 1))
251	       (if (eq (and rs #xFF0000) (and rt #xFF0000))
252		   (set branch? 1))
253	       (if (eq (and rs #xFF000000) (and rt #xFF000000))
254		   (set branch? 1))
255	       (if branch?
256		   (delay 1 (set pc offset))
257		   (skip 1)))
258     ())
259
260(dni bri "branch if register invalid" (MACH10 USES-RS)
261     "bri $rs,$offset"
262     (+ OP_REGIMM rs FUNC_BRI offset)
263     (if (gt rs 0)
264	 (delay 1 (set pc offset))
265	 (skip 1))
266     ())
267
268(dni brv "branch if register invalid" (MACH10 USES-RS)
269     "brv $rs,$offset"
270     (+ OP_REGIMM rs FUNC_BRV offset)
271     (if (gt rs 0)
272	 (delay 1 (set pc offset))
273	 (skip 1))
274     ())
275
276; debug instructions
277
278(dni bctx "branch if the current context == instruction[21]" (MACH10 USES-RS)
279     "bctx $rs,$offset"
280     (+ OP_REGIMM rs FUNC_BCTX offset)
281     (delay 1 (set pc offset))
282     ())
283
284(dni yield "unconditional yield to the other context" (MACH10)
285     "yield"
286     (+ OP_SPECIAL (f-rs 0) (f-rt 0) (f-rd 0) (f-shamt 0) FUNC10_YIELD)
287     (unimp yield)
288     ())
289
290; Special instructions.
291
292(dni crc32 "CRC, 32 bit input" (MACH10 USES-RD USES-RS USES-RT)
293     "crc32 $rd,$rs,$rt"
294     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_CRC32)
295     (unimp crc32)
296     ())
297
298(dni crc32b "CRC, 8 bit input" (MACH10 USES-RD USES-RS USES-RT)
299     "crc32b $rd,$rs,$rt"
300     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_CRC32B)
301     (unimp crc32b)
302     ())
303
304(dni cnt1s "Count ones" (MACH10 USES-RD USES-RS)
305     "cnt1s $rd,$rs"
306     (+ OP_SPECIAL rs rt rd (f-shamt 0) FUNC10_CNT1S)
307     (unimp crcp)
308     ())
309
310
311; Special Instructions
312
313(dni avail "Mark Header Buffer Available" (MACH10 USES-RD)
314     "avail $rd"
315     (+ OP_COP3 (f-rs 0) (f-rt 0) rd (f-shamt 0) FUNC10_AVAIL)
316     (unimp avail)
317     ())
318
319(dni free "Mark Header Buffer Free" (MACH10 USES-RS USES-RD)
320     "free $rd,$rs"
321     (+ OP_COP3 rs (f-rt 0) rd (f-shamt 0) FUNC10_FREE)
322     (unimp free)
323     ())
324
325(dni tstod "Test Header Buffer Order Dependency" (MACH10 USES-RS USES-RD)
326     "tstod $rd,$rs"
327     (+ OP_COP3 rs (f-rt 0) rd (f-shamt 0) FUNC10_TSTOD)
328     (unimp tstod)
329     ())
330
331(dni cmphdr "Get a Complete Header" (MACH10 USES-RD)
332     "cmphdr $rd"
333     (+ OP_COP3 (f-rs 0) (f-rt 0) rd (f-shamt 0) FUNC10_CMPHDR)
334     (unimp cmphdr)
335     ())
336
337(dni mcid "Allocate a Multicast ID" (MACH10 USES-RD USES-RT)
338     "mcid $rd,$rt"
339     (+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_MCID)
340     (unimp mcid)
341     ())
342
343(dni dba "Allocate a Data Buffer Pointer" (MACH10 USES-RD)
344     "dba $rd"
345     (+ OP_COP3 (f-rs 0) (f-rt 0) rd (f-shamt 0) FUNC10_DBA)
346     (unimp dba)
347     ())
348
349(dni dbd "Deallocate a Data Buffer Pointer" (MACH10 USES-RS USES-RT USES-RD)
350     "dbd $rd,$rs,$rt"
351     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_DBD)
352     (unimp dbd)
353     ())
354
355(dni dpwt "DSTN_PORT Write" (MACH10 USES-RS USES-RD)
356     "dpwt $rd,$rs"
357     (+ OP_COP3 rs (f-rt 0) rd (f-shamt 0) FUNC10_DPWT)
358     (unimp dpwt)
359     ())
360
361; Architectural and coprocessor instructions.
362
363(dni chkhdrq10 "" (MACH10 USES-RS USES-RD)
364     "chkhdr $rd,$rs"
365     (+ OP_COP3 rs (f-rt 0) rd (f-shamt 0) FUNC10_CHKHDR)
366     (unimp chkhdr)
367     ())
368
369; Coprocessor DMA Instructions (IQ10)
370
371(dni rba "Read Bytes Absolute" (MACH10 USES-RS USES-RT USES-RD)
372     "rba $rd,$rs,$rt"
373     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_RBA)
374     (unimp rba)
375     ())
376
377(dni rbal "Read Bytes Absolute and Lock" (MACH10 USES-RS USES-RT USES-RD)
378     "rbal $rd,$rs,$rt"
379     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_RBAL)
380     (unimp rbal)
381     ())
382
383(dni rbar "Read Bytes Absolute and Release" (MACH10 USES-RS USES-RT USES-RD)
384     "rbar $rd,$rs,$rt"
385     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_RBAR)
386     (unimp rbar)
387     ())
388
389(dni wba "Write Bytes Absolute" (MACH10 USES-RS USES-RT USES-RD)
390     "wba $rd,$rs,$rt"
391     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_WBA)
392     (unimp wba)
393     ())
394
395(dni wbau "Write Bytes Absolute and Unlock" (MACH10 USES-RS USES-RT USES-RD)
396     "wbau $rd,$rs,$rt"
397     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_WBAU)
398     (unimp wbau)
399     ())
400
401(dni wbac "Write Bytes Absolute Cacheable" (MACH10 USES-RS USES-RT USES-RD)
402     "wbac $rd,$rs,$rt"
403     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_WBAC)
404     (unimp wbac)
405     ())
406
407(dni rbi "Read Bytes Immediate" (MACH10 USES-RD USES-RS USES-RT)
408     "rbi $rd,$rs,$rt,$bytecount"
409     (+ OP_COP3 rs rt rd FUNC10_RBI bytecount)
410     (unimp rbi)
411     ())
412
413(dni rbil "Read Bytes Immediate and Lock" (MACH10 USES-RD USES-RS USES-RT)
414     "rbil $rd,$rs,$rt,$bytecount"
415     (+ OP_COP3 rs rt rd FUNC10_RBIL bytecount)
416     (unimp rbil)
417     ())
418
419(dni rbir "Read Bytes Immediate and Release" (MACH10 USES-RD USES-RS USES-RT)
420     "rbir $rd,$rs,$rt,$bytecount"
421     (+ OP_COP3 rs rt rd FUNC10_RBIR bytecount)
422     (unimp rbir)
423     ())
424
425(dni wbi "Write Bytes Immediate" (MACH10 USES-RD USES-RS USES-RT)
426     "wbi $rd,$rs,$rt,$bytecount"
427     (+ OP_COP3 rs rt rd FUNC10_WBI bytecount)
428     (unimp wbi)
429     ())
430
431(dni wbic "Write Bytes Immediate Cacheable" (MACH10 USES-RD USES-RS USES-RT)
432     "wbic $rd,$rs,$rt,$bytecount"
433     (+ OP_COP3 rs rt rd FUNC10_WBIC bytecount)
434     (unimp wbic)
435     ())
436
437(dni wbiu "Write Bytes Immediate" (MACH10 USES-RD USES-RS USES-RT)
438     "wbiu $rd,$rs,$rt,$bytecount"
439     (+ OP_COP3 rs rt rd FUNC10_WBIU bytecount)
440     (unimp wbiu)
441     ())
442
443(dni pkrli "Packet Release Immediate" (MACH10 USES-RD USES-RS USES-RT)
444     "pkrli $rd,$rs,$rt,$bytecount"
445     (+ OP_COP2 rs rt rd FUNC10_PKRLI bytecount)
446     (unimp pkrli)
447     ())
448
449(dni pkrlih "Packet Release Immediate and Hold" (MACH10 USES-RD USES-RS USES-RT)
450     "pkrlih $rd,$rs,$rt,$bytecount"
451     (+ OP_COP2 rs rt rd FUNC10_PKRLIH bytecount)
452     (unimp pkrlih)
453     ())
454
455(dni pkrliu "Packet Release Immediate Unconditional" (MACH10 USES-RD USES-RS USES-RT)
456     "pkrliu $rd,$rs,$rt,$bytecount"
457     (+ OP_COP2 rs rt rd FUNC10_PKRLIU bytecount)
458     (unimp pkrliu)
459     ())
460
461(dni pkrlic "Packet Release Immediate Continue" (MACH10 USES-RD USES-RS USES-RT)
462     "pkrlic $rd,$rs,$rt,$bytecount"
463     (+ OP_COP2 rs rt rd FUNC10_PKRLIC bytecount)
464     (unimp pkrlic)
465     ())
466
467(dni pkrla "Packet Release Absolute" (MACH10 USES-RS USES-RT USES-RD)
468     "pkrla $rd,$rs,$rt"
469     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_PKRLA)
470     (unimp pkrla)
471     ())
472
473(dni pkrlau "Packet Release Absolute Unconditional" (MACH10 USES-RS USES-RT USES-RD)
474     "pkrlau $rd,$rs,$rt"
475     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_PKRLAU)
476     (unimp pkrlau)
477     ())
478
479(dni pkrlah "Packet Release Absolute and Hold" (MACH10 USES-RS USES-RT USES-RD)
480     "pkrlah $rd,$rs,$rt"
481     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_PKRLAH)
482     (unimp pkrlah)
483     ())
484
485(dni pkrlac "Packet Release Absolute Continue" (MACH10 USES-RS USES-RT USES-RD)
486     "pkrlac $rd,$rs,$rt"
487     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_PKRLAC)
488     (unimp pkrlac)
489     ())
490
491; Main Memory Access Instructions
492
493(dni lock "lock memory" (MACH10 USES-RD USES-RT)
494     "lock $rd,$rt"
495     (+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_LOCK)
496     (unimp lock)
497     ())
498
499(dni unlk "unlock memory" (MACH10 USES-RT USES-RD)
500     "unlk $rd,$rt"
501     (+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_UNLK)
502     (unimp unlk)
503     ())
504
505(dni swrd "Single Word Read" (MACH10 USES-RT USES-RD)
506     "swrd $rd,$rt"
507     (+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_SWRD)
508     (unimp swrd)
509     ())
510
511(dni swrdl "Single Word Read and Lock" (MACH10 USES-RT USES-RD)
512     "swrdl $rd,$rt"
513     (+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_SWRDL)
514     (unimp swrdl)
515     ())
516
517(dni swwr "Single Word Write" (MACH10 USES-RS USES-RT USES-RD)
518     "swwr $rd,$rs,$rt"
519     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_SWWR)
520     (unimp swwr)
521     ())
522
523(dni swwru "Single Word Write and Unlock" (MACH10 USES-RS USES-RT USES-RD)
524     "swwru $rd,$rs,$rt"
525     (+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_SWWRU)
526     (unimp swwru)
527     ())
528
529(dni dwrd "Double Word Read" (MACH10 EVEN-REG-NUM USES-RT USES-RD)
530     "dwrd $rd,$rt"
531     (+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_DWRD)
532     (unimp dwrd)
533     ())
534
535(dni dwrdl "Double Word Read and Lock" (MACH10 EVEN-REG-NUM USES-RT USES-RD)
536     "dwrdl $rd,$rt"
537     (+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_DWRDL)
538     (unimp dwrdl)
539     ())
540
541; CAM access instructions (IQ10)
542
543(dni cam36 "CAM Access in 36-bit Mode" (MACH10 USES-RT USES-RD)
544     "cam36 $rd,$rt,${cam-z},${cam-y}"
545     (+ OP_COP3 (f-rs 0) rt rd FUNC10_CAM36 cam-z cam-y)
546     (unimp cam36)
547     ())
548
549(dni cam72 "CAM Access in 72-bit Mode" (MACH10 USES-RT USES-RD)
550     "cam72 $rd,$rt,${cam-y},${cam-z}"
551     (+ OP_COP3 (f-rs 0) rt rd FUNC10_CAM72 cam-z cam-y)
552     (unimp cam72)
553     ())
554
555(dni cam144 "CAM Access in 144-bit Mode" (MACH10 USES-RT USES-RD)
556     "cam144 $rd,$rt,${cam-y},${cam-z}"
557     (+ OP_COP3 (f-rs 0) rt rd FUNC10_CAM144 cam-z cam-y)
558     (unimp cam144)
559     ())
560
561(dni cam288 "CAM Access in 288-bit Mode" (MACH10 USES-RT USES-RD)
562     "cam288 $rd,$rt,${cam-y},${cam-z}"
563     (+ OP_COP3 (f-rs 0) rt rd FUNC10_CAM288 cam-z cam-y)
564     (unimp cam288)
565     ())
566
567; Counter manager instructions (IQ10)
568
569(dni cm32and "Counter Manager And" (MACH10 USES-RS USES-RT USES-RD)
570     "cm32and $rd,$rs,$rt"
571     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32AND)
572     (unimp cm32and)
573     ())
574
575(dni cm32andn "Counter Manager And With Inverse" (MACH10 USES-RS USES-RT USES-RD)
576     "cm32andn $rd,$rs,$rt"
577     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32ANDN)
578     (unimp cm32andn)
579     ())
580
581(dni cm32or "Counter Manager Or" (MACH10 USES-RS USES-RT USES-RD)
582     "cm32or $rd,$rs,$rt"
583     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32OR)
584     (unimp cm32or)
585     ())
586
587(dni cm32ra "Counter Manager 32-bit Rolling Add" (MACH10 USES-RS USES-RT USES-RD)
588     "cm32ra $rd,$rs,$rt"
589     (+ OP_COP3 rs rt rd (f-shamt 2) FUNC10_CM32RA)
590     (unimp cm32ra)
591     ())
592
593(dni cm32rd "Counter Manager 32-bit Rolling Decrement" (MACH10 USES-RT USES-RD)
594     "cm32rd $rd,$rt"
595     (+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32RD)
596     (unimp cm32rd)
597     ())
598
599(dni cm32ri "Counter Manager 32-bit Rolling Increment" (MACH10 USES-RT USES-RD)
600     "cm32ri $rd,$rt"
601     (+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32RI)
602     (unimp cm32ri)
603     ())
604
605(dni cm32rs "Counter Manager 32-bit Rolling Subtract" (MACH10 USES-RS USES-RT USES-RD)
606     "cm32rs $rd,$rs,$rt"
607     (+ OP_COP3 rs rt rd (f-shamt 2) FUNC10_CM32RS)
608     (unimp cm32rs)
609     ())
610
611(dni cm32sa "Counter Manager 32-bit Saturating Add" (MACH10 USES-RS USES-RT USES-RD)
612     "cm32sa $rd,$rs,$rt"
613     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32SA)
614     (unimp cm32sa)
615     ())
616
617(dni cm32sd "Counter Manager 32-bit Saturating Decrement" (MACH10 USES-RT USES-RD)
618     "cm32sd $rd,$rt"
619     (+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32SD)
620     (unimp cm32sd)
621     ())
622
623(dni cm32si "Counter Manager 32-bit Saturating Increment" (MACH10 USES-RT USES-RD)
624     "cm32si $rd,$rt"
625     (+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32SI)
626     (unimp cm32si)
627     ())
628
629(dni cm32ss "Counter Manager 32-bit Saturating Subtract" (MACH10 USES-RS USES-RT USES-RD)
630     "cm32ss $rd,$rs,$rt"
631     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32SS)
632     (unimp cm32ss)
633     ())
634
635(dni cm32xor "Counter Manager Xor" (MACH10 USES-RS USES-RT USES-RD)
636     "cm32xor $rd,$rs,$rt"
637     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32XOR)
638     (unimp cm32xor)
639     ())
640
641(dni cm64clr "Counter Manager Clear" (MACH10 EVEN-REG-NUM USES-RT USES-RD)
642     "cm64clr $rd,$rt"
643     (+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64CLR)
644     (unimp cm64clr)
645     ())
646
647(dni cm64ra "Counter Manager 64-bit Rolling Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD)
648     "cm64ra $rd,$rs,$rt"
649     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64RA)
650     (unimp cm64ra)
651     ())
652
653(dni cm64rd "Counter Manager 64-bit Rolling Decrement" (MACH10 EVEN-REG-NUM USES-RT USES-RD)
654     "cm64rd $rd,$rt"
655     (+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64RD)
656     (unimp cm64rd)
657     ())
658
659(dni cm64ri "Counter Manager 32-bit Rolling Increment" (MACH10 EVEN-REG-NUM USES-RT USES-RD)
660     "cm64ri $rd,$rt"
661     (+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64RI)
662     (unimp cm64ri)
663     ())
664
665(dni cm64ria2 "Counter Manager 32/32 Rolling Increment/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD)
666     "cm64ria2 $rd,$rs,$rt"
667     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64RIA2)
668     (unimp cm64ria2)
669     ())
670
671(dni cm64rs "Counter Manager 64-bit Rolling Subtract" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD)
672     "cm64rs $rd,$rs,$rt"
673     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64RS)
674     (unimp cm64rs)
675     ())
676
677(dni cm64sa "Counter Manager 64-bit Saturating Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD)
678     "cm64sa $rd,$rs,$rt"
679     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64SA)
680     (unimp cm64sa)
681     ())
682
683(dni cm64sd "Counter Manager 64-bit Saturating Decrement" (MACH10 EVEN-REG-NUM USES-RT USES-RD)
684     "cm64sd $rd,$rt"
685     (+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64SD)
686     (unimp cm64sd)
687     ())
688
689(dni cm64si "Counter Manager 64-bit Saturating Increment" (MACH10 EVEN-REG-NUM USES-RT USES-RD)
690     "cm64si $rd,$rt"
691     (+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64SI)
692     (unimp cm64si)
693     ())
694
695(dni cm64sia2 "Counter Manager 32/32 Saturating Increment/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD)
696     "cm64sia2 $rd,$rs,$rt"
697     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64SIA2)
698     (unimp cm64sia2)
699     ())
700
701(dni cm64ss "Counter Manager 64-bit Saturating Subtract" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD)
702     "cm64ss $rd,$rs,$rt"
703     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64SS)
704     (unimp cm64ss)
705     ())
706
707(dni cm128ria2 "Counter Manager 128-bit 64/64 Rolling Increment/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD)
708     "cm128ria2 $rd,$rs,$rt"
709     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128RIA2)
710     (unimp cm128ria2)
711     ())
712
713(dni cm128ria3 "Counter Manager 128-bit 32/32/64 Rolling Increment/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD)
714     "cm128ria3 $rd,$rs,$rt,${cm-3z}"
715     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128RIA3 cm-3z)
716     (unimp cm128ria3)
717     ())
718
719(dni cm128ria4 "Counter Manager 128-bit 32/32/32/32 Rolling Inc/Add" (MACH10 USES-RS USES-RT USES-RD)
720     "cm128ria4 $rd,$rs,$rt,${cm-4z}"
721     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128RIA4 cm-4z)
722     (unimp cm128ria4)
723     ())
724
725(dni cm128sia2 "Counter Manager 128-bit 64/64 Saturating Inc/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD)
726     "cm128sia2 $rd,$rs,$rt"
727     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128SIA2)
728     (unimp cm128sia2)
729     ())
730
731(dni cm128sia3 "Counter Manager 128-bit 32/32/64 Saturating Inc/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD)
732     "cm128sia3 $rd,$rs,$rt,${cm-3z}"
733     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128SIA3 cm-3z)
734     (unimp cm128sia3)
735     ())
736
737(dni cm128sia4 "Counter Manager 128-bit 32/32/32/32 Saturating Inc/Add" (MACH10 USES-RS USES-RT USES-RD)
738     "cm128sia4 $rd,$rs,$rt,${cm-4z}"
739     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128SIA4 cm-4z)
740     (unimp cm128sia4)
741     ())
742
743(dni cm128vsa "Counter Manager Continuous State Dual Leaky Token Bucket Policing" (MACH10 USES-RS USES-RT USES-RD)
744     "cm128vsa $rd,$rs,$rt"
745     (+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128VSA)
746     (unimp cm128vsa)
747     ())
748
749; Coprocessor Data Movement Instructions
750
751; Note that we don't set the USES-RD or USES-RT attributes for many of the following
752; instructions, as it's the COP register that's being specified.
753
754; ??? Is YIELD-INSN the right attribute for IQ10?  The IQ2000 used the attribute to warn about
755; yielding instructions in a delay slot, but that's not relevant in IQ10.  What *is* relevant
756; (and unique to IQ10) is instructions that yield if the destination register is accessed
757; before the value is there, causing a yield.
758
759(dni cfc "copy from coprocessor control register" (MACH10 LOAD-DELAY USES-RD YIELD-INSN)
760     "cfc $rd,$rt"
761     (+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_CFC)
762     (unimp cfc)
763     ())
764
765(dni ctc "copy to coprocessor control register" (MACH10 USES-RS)
766     "ctc $rs,$rt"
767     (+ OP_COP3 rs rt (f-rd 0) (f-shamt 0) FUNC10_CTC)
768     (unimp ctc)
769     ())
770
771; Macros
772
773(dnmi m-avail "Mark Header Buffer Available" (MACH10 NO-DIS)
774     "avail"
775     (emit avail (f-rd 0))
776)
777
778(dnmi m-cam36 "CAM Access in 36-bit Mode" (MACH10 USES-RT USES-RD NO-DIS)
779     "cam36 $rd,$rt,${cam-z}"
780     (emit cam36 rd rt cam-z (f-cam-y 0))
781)
782
783(dnmi m-cam72 "CAM Access in 72-bit Mode" (MACH10 USES-RT USES-RD NO-DIS)
784     "cam72 $rd,$rt,${cam-z}"
785     (emit cam72 rd rt cam-z (f-cam-y 0))
786)
787
788(dnmi m-cam144 "CAM Access in 144-bit Mode" (MACH10 USES-RT USES-RD NO-DIS)
789     "cam144 $rd,$rt,${cam-z}"
790     (emit cam144 rd rt cam-z (f-cam-y 0))
791)
792
793(dnmi m-cam288 "CAM Access in 288-bit Mode" (MACH10 USES-RT USES-RD NO-DIS)
794     "cam288 $rd,$rt,${cam-z}"
795     (emit cam288 rd rt cam-z (f-cam-y 0))
796)
797
798(dnmi m-cm32read "Counter Manager 32-bit Rolling Add R0" (MACH10 USES-RT USES-RD NO-DIS)
799     "cm32read $rd,$rt"
800     (emit cm32ra rd (f-rs 0) rt)
801)
802
803(dnmi m-cm64read "Counter Manager 64-bit Rolling Add R0" (MACH10 USES-RT USES-RD NO-DIS)
804     "cm64read $rd,$rt"
805     (emit cm64ra rd (f-rs 0) rt)
806)
807
808(dnmi m-cm32mlog "Counter Manager 32-bit or R0" (MACH10 USES-RS USES-RT NO-DIS)
809     "cm32mlog $rs,$rt"
810     (emit cm32or (f-rd 0) rs rt)
811)
812
813(dnmi m-cm32and "Counter Manager And" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
814     "cm32and $rs,$rt"
815     (emit cm32and (f-rd 0) rs rt)
816)
817
818(dnmi m-cm32andn "Counter Manager And With Inverse" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
819     "cm32andn $rs,$rt"
820     (emit cm32andn (f-rd 0) rs rt)
821)
822
823(dnmi m-cm32or "Counter Manager Or" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
824     "cm32or $rs,$rt"
825     (emit cm32or (f-rd 0) rs rt)
826)
827
828(dnmi m-cm32ra "Counter Manager 32-bit Rolling Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
829     "cm32ra $rs,$rt"
830     (emit cm32ra (f-rd 0) rs rt)
831)
832
833(dnmi m-cm32rd "Counter Manager 32-bit Rolling Decrement" (MACH10 USES-RT USES-RD NO-DIS)
834     "cm32rd $rt"
835     (emit cm32rd (f-rd 0) rt)
836)
837
838(dnmi m-cm32ri "Counter Manager 32-bit Rolling Increment" (MACH10 USES-RT USES-RD NO-DIS)
839     "cm32ri $rt"
840     (emit cm32ri (f-rd 0) rt)
841)
842
843(dnmi m-cm32rs "Counter Manager 32-bit Rolling Subtract" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
844     "cm32rs $rs,$rt"
845     (emit cm32rs (f-rd 0) rs rt)
846)
847
848(dnmi m-cm32sa "Counter Manager 32-bit Saturating Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
849     "cm32sa $rs,$rt"
850     (emit cm32sa (f-rd 0) rs rt)
851)
852
853(dnmi m-cm32sd "Counter Manager 32-bit Saturating Decrement" (MACH10 USES-RT USES-RD NO-DIS)
854     "cm32sd $rt"
855     (emit cm32sd (f-rd 0) rt)
856)
857
858(dnmi m-cm32si "Counter Manager 32-bit Saturating Increment" (MACH10 USES-RT USES-RD NO-DIS)
859     "cm32si $rt"
860     (emit cm32si (f-rd 0) rt)
861)
862
863(dnmi m-cm32ss "Counter Manager 32-bit Saturating Subtract" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
864     "cm32ss $rs,$rt"
865     (emit cm32ss (f-rd 0) rs rt)
866)
867
868(dnmi m-cm32xor "Counter Manager Xor" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
869     "cm32xor $rs,$rt"
870     (emit cm32xor (f-rd 0) rs rt)
871)
872
873(dnmi m-cm64clr "Counter Manager Clear" (MACH10 USES-RT USES-RD NO-DIS)
874     "cm64clr $rt"
875     (emit cm64clr (f-rd 0) rt)
876)
877
878(dnmi m-cm64ra "Counter Manager 64-bit Rolling Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
879     "cm64ra $rs,$rt"
880     (emit cm64ra (f-rd 0) rs rt)
881)
882
883(dnmi m-cm64rd "Counter Manager 64-bit Rolling Decrement" (MACH10 USES-RT USES-RD NO-DIS)
884     "cm64rd $rt"
885     (emit cm64rd (f-rd 0) rt)
886)
887
888(dnmi m-cm64ri "Counter Manager 32-bit Rolling Increment" (MACH10 USES-RT USES-RD NO-DIS)
889     "cm64ri $rt"
890     (emit cm64ri (f-rd 0) rt)
891)
892
893(dnmi m-cm64ria2 "Counter Manager 32/32 Rolling Increment/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
894     "cm64ria2 $rs,$rt"
895     (emit cm64ria2 (f-rd 0) rs rt)
896)
897
898(dnmi m-cm64rs "Counter Manager 64-bit Rolling Subtract" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
899     "cm64rs $rs,$rt"
900     (emit cm64rs (f-rd 0) rs rt)
901)
902
903(dnmi m-cm64sa "Counter Manager 64-bit Saturating Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
904     "cm64sa $rs,$rt"
905     (emit cm64sa (f-rd 0) rs rt)
906)
907
908(dnmi m-cm64sd "Counter Manager 64-bit Saturating Decrement" (MACH10 USES-RT USES-RD NO-DIS)
909     "cm64sd $rt"
910     (emit cm64sd (f-rd 0) rt)
911)
912
913(dnmi m-cm64si "Counter Manager 64-bit Saturating Increment" (MACH10 USES-RT USES-RD NO-DIS)
914     "cm64si $rt"
915     (emit cm64si (f-rd 0) rt)
916)
917
918(dnmi m-cm64sia2 "Counter Manager 32/32 Saturating Increment/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
919     "cm64sia2 $rs,$rt"
920     (emit cm64sia2 (f-rd 0) rs rt)
921)
922
923(dnmi m-cm64ss "Counter Manager 64-bit Saturating Subtract" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
924     "cm64ss $rs,$rt"
925     (emit cm64ss (f-rd 0) rs rt)
926)
927
928(dnmi m-cm128ria2 "Counter Manager 128-bit 64/64 Rolling Increment/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
929     "cm128ria2 $rs,$rt"
930     (emit cm128ria2 (f-rd 0) rs rt)
931)
932
933(dnmi m-cm128ria3 "Counter Manager 128-bit 32/32/64 Rolling Increment/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
934     "cm128ria3 $rs,$rt,${cm-3z}"
935     (emit cm128ria3 (f-rd 0) rs rt cm-3z)
936)
937
938(dnmi m-cm128ria4 "Counter Manager 128-bit 32/32/32/32 Rolling Inc/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
939     "cm128ria4 $rs,$rt,${cm-4z}"
940     (emit cm128ria4 (f-rd 0) rs rt cm-4z)
941)
942
943(dnmi m-cm128sia2 "Counter Manager 128-bit 64/64 Saturating Inc/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
944     "cm128sia2 $rs,$rt"
945     (emit cm128sia2 (f-rd 0) rs rt)
946)
947
948(dnmi m-cm128sia3 "Counter Manager 128-bit 32/32/64 Saturating Inc/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
949     "cm128sia3 $rs,$rt,${cm-3z}"
950     (emit cm128sia3 (f-rd 0) rs rt cm-3z)
951)
952
953(dnmi m-cm128sia4 "Counter Manager 128-bit 32/32/32/32 Saturating Inc/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
954     "cm128sia4 $rs,$rt,${cm-4z}"
955     (emit cm128sia4 (f-rd 0) rs rt cm-4z)
956)
957
958(dnmi m-cmphdr "Get a Complete Header" (MACH10 NO-DIS)
959     "cmphdr"
960     (emit cmphdr (f-rd 0))
961)
962
963(dnmi m-dbd "Deallocate a Data Buffer Pointer" (MACH10 USES-RD USES-RT NO-DIS)
964     "dbd $rd,$rt"
965     (emit dbd rd (f-rs 0) rt)
966)
967
968(dnmi m2-dbd "Deallocate a Data Buffer Pointer" (MACH10 USES-RT NO-DIS)
969     "dbd $rt"
970     (emit dbd (f-rd 0) (f-rs 0) rt)
971)
972
973(dnmi m-dpwt "DSTN_PORT Write" (MACH10 USES-RS NO-DIS)
974     "dpwt $rs"
975     (emit dpwt (f-rd 0) rs)
976)
977
978(dnmi m-free "" (MACH10 USES-RS USES-RD NO-DIS)
979     "free $rs"
980     (emit free (f-rd 0) rs)
981)
982
983;(dnmi m-jal "jump and link, implied r31" (MACH10 USES-RT NO-DIS)
984;     "jal $jmptarg"
985;     (emit jal (f-rt 31) jmptarg)
986;)
987
988(dnmi m-lock "lock memory" (MACH10 USES-RT NO-DIS)
989     "lock $rt"
990     (emit lock (f-rd 0) rt)
991)
992
993(dnmi m-pkrla "Packet Release Absolute" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
994     "pkrla $rs,$rt"
995     (emit pkrla (f-rd 0) rs rt)
996)
997
998(dnmi m-pkrlac "Packet Release Absolute Continue" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
999     "pkrlac $rs,$rt"
1000     (emit pkrlac (f-rd 0) rs rt)
1001)
1002
1003(dnmi m-pkrlah "Packet Release Absolute and Hold" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
1004     "pkrlah $rs,$rt"
1005     (emit pkrlah (f-rd 0) rs rt)
1006)
1007
1008(dnmi m-pkrlau "Packet Release Absolute Unconditional" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
1009     "pkrlau $rs,$rt"
1010     (emit pkrlau (f-rd 0) rs rt)
1011)
1012
1013(dnmi m-pkrli "Packet Release Immediate" (MACH10 USES-RD USES-RS USES-RT NO-DIS)
1014     "pkrli $rs,$rt,$bytecount"
1015     (emit pkrli (f-rd 0) rs rt bytecount)
1016)
1017
1018(dnmi m-pkrlic "Packet Release Immediate Continue" (MACH10 USES-RS USES-RT NO-DIS)
1019     "pkrlic $rs,$rt,$bytecount"
1020     (emit pkrlic (f-rd 0) rs rt bytecount)
1021)
1022
1023(dnmi m-pkrlih "Packet Release Immediate and Hold" (MACH10 USES-RD USES-RS USES-RT NO-DIS)
1024     "pkrlih $rs,$rt,$bytecount"
1025     (emit pkrlih (f-rd 0) rs rt bytecount)
1026)
1027
1028(dnmi m-pkrliu "Packet Release Immediate Unconditional" (MACH10 USES-RD USES-RS USES-RT NO-DIS)
1029     "pkrliu $rs,$rt,$bytecount"
1030     (emit pkrliu (f-rd 0) rs rt bytecount)
1031)
1032
1033(dnmi m-rba "Read Bytes Absolute" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
1034     "rba $rs,$rt"
1035     (emit rba (f-rd 0) rs rt)
1036)
1037
1038(dnmi m-rbal "Read Bytes Absolute and Lock" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
1039     "rbal $rs,$rt"
1040     (emit rbal (f-rd 0) rs rt)
1041)
1042
1043(dnmi m-rbar "Read Bytes Absolute and Release" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
1044     "rbar $rs,$rt"
1045     (emit rbar (f-rd 0) rs rt)
1046)
1047
1048(dnmi m-rbi "Read Bytes Immediate" (MACH10 USES-RS USES-RT NO-DIS)
1049     "rbi $rs,$rt,$bytecount"
1050     (emit rbi (f-rd 0) rs rt bytecount)
1051)
1052
1053(dnmi m-rbil "Read Bytes Immediate and Lock" (MACH10 USES-RS USES-RT NO-DIS)
1054     "rbil $rs,$rt,$bytecount"
1055     (emit rbil (f-rd 0) rs rt bytecount)
1056)
1057
1058(dnmi m-rbir "Read Bytes Immediate and Release" (MACH10 USES-RS USES-RT NO-DIS)
1059     "rbir $rs,$rt,$bytecount"
1060     (emit rbir (f-rd 0) rs rt bytecount)
1061)
1062
1063(dnmi m-swwr "Single Word Write" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
1064     "swwr $rs,$rt"
1065     (emit swwr (f-rd 0) rs rt)
1066)
1067
1068(dnmi m-swwru "Single Word Write and Unlock" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
1069     "swwru $rs,$rt"
1070     (emit swwru (f-rd 0) rs rt)
1071)
1072
1073(dnmi m-tstod "Test Header Buffer Order Dependency" (MACH10 USES-RS USES-RD NO-DIS)
1074     "tstod $rs"
1075     (emit tstod (f-rd 0) rs)
1076)
1077
1078(dnmi m-unlk "" (MACH10 USES-RT USES-RD NO-DIS)
1079     "unlk $rt"
1080     (emit unlk (f-rd 0) rt)
1081)
1082
1083(dnmi m-wba "Write Bytes Absolute" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
1084     "wba $rs,$rt"
1085     (emit wba (f-rd 0) rs rt)
1086)
1087
1088(dnmi m-wbac "Write Bytes Absolute Cacheable" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
1089     "wbac $rs,$rt"
1090     (emit wbac (f-rd 0) rs rt)
1091)
1092
1093(dnmi m-wbau "Write Bytes Absolute and Unlock" (MACH10 USES-RS USES-RT USES-RD NO-DIS)
1094     "wbau $rs,$rt"
1095     (emit wbau (f-rd 0) rs rt)
1096)
1097
1098(dnmi m-wbi "Write Bytes Immediate" (MACH10 USES-RD USES-RS USES-RT NO-DIS)
1099     "wbi $rs,$rt,$bytecount"
1100     (emit wbi (f-rd 0) rs rt bytecount)
1101)
1102
1103(dnmi m-wbic "Write Bytes Immediate Cacheable" (MACH10 USES-RD USES-RS USES-RT NO-DIS)
1104     "wbic $rs,$rt,$bytecount"
1105     (emit wbic (f-rd 0) rs rt bytecount)
1106)
1107
1108(dnmi m-wbiu "Write Bytes Immediate" (MACH10 USES-RD USES-RS USES-RT NO-DIS)
1109     "wbiu $rs,$rt,$bytecount"
1110     (emit wbiu (f-rd 0) rs rt bytecount)
1111)
1112
1113