| 1 | ; IQ10-only CPU description. -*- Scheme -*- |
| 2 | ; |
| 3 | ; Copyright 2001, 2002, 2007 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 | \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 |