opcodes/
[binutils.git] / cpu / iq10.cpu
blob252cf5341f7839fe8f81096479f4626a1d6a0c67
1 ; IQ10-only CPU description. -*- Scheme -*-
3 ; Copyright 2001, 2002, 2007, 2009 Free Software Foundation, Inc.
5 ; Contributed by Red Hat Inc; developed under contract from Vitesse.
7 ; This file is part of the GNU Binutils.
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.
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.
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.
25 ; Instructions.
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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.
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      ())
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      ())
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      ())
120 ; Branch instructions.
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
276 ; debug instructions
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      ())
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      ())
290 ; Special instructions.
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      ())
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      ())
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      ())
311 ; Special Instructions
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
361 ; Architectural and coprocessor instructions.
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      ())
369 ; Coprocessor DMA Instructions (IQ10)
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
491 ; Main Memory Access Instructions
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
541 ; CAM access instructions (IQ10)
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      ())
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      ())
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      ())
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      ())
567 ; Counter manager instructions (IQ10)
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
749 ; Coprocessor Data Movement Instructions
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.
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.
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      ())
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      ())
771 ; Macros
773 (dnmi m-avail "Mark Header Buffer Available" (MACH10 NO-DIS)
774      "avail"
775      (emit avail (f-rd 0))
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))
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))
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))
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))
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
873 (dnmi m-cm64clr "Counter Manager Clear" (MACH10 USES-RT USES-RD NO-DIS)
874      "cm64clr $rt"
875      (emit cm64clr (f-rd 0) rt)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
958 (dnmi m-cmphdr "Get a Complete Header" (MACH10 NO-DIS)
959      "cmphdr"
960      (emit cmphdr (f-rd 0))
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)
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)
973 (dnmi m-dpwt "DSTN_PORT Write" (MACH10 USES-RS NO-DIS)
974      "dpwt $rs"
975      (emit dpwt (f-rd 0) rs)
978 (dnmi m-free "" (MACH10 USES-RS USES-RD NO-DIS)
979      "free $rs"
980      (emit free (f-rd 0) rs)
983 ;(dnmi m-jal "jump and link, implied r31" (MACH10 USES-RT NO-DIS)
984 ;     "jal $jmptarg"
985 ;     (emit jal (f-rt 31) jmptarg)
988 (dnmi m-lock "lock memory" (MACH10 USES-RT NO-DIS)
989      "lock $rt"
990      (emit lock (f-rd 0) rt)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
1078 (dnmi m-unlk "" (MACH10 USES-RT USES-RD NO-DIS)
1079      "unlk $rt"
1080      (emit unlk (f-rd 0) rt)
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)
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)
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)
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)
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)
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)