|
|
; IQ10-only CPU description. -*- Scheme -*- |
|
|
; |
|
|
; Copyright 2001, 2002, 2007, 2009 Free Software Foundation, Inc. |
|
|
; |
|
|
; Contributed by Red Hat Inc; developed under contract from Vitesse. |
|
|
; |
|
|
; This file is part of the GNU Binutils. |
|
|
; |
|
|
; This program is free software; you can redistribute it and/or modify |
|
|
; it under the terms of the GNU General Public License as published by |
|
|
; the Free Software Foundation; either version 3 of the License, or |
|
|
; (at your option) any later version. |
|
|
; |
|
|
; This program is distributed in the hope that it will be useful, |
|
|
; but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
|
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
|
; GNU General Public License for more details. |
|
|
; |
|
|
; You should have received a copy of the GNU General Public License |
|
|
; along with this program; if not, write to the Free Software |
|
|
; Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, |
|
|
; MA 02110-1301, USA. |
|
|
|
|
|
|
|
|
; Instructions. |
|
|
|
|
|
(dni andoui-q10 "iq10 and upper ones immediate" (MACH10 USES-RS USES-RT) |
|
|
"andoui $rt,$rs,$hi16" |
|
|
(+ OP10_ANDOUI rs rt hi16) |
|
|
(set rt (and rs (or (sll hi16 16) #xFFFF))) |
|
|
()) |
|
|
|
|
|
(dni andoui2-q10 "iq10 and upper ones immediate" (ALIAS NO-DIS MACH10 USES-RS USES-RT) |
|
|
"andoui ${rt-rs},$hi16" |
|
|
(+ OP10_ANDOUI rt-rs hi16) |
|
|
(set rt-rs (and rt-rs (or (sll hi16 16) #xFFFF))) |
|
|
()) |
|
|
|
|
|
(dni orui-q10 "or upper immediate" (MACH10 USES-RS USES-RT) |
|
|
"orui $rt,$rs,$hi16" |
|
|
(+ OP10_ORUI rs rt hi16) |
|
|
(set rt (or rs (sll hi16 16))) |
|
|
()) |
|
|
|
|
|
(dni orui2-q10 "or upper immediate" (ALIAS NO-DIS MACH10 USES-RS USES-RT) |
|
|
"orui ${rt-rs},$hi16" |
|
|
(+ OP10_ORUI rt-rs hi16) |
|
|
(set rt-rs (or rt-rs (sll hi16 16))) |
|
|
()) |
|
|
|
|
|
(dni mrgbq10 "merge bytes" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"mrgb $rd,$rs,$rt,$maskq10" |
|
|
(+ OP_SPECIAL rs rt rd maskq10 FUNC_MRGB) |
|
|
(sequence ((SI temp)) |
|
|
(if (bitclear? mask 0) |
|
|
(set temp (and rs #xFF)) |
|
|
(set temp (and rt #xFF))) |
|
|
(if (bitclear? mask 1) |
|
|
(set temp (or temp (and rs #xFF00))) |
|
|
(set temp (or temp (and rt #xFF00)))) |
|
|
(if (bitclear? mask 2) |
|
|
(set temp (or temp (and rs #xFF0000))) |
|
|
(set temp (or temp (and rt #xFF0000)))) |
|
|
(if (bitclear? mask 3) |
|
|
(set temp (or temp (and rs #xFF000000))) |
|
|
(set temp (or temp (and rt #xFF000000)))) |
|
|
(set rd temp)) |
|
|
()) |
|
|
|
|
|
(dni mrgbq102 "merge bytes" (ALIAS NO-DIS MACH10 USES-RD USES-RS USES-RT) |
|
|
"mrgb ${rd-rs},$rt,$maskq10" |
|
|
(+ OP_SPECIAL rt rd-rs maskq10 FUNC_MRGB) |
|
|
(sequence ((SI temp)) |
|
|
(if (bitclear? mask 0) |
|
|
(set temp (and rd-rs #xFF)) |
|
|
(set temp (and rt #xFF))) |
|
|
(if (bitclear? mask 1) |
|
|
(set temp (or temp (and rd-rs #xFF00))) |
|
|
(set temp (or temp (and rt #xFF00)))) |
|
|
(if (bitclear? mask 2) |
|
|
(set temp (or temp (and rd-rs #xFF0000))) |
|
|
(set temp (or temp (and rt #xFF0000)))) |
|
|
(if (bitclear? mask 3) |
|
|
(set temp (or temp (and rd-rs #xFF000000))) |
|
|
(set temp (or temp (and rt #xFF000000)))) |
|
|
(set rd-rs temp)) |
|
|
()) |
|
|
|
|
|
; In the future, we'll want the j & jal to use the 21 bit target, with |
|
|
; the upper five bits shifted up. For now, give 'em the 16 bit target. |
|
|
|
|
|
(dni jq10 "jump" (MACH10) |
|
|
"j $jmptarg" |
|
|
(+ OP_J (f-rs 0) (f-rt 0) jmptarg) |
|
|
; "j $jmptargq10" |
|
|
; (+ OP_J upper-5-jmptargq10 (f-rt 0) lower-16-jmptargq10) |
|
|
(delay 1 (set pc jmptarg)) |
|
|
()) |
|
|
|
|
|
(dni jalq10 "jump and link" (MACH10 USES-RT) |
|
|
"jal $rt,$jmptarg" |
|
|
(+ OP_JAL (f-rs 0) rt jmptarg) |
|
|
; "jal $rt,$jmptargq10" |
|
|
; (+ OP_JAL upper-5-jmptargq10 rt lower-16-jmptargq10) |
|
|
(delay 1 |
|
|
(sequence () |
|
|
(set rt (add pc 8)) |
|
|
(set pc jmptarg))) |
|
|
()) |
|
|
|
|
|
(dni jalq10-2 "jump and link, implied r31" (MACH10 USES-RT) |
|
|
"jal $jmptarg" |
|
|
(+ OP_JAL (f-rs 0) (f-rt 31) jmptarg) |
|
|
(delay 1 |
|
|
(sequence () |
|
|
(set rt (add pc 8)) |
|
|
(set pc jmptarg))) |
|
|
()) |
|
|
|
|
|
; Branch instructions. |
|
|
|
|
|
(dni bbil "branch bit immediate likely" (MACH10 USES-RS) |
|
|
"bbil $rs($bitnum),$offset" |
|
|
(+ OP10_BBIL rs bitnum offset) |
|
|
(if (bitset? rs bitnum) |
|
|
(delay 1 (set pc offset)) |
|
|
(skip 1)) |
|
|
()) |
|
|
|
|
|
(dni bbinl "branch bit immediate negated likely" (MACH10 USES-RS) |
|
|
"bbinl $rs($bitnum),$offset" |
|
|
(+ OP10_BBINL rs bitnum offset) |
|
|
(if (bitclear? rs bitnum) |
|
|
(delay 1 (set pc offset)) |
|
|
(skip 1)) |
|
|
()) |
|
|
|
|
|
(dni bbvl "branch bit variable likely" (MACH10 USES-RS USES-RT) |
|
|
"bbvl $rs,$rt,$offset" |
|
|
(+ OP10_BBVL rs rt offset) |
|
|
(if (bitset? rs (and rt #x1F)) |
|
|
(delay 1 (set pc offset)) |
|
|
(skip 1)) |
|
|
()) |
|
|
|
|
|
(dni bbvnl "branch bit variable negated likely" (MACH10 USES-RS USES-RT) |
|
|
"bbvnl $rs,$rt,$offset" |
|
|
(+ OP10_BBVNL rs rt offset) |
|
|
(if (bitclear? rs (and rt #x1F)) |
|
|
(delay 1 (set pc offset)) |
|
|
(skip 1)) |
|
|
()) |
|
|
|
|
|
(dni bgtzal "branch if greater than zero and link" (MACH10 USES-RS USES-R31) |
|
|
"bgtzal $rs,$offset" |
|
|
(+ OP_REGIMM rs FUNC_BGTZAL offset) |
|
|
(if (gt rs 0) |
|
|
(sequence () |
|
|
(set (reg h-gr 31) (add pc 8)) |
|
|
(delay 1 (set pc offset)))) |
|
|
()) |
|
|
|
|
|
(dni bgtzall |
|
|
"branch if greater than zero and link likely" (MACH10 USES-RS USES-R31) |
|
|
"bgtzall $rs,$offset" |
|
|
(+ OP_REGIMM rs FUNC_BGTZALL offset) |
|
|
(if (gt rs 0) |
|
|
(sequence () |
|
|
(set (reg h-gr 31) (add pc 8)) |
|
|
(delay 1 (set pc offset))) |
|
|
(skip 1)) |
|
|
()) |
|
|
|
|
|
(dni blezal "branch if less than or equal to zero and link" (MACH10 USES-RS USES-R31) |
|
|
"blezal $rs,$offset" |
|
|
(+ OP_REGIMM rs FUNC_BLEZAL offset) |
|
|
(if (le rs 0) |
|
|
(sequence () |
|
|
(set (reg h-gr 31) (add pc 8)) |
|
|
(delay 1 (set pc offset)))) |
|
|
()) |
|
|
|
|
|
(dni blezall |
|
|
"branch if less than or equal to zero and link likely" (MACH10 USES-RS USES-R31) |
|
|
"blezall $rs,$offset" |
|
|
(+ OP_REGIMM rs FUNC_BLEZALL offset) |
|
|
(if (le rs 0) |
|
|
(sequence () |
|
|
(set (reg h-gr 31) (add pc 8)) |
|
|
(delay 1 (set pc offset))) |
|
|
(skip 1)) |
|
|
()) |
|
|
|
|
|
(dni bgtz-q10 "branch if greater than zero" (MACH10 USES-RS) |
|
|
"bgtz $rs,$offset" |
|
|
(+ OP_REGIMM rs FUNC_BGTZ offset) |
|
|
(if (gt rs 0) |
|
|
(delay 1 (set pc offset))) |
|
|
()) |
|
|
|
|
|
(dni bgtzl-q10 "branch if greater than zero likely" (MACH10 USES-RS) |
|
|
"bgtzl $rs,$offset" |
|
|
(+ OP_REGIMM rs FUNC_BGTZL offset) |
|
|
(if (gt rs 0) |
|
|
(delay 1 (set pc offset)) |
|
|
(skip 1)) |
|
|
()) |
|
|
|
|
|
|
|
|
(dni blez-q10 "branch if less than or equal to zero" (MACH10 USES-RS) |
|
|
"blez $rs,$offset" |
|
|
(+ OP_REGIMM rs FUNC_BLEZ offset) |
|
|
(if (le rs 0) |
|
|
(delay 1 (set pc offset))) |
|
|
()) |
|
|
|
|
|
(dni blezl-q10 "branch if less than or equal to zero likely" (MACH10 USES-RS) |
|
|
"blezl $rs,$offset" |
|
|
(+ OP_REGIMM rs FUNC_BLEZL offset) |
|
|
(if (le rs 0) |
|
|
(delay 1 (set pc offset)) |
|
|
(skip 1)) |
|
|
()) |
|
|
|
|
|
(dni bmb-q10 "branch if matching byte-lane" (MACH10 USES-RS USES-RT) |
|
|
"bmb $rs,$rt,$offset" |
|
|
(+ OP10_BMB rs rt offset) |
|
|
(sequence ((BI branch?)) |
|
|
(set branch? 0) |
|
|
(if (eq (and rs #xFF) (and rt #xFF)) |
|
|
(set branch? 1)) |
|
|
(if (eq (and rs #xFF00) (and rt #xFF00)) |
|
|
(set branch? 1)) |
|
|
(if (eq (and rs #xFF0000) (and rt #xFF0000)) |
|
|
(set branch? 1)) |
|
|
(if (eq (and rs #xFF000000) (and rt #xFF000000)) |
|
|
(set branch? 1)) |
|
|
(if branch? |
|
|
(delay 1 (set pc offset)))) |
|
|
()) |
|
|
|
|
|
(dni bmbl "branch if matching byte-lane likely" (MACH10 USES-RS USES-RT) |
|
|
"bmbl $rs,$rt,$offset" |
|
|
(+ OP10_BMBL rs rt offset) |
|
|
(sequence ((BI branch?)) |
|
|
(set branch? 0) |
|
|
(if (eq (and rs #xFF) (and rt #xFF)) |
|
|
(set branch? 1)) |
|
|
(if (eq (and rs #xFF00) (and rt #xFF00)) |
|
|
(set branch? 1)) |
|
|
(if (eq (and rs #xFF0000) (and rt #xFF0000)) |
|
|
(set branch? 1)) |
|
|
(if (eq (and rs #xFF000000) (and rt #xFF000000)) |
|
|
(set branch? 1)) |
|
|
(if branch? |
|
|
(delay 1 (set pc offset)) |
|
|
(skip 1))) |
|
|
()) |
|
|
|
|
|
(dni bri "branch if register invalid" (MACH10 USES-RS) |
|
|
"bri $rs,$offset" |
|
|
(+ OP_REGIMM rs FUNC_BRI offset) |
|
|
(if (gt rs 0) |
|
|
(delay 1 (set pc offset)) |
|
|
(skip 1)) |
|
|
()) |
|
|
|
|
|
(dni brv "branch if register invalid" (MACH10 USES-RS) |
|
|
"brv $rs,$offset" |
|
|
(+ OP_REGIMM rs FUNC_BRV offset) |
|
|
(if (gt rs 0) |
|
|
(delay 1 (set pc offset)) |
|
|
(skip 1)) |
|
|
()) |
|
|
|
|
|
; debug instructions |
|
|
|
|
|
(dni bctx "branch if the current context == instruction[21]" (MACH10 USES-RS) |
|
|
"bctx $rs,$offset" |
|
|
(+ OP_REGIMM rs FUNC_BCTX offset) |
|
|
(delay 1 (set pc offset)) |
|
|
()) |
|
|
|
|
|
(dni yield "unconditional yield to the other context" (MACH10) |
|
|
"yield" |
|
|
(+ OP_SPECIAL (f-rs 0) (f-rt 0) (f-rd 0) (f-shamt 0) FUNC10_YIELD) |
|
|
(unimp yield) |
|
|
()) |
|
|
|
|
|
; Special instructions. |
|
|
|
|
|
(dni crc32 "CRC, 32 bit input" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"crc32 $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_CRC32) |
|
|
(unimp crc32) |
|
|
()) |
|
|
|
|
|
(dni crc32b "CRC, 8 bit input" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"crc32b $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_CRC32B) |
|
|
(unimp crc32b) |
|
|
()) |
|
|
|
|
|
(dni cnt1s "Count ones" (MACH10 USES-RD USES-RS) |
|
|
"cnt1s $rd,$rs" |
|
|
(+ OP_SPECIAL rs rt rd (f-shamt 0) FUNC10_CNT1S) |
|
|
(unimp crcp) |
|
|
()) |
|
|
|
|
|
|
|
|
; Special Instructions |
|
|
|
|
|
(dni avail "Mark Header Buffer Available" (MACH10 USES-RD) |
|
|
"avail $rd" |
|
|
(+ OP_COP3 (f-rs 0) (f-rt 0) rd (f-shamt 0) FUNC10_AVAIL) |
|
|
(unimp avail) |
|
|
()) |
|
|
|
|
|
(dni free "Mark Header Buffer Free" (MACH10 USES-RS USES-RD) |
|
|
"free $rd,$rs" |
|
|
(+ OP_COP3 rs (f-rt 0) rd (f-shamt 0) FUNC10_FREE) |
|
|
(unimp free) |
|
|
()) |
|
|
|
|
|
(dni tstod "Test Header Buffer Order Dependency" (MACH10 USES-RS USES-RD) |
|
|
"tstod $rd,$rs" |
|
|
(+ OP_COP3 rs (f-rt 0) rd (f-shamt 0) FUNC10_TSTOD) |
|
|
(unimp tstod) |
|
|
()) |
|
|
|
|
|
(dni cmphdr "Get a Complete Header" (MACH10 USES-RD) |
|
|
"cmphdr $rd" |
|
|
(+ OP_COP3 (f-rs 0) (f-rt 0) rd (f-shamt 0) FUNC10_CMPHDR) |
|
|
(unimp cmphdr) |
|
|
()) |
|
|
|
|
|
(dni mcid "Allocate a Multicast ID" (MACH10 USES-RD USES-RT) |
|
|
"mcid $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_MCID) |
|
|
(unimp mcid) |
|
|
()) |
|
|
|
|
|
(dni dba "Allocate a Data Buffer Pointer" (MACH10 USES-RD) |
|
|
"dba $rd" |
|
|
(+ OP_COP3 (f-rs 0) (f-rt 0) rd (f-shamt 0) FUNC10_DBA) |
|
|
(unimp dba) |
|
|
()) |
|
|
|
|
|
(dni dbd "Deallocate a Data Buffer Pointer" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"dbd $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_DBD) |
|
|
(unimp dbd) |
|
|
()) |
|
|
|
|
|
(dni dpwt "DSTN_PORT Write" (MACH10 USES-RS USES-RD) |
|
|
"dpwt $rd,$rs" |
|
|
(+ OP_COP3 rs (f-rt 0) rd (f-shamt 0) FUNC10_DPWT) |
|
|
(unimp dpwt) |
|
|
()) |
|
|
|
|
|
; Architectural and coprocessor instructions. |
|
|
|
|
|
(dni chkhdrq10 "" (MACH10 USES-RS USES-RD) |
|
|
"chkhdr $rd,$rs" |
|
|
(+ OP_COP3 rs (f-rt 0) rd (f-shamt 0) FUNC10_CHKHDR) |
|
|
(unimp chkhdr) |
|
|
()) |
|
|
|
|
|
; Coprocessor DMA Instructions (IQ10) |
|
|
|
|
|
(dni rba "Read Bytes Absolute" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"rba $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_RBA) |
|
|
(unimp rba) |
|
|
()) |
|
|
|
|
|
(dni rbal "Read Bytes Absolute and Lock" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"rbal $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_RBAL) |
|
|
(unimp rbal) |
|
|
()) |
|
|
|
|
|
(dni rbar "Read Bytes Absolute and Release" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"rbar $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_RBAR) |
|
|
(unimp rbar) |
|
|
()) |
|
|
|
|
|
(dni wba "Write Bytes Absolute" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"wba $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_WBA) |
|
|
(unimp wba) |
|
|
()) |
|
|
|
|
|
(dni wbau "Write Bytes Absolute and Unlock" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"wbau $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_WBAU) |
|
|
(unimp wbau) |
|
|
()) |
|
|
|
|
|
(dni wbac "Write Bytes Absolute Cacheable" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"wbac $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_WBAC) |
|
|
(unimp wbac) |
|
|
()) |
|
|
|
|
|
(dni rbi "Read Bytes Immediate" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"rbi $rd,$rs,$rt,$bytecount" |
|
|
(+ OP_COP3 rs rt rd FUNC10_RBI bytecount) |
|
|
(unimp rbi) |
|
|
()) |
|
|
|
|
|
(dni rbil "Read Bytes Immediate and Lock" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"rbil $rd,$rs,$rt,$bytecount" |
|
|
(+ OP_COP3 rs rt rd FUNC10_RBIL bytecount) |
|
|
(unimp rbil) |
|
|
()) |
|
|
|
|
|
(dni rbir "Read Bytes Immediate and Release" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"rbir $rd,$rs,$rt,$bytecount" |
|
|
(+ OP_COP3 rs rt rd FUNC10_RBIR bytecount) |
|
|
(unimp rbir) |
|
|
()) |
|
|
|
|
|
(dni wbi "Write Bytes Immediate" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"wbi $rd,$rs,$rt,$bytecount" |
|
|
(+ OP_COP3 rs rt rd FUNC10_WBI bytecount) |
|
|
(unimp wbi) |
|
|
()) |
|
|
|
|
|
(dni wbic "Write Bytes Immediate Cacheable" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"wbic $rd,$rs,$rt,$bytecount" |
|
|
(+ OP_COP3 rs rt rd FUNC10_WBIC bytecount) |
|
|
(unimp wbic) |
|
|
()) |
|
|
|
|
|
(dni wbiu "Write Bytes Immediate" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"wbiu $rd,$rs,$rt,$bytecount" |
|
|
(+ OP_COP3 rs rt rd FUNC10_WBIU bytecount) |
|
|
(unimp wbiu) |
|
|
()) |
|
|
|
|
|
(dni pkrli "Packet Release Immediate" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"pkrli $rd,$rs,$rt,$bytecount" |
|
|
(+ OP_COP2 rs rt rd FUNC10_PKRLI bytecount) |
|
|
(unimp pkrli) |
|
|
()) |
|
|
|
|
|
(dni pkrlih "Packet Release Immediate and Hold" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"pkrlih $rd,$rs,$rt,$bytecount" |
|
|
(+ OP_COP2 rs rt rd FUNC10_PKRLIH bytecount) |
|
|
(unimp pkrlih) |
|
|
()) |
|
|
|
|
|
(dni pkrliu "Packet Release Immediate Unconditional" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"pkrliu $rd,$rs,$rt,$bytecount" |
|
|
(+ OP_COP2 rs rt rd FUNC10_PKRLIU bytecount) |
|
|
(unimp pkrliu) |
|
|
()) |
|
|
|
|
|
(dni pkrlic "Packet Release Immediate Continue" (MACH10 USES-RD USES-RS USES-RT) |
|
|
"pkrlic $rd,$rs,$rt,$bytecount" |
|
|
(+ OP_COP2 rs rt rd FUNC10_PKRLIC bytecount) |
|
|
(unimp pkrlic) |
|
|
()) |
|
|
|
|
|
(dni pkrla "Packet Release Absolute" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"pkrla $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_PKRLA) |
|
|
(unimp pkrla) |
|
|
()) |
|
|
|
|
|
(dni pkrlau "Packet Release Absolute Unconditional" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"pkrlau $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_PKRLAU) |
|
|
(unimp pkrlau) |
|
|
()) |
|
|
|
|
|
(dni pkrlah "Packet Release Absolute and Hold" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"pkrlah $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_PKRLAH) |
|
|
(unimp pkrlah) |
|
|
()) |
|
|
|
|
|
(dni pkrlac "Packet Release Absolute Continue" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"pkrlac $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_PKRLAC) |
|
|
(unimp pkrlac) |
|
|
()) |
|
|
|
|
|
; Main Memory Access Instructions |
|
|
|
|
|
(dni lock "lock memory" (MACH10 USES-RD USES-RT) |
|
|
"lock $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_LOCK) |
|
|
(unimp lock) |
|
|
()) |
|
|
|
|
|
(dni unlk "unlock memory" (MACH10 USES-RT USES-RD) |
|
|
"unlk $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_UNLK) |
|
|
(unimp unlk) |
|
|
()) |
|
|
|
|
|
(dni swrd "Single Word Read" (MACH10 USES-RT USES-RD) |
|
|
"swrd $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_SWRD) |
|
|
(unimp swrd) |
|
|
()) |
|
|
|
|
|
(dni swrdl "Single Word Read and Lock" (MACH10 USES-RT USES-RD) |
|
|
"swrdl $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_SWRDL) |
|
|
(unimp swrdl) |
|
|
()) |
|
|
|
|
|
(dni swwr "Single Word Write" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"swwr $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_SWWR) |
|
|
(unimp swwr) |
|
|
()) |
|
|
|
|
|
(dni swwru "Single Word Write and Unlock" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"swwru $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 0) FUNC10_SWWRU) |
|
|
(unimp swwru) |
|
|
()) |
|
|
|
|
|
(dni dwrd "Double Word Read" (MACH10 EVEN-REG-NUM USES-RT USES-RD) |
|
|
"dwrd $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_DWRD) |
|
|
(unimp dwrd) |
|
|
()) |
|
|
|
|
|
(dni dwrdl "Double Word Read and Lock" (MACH10 EVEN-REG-NUM USES-RT USES-RD) |
|
|
"dwrdl $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_DWRDL) |
|
|
(unimp dwrdl) |
|
|
()) |
|
|
|
|
|
; CAM access instructions (IQ10) |
|
|
|
|
|
(dni cam36 "CAM Access in 36-bit Mode" (MACH10 USES-RT USES-RD) |
|
|
"cam36 $rd,$rt,${cam-z},${cam-y}" |
|
|
(+ OP_COP3 (f-rs 0) rt rd FUNC10_CAM36 cam-z cam-y) |
|
|
(unimp cam36) |
|
|
()) |
|
|
|
|
|
(dni cam72 "CAM Access in 72-bit Mode" (MACH10 USES-RT USES-RD) |
|
|
"cam72 $rd,$rt,${cam-y},${cam-z}" |
|
|
(+ OP_COP3 (f-rs 0) rt rd FUNC10_CAM72 cam-z cam-y) |
|
|
(unimp cam72) |
|
|
()) |
|
|
|
|
|
(dni cam144 "CAM Access in 144-bit Mode" (MACH10 USES-RT USES-RD) |
|
|
"cam144 $rd,$rt,${cam-y},${cam-z}" |
|
|
(+ OP_COP3 (f-rs 0) rt rd FUNC10_CAM144 cam-z cam-y) |
|
|
(unimp cam144) |
|
|
()) |
|
|
|
|
|
(dni cam288 "CAM Access in 288-bit Mode" (MACH10 USES-RT USES-RD) |
|
|
"cam288 $rd,$rt,${cam-y},${cam-z}" |
|
|
(+ OP_COP3 (f-rs 0) rt rd FUNC10_CAM288 cam-z cam-y) |
|
|
(unimp cam288) |
|
|
()) |
|
|
|
|
|
; Counter manager instructions (IQ10) |
|
|
|
|
|
(dni cm32and "Counter Manager And" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"cm32and $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32AND) |
|
|
(unimp cm32and) |
|
|
()) |
|
|
|
|
|
(dni cm32andn "Counter Manager And With Inverse" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"cm32andn $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32ANDN) |
|
|
(unimp cm32andn) |
|
|
()) |
|
|
|
|
|
(dni cm32or "Counter Manager Or" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"cm32or $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32OR) |
|
|
(unimp cm32or) |
|
|
()) |
|
|
|
|
|
(dni cm32ra "Counter Manager 32-bit Rolling Add" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"cm32ra $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 2) FUNC10_CM32RA) |
|
|
(unimp cm32ra) |
|
|
()) |
|
|
|
|
|
(dni cm32rd "Counter Manager 32-bit Rolling Decrement" (MACH10 USES-RT USES-RD) |
|
|
"cm32rd $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32RD) |
|
|
(unimp cm32rd) |
|
|
()) |
|
|
|
|
|
(dni cm32ri "Counter Manager 32-bit Rolling Increment" (MACH10 USES-RT USES-RD) |
|
|
"cm32ri $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32RI) |
|
|
(unimp cm32ri) |
|
|
()) |
|
|
|
|
|
(dni cm32rs "Counter Manager 32-bit Rolling Subtract" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"cm32rs $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-shamt 2) FUNC10_CM32RS) |
|
|
(unimp cm32rs) |
|
|
()) |
|
|
|
|
|
(dni cm32sa "Counter Manager 32-bit Saturating Add" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"cm32sa $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32SA) |
|
|
(unimp cm32sa) |
|
|
()) |
|
|
|
|
|
(dni cm32sd "Counter Manager 32-bit Saturating Decrement" (MACH10 USES-RT USES-RD) |
|
|
"cm32sd $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32SD) |
|
|
(unimp cm32sd) |
|
|
()) |
|
|
|
|
|
(dni cm32si "Counter Manager 32-bit Saturating Increment" (MACH10 USES-RT USES-RD) |
|
|
"cm32si $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32SI) |
|
|
(unimp cm32si) |
|
|
()) |
|
|
|
|
|
(dni cm32ss "Counter Manager 32-bit Saturating Subtract" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"cm32ss $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32SS) |
|
|
(unimp cm32ss) |
|
|
()) |
|
|
|
|
|
(dni cm32xor "Counter Manager Xor" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"cm32xor $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM32XOR) |
|
|
(unimp cm32xor) |
|
|
()) |
|
|
|
|
|
(dni cm64clr "Counter Manager Clear" (MACH10 EVEN-REG-NUM USES-RT USES-RD) |
|
|
"cm64clr $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64CLR) |
|
|
(unimp cm64clr) |
|
|
()) |
|
|
|
|
|
(dni cm64ra "Counter Manager 64-bit Rolling Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD) |
|
|
"cm64ra $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64RA) |
|
|
(unimp cm64ra) |
|
|
()) |
|
|
|
|
|
(dni cm64rd "Counter Manager 64-bit Rolling Decrement" (MACH10 EVEN-REG-NUM USES-RT USES-RD) |
|
|
"cm64rd $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64RD) |
|
|
(unimp cm64rd) |
|
|
()) |
|
|
|
|
|
(dni cm64ri "Counter Manager 32-bit Rolling Increment" (MACH10 EVEN-REG-NUM USES-RT USES-RD) |
|
|
"cm64ri $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64RI) |
|
|
(unimp cm64ri) |
|
|
()) |
|
|
|
|
|
(dni cm64ria2 "Counter Manager 32/32 Rolling Increment/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD) |
|
|
"cm64ria2 $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64RIA2) |
|
|
(unimp cm64ria2) |
|
|
()) |
|
|
|
|
|
(dni cm64rs "Counter Manager 64-bit Rolling Subtract" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD) |
|
|
"cm64rs $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64RS) |
|
|
(unimp cm64rs) |
|
|
()) |
|
|
|
|
|
(dni cm64sa "Counter Manager 64-bit Saturating Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD) |
|
|
"cm64sa $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64SA) |
|
|
(unimp cm64sa) |
|
|
()) |
|
|
|
|
|
(dni cm64sd "Counter Manager 64-bit Saturating Decrement" (MACH10 EVEN-REG-NUM USES-RT USES-RD) |
|
|
"cm64sd $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64SD) |
|
|
(unimp cm64sd) |
|
|
()) |
|
|
|
|
|
(dni cm64si "Counter Manager 64-bit Saturating Increment" (MACH10 EVEN-REG-NUM USES-RT USES-RD) |
|
|
"cm64si $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64SI) |
|
|
(unimp cm64si) |
|
|
()) |
|
|
|
|
|
(dni cm64sia2 "Counter Manager 32/32 Saturating Increment/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD) |
|
|
"cm64sia2 $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64SIA2) |
|
|
(unimp cm64sia2) |
|
|
()) |
|
|
|
|
|
(dni cm64ss "Counter Manager 64-bit Saturating Subtract" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD) |
|
|
"cm64ss $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM64SS) |
|
|
(unimp cm64ss) |
|
|
()) |
|
|
|
|
|
(dni cm128ria2 "Counter Manager 128-bit 64/64 Rolling Increment/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD) |
|
|
"cm128ria2 $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128RIA2) |
|
|
(unimp cm128ria2) |
|
|
()) |
|
|
|
|
|
(dni cm128ria3 "Counter Manager 128-bit 32/32/64 Rolling Increment/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD) |
|
|
"cm128ria3 $rd,$rs,$rt,${cm-3z}" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128RIA3 cm-3z) |
|
|
(unimp cm128ria3) |
|
|
()) |
|
|
|
|
|
(dni cm128ria4 "Counter Manager 128-bit 32/32/32/32 Rolling Inc/Add" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"cm128ria4 $rd,$rs,$rt,${cm-4z}" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128RIA4 cm-4z) |
|
|
(unimp cm128ria4) |
|
|
()) |
|
|
|
|
|
(dni cm128sia2 "Counter Manager 128-bit 64/64 Saturating Inc/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD) |
|
|
"cm128sia2 $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128SIA2) |
|
|
(unimp cm128sia2) |
|
|
()) |
|
|
|
|
|
(dni cm128sia3 "Counter Manager 128-bit 32/32/64 Saturating Inc/Add" (MACH10 EVEN-REG-NUM USES-RS USES-RT USES-RD) |
|
|
"cm128sia3 $rd,$rs,$rt,${cm-3z}" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128SIA3 cm-3z) |
|
|
(unimp cm128sia3) |
|
|
()) |
|
|
|
|
|
(dni cm128sia4 "Counter Manager 128-bit 32/32/32/32 Saturating Inc/Add" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"cm128sia4 $rd,$rs,$rt,${cm-4z}" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128SIA4 cm-4z) |
|
|
(unimp cm128sia4) |
|
|
()) |
|
|
|
|
|
(dni cm128vsa "Counter Manager Continuous State Dual Leaky Token Bucket Policing" (MACH10 USES-RS USES-RT USES-RD) |
|
|
"cm128vsa $rd,$rs,$rt" |
|
|
(+ OP_COP3 rs rt rd (f-cp-op 0) (f-cp-grp 2) FUNC10_CM128VSA) |
|
|
(unimp cm128vsa) |
|
|
()) |
|
|
|
|
|
; Coprocessor Data Movement Instructions |
|
|
|
|
|
; Note that we don't set the USES-RD or USES-RT attributes for many of the following |
|
|
; instructions, as it's the COP register that's being specified. |
|
|
|
|
|
; ??? Is YIELD-INSN the right attribute for IQ10? The IQ2000 used the attribute to warn about |
|
|
; yielding instructions in a delay slot, but that's not relevant in IQ10. What *is* relevant |
|
|
; (and unique to IQ10) is instructions that yield if the destination register is accessed |
|
|
; before the value is there, causing a yield. |
|
|
|
|
|
(dni cfc "copy from coprocessor control register" (MACH10 LOAD-DELAY USES-RD YIELD-INSN) |
|
|
"cfc $rd,$rt" |
|
|
(+ OP_COP3 (f-rs 0) rt rd (f-shamt 0) FUNC10_CFC) |
|
|
(unimp cfc) |
|
|
()) |
|
|
|
|
|
(dni ctc "copy to coprocessor control register" (MACH10 USES-RS) |
|
|
"ctc $rs,$rt" |
|
|
(+ OP_COP3 rs rt (f-rd 0) (f-shamt 0) FUNC10_CTC) |
|
|
(unimp ctc) |
|
|
()) |
|
|
|
|
|
; Macros |
|
|
|
|
|
(dnmi m-avail "Mark Header Buffer Available" (MACH10 NO-DIS) |
|
|
"avail" |
|
|
(emit avail (f-rd 0)) |
|
|
) |
|
|
|
|
|
(dnmi m-cam36 "CAM Access in 36-bit Mode" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cam36 $rd,$rt,${cam-z}" |
|
|
(emit cam36 rd rt cam-z (f-cam-y 0)) |
|
|
) |
|
|
|
|
|
(dnmi m-cam72 "CAM Access in 72-bit Mode" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cam72 $rd,$rt,${cam-z}" |
|
|
(emit cam72 rd rt cam-z (f-cam-y 0)) |
|
|
) |
|
|
|
|
|
(dnmi m-cam144 "CAM Access in 144-bit Mode" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cam144 $rd,$rt,${cam-z}" |
|
|
(emit cam144 rd rt cam-z (f-cam-y 0)) |
|
|
) |
|
|
|
|
|
(dnmi m-cam288 "CAM Access in 288-bit Mode" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cam288 $rd,$rt,${cam-z}" |
|
|
(emit cam288 rd rt cam-z (f-cam-y 0)) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32read "Counter Manager 32-bit Rolling Add R0" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cm32read $rd,$rt" |
|
|
(emit cm32ra rd (f-rs 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64read "Counter Manager 64-bit Rolling Add R0" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cm64read $rd,$rt" |
|
|
(emit cm64ra rd (f-rs 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32mlog "Counter Manager 32-bit or R0" (MACH10 USES-RS USES-RT NO-DIS) |
|
|
"cm32mlog $rs,$rt" |
|
|
(emit cm32or (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32and "Counter Manager And" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm32and $rs,$rt" |
|
|
(emit cm32and (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32andn "Counter Manager And With Inverse" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm32andn $rs,$rt" |
|
|
(emit cm32andn (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32or "Counter Manager Or" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm32or $rs,$rt" |
|
|
(emit cm32or (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32ra "Counter Manager 32-bit Rolling Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm32ra $rs,$rt" |
|
|
(emit cm32ra (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32rd "Counter Manager 32-bit Rolling Decrement" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cm32rd $rt" |
|
|
(emit cm32rd (f-rd 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32ri "Counter Manager 32-bit Rolling Increment" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cm32ri $rt" |
|
|
(emit cm32ri (f-rd 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32rs "Counter Manager 32-bit Rolling Subtract" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm32rs $rs,$rt" |
|
|
(emit cm32rs (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32sa "Counter Manager 32-bit Saturating Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm32sa $rs,$rt" |
|
|
(emit cm32sa (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32sd "Counter Manager 32-bit Saturating Decrement" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cm32sd $rt" |
|
|
(emit cm32sd (f-rd 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32si "Counter Manager 32-bit Saturating Increment" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cm32si $rt" |
|
|
(emit cm32si (f-rd 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32ss "Counter Manager 32-bit Saturating Subtract" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm32ss $rs,$rt" |
|
|
(emit cm32ss (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm32xor "Counter Manager Xor" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm32xor $rs,$rt" |
|
|
(emit cm32xor (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64clr "Counter Manager Clear" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cm64clr $rt" |
|
|
(emit cm64clr (f-rd 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64ra "Counter Manager 64-bit Rolling Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm64ra $rs,$rt" |
|
|
(emit cm64ra (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64rd "Counter Manager 64-bit Rolling Decrement" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cm64rd $rt" |
|
|
(emit cm64rd (f-rd 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64ri "Counter Manager 32-bit Rolling Increment" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cm64ri $rt" |
|
|
(emit cm64ri (f-rd 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64ria2 "Counter Manager 32/32 Rolling Increment/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm64ria2 $rs,$rt" |
|
|
(emit cm64ria2 (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64rs "Counter Manager 64-bit Rolling Subtract" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm64rs $rs,$rt" |
|
|
(emit cm64rs (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64sa "Counter Manager 64-bit Saturating Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm64sa $rs,$rt" |
|
|
(emit cm64sa (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64sd "Counter Manager 64-bit Saturating Decrement" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cm64sd $rt" |
|
|
(emit cm64sd (f-rd 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64si "Counter Manager 64-bit Saturating Increment" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"cm64si $rt" |
|
|
(emit cm64si (f-rd 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64sia2 "Counter Manager 32/32 Saturating Increment/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm64sia2 $rs,$rt" |
|
|
(emit cm64sia2 (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm64ss "Counter Manager 64-bit Saturating Subtract" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm64ss $rs,$rt" |
|
|
(emit cm64ss (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm128ria2 "Counter Manager 128-bit 64/64 Rolling Increment/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm128ria2 $rs,$rt" |
|
|
(emit cm128ria2 (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm128ria3 "Counter Manager 128-bit 32/32/64 Rolling Increment/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm128ria3 $rs,$rt,${cm-3z}" |
|
|
(emit cm128ria3 (f-rd 0) rs rt cm-3z) |
|
|
) |
|
|
|
|
|
(dnmi m-cm128ria4 "Counter Manager 128-bit 32/32/32/32 Rolling Inc/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm128ria4 $rs,$rt,${cm-4z}" |
|
|
(emit cm128ria4 (f-rd 0) rs rt cm-4z) |
|
|
) |
|
|
|
|
|
(dnmi m-cm128sia2 "Counter Manager 128-bit 64/64 Saturating Inc/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm128sia2 $rs,$rt" |
|
|
(emit cm128sia2 (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-cm128sia3 "Counter Manager 128-bit 32/32/64 Saturating Inc/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm128sia3 $rs,$rt,${cm-3z}" |
|
|
(emit cm128sia3 (f-rd 0) rs rt cm-3z) |
|
|
) |
|
|
|
|
|
(dnmi m-cm128sia4 "Counter Manager 128-bit 32/32/32/32 Saturating Inc/Add" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"cm128sia4 $rs,$rt,${cm-4z}" |
|
|
(emit cm128sia4 (f-rd 0) rs rt cm-4z) |
|
|
) |
|
|
|
|
|
(dnmi m-cmphdr "Get a Complete Header" (MACH10 NO-DIS) |
|
|
"cmphdr" |
|
|
(emit cmphdr (f-rd 0)) |
|
|
) |
|
|
|
|
|
(dnmi m-dbd "Deallocate a Data Buffer Pointer" (MACH10 USES-RD USES-RT NO-DIS) |
|
|
"dbd $rd,$rt" |
|
|
(emit dbd rd (f-rs 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m2-dbd "Deallocate a Data Buffer Pointer" (MACH10 USES-RT NO-DIS) |
|
|
"dbd $rt" |
|
|
(emit dbd (f-rd 0) (f-rs 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-dpwt "DSTN_PORT Write" (MACH10 USES-RS NO-DIS) |
|
|
"dpwt $rs" |
|
|
(emit dpwt (f-rd 0) rs) |
|
|
) |
|
|
|
|
|
(dnmi m-free "" (MACH10 USES-RS USES-RD NO-DIS) |
|
|
"free $rs" |
|
|
(emit free (f-rd 0) rs) |
|
|
) |
|
|
|
|
|
;(dnmi m-jal "jump and link, implied r31" (MACH10 USES-RT NO-DIS) |
|
|
; "jal $jmptarg" |
|
|
; (emit jal (f-rt 31) jmptarg) |
|
|
;) |
|
|
|
|
|
(dnmi m-lock "lock memory" (MACH10 USES-RT NO-DIS) |
|
|
"lock $rt" |
|
|
(emit lock (f-rd 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-pkrla "Packet Release Absolute" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"pkrla $rs,$rt" |
|
|
(emit pkrla (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-pkrlac "Packet Release Absolute Continue" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"pkrlac $rs,$rt" |
|
|
(emit pkrlac (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-pkrlah "Packet Release Absolute and Hold" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"pkrlah $rs,$rt" |
|
|
(emit pkrlah (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-pkrlau "Packet Release Absolute Unconditional" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"pkrlau $rs,$rt" |
|
|
(emit pkrlau (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-pkrli "Packet Release Immediate" (MACH10 USES-RD USES-RS USES-RT NO-DIS) |
|
|
"pkrli $rs,$rt,$bytecount" |
|
|
(emit pkrli (f-rd 0) rs rt bytecount) |
|
|
) |
|
|
|
|
|
(dnmi m-pkrlic "Packet Release Immediate Continue" (MACH10 USES-RS USES-RT NO-DIS) |
|
|
"pkrlic $rs,$rt,$bytecount" |
|
|
(emit pkrlic (f-rd 0) rs rt bytecount) |
|
|
) |
|
|
|
|
|
(dnmi m-pkrlih "Packet Release Immediate and Hold" (MACH10 USES-RD USES-RS USES-RT NO-DIS) |
|
|
"pkrlih $rs,$rt,$bytecount" |
|
|
(emit pkrlih (f-rd 0) rs rt bytecount) |
|
|
) |
|
|
|
|
|
(dnmi m-pkrliu "Packet Release Immediate Unconditional" (MACH10 USES-RD USES-RS USES-RT NO-DIS) |
|
|
"pkrliu $rs,$rt,$bytecount" |
|
|
(emit pkrliu (f-rd 0) rs rt bytecount) |
|
|
) |
|
|
|
|
|
(dnmi m-rba "Read Bytes Absolute" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"rba $rs,$rt" |
|
|
(emit rba (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-rbal "Read Bytes Absolute and Lock" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"rbal $rs,$rt" |
|
|
(emit rbal (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-rbar "Read Bytes Absolute and Release" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"rbar $rs,$rt" |
|
|
(emit rbar (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-rbi "Read Bytes Immediate" (MACH10 USES-RS USES-RT NO-DIS) |
|
|
"rbi $rs,$rt,$bytecount" |
|
|
(emit rbi (f-rd 0) rs rt bytecount) |
|
|
) |
|
|
|
|
|
(dnmi m-rbil "Read Bytes Immediate and Lock" (MACH10 USES-RS USES-RT NO-DIS) |
|
|
"rbil $rs,$rt,$bytecount" |
|
|
(emit rbil (f-rd 0) rs rt bytecount) |
|
|
) |
|
|
|
|
|
(dnmi m-rbir "Read Bytes Immediate and Release" (MACH10 USES-RS USES-RT NO-DIS) |
|
|
"rbir $rs,$rt,$bytecount" |
|
|
(emit rbir (f-rd 0) rs rt bytecount) |
|
|
) |
|
|
|
|
|
(dnmi m-swwr "Single Word Write" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"swwr $rs,$rt" |
|
|
(emit swwr (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-swwru "Single Word Write and Unlock" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"swwru $rs,$rt" |
|
|
(emit swwru (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-tstod "Test Header Buffer Order Dependency" (MACH10 USES-RS USES-RD NO-DIS) |
|
|
"tstod $rs" |
|
|
(emit tstod (f-rd 0) rs) |
|
|
) |
|
|
|
|
|
(dnmi m-unlk "" (MACH10 USES-RT USES-RD NO-DIS) |
|
|
"unlk $rt" |
|
|
(emit unlk (f-rd 0) rt) |
|
|
) |
|
|
|
|
|
(dnmi m-wba "Write Bytes Absolute" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"wba $rs,$rt" |
|
|
(emit wba (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-wbac "Write Bytes Absolute Cacheable" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"wbac $rs,$rt" |
|
|
(emit wbac (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-wbau "Write Bytes Absolute and Unlock" (MACH10 USES-RS USES-RT USES-RD NO-DIS) |
|
|
"wbau $rs,$rt" |
|
|
(emit wbau (f-rd 0) rs rt) |
|
|
) |
|
|
|
|
|
(dnmi m-wbi "Write Bytes Immediate" (MACH10 USES-RD USES-RS USES-RT NO-DIS) |
|
|
"wbi $rs,$rt,$bytecount" |
|
|
(emit wbi (f-rd 0) rs rt bytecount) |
|
|
) |
|
|
|
|
|
(dnmi m-wbic "Write Bytes Immediate Cacheable" (MACH10 USES-RD USES-RS USES-RT NO-DIS) |
|
|
"wbic $rs,$rt,$bytecount" |
|
|
(emit wbic (f-rd 0) rs rt bytecount) |
|
|
) |
|
|
|
|
|
(dnmi m-wbiu "Write Bytes Immediate" (MACH10 USES-RD USES-RS USES-RT NO-DIS) |
|
|
"wbiu $rs,$rt,$bytecount" |
|
|
(emit wbiu (f-rd 0) rs rt bytecount) |
|
|
) |
|
|
|
|
|
|