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