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