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