1130561Sobrien/* Print GOULD NPL instructions for GDB, the GNU debugger. 2130561Sobrien Copyright 1986, 1987, 1989, 1991 Free Software Foundation, Inc. 3130561Sobrien 4130561SobrienThis file is part of GDB. 5130561Sobrien 6130561SobrienGDB is free software; you can redistribute it and/or modify 7130561Sobrienit under the terms of the GNU General Public License as published by 8130561Sobrienthe Free Software Foundation; either version 1, or (at your option) 9130561Sobrienany later version. 10130561Sobrien 11130561SobrienGDB is distributed in the hope that it will be useful, 12130561Sobrienbut WITHOUT ANY WARRANTY; without even the implied warranty of 13130561SobrienMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14130561SobrienGNU General Public License for more details. 15130561Sobrien 16130561SobrienYou should have received a copy of the GNU General Public License 17130561Sobrienalong with GDB; see the file COPYING. If not, write to 18218822Sdimthe Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ 19130561Sobrien 20130561Sobrienstruct gld_opcode 21130561Sobrien{ 22130561Sobrien char *name; 23130561Sobrien unsigned long opcode; 24130561Sobrien unsigned long mask; 25130561Sobrien char *args; 26130561Sobrien int length; 27130561Sobrien}; 28130561Sobrien 29130561Sobrien/* We store four bytes of opcode for all opcodes because that 30130561Sobrien is the most any of them need. The actual length of an instruction 31130561Sobrien is always at least 2 bytes, and at most four. The length of the 32130561Sobrien instruction is based on the opcode. 33130561Sobrien 34130561Sobrien The mask component is a mask saying which bits must match 35130561Sobrien particular opcode in order for an instruction to be an instance 36130561Sobrien of that opcode. 37130561Sobrien 38130561Sobrien The args component is a string containing characters 39130561Sobrien that are used to format the arguments to the instruction. */ 40130561Sobrien 41130561Sobrien/* Kinds of operands: 42130561Sobrien r Register in first field 43130561Sobrien R Register in second field 44130561Sobrien b Base register in first field 45130561Sobrien B Base register in second field 46130561Sobrien v Vector register in first field 47130561Sobrien V Vector register in first field 48130561Sobrien A Optional address register (base register) 49130561Sobrien X Optional index register 50130561Sobrien I Immediate data (16bits signed) 51130561Sobrien O Offset field (16bits signed) 52130561Sobrien h Offset field (15bits signed) 53130561Sobrien d Offset field (14bits signed) 54130561Sobrien S Shift count field 55130561Sobrien 56130561Sobrien any other characters are printed as is... 57130561Sobrien*/ 58130561Sobrien 59130561Sobrien/* The assembler requires that this array be sorted as follows: 60130561Sobrien all instances of the same mnemonic must be consecutive. 61130561Sobrien All instances of the same mnemonic with the same number of operands 62130561Sobrien must be consecutive. 63130561Sobrien */ 64130561Sobrienstruct gld_opcode gld_opcodes[] = 65130561Sobrien{ 66130561Sobrien{ "lb", 0xb4080000, 0xfc080000, "r,xOA,X", 4 }, 67130561Sobrien{ "lnb", 0xb8080000, 0xfc080000, "r,xOA,X", 4 }, 68130561Sobrien{ "lbs", 0xec080000, 0xfc080000, "r,xOA,X", 4 }, 69130561Sobrien{ "lh", 0xb4000001, 0xfc080001, "r,xOA,X", 4 }, 70130561Sobrien{ "lnh", 0xb8000001, 0xfc080001, "r,xOA,X", 4 }, 71130561Sobrien{ "lw", 0xb4000000, 0xfc080000, "r,xOA,X", 4 }, 72130561Sobrien{ "lnw", 0xb8000000, 0xfc080000, "r,xOA,X", 4 }, 73130561Sobrien{ "ld", 0xb4000002, 0xfc080002, "r,xOA,X", 4 }, 74130561Sobrien{ "lnd", 0xb8000002, 0xfc080002, "r,xOA,X", 4 }, 75130561Sobrien{ "li", 0xf8000000, 0xfc7f0000, "r,I", 4 }, 76130561Sobrien{ "lpa", 0x50080000, 0xfc080000, "r,xOA,X", 4 }, 77130561Sobrien{ "la", 0x50000000, 0xfc080000, "r,xOA,X", 4 }, 78130561Sobrien{ "labr", 0x58080000, 0xfc080000, "b,xOA,X", 4 }, 79130561Sobrien{ "lbp", 0x90080000, 0xfc080000, "r,xOA,X", 4 }, 80130561Sobrien{ "lhp", 0x90000001, 0xfc080001, "r,xOA,X", 4 }, 81130561Sobrien{ "lwp", 0x90000000, 0xfc080000, "r,xOA,X", 4 }, 82130561Sobrien{ "ldp", 0x90000002, 0xfc080002, "r,xOA,X", 4 }, 83130561Sobrien{ "suabr", 0x58000000, 0xfc080000, "b,xOA,X", 4 }, 84130561Sobrien{ "lf", 0xbc000000, 0xfc080000, "r,xOA,X", 4 }, 85130561Sobrien{ "lfbr", 0xbc080000, 0xfc080000, "b,xOA,X", 4 }, 86130561Sobrien{ "lwbr", 0x5c000000, 0xfc080000, "b,xOA,X", 4 }, 87130561Sobrien{ "stb", 0xd4080000, 0xfc080000, "r,xOA,X", 4 }, 88130561Sobrien{ "sth", 0xd4000001, 0xfc080001, "r,xOA,X", 4 }, 89130561Sobrien{ "stw", 0xd4000000, 0xfc080000, "r,xOA,X", 4 }, 90130561Sobrien{ "std", 0xd4000002, 0xfc080002, "r,xOA,X", 4 }, 91130561Sobrien{ "stf", 0xdc000000, 0xfc080000, "r,xOA,X", 4 }, 92130561Sobrien{ "stfbr", 0xdc080000, 0xfc080000, "b,xOA,X", 4 }, 93130561Sobrien{ "stwbr", 0x54000000, 0xfc080000, "b,xOA,X", 4 }, 94130561Sobrien{ "zmb", 0xd8080000, 0xfc080000, "r,xOA,X", 4 }, 95130561Sobrien{ "zmh", 0xd8000001, 0xfc080001, "r,xOA,X", 4 }, 96130561Sobrien{ "zmw", 0xd8000000, 0xfc080000, "r,xOA,X", 4 }, 97130561Sobrien{ "zmd", 0xd8000002, 0xfc080002, "r,xOA,X", 4 }, 98130561Sobrien{ "stbp", 0x94080000, 0xfc080000, "r,xOA,X", 4 }, 99130561Sobrien{ "sthp", 0x94000001, 0xfc080001, "r,xOA,X", 4 }, 100130561Sobrien{ "stwp", 0x94000000, 0xfc080000, "r,xOA,X", 4 }, 101130561Sobrien{ "stdp", 0x94000002, 0xfc080002, "r,xOA,X", 4 }, 102130561Sobrien{ "lil", 0xf80b0000, 0xfc7f0000, "r,D", 4 }, 103130561Sobrien{ "lwsl1", 0xec000000, 0xfc080000, "r,xOA,X", 4 }, 104130561Sobrien{ "lwsl2", 0xfc000000, 0xfc080000, "r,xOA,X", 4 }, 105130561Sobrien{ "lwsl3", 0xfc080000, 0xfc080000, "r,xOA,X", 4 }, 106130561Sobrien 107130561Sobrien{ "lvb", 0xb0080000, 0xfc080000, "v,xOA,X", 4 }, 108130561Sobrien{ "lvh", 0xb0000001, 0xfc080001, "v,xOA,X", 4 }, 109130561Sobrien{ "lvw", 0xb0000000, 0xfc080000, "v,xOA,X", 4 }, 110130561Sobrien{ "lvd", 0xb0000002, 0xfc080002, "v,xOA,X", 4 }, 111130561Sobrien{ "liv", 0x3c040000, 0xfc0f0000, "v,R", 2 }, 112130561Sobrien{ "livf", 0x3c080000, 0xfc0f0000, "v,R", 2 }, 113130561Sobrien{ "stvb", 0xd0080000, 0xfc080000, "v,xOA,X", 4 }, 114130561Sobrien{ "stvh", 0xd0000001, 0xfc080001, "v,xOA,X", 4 }, 115130561Sobrien{ "stvw", 0xd0000000, 0xfc080000, "v,xOA,X", 4 }, 116130561Sobrien{ "stvd", 0xd0000002, 0xfc080002, "v,xOA,X", 4 }, 117130561Sobrien 118130561Sobrien{ "trr", 0x2c000000, 0xfc0f0000, "r,R", 2 }, 119130561Sobrien{ "trn", 0x2c040000, 0xfc0f0000, "r,R", 2 }, 120130561Sobrien{ "trnd", 0x2c0c0000, 0xfc0f0000, "r,R", 2 }, 121130561Sobrien{ "trabs", 0x2c010000, 0xfc0f0000, "r,R", 2 }, 122130561Sobrien{ "trabsd", 0x2c090000, 0xfc0f0000, "r,R", 2 }, 123130561Sobrien{ "trc", 0x2c030000, 0xfc0f0000, "r,R", 2 }, 124130561Sobrien{ "xcr", 0x28040000, 0xfc0f0000, "r,R", 2 }, 125130561Sobrien{ "cxcr", 0x2c060000, 0xfc0f0000, "r,R", 2 }, 126130561Sobrien{ "cxcrd", 0x2c0e0000, 0xfc0f0000, "r,R", 2 }, 127130561Sobrien{ "tbrr", 0x2c020000, 0xfc0f0000, "r,B", 2 }, 128130561Sobrien{ "trbr", 0x28030000, 0xfc0f0000, "b,R", 2 }, 129130561Sobrien{ "xcbr", 0x28020000, 0xfc0f0000, "b,B", 2 }, 130130561Sobrien{ "tbrbr", 0x28010000, 0xfc0f0000, "b,B", 2 }, 131130561Sobrien 132130561Sobrien{ "trvv", 0x28050000, 0xfc0f0000, "v,V", 2 }, 133130561Sobrien{ "trvvn", 0x2c050000, 0xfc0f0000, "v,V", 2 }, 134130561Sobrien{ "trvvnd", 0x2c0d0000, 0xfc0f0000, "v,V", 2 }, 135130561Sobrien{ "trvab", 0x2c070000, 0xfc0f0000, "v,V", 2 }, 136130561Sobrien{ "trvabd", 0x2c0f0000, 0xfc0f0000, "v,V", 2 }, 137130561Sobrien{ "cmpv", 0x14060000, 0xfc0f0000, "v,V", 2 }, 138130561Sobrien{ "expv", 0x14070000, 0xfc0f0000, "v,V", 2 }, 139130561Sobrien{ "mrvvlt", 0x10030000, 0xfc0f0000, "v,V", 2 }, 140130561Sobrien{ "mrvvle", 0x10040000, 0xfc0f0000, "v,V", 2 }, 141130561Sobrien{ "mrvvgt", 0x14030000, 0xfc0f0000, "v,V", 2 }, 142130561Sobrien{ "mrvvge", 0x14040000, 0xfc0f0000, "v,V", 2 }, 143130561Sobrien{ "mrvveq", 0x10050000, 0xfc0f0000, "v,V", 2 }, 144130561Sobrien{ "mrvvne", 0x10050000, 0xfc0f0000, "v,V", 2 }, 145130561Sobrien{ "mrvrlt", 0x100d0000, 0xfc0f0000, "v,R", 2 }, 146130561Sobrien{ "mrvrle", 0x100e0000, 0xfc0f0000, "v,R", 2 }, 147130561Sobrien{ "mrvrgt", 0x140d0000, 0xfc0f0000, "v,R", 2 }, 148130561Sobrien{ "mrvrge", 0x140e0000, 0xfc0f0000, "v,R", 2 }, 149130561Sobrien{ "mrvreq", 0x100f0000, 0xfc0f0000, "v,R", 2 }, 150130561Sobrien{ "mrvrne", 0x140f0000, 0xfc0f0000, "v,R", 2 }, 151130561Sobrien{ "trvr", 0x140b0000, 0xfc0f0000, "r,V", 2 }, 152130561Sobrien{ "trrv", 0x140c0000, 0xfc0f0000, "v,R", 2 }, 153130561Sobrien 154130561Sobrien{ "bu", 0x40000000, 0xff880000, "xOA,X", 4 }, 155130561Sobrien{ "bns", 0x70080000, 0xff880000, "xOA,X", 4 }, 156130561Sobrien{ "bnco", 0x70880000, 0xff880000, "xOA,X", 4 }, 157130561Sobrien{ "bge", 0x71080000, 0xff880000, "xOA,X", 4 }, 158130561Sobrien{ "bne", 0x71880000, 0xff880000, "xOA,X", 4 }, 159130561Sobrien{ "bunge", 0x72080000, 0xff880000, "xOA,X", 4 }, 160130561Sobrien{ "bunle", 0x72880000, 0xff880000, "xOA,X", 4 }, 161130561Sobrien{ "bgt", 0x73080000, 0xff880000, "xOA,X", 4 }, 162130561Sobrien{ "bnany", 0x73880000, 0xff880000, "xOA,X", 4 }, 163130561Sobrien{ "bs" , 0x70000000, 0xff880000, "xOA,X", 4 }, 164130561Sobrien{ "bco", 0x70800000, 0xff880000, "xOA,X", 4 }, 165130561Sobrien{ "blt", 0x71000000, 0xff880000, "xOA,X", 4 }, 166130561Sobrien{ "beq", 0x71800000, 0xff880000, "xOA,X", 4 }, 167130561Sobrien{ "buge", 0x72000000, 0xff880000, "xOA,X", 4 }, 168130561Sobrien{ "bult", 0x72800000, 0xff880000, "xOA,X", 4 }, 169130561Sobrien{ "ble", 0x73000000, 0xff880000, "xOA,X", 4 }, 170130561Sobrien{ "bany", 0x73800000, 0xff880000, "xOA,X", 4 }, 171130561Sobrien{ "brlnk", 0x44000000, 0xfc080000, "r,xOA,X", 4 }, 172130561Sobrien{ "bib", 0x48000000, 0xfc080000, "r,xOA,X", 4 }, 173130561Sobrien{ "bih", 0x48080000, 0xfc080000, "r,xOA,X", 4 }, 174130561Sobrien{ "biw", 0x4c000000, 0xfc080000, "r,xOA,X", 4 }, 175130561Sobrien{ "bid", 0x4c080000, 0xfc080000, "r,xOA,X", 4 }, 176130561Sobrien{ "bivb", 0x60000000, 0xfc080000, "r,xOA,X", 4 }, 177130561Sobrien{ "bivh", 0x60080000, 0xfc080000, "r,xOA,X", 4 }, 178130561Sobrien{ "bivw", 0x64000000, 0xfc080000, "r,xOA,X", 4 }, 179130561Sobrien{ "bivd", 0x64080000, 0xfc080000, "r,xOA,X", 4 }, 180130561Sobrien{ "bvsb", 0x68000000, 0xfc080000, "r,xOA,X", 4 }, 181130561Sobrien{ "bvsh", 0x68080000, 0xfc080000, "r,xOA,X", 4 }, 182130561Sobrien{ "bvsw", 0x6c000000, 0xfc080000, "r,xOA,X", 4 }, 183130561Sobrien{ "bvsd", 0x6c080000, 0xfc080000, "r,xOA,X", 4 }, 184130561Sobrien 185130561Sobrien{ "camb", 0x80080000, 0xfc080000, "r,xOA,X", 4 }, 186130561Sobrien{ "camh", 0x80000001, 0xfc080001, "r,xOA,X", 4 }, 187130561Sobrien{ "camw", 0x80000000, 0xfc080000, "r,xOA,X", 4 }, 188130561Sobrien{ "camd", 0x80000002, 0xfc080002, "r,xOA,X", 4 }, 189130561Sobrien{ "car", 0x10000000, 0xfc0f0000, "r,R", 2 }, 190130561Sobrien{ "card", 0x14000000, 0xfc0f0000, "r,R", 2 }, 191130561Sobrien{ "ci", 0xf8050000, 0xfc7f0000, "r,I", 4 }, 192130561Sobrien{ "chkbnd", 0x5c080000, 0xfc080000, "r,xOA,X", 4 }, 193130561Sobrien 194130561Sobrien{ "cavv", 0x10010000, 0xfc0f0000, "v,V", 2 }, 195130561Sobrien{ "cavr", 0x10020000, 0xfc0f0000, "v,R", 2 }, 196130561Sobrien{ "cavvd", 0x10090000, 0xfc0f0000, "v,V", 2 }, 197130561Sobrien{ "cavrd", 0x100b0000, 0xfc0f0000, "v,R", 2 }, 198130561Sobrien 199130561Sobrien{ "anmb", 0x84080000, 0xfc080000, "r,xOA,X", 4 }, 200130561Sobrien{ "anmh", 0x84000001, 0xfc080001, "r,xOA,X", 4 }, 201130561Sobrien{ "anmw", 0x84000000, 0xfc080000, "r,xOA,X", 4 }, 202130561Sobrien{ "anmd", 0x84000002, 0xfc080002, "r,xOA,X", 4 }, 203130561Sobrien{ "anr", 0x04000000, 0xfc0f0000, "r,R", 2 }, 204130561Sobrien{ "ani", 0xf8080000, 0xfc7f0000, "r,I", 4 }, 205130561Sobrien{ "ormb", 0xb8080000, 0xfc080000, "r,xOA,X", 4 }, 206130561Sobrien{ "ormh", 0xb8000001, 0xfc080001, "r,xOA,X", 4 }, 207130561Sobrien{ "ormw", 0xb8000000, 0xfc080000, "r,xOA,X", 4 }, 208130561Sobrien{ "ormd", 0xb8000002, 0xfc080002, "r,xOA,X", 4 }, 209130561Sobrien{ "orr", 0x08000000, 0xfc0f0000, "r,R", 2 }, 210130561Sobrien{ "oi", 0xf8090000, 0xfc7f0000, "r,I", 4 }, 211130561Sobrien{ "eomb", 0x8c080000, 0xfc080000, "r,xOA,X", 4 }, 212130561Sobrien{ "eomh", 0x8c000001, 0xfc080001, "r,xOA,X", 4 }, 213130561Sobrien{ "eomw", 0x8c000000, 0xfc080000, "r,xOA,X", 4 }, 214130561Sobrien{ "eomd", 0x8c000002, 0xfc080002, "r,xOA,X", 4 }, 215130561Sobrien{ "eor", 0x0c000000, 0xfc0f0000, "r,R", 2 }, 216130561Sobrien{ "eoi", 0xf80a0000, 0xfc7f0000, "r,I", 4 }, 217130561Sobrien 218130561Sobrien{ "anvv", 0x04010000, 0xfc0f0000, "v,V", 2 }, 219130561Sobrien{ "anvr", 0x04020000, 0xfc0f0000, "v,R", 2 }, 220130561Sobrien{ "orvv", 0x08010000, 0xfc0f0000, "v,V", 2 }, 221130561Sobrien{ "orvr", 0x08020000, 0xfc0f0000, "v,R", 2 }, 222130561Sobrien{ "eovv", 0x0c010000, 0xfc0f0000, "v,V", 2 }, 223130561Sobrien{ "eovr", 0x0c020000, 0xfc0f0000, "v,R", 2 }, 224130561Sobrien 225130561Sobrien{ "sacz", 0x100c0000, 0xfc0f0000, "r,R", 2 }, 226130561Sobrien{ "sla", 0x1c400000, 0xfc600000, "r,S", 2 }, 227130561Sobrien{ "sll", 0x1c600000, 0xfc600000, "r,S", 2 }, 228130561Sobrien{ "slc", 0x24400000, 0xfc600000, "r,S", 2 }, 229130561Sobrien{ "slad", 0x20400000, 0xfc600000, "r,S", 2 }, 230130561Sobrien{ "slld", 0x20600000, 0xfc600000, "r,S", 2 }, 231130561Sobrien{ "sra", 0x1c000000, 0xfc600000, "r,S", 2 }, 232130561Sobrien{ "srl", 0x1c200000, 0xfc600000, "r,S", 2 }, 233130561Sobrien{ "src", 0x24000000, 0xfc600000, "r,S", 2 }, 234130561Sobrien{ "srad", 0x20000000, 0xfc600000, "r,S", 2 }, 235130561Sobrien{ "srld", 0x20200000, 0xfc600000, "r,S", 2 }, 236130561Sobrien{ "sda", 0x3c030000, 0xfc0f0000, "r,R", 2 }, 237130561Sobrien{ "sdl", 0x3c020000, 0xfc0f0000, "r,R", 2 }, 238130561Sobrien{ "sdc", 0x3c010000, 0xfc0f0000, "r,R", 2 }, 239130561Sobrien{ "sdad", 0x3c0b0000, 0xfc0f0000, "r,R", 2 }, 240130561Sobrien{ "sdld", 0x3c0a0000, 0xfc0f0000, "r,R", 2 }, 241130561Sobrien 242130561Sobrien{ "svda", 0x3c070000, 0xfc0f0000, "v,R", 2 }, 243130561Sobrien{ "svdl", 0x3c060000, 0xfc0f0000, "v,R", 2 }, 244130561Sobrien{ "svdc", 0x3c050000, 0xfc0f0000, "v,R", 2 }, 245130561Sobrien{ "svdad", 0x3c0e0000, 0xfc0f0000, "v,R", 2 }, 246130561Sobrien{ "svdld", 0x3c0d0000, 0xfc0f0000, "v,R", 2 }, 247130561Sobrien 248130561Sobrien{ "sbm", 0xac080000, 0xfc080000, "f,xOA,X", 4 }, 249130561Sobrien{ "zbm", 0xac000000, 0xfc080000, "f,xOA,X", 4 }, 250130561Sobrien{ "tbm", 0xa8080000, 0xfc080000, "f,xOA,X", 4 }, 251130561Sobrien{ "incmb", 0xa0000000, 0xfc080000, "xOA,X", 4 }, 252130561Sobrien{ "incmh", 0xa0080000, 0xfc080000, "xOA,X", 4 }, 253130561Sobrien{ "incmw", 0xa4000000, 0xfc080000, "xOA,X", 4 }, 254130561Sobrien{ "incmd", 0xa4080000, 0xfc080000, "xOA,X", 4 }, 255130561Sobrien{ "sbmd", 0x7c080000, 0xfc080000, "r,xOA,X", 4 }, 256130561Sobrien{ "zbmd", 0x7c000000, 0xfc080000, "r,xOA,X", 4 }, 257130561Sobrien{ "tbmd", 0x78080000, 0xfc080000, "r,xOA,X", 4 }, 258130561Sobrien 259130561Sobrien{ "ssm", 0x9c080000, 0xfc080000, "f,xOA,X", 4 }, 260130561Sobrien{ "zsm", 0x9c000000, 0xfc080000, "f,xOA,X", 4 }, 261130561Sobrien{ "tsm", 0x98080000, 0xfc080000, "f,xOA,X", 4 }, 262130561Sobrien 263130561Sobrien{ "admb", 0xc8080000, 0xfc080000, "r,xOA,X", 4 }, 264130561Sobrien{ "admh", 0xc8000001, 0xfc080001, "r,xOA,X", 4 }, 265130561Sobrien{ "admw", 0xc8000000, 0xfc080000, "r,xOA,X", 4 }, 266130561Sobrien{ "admd", 0xc8000002, 0xfc080002, "r,xOA,X", 4 }, 267130561Sobrien{ "adr", 0x38000000, 0xfc0f0000, "r,R", 2 }, 268130561Sobrien{ "armb", 0xe8080000, 0xfc080000, "r,xOA,X", 4 }, 269130561Sobrien{ "armh", 0xe8000001, 0xfc080001, "r,xOA,X", 4 }, 270130561Sobrien{ "armw", 0xe8000000, 0xfc080000, "r,xOA,X", 4 }, 271130561Sobrien{ "armd", 0xe8000002, 0xfc080002, "r,xOA,X", 4 }, 272130561Sobrien{ "adi", 0xf8010000, 0xfc0f0000, "r,I", 4 }, 273130561Sobrien{ "sumb", 0xcc080000, 0xfc080000, "r,xOA,X", 4 }, 274130561Sobrien{ "sumh", 0xcc000001, 0xfc080001, "r,xOA,X", 4 }, 275130561Sobrien{ "sumw", 0xcc000000, 0xfc080000, "r,xOA,X", 4 }, 276130561Sobrien{ "sumd", 0xcc000002, 0xfc080002, "r,xOA,X", 4 }, 277130561Sobrien{ "sur", 0x3c000000, 0xfc0f0000, "r,R", 2 }, 278130561Sobrien{ "sui", 0xf8020000, 0xfc0f0000, "r,I", 4 }, 279130561Sobrien{ "mpmb", 0xc0080000, 0xfc080000, "r,xOA,X", 4 }, 280130561Sobrien{ "mpmh", 0xc0000001, 0xfc080001, "r,xOA,X", 4 }, 281130561Sobrien{ "mpmw", 0xc0000000, 0xfc080000, "r,xOA,X", 4 }, 282130561Sobrien{ "mpr", 0x38020000, 0xfc0f0000, "r,R", 2 }, 283130561Sobrien{ "mprd", 0x3c0f0000, 0xfc0f0000, "r,R", 2 }, 284130561Sobrien{ "mpi", 0xf8030000, 0xfc0f0000, "r,I", 4 }, 285130561Sobrien{ "dvmb", 0xc4080000, 0xfc080000, "r,xOA,X", 4 }, 286130561Sobrien{ "dvmh", 0xc4000001, 0xfc080001, "r,xOA,X", 4 }, 287130561Sobrien{ "dvmw", 0xc4000000, 0xfc080000, "r,xOA,X", 4 }, 288130561Sobrien{ "dvr", 0x380a0000, 0xfc0f0000, "r,R", 2 }, 289130561Sobrien{ "dvi", 0xf8040000, 0xfc0f0000, "r,I", 4 }, 290130561Sobrien{ "exs", 0x38080000, 0xfc0f0000, "r,R", 2 }, 291130561Sobrien 292130561Sobrien{ "advv", 0x30000000, 0xfc0f0000, "v,V", 2 }, 293130561Sobrien{ "advvd", 0x30080000, 0xfc0f0000, "v,V", 2 }, 294130561Sobrien{ "adrv", 0x34000000, 0xfc0f0000, "v,R", 2 }, 295130561Sobrien{ "adrvd", 0x34080000, 0xfc0f0000, "v,R", 2 }, 296130561Sobrien{ "suvv", 0x30010000, 0xfc0f0000, "v,V", 2 }, 297130561Sobrien{ "suvvd", 0x30090000, 0xfc0f0000, "v,V", 2 }, 298130561Sobrien{ "surv", 0x34010000, 0xfc0f0000, "v,R", 2 }, 299130561Sobrien{ "survd", 0x34090000, 0xfc0f0000, "v,R", 2 }, 300130561Sobrien{ "mpvv", 0x30020000, 0xfc0f0000, "v,V", 2 }, 301130561Sobrien{ "mprv", 0x34020000, 0xfc0f0000, "v,R", 2 }, 302130561Sobrien 303130561Sobrien{ "adfw", 0xe0080000, 0xfc080000, "r,xOA,X", 4 }, 304130561Sobrien{ "adfd", 0xe0080002, 0xfc080002, "r,xOA,X", 4 }, 305130561Sobrien{ "adrfw", 0x38010000, 0xfc0f0000, "r,R", 2 }, 306130561Sobrien{ "adrfd", 0x38090000, 0xfc0f0000, "r,R", 2 }, 307130561Sobrien{ "surfw", 0xe0000000, 0xfc080000, "r,xOA,X", 4 }, 308130561Sobrien{ "surfd", 0xe0000002, 0xfc080002, "r,xOA,X", 4 }, 309130561Sobrien{ "surfw", 0x38030000, 0xfc0f0000, "r,R", 2 }, 310130561Sobrien{ "surfd", 0x380b0000, 0xfc0f0000, "r,R", 2 }, 311130561Sobrien{ "mpfw", 0xe4080000, 0xfc080000, "r,xOA,X", 4 }, 312130561Sobrien{ "mpfd", 0xe4080002, 0xfc080002, "r,xOA,X", 4 }, 313130561Sobrien{ "mprfw", 0x38060000, 0xfc0f0000, "r,R", 2 }, 314130561Sobrien{ "mprfd", 0x380e0000, 0xfc0f0000, "r,R", 2 }, 315130561Sobrien{ "rfw", 0xe4000000, 0xfc080000, "r,xOA,X", 4 }, 316130561Sobrien{ "rfd", 0xe4000002, 0xfc080002, "r,xOA,X", 4 }, 317130561Sobrien{ "rrfw", 0x0c0e0000, 0xfc0f0000, "r", 2 }, 318130561Sobrien{ "rrfd", 0x0c0f0000, 0xfc0f0000, "r", 2 }, 319130561Sobrien 320130561Sobrien{ "advvfw", 0x30040000, 0xfc0f0000, "v,V", 2 }, 321130561Sobrien{ "advvfd", 0x300c0000, 0xfc0f0000, "v,V", 2 }, 322130561Sobrien{ "adrvfw", 0x34040000, 0xfc0f0000, "v,R", 2 }, 323130561Sobrien{ "adrvfd", 0x340c0000, 0xfc0f0000, "v,R", 2 }, 324130561Sobrien{ "suvvfw", 0x30050000, 0xfc0f0000, "v,V", 2 }, 325130561Sobrien{ "suvvfd", 0x300d0000, 0xfc0f0000, "v,V", 2 }, 326130561Sobrien{ "survfw", 0x34050000, 0xfc0f0000, "v,R", 2 }, 327130561Sobrien{ "survfd", 0x340d0000, 0xfc0f0000, "v,R", 2 }, 328130561Sobrien{ "mpvvfw", 0x30060000, 0xfc0f0000, "v,V", 2 }, 329130561Sobrien{ "mpvvfd", 0x300e0000, 0xfc0f0000, "v,V", 2 }, 330130561Sobrien{ "mprvfw", 0x34060000, 0xfc0f0000, "v,R", 2 }, 331130561Sobrien{ "mprvfd", 0x340e0000, 0xfc0f0000, "v,R", 2 }, 332130561Sobrien{ "rvfw", 0x30070000, 0xfc0f0000, "v", 2 }, 333130561Sobrien{ "rvfd", 0x300f0000, 0xfc0f0000, "v", 2 }, 334130561Sobrien 335130561Sobrien{ "fltw", 0x38070000, 0xfc0f0000, "r,R", 2 }, 336130561Sobrien{ "fltd", 0x380f0000, 0xfc0f0000, "r,R", 2 }, 337130561Sobrien{ "fixw", 0x38050000, 0xfc0f0000, "r,R", 2 }, 338130561Sobrien{ "fixd", 0x380d0000, 0xfc0f0000, "r,R", 2 }, 339130561Sobrien{ "cfpds", 0x3c090000, 0xfc0f0000, "r,R", 2 }, 340130561Sobrien 341130561Sobrien{ "fltvw", 0x080d0000, 0xfc0f0000, "v,V", 2 }, 342130561Sobrien{ "fltvd", 0x080f0000, 0xfc0f0000, "v,V", 2 }, 343130561Sobrien{ "fixvw", 0x080c0000, 0xfc0f0000, "v,V", 2 }, 344130561Sobrien{ "fixvd", 0x080e0000, 0xfc0f0000, "v,V", 2 }, 345130561Sobrien{ "cfpvds", 0x0c0d0000, 0xfc0f0000, "v,V", 2 }, 346130561Sobrien 347130561Sobrien{ "orvrn", 0x000a0000, 0xfc0f0000, "r,V", 2 }, 348130561Sobrien{ "andvrn", 0x00080000, 0xfc0f0000, "r,V", 2 }, 349130561Sobrien{ "frsteq", 0x04090000, 0xfc0f0000, "r,V", 2 }, 350130561Sobrien{ "sigma", 0x0c080000, 0xfc0f0000, "r,V", 2 }, 351130561Sobrien{ "sigmad", 0x0c0a0000, 0xfc0f0000, "r,V", 2 }, 352130561Sobrien{ "sigmf", 0x08080000, 0xfc0f0000, "r,V", 2 }, 353130561Sobrien{ "sigmfd", 0x080a0000, 0xfc0f0000, "r,V", 2 }, 354130561Sobrien{ "prodf", 0x04080000, 0xfc0f0000, "r,V", 2 }, 355130561Sobrien{ "prodfd", 0x040a0000, 0xfc0f0000, "r,V", 2 }, 356130561Sobrien{ "maxv", 0x10080000, 0xfc0f0000, "r,V", 2 }, 357130561Sobrien{ "maxvd", 0x100a0000, 0xfc0f0000, "r,V", 2 }, 358130561Sobrien{ "minv", 0x14080000, 0xfc0f0000, "r,V", 2 }, 359130561Sobrien{ "minvd", 0x140a0000, 0xfc0f0000, "r,V", 2 }, 360130561Sobrien 361130561Sobrien{ "lpsd", 0xf0000000, 0xfc080000, "xOA,X", 4 }, 362130561Sobrien{ "ldc", 0xf0080000, 0xfc080000, "xOA,X", 4 }, 363130561Sobrien{ "spm", 0x040c0000, 0xfc0f0000, "r", 2 }, 364130561Sobrien{ "rpm", 0x040d0000, 0xfc0f0000, "r", 2 }, 365130561Sobrien{ "tritr", 0x00070000, 0xfc0f0000, "r", 2 }, 366130561Sobrien{ "trrit", 0x00060000, 0xfc0f0000, "r", 2 }, 367130561Sobrien{ "rpswt", 0x04080000, 0xfc0f0000, "r", 2 }, 368130561Sobrien{ "exr", 0xf8070000, 0xfc0f0000, "", 4 }, 369130561Sobrien{ "halt", 0x00000000, 0xfc0f0000, "", 2 }, 370130561Sobrien{ "wait", 0x00010000, 0xfc0f0000, "", 2 }, 371130561Sobrien{ "nop", 0x00020000, 0xfc0f0000, "", 2 }, 372130561Sobrien{ "eiae", 0x00030000, 0xfc0f0000, "", 2 }, 373130561Sobrien{ "efae", 0x000d0000, 0xfc0f0000, "", 2 }, 374130561Sobrien{ "diae", 0x000e0000, 0xfc0f0000, "", 2 }, 375130561Sobrien{ "dfae", 0x000f0000, 0xfc0f0000, "", 2 }, 376130561Sobrien{ "spvc", 0xf8060000, 0xfc0f0000, "r,T,N", 4 }, 377130561Sobrien{ "rdsts", 0x00090000, 0xfc0f0000, "r", 2 }, 378130561Sobrien{ "setcpu", 0x000c0000, 0xfc0f0000, "r", 2 }, 379130561Sobrien{ "cmc", 0x000b0000, 0xfc0f0000, "r", 2 }, 380130561Sobrien{ "trrcu", 0x00040000, 0xfc0f0000, "r", 2 }, 381130561Sobrien{ "attnio", 0x00050000, 0xfc0f0000, "", 2 }, 382130561Sobrien{ "fudit", 0x28080000, 0xfc0f0000, "", 2 }, 383130561Sobrien{ "break", 0x28090000, 0xfc0f0000, "", 2 }, 384130561Sobrien{ "frzss", 0x280a0000, 0xfc0f0000, "", 2 }, 385130561Sobrien{ "ripi", 0x04040000, 0xfc0f0000, "r,R", 2 }, 386130561Sobrien{ "xcp", 0x04050000, 0xfc0f0000, "r", 2 }, 387130561Sobrien{ "block", 0x04060000, 0xfc0f0000, "", 2 }, 388130561Sobrien{ "unblock", 0x04070000, 0xfc0f0000, "", 2 }, 389130561Sobrien{ "trsc", 0x08060000, 0xfc0f0000, "r,R", 2 }, 390130561Sobrien{ "tscr", 0x08070000, 0xfc0f0000, "r,R", 2 }, 391130561Sobrien{ "fq", 0x04080000, 0xfc0f0000, "r", 2 }, 392130561Sobrien{ "flupte", 0x2c080000, 0xfc0f0000, "r", 2 }, 393130561Sobrien{ "rviu", 0x040f0000, 0xfc0f0000, "", 2 }, 394130561Sobrien{ "ldel", 0x280c0000, 0xfc0f0000, "r,R", 2 }, 395130561Sobrien{ "ldu", 0x280d0000, 0xfc0f0000, "r,R", 2 }, 396130561Sobrien{ "stdecc", 0x280b0000, 0xfc0f0000, "r,R", 2 }, 397130561Sobrien{ "trpc", 0x08040000, 0xfc0f0000, "r", 2 }, 398130561Sobrien{ "tpcr", 0x08050000, 0xfc0f0000, "r", 2 }, 399130561Sobrien{ "ghalt", 0x0c050000, 0xfc0f0000, "r", 2 }, 400130561Sobrien{ "grun", 0x0c040000, 0xfc0f0000, "", 2 }, 401130561Sobrien{ "tmpr", 0x2c0a0000, 0xfc0f0000, "r,R", 2 }, 402130561Sobrien{ "trmp", 0x2c0b0000, 0xfc0f0000, "r,R", 2 }, 403130561Sobrien 404130561Sobrien{ "trrve", 0x28060000, 0xfc0f0000, "r", 2 }, 405130561Sobrien{ "trver", 0x28070000, 0xfc0f0000, "r", 2 }, 406130561Sobrien{ "trvlr", 0x280f0000, 0xfc0f0000, "r", 2 }, 407130561Sobrien 408130561Sobrien{ "linkfl", 0x18000000, 0xfc0f0000, "r,R", 2 }, 409130561Sobrien{ "linkbl", 0x18020000, 0xfc0f0000, "r,R", 2 }, 410130561Sobrien{ "linkfp", 0x18010000, 0xfc0f0000, "r,R", 2 }, 411130561Sobrien{ "linkbp", 0x18030000, 0xfc0f0000, "r,R", 2 }, 412130561Sobrien{ "linkpl", 0x18040000, 0xfc0f0000, "r,R", 2 }, 413130561Sobrien{ "ulinkl", 0x18080000, 0xfc0f0000, "r,R", 2 }, 414130561Sobrien{ "ulinkp", 0x18090000, 0xfc0f0000, "r,R", 2 }, 415130561Sobrien{ "ulinktl", 0x180a0000, 0xfc0f0000, "r,R", 2 }, 416130561Sobrien{ "ulinktp", 0x180b0000, 0xfc0f0000, "r,R", 2 }, 417130561Sobrien}; 418130561Sobrien 419130561Sobrienint numopcodes = sizeof(gld_opcodes) / sizeof(gld_opcodes[0]); 420130561Sobrien 421130561Sobrienstruct gld_opcode *endop = gld_opcodes + sizeof(gld_opcodes) / 422130561Sobrien sizeof(gld_opcodes[0]); 423