1*3d8817e4Smiod; Morpho Technologies MT Arch description. -*- Scheme -*- 2*3d8817e4Smiod; Copyright 2001 Free Software Foundation, Inc. 3*3d8817e4Smiod; 4*3d8817e4Smiod; Contributed by Red Hat Inc; developed under contract from 5*3d8817e4Smiod; Morpho Technologies. 6*3d8817e4Smiod; 7*3d8817e4Smiod; This file is part of the GNU Binutils. 8*3d8817e4Smiod; 9*3d8817e4Smiod; This program is free software; you can redistribute it and/or modify 10*3d8817e4Smiod; it under the terms of the GNU General Public License as published by 11*3d8817e4Smiod; the Free Software Foundation; either version 2 of the License, or 12*3d8817e4Smiod; (at your option) any later version. 13*3d8817e4Smiod; 14*3d8817e4Smiod; This program is distributed in the hope that it will be useful, 15*3d8817e4Smiod; but WITHOUT ANY WARRANTY; without even the implied warranty of 16*3d8817e4Smiod; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*3d8817e4Smiod; GNU General Public License for more details. 18*3d8817e4Smiod; 19*3d8817e4Smiod; You should have received a copy of the GNU General Public License 20*3d8817e4Smiod; along with this program; if not, write to the Free Software 21*3d8817e4Smiod; Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 22*3d8817e4Smiod 23*3d8817e4Smiod(include "simplify.inc") 24*3d8817e4Smiod 25*3d8817e4Smiod;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 26*3d8817e4Smiod;; Define The Architecture, Attributes, ISA, CPU, Machine, And Model. ;; 27*3d8817e4Smiod;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 28*3d8817e4Smiod 29*3d8817e4Smiod; define-arch must appear first 30*3d8817e4Smiod(define-arch 31*3d8817e4Smiod (name mt) ; name of cpu family 32*3d8817e4Smiod (comment "Morpho Technologies mRISC family") 33*3d8817e4Smiod (default-alignment aligned) 34*3d8817e4Smiod (insn-lsb0? #t) 35*3d8817e4Smiod (machs ms1 ms1-003 ms2) 36*3d8817e4Smiod (isas mt) 37*3d8817e4Smiod) 38*3d8817e4Smiod 39*3d8817e4Smiod; Instruction set parameters. 40*3d8817e4Smiod 41*3d8817e4Smiod(define-isa 42*3d8817e4Smiod (name mt) 43*3d8817e4Smiod (comment "Morpho Technologies MT ISA") 44*3d8817e4Smiod (default-insn-word-bitsize 32) 45*3d8817e4Smiod (default-insn-bitsize 32) 46*3d8817e4Smiod (base-insn-bitsize 32) 47*3d8817e4Smiod (parallel-insns 2) 48*3d8817e4Smiod) 49*3d8817e4Smiod 50*3d8817e4Smiod; Cpu family definitions. 51*3d8817e4Smiod 52*3d8817e4Smiod 53*3d8817e4Smiod(define-cpu 54*3d8817e4Smiod ; cpu names must be distinct from the architecture name and machine names. 55*3d8817e4Smiod (name ms1bf) 56*3d8817e4Smiod (comment "Morpho Technologies mRISC family") 57*3d8817e4Smiod (endian big) 58*3d8817e4Smiod (word-bitsize 32) 59*3d8817e4Smiod) 60*3d8817e4Smiod 61*3d8817e4Smiod(define-cpu 62*3d8817e4Smiod ; cpu names must be distinct from the architecture name and machine names. 63*3d8817e4Smiod (name ms1-003bf) 64*3d8817e4Smiod (comment "Morpho Technologies mRISC family") 65*3d8817e4Smiod (endian big) 66*3d8817e4Smiod (word-bitsize 32) 67*3d8817e4Smiod) 68*3d8817e4Smiod 69*3d8817e4Smiod(define-cpu 70*3d8817e4Smiod ; cpu names must be distinct from the architecture name and machine names. 71*3d8817e4Smiod (name ms2bf) 72*3d8817e4Smiod (comment "Morpho Technologies mRISC family") 73*3d8817e4Smiod (endian big) 74*3d8817e4Smiod (word-bitsize 32) 75*3d8817e4Smiod) 76*3d8817e4Smiod 77*3d8817e4Smiod(define-mach 78*3d8817e4Smiod (name ms1) 79*3d8817e4Smiod (comment "Morpho Technologies mrisc") 80*3d8817e4Smiod (cpu ms1bf) 81*3d8817e4Smiod (isas mt) 82*3d8817e4Smiod) 83*3d8817e4Smiod 84*3d8817e4Smiod(define-mach 85*3d8817e4Smiod (name ms1-003) 86*3d8817e4Smiod (comment "Morpho Technologies mrisc") 87*3d8817e4Smiod (cpu ms1-003bf) 88*3d8817e4Smiod (isas mt) 89*3d8817e4Smiod) 90*3d8817e4Smiod 91*3d8817e4Smiod(define-mach 92*3d8817e4Smiod (name ms2) 93*3d8817e4Smiod (comment "Morpho Technologies ms2") 94*3d8817e4Smiod (cpu ms2bf) 95*3d8817e4Smiod (isas mt) 96*3d8817e4Smiod) 97*3d8817e4Smiod 98*3d8817e4Smiod 99*3d8817e4Smiod; Model descriptions. 100*3d8817e4Smiod; Can probably take the u-exec out. We'll see. 101*3d8817e4Smiod(define-model 102*3d8817e4Smiod (name ms1) 103*3d8817e4Smiod (comment "Morpho Technologies mrisc") 104*3d8817e4Smiod (mach ms1) 105*3d8817e4Smiod (unit u-exec "Execution Unit" () 106*3d8817e4Smiod 1 1 ; issue done 107*3d8817e4Smiod () ; state 108*3d8817e4Smiod () ; inputs 109*3d8817e4Smiod () ; outputs 110*3d8817e4Smiod () ; profile action (default) 111*3d8817e4Smiod ) 112*3d8817e4Smiod) 113*3d8817e4Smiod 114*3d8817e4Smiod(define-model 115*3d8817e4Smiod (name ms1-003) 116*3d8817e4Smiod (comment "Morpho Technologies mrisc") 117*3d8817e4Smiod (mach ms1-003) 118*3d8817e4Smiod (unit u-exec "Execution Unit" () 119*3d8817e4Smiod 1 1 ; issue done 120*3d8817e4Smiod () ; state 121*3d8817e4Smiod () ; inputs 122*3d8817e4Smiod () ; outputs 123*3d8817e4Smiod () ; profile action (default) 124*3d8817e4Smiod ) 125*3d8817e4Smiod) 126*3d8817e4Smiod 127*3d8817e4Smiod(define-model 128*3d8817e4Smiod (name ms2) 129*3d8817e4Smiod (comment "Morpho Technologies ms2") 130*3d8817e4Smiod (mach ms2) 131*3d8817e4Smiod (unit u-exec "Execution Unit" () 132*3d8817e4Smiod 1 1 ; issue done 133*3d8817e4Smiod () ; state 134*3d8817e4Smiod () ; inputs 135*3d8817e4Smiod () ; outputs 136*3d8817e4Smiod () ; profile action (default) 137*3d8817e4Smiod ) 138*3d8817e4Smiod) 139*3d8817e4Smiod 140*3d8817e4Smiod; FIXME: It might simplify things to separate the execute process from the 141*3d8817e4Smiod; one that updates the PC. 142*3d8817e4Smiod 143*3d8817e4Smiod 144*3d8817e4Smiod;;;;;;;;;;;;;;;;;;;;;;;; 145*3d8817e4Smiod;; Instruction Fields ;; 146*3d8817e4Smiod;;;;;;;;;;;;;;;;;;;;;;;; 147*3d8817e4Smiod 148*3d8817e4Smiod; Attributes: 149*3d8817e4Smiod; PCREL-ADDR: pc relative value (for reloc and disassembly purposes) 150*3d8817e4Smiod; ABS-ADDR: absolute address (for reloc and disassembly purposes?) 151*3d8817e4Smiod; RESERVED: bits are not used to decode insn, must be all 0 152*3d8817e4Smiod; RELOC: there is a relocation associated with this field (experiment) 153*3d8817e4Smiod; 154*3d8817e4Smiod; f-msys: Identify a a morphosys insns. 1 if msys, 0 if not. 155*3d8817e4Smiod; f-opc: 6 bit opcode for non-morphosys instructions. 156*3d8817e4Smiod; f-msopc: 6 bit opcode for morphosys instructions. 157*3d8817e4Smiod; f-imm: flag to indicate use of an immediate operand. 1 if yes, 0 if no. 158*3d8817e4Smiod; f-sr1: source resgister 1. (also used for MSYS insns) 159*3d8817e4Smiod; f-sr2: source register 2. (also used for MSYS insns) 160*3d8817e4Smiod; f-dr: destination register when located in bits 19:16. 161*3d8817e4Smiod; f-drrr: destination register when located in bits 15:12. (also for MSYS insns) 162*3d8817e4Smiod; f-imm16: 16 bit immediate value when not an offset. 163*3d8817e4Smiod; f-imm16a: 16 bit immediate value when it's a pc-rel offset. 164*3d8817e4Smiod; f-uu4a: unused 4 bit field. 165*3d8817e4Smiod; f-uu4b: second unsed 4 bit field. 166*3d8817e4Smiod; f-uu1: unused 1 bit field 167*3d8817e4Smiod; f-uu12: unused 12 bit field. 168*3d8817e4Smiod; f-uu16: unused 16 bit field. 169*3d8817e4Smiod; f-uu24: unused 24 bit field. 170*3d8817e4Smiod 171*3d8817e4Smiod(dnf f-msys "morphosys insn flag" () 31 1) 172*3d8817e4Smiod(dnf f-opc "opcode field" () 30 6) 173*3d8817e4Smiod(dnf f-imm "immedate flag" () 24 1) 174*3d8817e4Smiod(dnf f-uu24 "unused 24 bits" () 23 24) 175*3d8817e4Smiod(dnf f-sr1 "sr1 register field" (ABS-ADDR) 23 4) 176*3d8817e4Smiod(dnf f-sr2 "sr2 register field" (ABS-ADDR) 19 4) 177*3d8817e4Smiod(dnf f-dr "dr register field" (ABS-ADDR) 19 4) 178*3d8817e4Smiod(dnf f-drrr "drrr register field" (ABS-ADDR) 15 4) 179*3d8817e4Smiod(dnf f-imm16u "unsigned 16 bit immediate" () 15 16) 180*3d8817e4Smiod(df f-imm16s "signed 16 bit immediate" () 15 16 INT ((value pc) (add HI value 0)) ((value pc) (add HI value 0))) 181*3d8817e4Smiod(dnf f-imm16a "pc-rel offset" (PCREL-ADDR) 15 16) 182*3d8817e4Smiod(dnf f-uu4a "unused 4 bit field" () 19 4) 183*3d8817e4Smiod(dnf f-uu4b "unused 4 bit field" () 23 4) 184*3d8817e4Smiod(dnf f-uu12 "unused 12 bit field" () 11 12) 185*3d8817e4Smiod(dnf f-uu8 "unused 8 bit field" () 15 8) 186*3d8817e4Smiod(dnf f-uu16 "unused 16 bit field" () 15 16) 187*3d8817e4Smiod(dnf f-uu1 "unused 1 bit field" () 7 1) 188*3d8817e4Smiod 189*3d8817e4Smiod; The following ifields are used exclusively for the MorphoSys instructions. 190*3d8817e4Smiod; In a few cases, a bit field is used for something in addition to what its 191*3d8817e4Smiod; name suggests. For the most part, the names are meaningful though. 192*3d8817e4Smiod 193*3d8817e4Smiod(dnf f-msopc "opcode field" () 30 5) 194*3d8817e4Smiod(dnf f-uu-26-25 "unused 26 bits" () 25 26) 195*3d8817e4Smiod(dnf f-mask "mask" () 25 16) 196*3d8817e4Smiod(dnf f-bankaddr "bank address" () 25 13) 197*3d8817e4Smiod(dnf f-rda "rda" () 25 1) 198*3d8817e4Smiod(dnf f-uu-2-25 "unused bits 25 & 24" () 25 2) 199*3d8817e4Smiod(dnf f-rbbc "Omega network configuration" () 25 2) 200*3d8817e4Smiod(dnf f-perm "perm" () 25 2) 201*3d8817e4Smiod(dnf f-mode "mode" () 25 2) 202*3d8817e4Smiod(dnf f-uu-1-24 "testing" () 24 1) 203*3d8817e4Smiod(dnf f-wr "wr" () 24 1) 204*3d8817e4Smiod(dnf f-fbincr "fb incr" () 23 4) 205*3d8817e4Smiod(dnf f-uu-2-23 "unused bits 23 and 22" () 23 2) 206*3d8817e4Smiod(dnf f-xmode "xmode" () 23 1) 207*3d8817e4Smiod(dnf f-a23 "a23" () 23 1) 208*3d8817e4Smiod(dnf f-mask1 "mask1" () 22 3) 209*3d8817e4Smiod(dnf f-cr "cr" () 22 3) 210*3d8817e4Smiod(dnf f-type "type" () 21 2) 211*3d8817e4Smiod(dnf f-incamt "increment amount" () 19 8) 212*3d8817e4Smiod(dnf f-cbs "cbs" () 19 2) 213*3d8817e4Smiod(dnf f-uu-1-19 "unused bit 19" () 19 1) 214*3d8817e4Smiod(dnf f-ball "b_all" () 19 1) 215*3d8817e4Smiod(dnf f-colnum "column number" () 18 3) 216*3d8817e4Smiod(dnf f-brc "b_r_c" () 18 3) 217*3d8817e4Smiod(dnf f-incr "incr" () 17 6) 218*3d8817e4Smiod(dnf f-fbdisp "frame buffer displacement" () 15 6) 219*3d8817e4Smiod(dnf f-uu-4-15 "unused bits 15,14,13,12" () 15 4) 220*3d8817e4Smiod(dnf f-length "length" () 15 3) 221*3d8817e4Smiod(dnf f-uu-1-15 "unused bit 15" () 15 1) 222*3d8817e4Smiod(dnf f-rc "row/column context" () 15 1) 223*3d8817e4Smiod(dnf f-rcnum "starting cell of cntxt mem." () 14 3) 224*3d8817e4Smiod(dnf f-rownum "row number" () 14 3) 225*3d8817e4Smiod(dnf f-cbx "cbx" () 14 3) 226*3d8817e4Smiod(dnf f-id "id" () 14 1) 227*3d8817e4Smiod(dnf f-size "size" () 13 14) 228*3d8817e4Smiod(dnf f-rownum1 "row number" () 12 3) 229*3d8817e4Smiod(dnf f-uu-3-11 "unused 3 bits (11-9)" () 11 3) 230*3d8817e4Smiod(dnf f-rc1 "row/column context" () 11 1) 231*3d8817e4Smiod(dnf f-ccb "ccb" () 11 1) 232*3d8817e4Smiod(dnf f-cbrb "data-bus orientation" () 10 1) 233*3d8817e4Smiod(dnf f-cdb "cdb" () 10 1) 234*3d8817e4Smiod(dnf f-rownum2 "row number" () 9 3) 235*3d8817e4Smiod(dnf f-cell "cell" () 9 3) 236*3d8817e4Smiod(dnf f-uu-3-9 "unused 3 bits (9-7)" () 9 3) 237*3d8817e4Smiod(dnf f-contnum "context number" () 8 9) 238*3d8817e4Smiod(dnf f-uu-1-6 "unused bit 6" () 6 1) 239*3d8817e4Smiod(dnf f-dup "dup" () 6 1) 240*3d8817e4Smiod(dnf f-rc2 "rc2" () 6 1) 241*3d8817e4Smiod(dnf f-ctxdisp "context displacement" () 5 6) 242*3d8817e4Smiod 243*3d8817e4Smiod; additional fields in ms2 244*3d8817e4Smiod(dnf f-imm16l "loop count" () 23 16) 245*3d8817e4Smiod(df f-loopo "loop offset" () 7 8 UINT 246*3d8817e4Smiod ((value pc) (srl SI value 2)) 247*3d8817e4Smiod ((value pc) (add SI (sll value 2) 8)) 248*3d8817e4Smiod ) 249*3d8817e4Smiod(dnf f-cb1sel "cb1 select" () 25 3) 250*3d8817e4Smiod(dnf f-cb2sel "cb2 select" () 22 3) 251*3d8817e4Smiod(dnf f-cb1incr "cb1 increment" (SIGNED) 19 6) 252*3d8817e4Smiod(dnf f-cb2incr "cb2 increment" (SIGNED) 13 6) 253*3d8817e4Smiod(dnf f-rc3 "row/colum context" () 7 1) 254*3d8817e4Smiod 255*3d8817e4Smiod; The following is just for a test 256*3d8817e4Smiod(dnf f-msysfrsr2 "sr2 for msys" () 19 4) 257*3d8817e4Smiod(dnf f-brc2 "b_r_c2" () 14 3) 258*3d8817e4Smiod(dnf f-ball2 "b_all2" () 15 1) 259*3d8817e4Smiod 260*3d8817e4Smiod 261*3d8817e4Smiod;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 262*3d8817e4Smiod;; Enumerations Of Instruction Fields ;; 263*3d8817e4Smiod;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 264*3d8817e4Smiod 265*3d8817e4Smiod; insn-msys: bit 31. 1 for Morphosys Insns, 0 if not. 266*3d8817e4Smiod(define-normal-insn-enum insn-msys "msys enums" () MSYS_ f-msys 267*3d8817e4Smiod (NO YES) 268*3d8817e4Smiod) 269*3d8817e4Smiod 270*3d8817e4Smiod; insn-opc: bits 30 through 25 . Non-MorphoSys Instructions 271*3d8817e4Smiod; Note - the documentation is wrong for the encoding of the DBNZ 272*3d8817e4Smiod; instruction. It is actually 011110. See Issue 67699. 273*3d8817e4Smiod(define-normal-insn-enum insn-opc "opc enums" () OPC_ f-opc 274*3d8817e4Smiod (ADD ADDU SUB SUBU MUL - - - 275*3d8817e4Smiod AND OR XOR NAND NOR XNOR LDUI - 276*3d8817e4Smiod LSL LSR ASR - - - - - 277*3d8817e4Smiod BRLT BRLE BREQ JMP JAL BRNEQ DBNZ LOOP 278*3d8817e4Smiod LDW STW - - - - - - 279*3d8817e4Smiod - - - - - - - - 280*3d8817e4Smiod EI DI SI RETI BREAK IFLUSH - - 281*3d8817e4Smiod ) 282*3d8817e4Smiod) 283*3d8817e4Smiod 284*3d8817e4Smiod; insn-msopc: bits 30 through 26 . MorphoSys Instructions 285*3d8817e4Smiod(define-normal-insn-enum insn-msopc "msopc enums" () MSOPC_ f-msopc 286*3d8817e4Smiod (LDCTXT LDFB STFB FBCB MFBCB FBCCI FBRCI FBCRI 287*3d8817e4Smiod FBRRI MFBCCI MFBRCI MFBCRI MFBRRI FBCBDR RCFBCB MRCFBCB 288*3d8817e4Smiod CBCAST DUPCBCAST WFBI WFB RCRISC FBCBINC RCXMODE INTLVR 289*3d8817e4Smiod WFBINC MWFBINC WFBINCR MWFBINCR FBCBINCS MFBCBINCS FBCBINCRS MFBCBINCRS 290*3d8817e4Smiod - - - - - - - - 291*3d8817e4Smiod ) 292*3d8817e4Smiod) 293*3d8817e4Smiod 294*3d8817e4Smiod; insn-imm: bit 24. Immediate operand indicator. 295*3d8817e4Smiod(define-normal-insn-enum insn-imm "imm enums" () IMM_ f-imm 296*3d8817e4Smiod ; This bit specifies whether and immediate operand will be present. 297*3d8817e4Smiod ; It's 1 if there is, 0 if there is not. 298*3d8817e4Smiod (NO YES) 299*3d8817e4Smiod) 300*3d8817e4Smiod;;;;;;;;;;;;;;;; 301*3d8817e4Smiod;; Attributes ;; 302*3d8817e4Smiod;;;;;;;;;;;;;;;; 303*3d8817e4Smiod 304*3d8817e4Smiod; Might not need this. Keep if for the sim just in case. 305*3d8817e4Smiod;(define-attr 306*3d8817e4Smiod; (for insn) 307*3d8817e4Smiod; (type boolean) 308*3d8817e4Smiod; (name EXT-SKIP-INSN) 309*3d8817e4Smiod; (comment "instruction is a PAGE, LOADL or LOADH instruction") 310*3d8817e4Smiod;) 311*3d8817e4Smiod 312*3d8817e4Smiod(define-attr 313*3d8817e4Smiod (for insn) 314*3d8817e4Smiod (type boolean) 315*3d8817e4Smiod (name LOAD-DELAY) 316*3d8817e4Smiod (comment "insn has a load delay") 317*3d8817e4Smiod) 318*3d8817e4Smiod 319*3d8817e4Smiod(define-attr 320*3d8817e4Smiod (for insn) 321*3d8817e4Smiod (type boolean) 322*3d8817e4Smiod (name MEMORY-ACCESS) 323*3d8817e4Smiod (comment "insn performs a memory access") 324*3d8817e4Smiod) 325*3d8817e4Smiod 326*3d8817e4Smiod(define-attr 327*3d8817e4Smiod (for insn) 328*3d8817e4Smiod (type boolean) 329*3d8817e4Smiod (name AL-INSN) 330*3d8817e4Smiod (comment "insn is an arithmetic or logic insn.") 331*3d8817e4Smiod) 332*3d8817e4Smiod 333*3d8817e4Smiod(define-attr 334*3d8817e4Smiod (for insn) 335*3d8817e4Smiod (type boolean) 336*3d8817e4Smiod (name IO-INSN) 337*3d8817e4Smiod (comment "insn performs an I/O operation") 338*3d8817e4Smiod) 339*3d8817e4Smiod 340*3d8817e4Smiod(define-attr 341*3d8817e4Smiod (for insn) 342*3d8817e4Smiod (type boolean) 343*3d8817e4Smiod (name BR-INSN) 344*3d8817e4Smiod (comment "insn performs an I/O operation") 345*3d8817e4Smiod) 346*3d8817e4Smiod 347*3d8817e4Smiod(define-attr 348*3d8817e4Smiod (for insn) 349*3d8817e4Smiod (type boolean) 350*3d8817e4Smiod (name JAL-HAZARD) 351*3d8817e4Smiod (comment "insn has jal-like hazard") 352*3d8817e4Smiod) 353*3d8817e4Smiod 354*3d8817e4Smiod(define-pmacro (define-reg-use-attr regfield) 355*3d8817e4Smiod (define-attr 356*3d8817e4Smiod (for insn) 357*3d8817e4Smiod (type boolean) 358*3d8817e4Smiod (name (.sym "USES-" (.upcase regfield))) 359*3d8817e4Smiod (comment ("insn accesses register operand " regfield)))) 360*3d8817e4Smiod 361*3d8817e4Smiod(define-reg-use-attr "frdr") 362*3d8817e4Smiod(define-reg-use-attr "frdrrr") 363*3d8817e4Smiod(define-reg-use-attr "frsr1") 364*3d8817e4Smiod(define-reg-use-attr "frsr2") 365*3d8817e4Smiod 366*3d8817e4Smiod 367*3d8817e4Smiod; Might not need this. Keep it for the sim just in case. 368*3d8817e4Smiod(define-attr 369*3d8817e4Smiod (for insn) 370*3d8817e4Smiod (type boolean) 371*3d8817e4Smiod (name SKIPA) 372*3d8817e4Smiod (comment "instruction is a SKIP instruction") 373*3d8817e4Smiod) 374*3d8817e4Smiod 375*3d8817e4Smiod 376*3d8817e4Smiod;;;;;;;;;;;;;;;;;;;;; 377*3d8817e4Smiod;; Hardware Pieces ;; 378*3d8817e4Smiod;;;;;;;;;;;;;;;;;;;;; 379*3d8817e4Smiod 380*3d8817e4Smiod;(define-pmacro (build-reg-name n) (.splice (.str "$" n) n)) 381*3d8817e4Smiod 382*3d8817e4Smiod; These are the 16 registers that the chip has. In later versions 383*3d8817e4Smiod; where there will be more registers, this will need to be expanded. 384*3d8817e4Smiod; Note that there are two entries for the registers with two names. 385*3d8817e4Smiod(define-hardware 386*3d8817e4Smiod (name h-spr) 387*3d8817e4Smiod (comment "special-purpose registers") 388*3d8817e4Smiod (type register SI (16)) 389*3d8817e4Smiod (indices keyword "" (("R0" 0) ("R1" 1) ("R2" 2) ("R3" 3) ("R4" 4) ("R5" 5) 390*3d8817e4Smiod ("R6" 6) ("R7" 7) ("R8" 8) ("R9" 9) ("R10" 10) ("R11" 11) ("R12" 12) ("fp" 12) 391*3d8817e4Smiod ("R13" 13) ("sp" 13) ("R14" 14) ("ra" 14) ("R15" 15) ("ira" 15))) 392*3d8817e4Smiod; (get (index) (and (raw-reg h-spr) #xffffffff)) 393*3d8817e4Smiod; (set (index value) (set (raw-reg h-spr) (and value #xffffffff))) 394*3d8817e4Smiod) 395*3d8817e4Smiod 396*3d8817e4Smiod; This is the program counter. 397*3d8817e4Smiod(dnh h-pc "program counter" (PC PROFILE) (pc) () () ()) 398*3d8817e4Smiod 399*3d8817e4Smiod(define-keyword 400*3d8817e4Smiod (name msys-syms) 401*3d8817e4Smiod (print-name h-nil) 402*3d8817e4Smiod (prefix "") 403*3d8817e4Smiod (values (DUP 1) (XX 0)) 404*3d8817e4Smiod) 405*3d8817e4Smiod 406*3d8817e4Smiod;;;;;;;;;;;;;; 407*3d8817e4Smiod;; Operands ;; 408*3d8817e4Smiod;;;;;;;;;;;;;; 409*3d8817e4Smiod 410*3d8817e4Smiod(define-operand (name frsr1) (comment "register") (attrs) 411*3d8817e4Smiod (type h-spr) (index f-sr1) ) 412*3d8817e4Smiod(define-operand (name frsr2) (comment "register") (attrs) 413*3d8817e4Smiod (type h-spr) (index f-sr2) ) 414*3d8817e4Smiod(define-operand (name frdr) (comment "register") (attrs) 415*3d8817e4Smiod (type h-spr) (index f-dr) ) 416*3d8817e4Smiod(define-operand (name frdrrr) (comment "register") (attrs) 417*3d8817e4Smiod (type h-spr) (index f-drrr) ) 418*3d8817e4Smiod(define-operand (name imm16) (comment "immediate value - sign extd") (attrs) 419*3d8817e4Smiod (type h-sint) (index f-imm16s) (handlers (parse "imm16") (print "dollarhex"))) 420*3d8817e4Smiod(define-operand (name imm16z) (comment "immediate value - zero extd") (attrs) 421*3d8817e4Smiod (type h-uint) (index f-imm16u) (handlers (parse "imm16") (print "dollarhex"))) 422*3d8817e4Smiod(define-operand (name imm16o) (comment "immediate value") (attrs PCREL-ADDR) 423*3d8817e4Smiod (type h-uint) (index f-imm16s) (handlers (parse "imm16") (print "pcrel"))) 424*3d8817e4Smiod 425*3d8817e4Smiod; Operands for MorphoSys Instructions 426*3d8817e4Smiod 427*3d8817e4Smiod(define-operand (name rc) (comment "rc") (attrs) 428*3d8817e4Smiod (type h-uint) (index f-rc) (handlers (parse "rc") (print "dollarhex"))) 429*3d8817e4Smiod 430*3d8817e4Smiod(define-operand (name rcnum) (comment "rcnum") (attrs) 431*3d8817e4Smiod (type h-uint) (index f-rcnum) (handlers (print "dollarhex"))) 432*3d8817e4Smiod 433*3d8817e4Smiod(define-operand (name contnum) (comment "context number") (attrs) 434*3d8817e4Smiod (type h-uint) (index f-contnum) (handlers (print "dollarhex"))) 435*3d8817e4Smiod 436*3d8817e4Smiod(define-operand (name rbbc) (comment "omega network configuration") (attrs) 437*3d8817e4Smiod (type h-uint) (index f-rbbc) (handlers (parse "rbbc") (print "dollarhex"))) 438*3d8817e4Smiod 439*3d8817e4Smiod(define-operand (name colnum) (comment "column number") (attrs) 440*3d8817e4Smiod (type h-uint) (index f-colnum) (handlers (print "dollarhex"))) 441*3d8817e4Smiod 442*3d8817e4Smiod(define-operand (name rownum) (comment "row number") (attrs) 443*3d8817e4Smiod (type h-uint) (index f-rownum) (handlers (print "dollarhex"))) 444*3d8817e4Smiod 445*3d8817e4Smiod(define-operand (name rownum1) (comment "row number") (attrs) 446*3d8817e4Smiod (type h-uint) (index f-rownum1) (handlers (print "dollarhex"))) 447*3d8817e4Smiod 448*3d8817e4Smiod(define-operand (name rownum2) (comment "row number") (attrs) 449*3d8817e4Smiod (type h-uint) (index f-rownum2) (handlers (print "dollarhex"))) 450*3d8817e4Smiod 451*3d8817e4Smiod(define-operand (name rc1) (comment "rc1") (attrs) 452*3d8817e4Smiod (type h-uint) (index f-rc1) (handlers (parse "rc") (print "dollarhex"))) 453*3d8817e4Smiod 454*3d8817e4Smiod(define-operand (name rc2) (comment "rc2") (attrs) 455*3d8817e4Smiod (type h-uint) (index f-rc2) (handlers (parse "rc") (print "dollarhex"))) 456*3d8817e4Smiod 457*3d8817e4Smiod(define-operand (name cbrb) (comment "data-bus orientation") (attrs) 458*3d8817e4Smiod (type h-uint) (index f-cbrb) (handlers (parse "cbrb") (print "dollarhex"))) 459*3d8817e4Smiod 460*3d8817e4Smiod(define-operand (name cell) (comment "cell") (attrs) 461*3d8817e4Smiod (type h-uint) (index f-cell) (handlers (print "dollarhex"))) 462*3d8817e4Smiod 463*3d8817e4Smiod(define-operand (name dup) (comment "dup") (attrs) 464*3d8817e4Smiod (type h-uint) (index f-dup) (handlers (parse "dup") (print "dollarhex"))) 465*3d8817e4Smiod 466*3d8817e4Smiod(define-operand (name ctxdisp) (comment "context displacement") (attrs) 467*3d8817e4Smiod (type h-uint) (index f-ctxdisp) (handlers (print "dollarhex"))) 468*3d8817e4Smiod 469*3d8817e4Smiod(define-operand (name fbdisp) (comment "frame buffer displacement") (attrs) 470*3d8817e4Smiod (type h-uint) (index f-fbdisp) (handlers (print "dollarhex"))) 471*3d8817e4Smiod 472*3d8817e4Smiod(define-operand (name type) (comment "type") (attrs) 473*3d8817e4Smiod (type h-uint) (index f-type) (handlers (parse "type") (print "dollarhex"))) 474*3d8817e4Smiod 475*3d8817e4Smiod(define-operand (name mask) (comment "mask") (attrs) 476*3d8817e4Smiod (type h-uint) (index f-mask) (handlers (print "dollarhex"))) 477*3d8817e4Smiod 478*3d8817e4Smiod(define-operand (name bankaddr) (comment "bank address") (attrs) 479*3d8817e4Smiod (type h-uint) (index f-bankaddr) (handlers (print "dollarhex"))) 480*3d8817e4Smiod 481*3d8817e4Smiod(define-operand (name incamt) (comment "increment amount") (attrs) 482*3d8817e4Smiod (type h-uint) (index f-incamt) (handlers (print "dollarhex"))) 483*3d8817e4Smiod 484*3d8817e4Smiod(define-operand (name xmode) (comment "xmode") (attrs) 485*3d8817e4Smiod (type h-uint) (index f-xmode) (handlers (parse "xmode") (print "dollarhex"))) 486*3d8817e4Smiod 487*3d8817e4Smiod(define-operand (name mask1) (comment "mask1") (attrs) 488*3d8817e4Smiod (type h-uint) (index f-mask1) (handlers (print "dollarhex"))) 489*3d8817e4Smiod 490*3d8817e4Smiod(define-operand (name ball) (comment "b_all") (attrs) 491*3d8817e4Smiod (type h-uint) (index f-ball) (handlers (parse "ball") (print "dollarhex"))) 492*3d8817e4Smiod 493*3d8817e4Smiod(define-operand (name brc) (comment "b_r_c") (attrs) 494*3d8817e4Smiod (type h-uint) (index f-brc) (handlers (print "dollarhex"))) 495*3d8817e4Smiod 496*3d8817e4Smiod(define-operand (name rda) (comment "rd") (attrs) 497*3d8817e4Smiod (type h-uint) (index f-rda) (handlers (print "dollarhex"))) 498*3d8817e4Smiod 499*3d8817e4Smiod(define-operand (name wr) (comment "wr") (attrs) 500*3d8817e4Smiod (type h-uint) (index f-wr) (handlers (print "dollarhex"))) 501*3d8817e4Smiod 502*3d8817e4Smiod(define-operand (name ball2) (comment "b_all2") (attrs) 503*3d8817e4Smiod (type h-uint) (index f-ball2) (handlers (parse "ball") (print "dollarhex"))) 504*3d8817e4Smiod 505*3d8817e4Smiod(define-operand (name brc2) (comment "b_r_c2") (attrs) 506*3d8817e4Smiod (type h-uint) (index f-brc2) (handlers (print "dollarhex"))) 507*3d8817e4Smiod(define-operand (name perm) (comment "perm") (attrs) 508*3d8817e4Smiod (type h-uint) (index f-perm) (handlers (print "dollarhex"))) 509*3d8817e4Smiod(define-operand (name a23) (comment "a23") (attrs) 510*3d8817e4Smiod (type h-uint) (index f-a23) (handlers (print "dollarhex"))) 511*3d8817e4Smiod(define-operand (name cr) (comment "c-r") (attrs) 512*3d8817e4Smiod (type h-uint) (index f-cr) (handlers (print "dollarhex"))) 513*3d8817e4Smiod(define-operand (name cbs) (comment "cbs") (attrs) 514*3d8817e4Smiod (type h-uint) (index f-cbs) (handlers (print "dollarhex"))) 515*3d8817e4Smiod(define-operand (name incr) (comment "incr") (attrs) 516*3d8817e4Smiod (type h-uint) (index f-incr) (handlers (print "dollarhex"))) 517*3d8817e4Smiod(define-operand (name length) (comment "length") (attrs) 518*3d8817e4Smiod (type h-uint) (index f-length) (handlers (print "dollarhex"))) 519*3d8817e4Smiod(define-operand (name cbx) (comment "cbx") (attrs) 520*3d8817e4Smiod (type h-uint) (index f-cbx) (handlers (print "dollarhex"))) 521*3d8817e4Smiod(define-operand (name ccb) (comment "ccb") (attrs) 522*3d8817e4Smiod (type h-uint) (index f-ccb) (handlers (print "dollarhex"))) 523*3d8817e4Smiod(define-operand (name cdb) (comment "cdb") (attrs) 524*3d8817e4Smiod (type h-uint) (index f-cdb) (handlers (print "dollarhex"))) 525*3d8817e4Smiod 526*3d8817e4Smiod; For the INTLVR insn 527*3d8817e4Smiod(define-operand (name mode) (comment "mode") (attrs) 528*3d8817e4Smiod (type h-uint) (index f-mode) (handlers (print "dollarhex"))) 529*3d8817e4Smiod(define-operand (name id) (comment "i/d") (attrs) 530*3d8817e4Smiod (type h-uint) (index f-id) (handlers (print "dollarhex"))) 531*3d8817e4Smiod(define-operand (name size) (comment "size") (attrs) 532*3d8817e4Smiod (type h-uint) (index f-size) (handlers (print "dollarhex"))) 533*3d8817e4Smiod 534*3d8817e4Smiod(define-operand (name fbincr) (comment "fb incr") (attrs) 535*3d8817e4Smiod (type h-uint) (index f-fbincr) (handlers (print "dollarhex"))) 536*3d8817e4Smiod 537*3d8817e4Smiod; For the ms2 insns 538*3d8817e4Smiod(define-operand (name loopsize) (comment "immediate value") 539*3d8817e4Smiod (attrs (MACH ms2) PCREL-ADDR) 540*3d8817e4Smiod (type h-uint) (index f-loopo) (handlers (parse "loopsize") (print "pcrel"))) 541*3d8817e4Smiod(define-operand (name imm16l) (comment "immediate value") 542*3d8817e4Smiod (attrs (MACH ms2)) 543*3d8817e4Smiod (type h-uint) (index f-imm16l) (handlers (print "dollarhex"))) 544*3d8817e4Smiod(define-operand (name rc3) (comment "rc3") (attrs (MACH ms2)) 545*3d8817e4Smiod (type h-uint) (index f-rc3) (handlers (parse "rc") (print "dollarhex"))) 546*3d8817e4Smiod(define-operand (name cb1sel) (comment "cb1sel") (attrs (MACH ms2)) 547*3d8817e4Smiod (type h-uint) (index f-cb1sel) (handlers (print "dollarhex"))) 548*3d8817e4Smiod(define-operand (name cb2sel) (comment "cb2sel") (attrs (MACH ms2)) 549*3d8817e4Smiod (type h-uint) (index f-cb2sel) (handlers (print "dollarhex"))) 550*3d8817e4Smiod(define-operand (name cb1incr) (comment "cb1incr") (attrs (MACH ms2)) 551*3d8817e4Smiod (type h-sint) (index f-cb1incr) (handlers (print "dollarhex"))) 552*3d8817e4Smiod(define-operand (name cb2incr) (comment "cb2incr") (attrs (MACH ms2)) 553*3d8817e4Smiod (type h-sint) (index f-cb2incr) (handlers (print "dollarhex"))) 554*3d8817e4Smiod 555*3d8817e4Smiod; Probaby won't need most of these. 556*3d8817e4Smiod(define-pmacro r0 (reg h-spr #x0)) 557*3d8817e4Smiod(define-pmacro r1 (reg h-spr #x01)) 558*3d8817e4Smiod(define-pmacro r2 (reg h-spr #x02)) 559*3d8817e4Smiod(define-pmacro r3 (reg h-spr #x03)) 560*3d8817e4Smiod(define-pmacro r4 (reg h-spr #x04)) 561*3d8817e4Smiod(define-pmacro r5 (reg h-spr #x05)) 562*3d8817e4Smiod(define-pmacro r6 (reg h-spr #x06)) 563*3d8817e4Smiod(define-pmacro r7 (reg h-spr #x07)) 564*3d8817e4Smiod(define-pmacro r8 (reg h-spr #x08)) 565*3d8817e4Smiod(define-pmacro r9 (reg h-spr #x09)) 566*3d8817e4Smiod(define-pmacro r10 (reg h-spr #xA)) 567*3d8817e4Smiod(define-pmacro r11 (reg h-spr #xB)) 568*3d8817e4Smiod(define-pmacro r12 (reg h-spr #xC)) 569*3d8817e4Smiod(define-pmacro fp (reg h-spr #xC)) 570*3d8817e4Smiod(define-pmacro r13 (reg h-spr #xD)) 571*3d8817e4Smiod(define-pmacro sp (reg h-spr #xD)) 572*3d8817e4Smiod(define-pmacro r14 (reg h-spr #xE)) 573*3d8817e4Smiod(define-pmacro ra (reg h-spr #xE)) 574*3d8817e4Smiod(define-pmacro r15 (reg h-spr #xF)) 575*3d8817e4Smiod(define-pmacro ira (reg h-spr #xF)) 576*3d8817e4Smiod 577*3d8817e4Smiod; delayed set 578*3d8817e4Smiod(define-pmacro (dset dest src) (set (delay 1 dest) src)) 579*3d8817e4Smiod 580*3d8817e4Smiod 581*3d8817e4Smiod;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 582*3d8817e4Smiod;; Instructions As Defined In the MorphoRisc ISA Document ;; 583*3d8817e4Smiod;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 584*3d8817e4Smiod 585*3d8817e4Smiod; Arithmetic Instructions 586*3d8817e4Smiod 587*3d8817e4Smiod(dni add "ADD DstReg, SrcReg1, SrcReg2" 588*3d8817e4Smiod (AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2) 589*3d8817e4Smiod "add $frdrrr,$frsr1,$frsr2" 590*3d8817e4Smiod (+ MSYS_NO OPC_ADD IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 591*3d8817e4Smiod (set frdrrr (add SI frsr1 frsr2)) 592*3d8817e4Smiod () 593*3d8817e4Smiod) 594*3d8817e4Smiod 595*3d8817e4Smiod(dni addu "ADDU DstReg, SrcReg1, SrcReg2" 596*3d8817e4Smiod (AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2) 597*3d8817e4Smiod "addu $frdrrr,$frsr1,$frsr2" 598*3d8817e4Smiod (+ MSYS_NO OPC_ADDU IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 599*3d8817e4Smiod (set frdrrr (add USI frsr1 frsr2)) 600*3d8817e4Smiod () 601*3d8817e4Smiod) 602*3d8817e4Smiod 603*3d8817e4Smiod(dni addi "ADDI DstReg, SrcReg1 UnsImm" 604*3d8817e4Smiod (AL-INSN USES-FRDR USES-FRSR1) 605*3d8817e4Smiod "addi $frdr,$frsr1,#$imm16" 606*3d8817e4Smiod (+ MSYS_NO OPC_ADD IMM_YES frsr1 frdr imm16) 607*3d8817e4Smiod (sequence((HI tmp)) 608*3d8817e4Smiod (set HI tmp (and imm16 #xffff)) 609*3d8817e4Smiod (set frdr (add SI frsr1 (ext SI tmp))) 610*3d8817e4Smiod ) 611*3d8817e4Smiod () 612*3d8817e4Smiod) 613*3d8817e4Smiod 614*3d8817e4Smiod(dni addui "ADDUI DstReg, SrcReg1, UnsImm" 615*3d8817e4Smiod (AL-INSN USES-FRDR USES-FRSR1) 616*3d8817e4Smiod "addui $frdr,$frsr1,#$imm16z" 617*3d8817e4Smiod (+ MSYS_NO OPC_ADDU IMM_YES frsr1 frdr imm16z) 618*3d8817e4Smiod (set frdr (add USI frsr1 (ext USI imm16z))) 619*3d8817e4Smiod () 620*3d8817e4Smiod) 621*3d8817e4Smiod 622*3d8817e4Smiod(dni sub "SUB DstReg, SrcReg1, SrcReg2" 623*3d8817e4Smiod (AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2) 624*3d8817e4Smiod "sub $frdrrr,$frsr1,$frsr2" 625*3d8817e4Smiod (+ MSYS_NO OPC_SUB IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 626*3d8817e4Smiod (set frdrrr (sub SI frsr1 frsr2)) 627*3d8817e4Smiod () 628*3d8817e4Smiod) 629*3d8817e4Smiod 630*3d8817e4Smiod(dni subu "SUBU DstReg, SrcReg1, SrcReg2" 631*3d8817e4Smiod (AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2) 632*3d8817e4Smiod "subu $frdrrr,$frsr1,$frsr2" 633*3d8817e4Smiod (+ MSYS_NO OPC_SUBU IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 634*3d8817e4Smiod (set frdrrr (sub USI frsr1 frsr2)) 635*3d8817e4Smiod () 636*3d8817e4Smiod) 637*3d8817e4Smiod 638*3d8817e4Smiod(dni subi "SUBI DstReg, SrcReg1, UnsImm" 639*3d8817e4Smiod (AL-INSN USES-FRDR USES-FRSR1) 640*3d8817e4Smiod "subi $frdr,$frsr1,#$imm16" 641*3d8817e4Smiod (+ MSYS_NO OPC_SUB IMM_YES frsr1 frdr imm16) 642*3d8817e4Smiod (sequence((HI tmp)) 643*3d8817e4Smiod (set HI tmp (and imm16 #xffff)) 644*3d8817e4Smiod (set frdr (sub SI frsr1 (ext SI tmp))) 645*3d8817e4Smiod ) 646*3d8817e4Smiod ;(set frdr (sub SI frsr1 (ext SI imm16))) 647*3d8817e4Smiod () 648*3d8817e4Smiod) 649*3d8817e4Smiod 650*3d8817e4Smiod(dni subui "SUBUI DstReg, SrcReg1, UnsImm" 651*3d8817e4Smiod (AL-INSN USES-FRDR USES-FRSR1) 652*3d8817e4Smiod "subui $frdr,$frsr1,#$imm16z" 653*3d8817e4Smiod (+ MSYS_NO OPC_SUBU IMM_YES frsr1 frdr imm16z) 654*3d8817e4Smiod (set frdr (sub USI frsr1 (ext USI imm16z))) 655*3d8817e4Smiod () 656*3d8817e4Smiod) 657*3d8817e4Smiod 658*3d8817e4Smiod(dni mul "MUL DstReg, SrcReg1, SrcReg2" 659*3d8817e4Smiod ((MACH ms1-003,ms2) AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2) 660*3d8817e4Smiod "mul $frdrrr,$frsr1,$frsr2" 661*3d8817e4Smiod (+ MSYS_NO OPC_MUL IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 662*3d8817e4Smiod (sequence((HI op1) (HI op2)) 663*3d8817e4Smiod (set op1 (and frsr1 #xffff)) 664*3d8817e4Smiod (if (or (lt op1 (const -32768)) (gt op1 (const 32767))) 665*3d8817e4Smiod (error "operand out of range") 666*3d8817e4Smiod ) 667*3d8817e4Smiod (set op2 (and frsr2 #xffff)) 668*3d8817e4Smiod (if (or (lt op2 (const -32768)) (gt op2 (const 32767))) 669*3d8817e4Smiod (error "operand out of range") 670*3d8817e4Smiod ) 671*3d8817e4Smiod (set frdrrr (mul SI (ext SI op1) (ext SI op2))) 672*3d8817e4Smiod ) 673*3d8817e4Smiod () 674*3d8817e4Smiod) 675*3d8817e4Smiod 676*3d8817e4Smiod(dni muli "MULI DstReg, SrcReg1, UnsImm" 677*3d8817e4Smiod ((MACH ms1-003,ms2) AL-INSN USES-FRDR USES-FRSR1) 678*3d8817e4Smiod "muli $frdr,$frsr1,#$imm16" 679*3d8817e4Smiod (+ MSYS_NO OPC_MUL IMM_YES frsr1 frdr imm16) 680*3d8817e4Smiod (sequence((HI op1) (HI op2)) 681*3d8817e4Smiod (set op1 (and frsr1 #xffff)) 682*3d8817e4Smiod (if (or (lt op1 (const -32768)) (gt op1 (const 32767))) 683*3d8817e4Smiod (error "operand out of range") 684*3d8817e4Smiod ) 685*3d8817e4Smiod (set op2 (and imm16 #xffff)) 686*3d8817e4Smiod (if (eq op1 (const 0)) 687*3d8817e4Smiod (error "op1 is 0") 688*3d8817e4Smiod ) 689*3d8817e4Smiod (if (eq op2 (const 0)) 690*3d8817e4Smiod (error "op2 is 0") 691*3d8817e4Smiod ) 692*3d8817e4Smiod (set frdr (mul SI (ext SI op1) (ext SI op2))) 693*3d8817e4Smiod ) 694*3d8817e4Smiod () 695*3d8817e4Smiod) 696*3d8817e4Smiod 697*3d8817e4Smiod; Logical Instructions 698*3d8817e4Smiod 699*3d8817e4Smiod(dni and "AND DstReg, SrcReg1, SrcReg2" 700*3d8817e4Smiod (AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2) 701*3d8817e4Smiod "and $frdrrr,$frsr1,$frsr2" 702*3d8817e4Smiod (+ MSYS_NO OPC_AND IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 703*3d8817e4Smiod (set frdrrr (and frsr1 frsr2)) 704*3d8817e4Smiod () 705*3d8817e4Smiod) 706*3d8817e4Smiod 707*3d8817e4Smiod(dni andi "ANDI DstReg, SrcReg1, UnsImm" 708*3d8817e4Smiod (AL-INSN USES-FRDR USES-FRSR1) 709*3d8817e4Smiod "andi $frdr,$frsr1,#$imm16z" 710*3d8817e4Smiod (+ MSYS_NO OPC_AND IMM_YES frsr1 frdr imm16z) 711*3d8817e4Smiod (set frdr (and frsr1 (ext USI imm16z))) 712*3d8817e4Smiod () 713*3d8817e4Smiod) 714*3d8817e4Smiod 715*3d8817e4Smiod(dni or "OR DstReg, SrcReg1, SrcReg2" 716*3d8817e4Smiod (AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2) 717*3d8817e4Smiod "or $frdrrr,$frsr1,$frsr2" 718*3d8817e4Smiod (+ MSYS_NO OPC_OR IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 719*3d8817e4Smiod (set frdrrr (or frsr1 frsr2)) 720*3d8817e4Smiod () 721*3d8817e4Smiod) 722*3d8817e4Smiod 723*3d8817e4Smiod(dni nop "nop" 724*3d8817e4Smiod () 725*3d8817e4Smiod "nop" 726*3d8817e4Smiod (+ MSYS_NO OPC_OR IMM_NO (f-uu24 0)) 727*3d8817e4Smiod (nop) 728*3d8817e4Smiod () 729*3d8817e4Smiod) 730*3d8817e4Smiod 731*3d8817e4Smiod(dni ori "ORI DstReg, SrcReg1, UnsImm" 732*3d8817e4Smiod (AL-INSN USES-FRDR USES-FRSR1) 733*3d8817e4Smiod "ori $frdr,$frsr1,#$imm16z" 734*3d8817e4Smiod (+ MSYS_NO OPC_OR IMM_YES frsr1 frdr imm16z) 735*3d8817e4Smiod (set frdr (or frsr1 (ext USI imm16z))) 736*3d8817e4Smiod () 737*3d8817e4Smiod) 738*3d8817e4Smiod 739*3d8817e4Smiod(dni xor "XOR DstReg, SrcReg1, SrcReg2" 740*3d8817e4Smiod (AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2) 741*3d8817e4Smiod "xor $frdrrr,$frsr1,$frsr2" 742*3d8817e4Smiod (+ MSYS_NO OPC_XOR IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 743*3d8817e4Smiod (set frdrrr (xor frsr1 frsr2)) 744*3d8817e4Smiod () 745*3d8817e4Smiod) 746*3d8817e4Smiod 747*3d8817e4Smiod(dni xori "XORI DstReg, SrcReg1, UnsImm" 748*3d8817e4Smiod (AL-INSN USES-FRDR USES-FRSR1) 749*3d8817e4Smiod "xori $frdr,$frsr1,#$imm16z" 750*3d8817e4Smiod (+ MSYS_NO OPC_XOR IMM_YES frsr1 frdr imm16z) 751*3d8817e4Smiod (set frdr (xor frsr1 (ext USI imm16z))) 752*3d8817e4Smiod () 753*3d8817e4Smiod) 754*3d8817e4Smiod 755*3d8817e4Smiod(dni nand "NAND DstReg, SrcReg1, SrcReg2" 756*3d8817e4Smiod (AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2) 757*3d8817e4Smiod "nand $frdrrr,$frsr1,$frsr2" 758*3d8817e4Smiod (+ MSYS_NO OPC_NAND IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 759*3d8817e4Smiod (set frdrrr (inv (and frsr1 frsr2))) 760*3d8817e4Smiod () 761*3d8817e4Smiod) 762*3d8817e4Smiod 763*3d8817e4Smiod(dni nandi "NANDI DstReg, SrcReg1, UnsImm" 764*3d8817e4Smiod (AL-INSN USES-FRDR USES-FRSR1) 765*3d8817e4Smiod "nandi $frdr,$frsr1,#$imm16z" 766*3d8817e4Smiod (+ MSYS_NO OPC_NAND IMM_YES frsr1 frdr imm16z) 767*3d8817e4Smiod (set frdr (inv (and frsr1 (ext USI imm16z)))) 768*3d8817e4Smiod () 769*3d8817e4Smiod) 770*3d8817e4Smiod 771*3d8817e4Smiod(dni nor "NOR DstReg, SrcReg1, SrcReg2" 772*3d8817e4Smiod (AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2) 773*3d8817e4Smiod "nor $frdrrr,$frsr1,$frsr2" 774*3d8817e4Smiod (+ MSYS_NO OPC_NOR IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 775*3d8817e4Smiod (set frdrrr (inv (or frsr1 frsr2))) 776*3d8817e4Smiod () 777*3d8817e4Smiod) 778*3d8817e4Smiod 779*3d8817e4Smiod(dni nori "NORI DstReg, SrcReg1, UnsImm" 780*3d8817e4Smiod (AL-INSN USES-FRDR USES-FRSR1) 781*3d8817e4Smiod "nori $frdr,$frsr1,#$imm16z" 782*3d8817e4Smiod (+ MSYS_NO OPC_NOR IMM_YES frsr1 frdr imm16z) 783*3d8817e4Smiod (set frdr (inv (or frsr1 (ext USI imm16z)))) 784*3d8817e4Smiod () 785*3d8817e4Smiod) 786*3d8817e4Smiod 787*3d8817e4Smiod(dni xnor "XNOR DstReg, SrcReg1, SrcReg2" 788*3d8817e4Smiod (AL-INSN USES-FRDRRR USES-FRSR1 USES-FRSR2) 789*3d8817e4Smiod "xnor $frdrrr,$frsr1,$frsr2" 790*3d8817e4Smiod (+ MSYS_NO OPC_XNOR IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 791*3d8817e4Smiod (set frdrrr (inv (xor frsr1 frsr2))) 792*3d8817e4Smiod () 793*3d8817e4Smiod) 794*3d8817e4Smiod 795*3d8817e4Smiod(dni xnori "XNORI DstReg, SrcReg1, UnsImm" 796*3d8817e4Smiod (AL-INSN USES-FRDR USES-FRSR1) 797*3d8817e4Smiod "xnori $frdr,$frsr1,#$imm16z" 798*3d8817e4Smiod (+ MSYS_NO OPC_XNOR IMM_YES frsr1 frdr imm16z) 799*3d8817e4Smiod (set frdr (inv (xor frsr1 (ext USI imm16z)))) 800*3d8817e4Smiod () 801*3d8817e4Smiod) 802*3d8817e4Smiod 803*3d8817e4Smiod(dni ldui "LDUI DstReg, UnsImm" 804*3d8817e4Smiod (AL-INSN USES-FRDR) 805*3d8817e4Smiod "ldui $frdr,#$imm16z" 806*3d8817e4Smiod (+ MSYS_NO OPC_LDUI IMM_YES (f-uu4b 0) frdr imm16z) 807*3d8817e4Smiod (set frdr (and (sll imm16z 16) #xffff0000)) 808*3d8817e4Smiod () 809*3d8817e4Smiod) 810*3d8817e4Smiod 811*3d8817e4Smiod; Shift Instructions 812*3d8817e4Smiod 813*3d8817e4Smiod(dni lsl "LSL DstReg, SrcReg1, SrcReg2" 814*3d8817e4Smiod (USES-FRDRRR USES-FRSR1 USES-FRSR2) 815*3d8817e4Smiod "lsl $frdrrr,$frsr1,$frsr2" 816*3d8817e4Smiod (+ MSYS_NO OPC_LSL IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 817*3d8817e4Smiod (set frdrrr (sll frsr1 frsr2)) 818*3d8817e4Smiod () 819*3d8817e4Smiod) 820*3d8817e4Smiod 821*3d8817e4Smiod(dni lsli "LSLI DstReg, SrcReg1, UnsImm" 822*3d8817e4Smiod (USES-FRDR USES-FRSR1) 823*3d8817e4Smiod "lsli $frdr,$frsr1,#$imm16" 824*3d8817e4Smiod (+ MSYS_NO OPC_LSL IMM_YES frsr1 frdr imm16) 825*3d8817e4Smiod (set frdr (sll frsr1 imm16)) 826*3d8817e4Smiod () 827*3d8817e4Smiod) 828*3d8817e4Smiod 829*3d8817e4Smiod(dni lsr "LSR DstReg, SrcReg1, SrcReg2" 830*3d8817e4Smiod (USES-FRDRRR USES-FRSR1 USES-FRSR2) 831*3d8817e4Smiod "lsr $frdrrr,$frsr1,$frsr2" 832*3d8817e4Smiod (+ MSYS_NO OPC_LSR IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 833*3d8817e4Smiod (set frdrrr (srl frsr1 frsr2)) 834*3d8817e4Smiod () 835*3d8817e4Smiod) 836*3d8817e4Smiod 837*3d8817e4Smiod(dni lsri "LSRI DstReg, SrcReg1, UnsImm" 838*3d8817e4Smiod (USES-FRDR USES-FRSR1) 839*3d8817e4Smiod "lsri $frdr,$frsr1,#$imm16" 840*3d8817e4Smiod (+ MSYS_NO OPC_LSR IMM_YES frsr1 frdr imm16) 841*3d8817e4Smiod (set frdr (srl frsr1 imm16)) 842*3d8817e4Smiod () 843*3d8817e4Smiod) 844*3d8817e4Smiod 845*3d8817e4Smiod(dni asr "ASR DstReg, SrcReg1, SrcReg2" 846*3d8817e4Smiod (USES-FRDRRR USES-FRSR1 USES-FRSR2) 847*3d8817e4Smiod "asr $frdrrr,$frsr1,$frsr2" 848*3d8817e4Smiod (+ MSYS_NO OPC_ASR IMM_NO frsr1 frsr2 frdrrr (f-uu12 0)) 849*3d8817e4Smiod (set frdrrr (sra frsr1 frsr2)) 850*3d8817e4Smiod () 851*3d8817e4Smiod) 852*3d8817e4Smiod 853*3d8817e4Smiod(dni asri "ASRI DstReg, SrcReg1, UnsImm" 854*3d8817e4Smiod (USES-FRDR USES-FRSR1) 855*3d8817e4Smiod "asri $frdr,$frsr1,#$imm16" 856*3d8817e4Smiod (+ MSYS_NO OPC_ASR IMM_YES frsr1 frdr imm16) 857*3d8817e4Smiod (set frdr (sra frsr1 imm16)) 858*3d8817e4Smiod () 859*3d8817e4Smiod) 860*3d8817e4Smiod 861*3d8817e4Smiod; Control Transfer Instructions 862*3d8817e4Smiod 863*3d8817e4Smiod(dni brlt "BRLT SrcReg1, SrcReg2, label" 864*3d8817e4Smiod (BR-INSN DELAY-SLOT USES-FRDRRR USES-FRSR1 USES-FRSR2) 865*3d8817e4Smiod "brlt $frsr1,$frsr2,$imm16o" 866*3d8817e4Smiod (+ MSYS_NO OPC_BRLT IMM_YES frsr1 frsr2 imm16o) 867*3d8817e4Smiod (sequence() 868*3d8817e4Smiod (if (lt USI frsr1 frsr2) 869*3d8817e4Smiod (dset pc (add pc (ext SI imm16o)))) 870*3d8817e4Smiod ) 871*3d8817e4Smiod () 872*3d8817e4Smiod) 873*3d8817e4Smiod 874*3d8817e4Smiod(dni brle "BRLE SrcReg1, SrcReg2, label" 875*3d8817e4Smiod (BR-INSN DELAY-SLOT USES-FRSR1 USES-FRSR2) 876*3d8817e4Smiod "brle $frsr1,$frsr2,$imm16o" 877*3d8817e4Smiod (+ MSYS_NO OPC_BRLE IMM_YES frsr1 frsr2 imm16o) 878*3d8817e4Smiod (sequence() 879*3d8817e4Smiod (if (le USI frsr1 frsr2) 880*3d8817e4Smiod (dset pc (add pc (ext SI imm16o)))) 881*3d8817e4Smiod ) 882*3d8817e4Smiod () 883*3d8817e4Smiod) 884*3d8817e4Smiod 885*3d8817e4Smiod(dni breq "BREQ SrcReg1, SrcReg2, label" 886*3d8817e4Smiod (BR-INSN DELAY-SLOT USES-FRSR1 USES-FRSR2) 887*3d8817e4Smiod "breq $frsr1,$frsr2,$imm16o" 888*3d8817e4Smiod (+ MSYS_NO OPC_BREQ IMM_YES frsr1 frsr2 imm16o) 889*3d8817e4Smiod (sequence() 890*3d8817e4Smiod (if (eq USI frsr1 frsr2) 891*3d8817e4Smiod (dset pc (add pc (ext SI imm16o)))) 892*3d8817e4Smiod ) 893*3d8817e4Smiod () 894*3d8817e4Smiod) 895*3d8817e4Smiod 896*3d8817e4Smiod(dni brne "BRNE SrcReg1, SrcReg2, label" 897*3d8817e4Smiod (BR-INSN DELAY-SLOT USES-FRSR1 USES-FRSR2) 898*3d8817e4Smiod "brne $frsr1,$frsr2,$imm16o" 899*3d8817e4Smiod (+ MSYS_NO OPC_BRNEQ IMM_YES frsr1 frsr2 imm16o) 900*3d8817e4Smiod (sequence() 901*3d8817e4Smiod (if (not (eq USI frsr1 frsr2)) 902*3d8817e4Smiod (dset pc (add pc (ext SI imm16o)))) 903*3d8817e4Smiod ) 904*3d8817e4Smiod () 905*3d8817e4Smiod) 906*3d8817e4Smiod 907*3d8817e4Smiod(dni jmp "JMP, label" 908*3d8817e4Smiod (DELAY-SLOT BR-INSN) 909*3d8817e4Smiod "jmp $imm16o" 910*3d8817e4Smiod (+ MSYS_NO OPC_JMP IMM_YES (f-uu4b 0) (f-uu4a 0) imm16o) 911*3d8817e4Smiod (dset pc (add pc (ext SI imm16o))) 912*3d8817e4Smiod () 913*3d8817e4Smiod) 914*3d8817e4Smiod 915*3d8817e4Smiod(dni jal "JAL DstReg, SrcReg1" 916*3d8817e4Smiod (BR-INSN DELAY-SLOT BR-INSN USES-FRDR USES-FRSR1 JAL-HAZARD) 917*3d8817e4Smiod "jal $frdrrr,$frsr1" 918*3d8817e4Smiod (+ MSYS_NO OPC_JAL IMM_NO frsr1 (f-uu4a 0) frdrrr (f-uu12 0)) 919*3d8817e4Smiod (sequence() 920*3d8817e4Smiod (if (eq frsr1 #x0) 921*3d8817e4Smiod (c-call VOID "do_syscall" pc) 922*3d8817e4Smiod (sequence() ; else part. Do non-syscall stuff here. 923*3d8817e4Smiod (dset frdrrr (add pc #x8)) 924*3d8817e4Smiod (dset pc frsr1) 925*3d8817e4Smiod ) 926*3d8817e4Smiod ) 927*3d8817e4Smiod ) 928*3d8817e4Smiod () 929*3d8817e4Smiod) 930*3d8817e4Smiod 931*3d8817e4Smiod(dni dbnz "DBNZ SrcReg1, label" 932*3d8817e4Smiod ((MACH ms1-003,ms2) BR-INSN DELAY-SLOT USES-FRSR1) 933*3d8817e4Smiod "dbnz $frsr1,$imm16o" 934*3d8817e4Smiod (+ MSYS_NO OPC_DBNZ IMM_YES frsr1 (f-uu4a 0) imm16o) 935*3d8817e4Smiod (sequence() 936*3d8817e4Smiod (if (not (eq USI frsr1 0)) 937*3d8817e4Smiod (dset pc (add pc (ext SI imm16o)))) 938*3d8817e4Smiod ) 939*3d8817e4Smiod () 940*3d8817e4Smiod) 941*3d8817e4Smiod 942*3d8817e4Smiod; Interrupt Control Instructions 943*3d8817e4Smiod 944*3d8817e4Smiod(dni ei "EI - Enable Interrupt Processing" 945*3d8817e4Smiod () 946*3d8817e4Smiod "ei" 947*3d8817e4Smiod (+ MSYS_NO OPC_EI IMM_NO (f-uu4b 0) (f-uu4a 0) (f-uu16 0)) 948*3d8817e4Smiod (c-call VOID "enable_interrupts") 949*3d8817e4Smiod () 950*3d8817e4Smiod) 951*3d8817e4Smiod 952*3d8817e4Smiod(dni di "DI - Disable Interrupt Processing" 953*3d8817e4Smiod () 954*3d8817e4Smiod "di" 955*3d8817e4Smiod (+ MSYS_NO OPC_DI IMM_NO (f-uu4b 0) (f-uu4a 0) (f-uu16 0)) 956*3d8817e4Smiod (c-call VOID "disable_interrupts") 957*3d8817e4Smiod () 958*3d8817e4Smiod) 959*3d8817e4Smiod 960*3d8817e4Smiod(dni si "SI - Send software Interrupt" 961*3d8817e4Smiod (DELAY-SLOT BR-INSN USES-FRDR) 962*3d8817e4Smiod "si $frdrrr" 963*3d8817e4Smiod (+ MSYS_NO OPC_SI IMM_NO (f-uu4b 0) (f-uu4a 0) frdrrr (f-uu12 0)) 964*3d8817e4Smiod ;(sequence() 965*3d8817e4Smiod ; (dset frdr (add pc #x4)) 966*3d8817e4Smiod ; (c-call VOID "do_syscall1" pc) 967*3d8817e4Smiod ; ; (dset pc frsr1) Do this later when we have the address. 968*3d8817e4Smiod ;) 969*3d8817e4Smiod (sequence() 970*3d8817e4Smiod (set frdrrr (add pc #x4)) 971*3d8817e4Smiod (c-call VOID "do_syscall" pc) 972*3d8817e4Smiod ; (set pc frsr1) Do this later when we have the address. 973*3d8817e4Smiod ) 974*3d8817e4Smiod () 975*3d8817e4Smiod) 976*3d8817e4Smiod 977*3d8817e4Smiod(dni reti "RETI SrcReg1" 978*3d8817e4Smiod (DELAY-SLOT BR-INSN USES-FRSR1 JAL-HAZARD) 979*3d8817e4Smiod "reti $frsr1" 980*3d8817e4Smiod (+ MSYS_NO OPC_RETI IMM_NO frsr1 (f-uu4a 0) (f-uu16 0)) 981*3d8817e4Smiod (sequence() 982*3d8817e4Smiod (c-call VOID "enable_interrupts") 983*3d8817e4Smiod (dset pc frsr1) 984*3d8817e4Smiod ) 985*3d8817e4Smiod () 986*3d8817e4Smiod) 987*3d8817e4Smiod 988*3d8817e4Smiod; Memory Access Instructions 989*3d8817e4Smiod 990*3d8817e4Smiod(dni ldw "LDW DstReg, SrcReg1, Imm" 991*3d8817e4Smiod (LOAD-DELAY MEMORY-ACCESS USES-FRDR USES-FRSR1) 992*3d8817e4Smiod "ldw $frdr,$frsr1,#$imm16" 993*3d8817e4Smiod (+ MSYS_NO OPC_LDW IMM_YES frsr1 frdr imm16) 994*3d8817e4Smiod (sequence((USI ea) (HI tmp)) 995*3d8817e4Smiod (set HI tmp (and imm16 #xffff)) 996*3d8817e4Smiod (set ea (and (add SI frsr1 (ext SI tmp)) #xfffffffc)) 997*3d8817e4Smiod (set frdr (mem SI ea)) 998*3d8817e4Smiod ) 999*3d8817e4Smiod () 1000*3d8817e4Smiod) 1001*3d8817e4Smiod 1002*3d8817e4Smiod(dni stw "STW SrcReg2, SrcReg1, Imm" 1003*3d8817e4Smiod (MEMORY-ACCESS USES-FRSR1 USES-FRSR2) 1004*3d8817e4Smiod "stw $frsr2,$frsr1,#$imm16" 1005*3d8817e4Smiod (+ MSYS_NO OPC_STW IMM_YES frsr1 frsr2 imm16) 1006*3d8817e4Smiod (sequence((USI ea) (HI tmp)) 1007*3d8817e4Smiod (set HI tmp (and imm16 #xffff)) 1008*3d8817e4Smiod (set ea (and (add SI frsr1 (ext SI tmp)) #xfffffffc)) 1009*3d8817e4Smiod (set (mem SI ea) frsr2) 1010*3d8817e4Smiod ) 1011*3d8817e4Smiod () 1012*3d8817e4Smiod) 1013*3d8817e4Smiod 1014*3d8817e4Smiod; Break Instruction 1015*3d8817e4Smiod 1016*3d8817e4Smiod(dni break "BREAK" 1017*3d8817e4Smiod () 1018*3d8817e4Smiod "break" 1019*3d8817e4Smiod (+ MSYS_NO OPC_BREAK (f-imm 0) (f-uu24 0)) 1020*3d8817e4Smiod (c-call VOID "do_break" pc) 1021*3d8817e4Smiod () 1022*3d8817e4Smiod) 1023*3d8817e4Smiod 1024*3d8817e4Smiod; Cache Flush Instruction 1025*3d8817e4Smiod 1026*3d8817e4Smiod(dni iflush "IFLUSH" 1027*3d8817e4Smiod ((MACH ms1-003,ms2)) 1028*3d8817e4Smiod "iflush" 1029*3d8817e4Smiod (+ MSYS_NO OPC_IFLUSH (f-imm 0) (f-uu24 0)) 1030*3d8817e4Smiod (nop) 1031*3d8817e4Smiod () 1032*3d8817e4Smiod) 1033*3d8817e4Smiod 1034*3d8817e4Smiod; MorphoSys Instructions 1035*3d8817e4Smiod 1036*3d8817e4Smiod(dni ldctxt "LDCTXT SRC1, SRC2, r/c, r/c#, context#" 1037*3d8817e4Smiod ((MACH ms1)) 1038*3d8817e4Smiod "ldctxt $frsr1,$frsr2,#$rc,#$rcnum,#$contnum" 1039*3d8817e4Smiod (+ MSYS_YES MSOPC_LDCTXT (f-uu-2-25 0) frsr1 frsr2 rc rcnum (f-uu-3-11 0) 1040*3d8817e4Smiod contnum ) 1041*3d8817e4Smiod (nop) 1042*3d8817e4Smiod () 1043*3d8817e4Smiod) 1044*3d8817e4Smiod 1045*3d8817e4Smiod(dni ldfb "LDFB SRC1, byte#" 1046*3d8817e4Smiod ((MACH ms1)) 1047*3d8817e4Smiod "ldfb $frsr1,$frsr2,#$imm16z" 1048*3d8817e4Smiod (+ MSYS_YES MSOPC_LDFB (f-uu-2-25 0) frsr1 frsr2 imm16z) 1049*3d8817e4Smiod (nop) 1050*3d8817e4Smiod () 1051*3d8817e4Smiod) 1052*3d8817e4Smiod 1053*3d8817e4Smiod(dni stfb "STFB SRC1, SRC2, byte " 1054*3d8817e4Smiod ((MACH ms1)) 1055*3d8817e4Smiod "stfb $frsr1,$frsr2,#$imm16z" 1056*3d8817e4Smiod (+ MSYS_YES MSOPC_STFB (f-uu-2-25 0) frsr1 frsr2 imm16z) 1057*3d8817e4Smiod (nop) 1058*3d8817e4Smiod () 1059*3d8817e4Smiod) 1060*3d8817e4Smiod 1061*3d8817e4Smiod(dni fbcb "FBCB SRC1, RT/BR1/BR2/CS, B_all, B_r_c, r/c, CB/RB, cell, dup, ctx_disp" 1062*3d8817e4Smiod ((MACH ms1,ms1-003)) 1063*3d8817e4Smiod "fbcb $frsr1,#$rbbc,#$ball,#$brc,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp" 1064*3d8817e4Smiod (+ MSYS_YES MSOPC_FBCB rbbc frsr1 ball brc (f-uu-4-15 0) rc cbrb cell dup ctxdisp) 1065*3d8817e4Smiod (nop) 1066*3d8817e4Smiod () 1067*3d8817e4Smiod) 1068*3d8817e4Smiod 1069*3d8817e4Smiod(dni mfbcb "MFBCB SRC1, RT/BR1/BR2/CS, SRC2, r/c, CB/RB, cell, dup, ctx_disp" 1070*3d8817e4Smiod () 1071*3d8817e4Smiod "mfbcb $frsr1,#$rbbc,$frsr2,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp" 1072*3d8817e4Smiod (+ MSYS_YES MSOPC_MFBCB rbbc frsr1 frsr2 (f-uu-4-15 0) rc1 cbrb cell dup ctxdisp) 1073*3d8817e4Smiod (nop) 1074*3d8817e4Smiod () 1075*3d8817e4Smiod) 1076*3d8817e4Smiod 1077*3d8817e4Smiod(dni fbcci "FBCCI SRC1, RT/BR1/BR2/CS, B_all, B_r_c, FB_disp, cell, dup, ctx_disp" 1078*3d8817e4Smiod () 1079*3d8817e4Smiod "fbcci $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp" 1080*3d8817e4Smiod (+ MSYS_YES MSOPC_FBCCI rbbc frsr1 ball brc fbdisp cell dup ctxdisp) 1081*3d8817e4Smiod (nop) 1082*3d8817e4Smiod () 1083*3d8817e4Smiod) 1084*3d8817e4Smiod 1085*3d8817e4Smiod(dni fbrci "FBRCI SRC1, RT/BR1/BR2/CS, B_all, B_r_c, FB_disp, cell, dup, ctx_disp" 1086*3d8817e4Smiod () 1087*3d8817e4Smiod "fbrci $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp" 1088*3d8817e4Smiod (+ MSYS_YES MSOPC_FBRCI rbbc frsr1 ball brc fbdisp cell dup ctxdisp) 1089*3d8817e4Smiod (nop) 1090*3d8817e4Smiod () 1091*3d8817e4Smiod) 1092*3d8817e4Smiod 1093*3d8817e4Smiod(dni fbcri "FBCRI SRC1, RT/BR1/BR2/CS, B_all, B_r_c, FB_disp, cell, dup, ctx_disp" 1094*3d8817e4Smiod () 1095*3d8817e4Smiod "fbcri $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp" 1096*3d8817e4Smiod (+ MSYS_YES MSOPC_FBCRI rbbc frsr1 ball brc fbdisp cell dup ctxdisp) 1097*3d8817e4Smiod (nop) 1098*3d8817e4Smiod () 1099*3d8817e4Smiod) 1100*3d8817e4Smiod 1101*3d8817e4Smiod(dni fbrri "FBRRI SRC1, RT/BR1/BR2/CS, B_all, B_r_c, FB_disp, cell, dup, ctx_disp" 1102*3d8817e4Smiod () 1103*3d8817e4Smiod "fbrri $frsr1,#$rbbc,#$ball,#$brc,#$fbdisp,#$cell,#$dup,#$ctxdisp" 1104*3d8817e4Smiod (+ MSYS_YES MSOPC_FBRRI rbbc frsr1 ball brc fbdisp cell dup ctxdisp) 1105*3d8817e4Smiod (nop) 1106*3d8817e4Smiod () 1107*3d8817e4Smiod) 1108*3d8817e4Smiod 1109*3d8817e4Smiod(dni mfbcci "MFBCCI SRC1, RT/BR1/BR2/CS, SRC2, FB_disp, cell, dup, ctx_disp" 1110*3d8817e4Smiod () 1111*3d8817e4Smiod "mfbcci $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp" 1112*3d8817e4Smiod (+ MSYS_YES MSOPC_MFBCCI rbbc frsr1 frsr2 fbdisp cell dup ctxdisp) 1113*3d8817e4Smiod (nop) 1114*3d8817e4Smiod () 1115*3d8817e4Smiod) 1116*3d8817e4Smiod 1117*3d8817e4Smiod(dni mfbrci "MFBRCI SRC1, RT/BR1/BR2/CS, SRC2, FB_disp, cell, dup, ctx_disp" 1118*3d8817e4Smiod () 1119*3d8817e4Smiod "mfbrci $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp" 1120*3d8817e4Smiod (+ MSYS_YES MSOPC_MFBRCI rbbc frsr1 frsr2 fbdisp cell dup ctxdisp) 1121*3d8817e4Smiod (nop) 1122*3d8817e4Smiod () 1123*3d8817e4Smiod) 1124*3d8817e4Smiod 1125*3d8817e4Smiod(dni mfbcri "MFBCRI SRC1, RT/BR1/BR2/CS, SRC2, FB_disp, cell, dup, ctx_disp" 1126*3d8817e4Smiod () 1127*3d8817e4Smiod "mfbcri $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp" 1128*3d8817e4Smiod (+ MSYS_YES MSOPC_MFBCRI rbbc frsr1 frsr2 fbdisp cell dup ctxdisp) 1129*3d8817e4Smiod (nop) 1130*3d8817e4Smiod () 1131*3d8817e4Smiod) 1132*3d8817e4Smiod 1133*3d8817e4Smiod(dni mfbrri "MFBRRI SRC1, RT/BR1/BR2/CS, SRC2, FB_disp, cell, dup, ctx_disp" 1134*3d8817e4Smiod () 1135*3d8817e4Smiod "mfbrri $frsr1,#$rbbc,$frsr2,#$fbdisp,#$cell,#$dup,#$ctxdisp" 1136*3d8817e4Smiod (+ MSYS_YES MSOPC_MFBRRI rbbc frsr1 frsr2 fbdisp cell dup ctxdisp) 1137*3d8817e4Smiod (nop) 1138*3d8817e4Smiod () 1139*3d8817e4Smiod) 1140*3d8817e4Smiod 1141*3d8817e4Smiod(dni fbcbdr "FBCBDR SRC1, RT/BR1/BR2/CS, SRC2, B_all, B_r_c, r/c, CB/RB, cell, dup, ctx_disp" 1142*3d8817e4Smiod () 1143*3d8817e4Smiod "fbcbdr $frsr1,#$rbbc,$frsr2,#$ball2,#$brc2,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp" 1144*3d8817e4Smiod (+ MSYS_YES MSOPC_FBCBDR rbbc frsr1 frsr2 ball2 brc2 rc1 cbrb cell dup ctxdisp) 1145*3d8817e4Smiod (nop) 1146*3d8817e4Smiod () 1147*3d8817e4Smiod) 1148*3d8817e4Smiod 1149*3d8817e4Smiod(dni rcfbcb "RCFBCB RT/BR1/BR2/CS, type, B_all, B_r_c, row#, r/c, CB/RB, cell, dup, ctx_disp" 1150*3d8817e4Smiod () 1151*3d8817e4Smiod "rcfbcb #$rbbc,#$type,#$ball,#$brc,#$rownum,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp" 1152*3d8817e4Smiod (+ MSYS_YES MSOPC_RCFBCB rbbc (f-uu-2-23 0) type ball brc (f-uu-1-15 0) rownum rc1 cbrb cell dup ctxdisp) 1153*3d8817e4Smiod (nop) 1154*3d8817e4Smiod () 1155*3d8817e4Smiod) 1156*3d8817e4Smiod 1157*3d8817e4Smiod(dni mrcfbcb "MRCFBCB SRC2, RT/BR1/BR2/CS, type, row#, r/c, CB/RB, cell, dup, ctx_disp" 1158*3d8817e4Smiod () 1159*3d8817e4Smiod "mrcfbcb $frsr2,#$rbbc,#$type,#$rownum,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp" 1160*3d8817e4Smiod (+ MSYS_YES MSOPC_MRCFBCB rbbc (f-uu-2-23 0) type frsr2 (f-uu-1-15 0) rownum rc1 cbrb cell dup ctxdisp) 1161*3d8817e4Smiod (nop) 1162*3d8817e4Smiod () 1163*3d8817e4Smiod) 1164*3d8817e4Smiod 1165*3d8817e4Smiod(dni cbcast "CBCAST mask, r/c, ctx_disp " 1166*3d8817e4Smiod () 1167*3d8817e4Smiod "cbcast #$mask,#$rc2,#$ctxdisp" 1168*3d8817e4Smiod (+ MSYS_YES MSOPC_CBCAST mask (f-uu-3-9 0) rc2 ctxdisp) 1169*3d8817e4Smiod (nop) 1170*3d8817e4Smiod () 1171*3d8817e4Smiod) 1172*3d8817e4Smiod 1173*3d8817e4Smiod(dni dupcbcast "DUPCBCAST mask, cell, r/c, ctx_disp " 1174*3d8817e4Smiod () 1175*3d8817e4Smiod "dupcbcast #$mask,#$cell,#$rc2,#$ctxdisp" 1176*3d8817e4Smiod (+ MSYS_YES MSOPC_DUPCBCAST mask cell rc2 ctxdisp) 1177*3d8817e4Smiod (nop) 1178*3d8817e4Smiod () 1179*3d8817e4Smiod) 1180*3d8817e4Smiod 1181*3d8817e4Smiod(dni wfbi "WFBI Bank_address, row#, cell, dup, ctx_disp " 1182*3d8817e4Smiod () 1183*3d8817e4Smiod "wfbi #$bankaddr,#$rownum1,#$cell,#$dup,#$ctxdisp" 1184*3d8817e4Smiod (+ MSYS_YES MSOPC_WFBI bankaddr rownum1 cell dup ctxdisp) 1185*3d8817e4Smiod (nop) 1186*3d8817e4Smiod () 1187*3d8817e4Smiod) 1188*3d8817e4Smiod 1189*3d8817e4Smiod;(dni wfb "WFB SRC1, SRC2, FB_disp, row#, ctx_disp" 1190*3d8817e4Smiod; () 1191*3d8817e4Smiod; "wfb $frsr1,$frsr2,#$fbdisp,#$rownum,#$ctxdisp" 1192*3d8817e4Smiod; (+ MSYS_YES MSOPC_WFB (f-uu-2-25 0) frsr1 frsr2 fbdisp rownum (f-uu-1-6 0) ctxdisp) 1193*3d8817e4Smiod; (nop) 1194*3d8817e4Smiod; () 1195*3d8817e4Smiod;) 1196*3d8817e4Smiod 1197*3d8817e4Smiod(dni wfb "WFB, DRC1,SRC2,FB_disp,row#,ctx_disp" 1198*3d8817e4Smiod () 1199*3d8817e4Smiod "wfb $frsr1,$frsr2,#$fbdisp,#$rownum2,#$ctxdisp" 1200*3d8817e4Smiod (+ MSYS_YES MSOPC_WFB (f-uu-2-25 0) frsr1 frsr2 fbdisp rownum2 (f-uu-1-6 0) ctxdisp) 1201*3d8817e4Smiod (nop) 1202*3d8817e4Smiod () 1203*3d8817e4Smiod) 1204*3d8817e4Smiod 1205*3d8817e4Smiod 1206*3d8817e4Smiod(dni rcrisc "RCRISC DEST, RT/BR1/BR2/CS, SRC1, column#, r/c, CB/RB, cell, dup, ctx_disp" 1207*3d8817e4Smiod () 1208*3d8817e4Smiod "rcrisc $frdrrr,#$rbbc,$frsr1,#$colnum,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp" 1209*3d8817e4Smiod (+ MSYS_YES MSOPC_RCRISC rbbc frsr1 (f-uu-1-19 0) colnum frdrrr rc1 cbrb cell dup ctxdisp) 1210*3d8817e4Smiod (nop) 1211*3d8817e4Smiod () 1212*3d8817e4Smiod) 1213*3d8817e4Smiod 1214*3d8817e4Smiod(dni fbcbinc "FBCBINC SRC1, RT/BR1/BR2/CS, Incr_amount, r/c, CB/RB, cell, dup, ctx_disp " 1215*3d8817e4Smiod () 1216*3d8817e4Smiod "fbcbinc $frsr1,#$rbbc,#$incamt,#$rc1,#$cbrb,#$cell,#$dup,#$ctxdisp" 1217*3d8817e4Smiod (+ MSYS_YES MSOPC_FBCBINC rbbc frsr1 incamt rc1 cbrb cell dup ctxdisp) 1218*3d8817e4Smiod (nop) 1219*3d8817e4Smiod () 1220*3d8817e4Smiod) 1221*3d8817e4Smiod 1222*3d8817e4Smiod(dni rcxmode "RCXMODE SRC2, rd, wr, xmode, mask, FB_disp, row#, r/c, ctx_disp" 1223*3d8817e4Smiod () 1224*3d8817e4Smiod "rcxmode $frsr2,#$rda,#$wr,#$xmode,#$mask1,#$fbdisp,#$rownum2,#$rc2,#$ctxdisp" 1225*3d8817e4Smiod (+ MSYS_YES MSOPC_RCXMODE rda wr xmode mask1 frsr2 fbdisp rownum2 rc2 ctxdisp) 1226*3d8817e4Smiod (nop) 1227*3d8817e4Smiod () 1228*3d8817e4Smiod) 1229*3d8817e4Smiod 1230*3d8817e4Smiod(dni interleaver "INTLVR ireg, mode, ireg, i/d, size" 1231*3d8817e4Smiod () 1232*3d8817e4Smiod "intlvr $frsr1,#$mode,$frsr2,#$id,#$size" 1233*3d8817e4Smiod (+ MSYS_YES MSOPC_INTLVR mode frsr1 frsr2 (f-uu-1-15 0) id size) 1234*3d8817e4Smiod (nop) 1235*3d8817e4Smiod () 1236*3d8817e4Smiod) 1237*3d8817e4Smiod 1238*3d8817e4Smiod;; Issue 66262: The documenatation gives the wrong order for 1239*3d8817e4Smiod;; the arguments to the WFBINC instruction. 1240*3d8817e4Smiod(dni wfbinc "WFBINC type, ccb/rcb, incr, all, c/r, length, rca_row, word, dup, ctxt_disp" 1241*3d8817e4Smiod ((MACH ms1-003,ms2)) 1242*3d8817e4Smiod "wfbinc #$rda,#$wr,#$fbincr,#$ball,#$colnum,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp" 1243*3d8817e4Smiod (+ MSYS_YES MSOPC_WFBINC rda wr fbincr ball colnum length rownum1 rownum2 dup ctxdisp) 1244*3d8817e4Smiod (nop) 1245*3d8817e4Smiod () 1246*3d8817e4Smiod) 1247*3d8817e4Smiod 1248*3d8817e4Smiod(dni mwfbinc "MWFBINC mreg, type, ccb/rcb, incr, length, rca_row, word, dup, ctxt_disp" 1249*3d8817e4Smiod ((MACH ms1-003,ms2)) 1250*3d8817e4Smiod "mwfbinc $frsr2,#$rda,#$wr,#$fbincr,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp" 1251*3d8817e4Smiod (+ MSYS_YES MSOPC_MWFBINC rda wr fbincr frsr2 length rownum1 rownum2 dup ctxdisp) 1252*3d8817e4Smiod (nop) 1253*3d8817e4Smiod () 1254*3d8817e4Smiod) 1255*3d8817e4Smiod 1256*3d8817e4Smiod(dni wfbincr "WFBINCR ireg, type, ccb/rcb, all, c/r, length, rca_row, word, dup, ctxt_disp" 1257*3d8817e4Smiod ((MACH ms1-003,ms2)) 1258*3d8817e4Smiod "wfbincr $frsr1,#$rda,#$wr,#$ball,#$colnum,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp" 1259*3d8817e4Smiod (+ MSYS_YES MSOPC_WFBINCR rda wr frsr1 ball colnum length rownum1 rownum2 dup ctxdisp) 1260*3d8817e4Smiod (nop) 1261*3d8817e4Smiod () 1262*3d8817e4Smiod) 1263*3d8817e4Smiod 1264*3d8817e4Smiod(dni mwfbincr "MWFBINCR ireg, mreg, type, ccb/rcb, length, rca_row, word, dup, ctxt_disp" 1265*3d8817e4Smiod ((MACH ms1-003,ms2)) 1266*3d8817e4Smiod "mwfbincr $frsr1,$frsr2,#$rda,#$wr,#$length,#$rownum1,#$rownum2,#$dup,#$ctxdisp" 1267*3d8817e4Smiod (+ MSYS_YES MSOPC_MWFBINCR rda wr frsr1 frsr2 length rownum1 rownum2 dup ctxdisp) 1268*3d8817e4Smiod (nop) 1269*3d8817e4Smiod () 1270*3d8817e4Smiod) 1271*3d8817e4Smiod 1272*3d8817e4Smiod(dni fbcbincs "FBCBINCS perm, all, c/r, cbs, incr, ccb/rcb, cdb/rdb, word, dup, ctxt_disp" 1273*3d8817e4Smiod ((MACH ms1-003,ms2)) 1274*3d8817e4Smiod "fbcbincs #$perm,#$a23,#$cr,#$cbs,#$incr,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp" 1275*3d8817e4Smiod (+ MSYS_YES MSOPC_FBCBINCS perm a23 cr cbs incr ccb cdb rownum2 dup ctxdisp) 1276*3d8817e4Smiod (nop) 1277*3d8817e4Smiod () 1278*3d8817e4Smiod) 1279*3d8817e4Smiod 1280*3d8817e4Smiod(dni mfbcbincs "MFBCBINCS ireg, perm, cbs, incr, ccb/rcb, cdb/rdb, word, dup, ctxt_disp" 1281*3d8817e4Smiod ((MACH ms1-003,ms2)) 1282*3d8817e4Smiod "mfbcbincs $frsr1,#$perm,#$cbs,#$incr,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp" 1283*3d8817e4Smiod (+ MSYS_YES MSOPC_MFBCBINCS perm frsr1 cbs incr ccb cdb rownum2 dup ctxdisp) 1284*3d8817e4Smiod (nop) 1285*3d8817e4Smiod () 1286*3d8817e4Smiod) 1287*3d8817e4Smiod 1288*3d8817e4Smiod(dni fbcbincrs "FBCBINCRS ireg, perm, all, c/r, cbs, ccb/rcb, cdb/rdb, word, dup, ctxt_disp" 1289*3d8817e4Smiod ((MACH ms1-003,ms2)) 1290*3d8817e4Smiod "fbcbincrs $frsr1,#$perm,#$ball,#$colnum,#$cbx,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp" 1291*3d8817e4Smiod (+ MSYS_YES MSOPC_FBCBINCRS perm frsr1 ball colnum (f-uu-1-15 0) cbx ccb cdb rownum2 dup ctxdisp) 1292*3d8817e4Smiod (nop) 1293*3d8817e4Smiod () 1294*3d8817e4Smiod) 1295*3d8817e4Smiod 1296*3d8817e4Smiod(dni mfbcbincrs "MFBCBINCRS ireg, mreg, perm, cbs, ccb/rcb, cdb/rdb, word, dup, ctxt_disp" 1297*3d8817e4Smiod ((MACH ms1-003,ms2)) 1298*3d8817e4Smiod "mfbcbincrs $frsr1,$frsr2,#$perm,#$cbx,#$ccb,#$cdb,#$rownum2,#$dup,#$ctxdisp" 1299*3d8817e4Smiod (+ MSYS_YES MSOPC_MFBCBINCRS perm frsr1 frsr2 (f-uu-1-15 0) cbx ccb cdb rownum2 dup ctxdisp) 1300*3d8817e4Smiod (nop) 1301*3d8817e4Smiod () 1302*3d8817e4Smiod) 1303*3d8817e4Smiod 1304*3d8817e4Smiod; MS2 instructions 1305*3d8817e4Smiod(dni loop "LOOP SrcReg1, label" 1306*3d8817e4Smiod ((MACH ms2) DELAY-SLOT USES-FRSR1) 1307*3d8817e4Smiod "loop $frsr1,$loopsize" 1308*3d8817e4Smiod (+ MSYS_NO OPC_LOOP IMM_NO frsr1 (f-uu4a 0) (f-uu8 0) loopsize) 1309*3d8817e4Smiod (nop) ;; to be filled in 1310*3d8817e4Smiod () 1311*3d8817e4Smiod) 1312*3d8817e4Smiod 1313*3d8817e4Smiod(dni loopi "LOOPI niter, label" 1314*3d8817e4Smiod ((MACH ms2) DELAY-SLOT) 1315*3d8817e4Smiod "loopi #$imm16l,$loopsize" 1316*3d8817e4Smiod (+ MSYS_NO OPC_LOOP IMM_YES imm16l loopsize) 1317*3d8817e4Smiod (nop) ;; to be filled in 1318*3d8817e4Smiod () 1319*3d8817e4Smiod) 1320*3d8817e4Smiod 1321*3d8817e4Smiod(dni dfbc "dfbc cb1sel,cb2sel,cb1inc,cb2inc,dr/c,cr/c,ctxdisp" 1322*3d8817e4Smiod ((MACH ms2)) 1323*3d8817e4Smiod "dfbc #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp" 1324*3d8817e4Smiod (+ MSYS_YES MSOPC_LDCTXT cb1sel cb2sel cb1incr cb2incr rc3 rc2 ctxdisp) 1325*3d8817e4Smiod (nop) 1326*3d8817e4Smiod () 1327*3d8817e4Smiod) 1328*3d8817e4Smiod 1329*3d8817e4Smiod(dni dwfb "dwfb cb1sel,cb2sel,cb1inc,cb2inc,cr/c,ctxdisp" 1330*3d8817e4Smiod ((MACH ms2)) 1331*3d8817e4Smiod "dwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc2,#$ctxdisp" 1332*3d8817e4Smiod (+ MSYS_YES MSOPC_LDFB cb1sel cb2sel cb1incr cb2incr (f-uu1 0) rc2 ctxdisp) 1333*3d8817e4Smiod (nop) 1334*3d8817e4Smiod () 1335*3d8817e4Smiod) 1336*3d8817e4Smiod 1337*3d8817e4Smiod(dni fbwfb "fbwfb cb1sel,cb2sel,cb1inc,cb2inc,r0/1,cr/c,ctxdisp" 1338*3d8817e4Smiod ((MACH ms2)) 1339*3d8817e4Smiod "fbwfb #$cb1sel,#$cb2sel,#$cb1incr,#$cb2incr,#$rc3,#$rc2,#$ctxdisp" 1340*3d8817e4Smiod (+ MSYS_YES MSOPC_STFB cb1sel cb2sel cb1incr cb2incr rc3 rc2 ctxdisp) 1341*3d8817e4Smiod (nop) 1342*3d8817e4Smiod () 1343*3d8817e4Smiod) 1344*3d8817e4Smiod 1345*3d8817e4Smiod(dni dfbr "dfbr cb1sel,cb2sel,reg,W/O1,W/O2,mode,cr/c,ctxdisp" 1346*3d8817e4Smiod ((MACH ms2) USES-FRSR2) 1347*3d8817e4Smiod "dfbr #$cb1sel,#$cb2sel,$frsr2,#$length,#$rownum1,#$rownum2,#$rc2,#$ctxdisp" 1348*3d8817e4Smiod (+ MSYS_YES MSOPC_FBCB cb1sel cb2sel frsr2 length rownum1 rownum2 rc2 ctxdisp) 1349*3d8817e4Smiod (nop) 1350*3d8817e4Smiod () 1351*3d8817e4Smiod) 1352