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 21; Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 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 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 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 1112