bfd/
[binutils.git] / cpu / iq10.cpu
blobb7b3109dbdb87b624959c7f7aabefe4640e9adaf
1 ; IQ10-only CPU description. -*- Scheme -*-
3 ; Copyright 2001, 2002 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 2 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, MA 02110-1301, USA.
24 ; Instructions.
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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.
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      ())
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      ())
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      ())
119 ; Branch instructions.
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
275 ; debug instructions
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      ())
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      ())
289 ; Special instructions.
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      ())
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      ())
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      ())
310 ; Special Instructions
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
360 ; Architectural and coprocessor instructions.
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      ())
368 ; Coprocessor DMA Instructions (IQ10)
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
490 ; Main Memory Access Instructions
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
540 ; CAM access instructions (IQ10)
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      ())
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      ())
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      ())
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      ())
566 ; Counter manager instructions (IQ10)
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
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      ())
748 ; Coprocessor Data Movement Instructions
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.
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.
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      ())
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      ())
770 ; Macros
772 (dnmi m-avail "Mark Header Buffer Available" (MACH10 NO-DIS)
773      "avail"
774      (emit avail (f-rd 0))
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))
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))
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))
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))
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
872 (dnmi m-cm64clr "Counter Manager Clear" (MACH10 USES-RT USES-RD NO-DIS)
873      "cm64clr $rt"
874      (emit cm64clr (f-rd 0) rt)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
957 (dnmi m-cmphdr "Get a Complete Header" (MACH10 NO-DIS)
958      "cmphdr"
959      (emit cmphdr (f-rd 0))
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)
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)
972 (dnmi m-dpwt "DSTN_PORT Write" (MACH10 USES-RS NO-DIS)
973      "dpwt $rs"
974      (emit dpwt (f-rd 0) rs)
977 (dnmi m-free "" (MACH10 USES-RS USES-RD NO-DIS)
978      "free $rs"
979      (emit free (f-rd 0) rs)
982 ;(dnmi m-jal "jump and link, implied r31" (MACH10 USES-RT NO-DIS)
983 ;     "jal $jmptarg"
984 ;     (emit jal (f-rt 31) jmptarg)
987 (dnmi m-lock "lock memory" (MACH10 USES-RT NO-DIS)
988      "lock $rt"
989      (emit lock (f-rd 0) rt)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
1077 (dnmi m-unlk "" (MACH10 USES-RT USES-RD NO-DIS)
1078      "unlk $rt"
1079      (emit unlk (f-rd 0) rt)
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)
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)
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)
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)
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)
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)