~ubuntu-branches/debian/sid/gdb/sid

« back to all changes in this revision

Viewing changes to cpu/iq10.cpu

  • Committer: Package Import Robot
  • Author(s): Hector Oron
  • Date: 2012-01-28 00:41:20 UTC
  • mfrom: (1.4.9) (5.1.6 experimental)
  • Revision ID: package-import@ubuntu.com-20120128004120-bar1h77ark622noi
Tags: 7.4really-1
* New upstream release:
  - Many Python scripting improvements
  - Better support for ambiguous linespecs
  - Masked watchpoints
  - Tracepoint support improvements
  - Support for Texas Instruments TMS320C6x (tic6x-*-*)
  - A Renesas RL78 simulator (rl78-*-elf)
  - Some minor Remote protocol extensions and GDB/MI changes
* Temporarily disable gdb-multiarch and gdb-dbg.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; IQ10-only CPU description. -*- Scheme -*-
 
2
;
 
3
; Copyright 2001, 2002, 2007, 2009 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 3 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
 
21
; Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
 
22
; MA 02110-1301, USA.
 
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
 
 
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
 
 
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