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