1a5a4af3bSchristos /* Print GOULD NPL instructions for GDB, the GNU debugger. 2*8b657b07Schristos Copyright (C) 1986-2022 Free Software Foundation, Inc. 3a5a4af3bSchristos 4a5a4af3bSchristos This file is part of GDB. 5a5a4af3bSchristos 6a5a4af3bSchristos GDB is free software; you can redistribute it and/or modify 7a5a4af3bSchristos it under the terms of the GNU General Public License as published by 8a5a4af3bSchristos the Free Software Foundation; either version 3, or (at your option) 9a5a4af3bSchristos any later version. 10a5a4af3bSchristos 11a5a4af3bSchristos GDB is distributed in the hope that it will be useful, 12a5a4af3bSchristos but WITHOUT ANY WARRANTY; without even the implied warranty of 13a5a4af3bSchristos MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14a5a4af3bSchristos GNU General Public License for more details. 15a5a4af3bSchristos 16a5a4af3bSchristos You should have received a copy of the GNU General Public License 17a5a4af3bSchristos along with GDB; see the file COPYING3. If not, write to 18a5a4af3bSchristos the Free Software Foundation, 51 Franklin Street - Fifth Floor, 19a5a4af3bSchristos Boston, MA 02110-1301, USA. */ 20a5a4af3bSchristos 21a5a4af3bSchristos struct gld_opcode 22a5a4af3bSchristos { 23a5a4af3bSchristos char *name; 24a5a4af3bSchristos unsigned long opcode; 25a5a4af3bSchristos unsigned long mask; 26a5a4af3bSchristos char *args; 27a5a4af3bSchristos int length; 28a5a4af3bSchristos }; 29a5a4af3bSchristos 30a5a4af3bSchristos /* We store four bytes of opcode for all opcodes because that 31a5a4af3bSchristos is the most any of them need. The actual length of an instruction 32a5a4af3bSchristos is always at least 2 bytes, and at most four. The length of the 33a5a4af3bSchristos instruction is based on the opcode. 34a5a4af3bSchristos 35a5a4af3bSchristos The mask component is a mask saying which bits must match 36a5a4af3bSchristos particular opcode in order for an instruction to be an instance 37a5a4af3bSchristos of that opcode. 38a5a4af3bSchristos 39a5a4af3bSchristos The args component is a string containing characters 40a5a4af3bSchristos that are used to format the arguments to the instruction. */ 41a5a4af3bSchristos 42a5a4af3bSchristos /* Kinds of operands: 43a5a4af3bSchristos r Register in first field 44a5a4af3bSchristos R Register in second field 45a5a4af3bSchristos b Base register in first field 46a5a4af3bSchristos B Base register in second field 47a5a4af3bSchristos v Vector register in first field 48a5a4af3bSchristos V Vector register in first field 49a5a4af3bSchristos A Optional address register (base register) 50a5a4af3bSchristos X Optional index register 51a5a4af3bSchristos I Immediate data (16bits signed) 52a5a4af3bSchristos O Offset field (16bits signed) 53a5a4af3bSchristos h Offset field (15bits signed) 54a5a4af3bSchristos d Offset field (14bits signed) 55a5a4af3bSchristos S Shift count field 56a5a4af3bSchristos 57a5a4af3bSchristos any other characters are printed as is... */ 58a5a4af3bSchristos 59a5a4af3bSchristos /* The assembler requires that this array be sorted as follows: 60a5a4af3bSchristos all instances of the same mnemonic must be consecutive. 61a5a4af3bSchristos All instances of the same mnemonic with the same number of operands 62a5a4af3bSchristos must be consecutive. */ 63a5a4af3bSchristos struct gld_opcode gld_opcodes[] = 64a5a4af3bSchristos { 65a5a4af3bSchristos { "lb", 0xb4080000, 0xfc080000, "r,xOA,X", 4 }, 66a5a4af3bSchristos { "lnb", 0xb8080000, 0xfc080000, "r,xOA,X", 4 }, 67a5a4af3bSchristos { "lbs", 0xec080000, 0xfc080000, "r,xOA,X", 4 }, 68a5a4af3bSchristos { "lh", 0xb4000001, 0xfc080001, "r,xOA,X", 4 }, 69a5a4af3bSchristos { "lnh", 0xb8000001, 0xfc080001, "r,xOA,X", 4 }, 70a5a4af3bSchristos { "lw", 0xb4000000, 0xfc080000, "r,xOA,X", 4 }, 71a5a4af3bSchristos { "lnw", 0xb8000000, 0xfc080000, "r,xOA,X", 4 }, 72a5a4af3bSchristos { "ld", 0xb4000002, 0xfc080002, "r,xOA,X", 4 }, 73a5a4af3bSchristos { "lnd", 0xb8000002, 0xfc080002, "r,xOA,X", 4 }, 74a5a4af3bSchristos { "li", 0xf8000000, 0xfc7f0000, "r,I", 4 }, 75a5a4af3bSchristos { "lpa", 0x50080000, 0xfc080000, "r,xOA,X", 4 }, 76a5a4af3bSchristos { "la", 0x50000000, 0xfc080000, "r,xOA,X", 4 }, 77a5a4af3bSchristos { "labr", 0x58080000, 0xfc080000, "b,xOA,X", 4 }, 78a5a4af3bSchristos { "lbp", 0x90080000, 0xfc080000, "r,xOA,X", 4 }, 79a5a4af3bSchristos { "lhp", 0x90000001, 0xfc080001, "r,xOA,X", 4 }, 80a5a4af3bSchristos { "lwp", 0x90000000, 0xfc080000, "r,xOA,X", 4 }, 81a5a4af3bSchristos { "ldp", 0x90000002, 0xfc080002, "r,xOA,X", 4 }, 82a5a4af3bSchristos { "suabr", 0x58000000, 0xfc080000, "b,xOA,X", 4 }, 83a5a4af3bSchristos { "lf", 0xbc000000, 0xfc080000, "r,xOA,X", 4 }, 84a5a4af3bSchristos { "lfbr", 0xbc080000, 0xfc080000, "b,xOA,X", 4 }, 85a5a4af3bSchristos { "lwbr", 0x5c000000, 0xfc080000, "b,xOA,X", 4 }, 86a5a4af3bSchristos { "stb", 0xd4080000, 0xfc080000, "r,xOA,X", 4 }, 87a5a4af3bSchristos { "sth", 0xd4000001, 0xfc080001, "r,xOA,X", 4 }, 88a5a4af3bSchristos { "stw", 0xd4000000, 0xfc080000, "r,xOA,X", 4 }, 89a5a4af3bSchristos { "std", 0xd4000002, 0xfc080002, "r,xOA,X", 4 }, 90a5a4af3bSchristos { "stf", 0xdc000000, 0xfc080000, "r,xOA,X", 4 }, 91a5a4af3bSchristos { "stfbr", 0xdc080000, 0xfc080000, "b,xOA,X", 4 }, 92a5a4af3bSchristos { "stwbr", 0x54000000, 0xfc080000, "b,xOA,X", 4 }, 93a5a4af3bSchristos { "zmb", 0xd8080000, 0xfc080000, "r,xOA,X", 4 }, 94a5a4af3bSchristos { "zmh", 0xd8000001, 0xfc080001, "r,xOA,X", 4 }, 95a5a4af3bSchristos { "zmw", 0xd8000000, 0xfc080000, "r,xOA,X", 4 }, 96a5a4af3bSchristos { "zmd", 0xd8000002, 0xfc080002, "r,xOA,X", 4 }, 97a5a4af3bSchristos { "stbp", 0x94080000, 0xfc080000, "r,xOA,X", 4 }, 98a5a4af3bSchristos { "sthp", 0x94000001, 0xfc080001, "r,xOA,X", 4 }, 99a5a4af3bSchristos { "stwp", 0x94000000, 0xfc080000, "r,xOA,X", 4 }, 100a5a4af3bSchristos { "stdp", 0x94000002, 0xfc080002, "r,xOA,X", 4 }, 101a5a4af3bSchristos { "lil", 0xf80b0000, 0xfc7f0000, "r,D", 4 }, 102a5a4af3bSchristos { "lwsl1", 0xec000000, 0xfc080000, "r,xOA,X", 4 }, 103a5a4af3bSchristos { "lwsl2", 0xfc000000, 0xfc080000, "r,xOA,X", 4 }, 104a5a4af3bSchristos { "lwsl3", 0xfc080000, 0xfc080000, "r,xOA,X", 4 }, 105a5a4af3bSchristos 106a5a4af3bSchristos { "lvb", 0xb0080000, 0xfc080000, "v,xOA,X", 4 }, 107a5a4af3bSchristos { "lvh", 0xb0000001, 0xfc080001, "v,xOA,X", 4 }, 108a5a4af3bSchristos { "lvw", 0xb0000000, 0xfc080000, "v,xOA,X", 4 }, 109a5a4af3bSchristos { "lvd", 0xb0000002, 0xfc080002, "v,xOA,X", 4 }, 110a5a4af3bSchristos { "liv", 0x3c040000, 0xfc0f0000, "v,R", 2 }, 111a5a4af3bSchristos { "livf", 0x3c080000, 0xfc0f0000, "v,R", 2 }, 112a5a4af3bSchristos { "stvb", 0xd0080000, 0xfc080000, "v,xOA,X", 4 }, 113a5a4af3bSchristos { "stvh", 0xd0000001, 0xfc080001, "v,xOA,X", 4 }, 114a5a4af3bSchristos { "stvw", 0xd0000000, 0xfc080000, "v,xOA,X", 4 }, 115a5a4af3bSchristos { "stvd", 0xd0000002, 0xfc080002, "v,xOA,X", 4 }, 116a5a4af3bSchristos 117a5a4af3bSchristos { "trr", 0x2c000000, 0xfc0f0000, "r,R", 2 }, 118a5a4af3bSchristos { "trn", 0x2c040000, 0xfc0f0000, "r,R", 2 }, 119a5a4af3bSchristos { "trnd", 0x2c0c0000, 0xfc0f0000, "r,R", 2 }, 120a5a4af3bSchristos { "trabs", 0x2c010000, 0xfc0f0000, "r,R", 2 }, 121a5a4af3bSchristos { "trabsd", 0x2c090000, 0xfc0f0000, "r,R", 2 }, 122a5a4af3bSchristos { "trc", 0x2c030000, 0xfc0f0000, "r,R", 2 }, 123a5a4af3bSchristos { "xcr", 0x28040000, 0xfc0f0000, "r,R", 2 }, 124a5a4af3bSchristos { "cxcr", 0x2c060000, 0xfc0f0000, "r,R", 2 }, 125a5a4af3bSchristos { "cxcrd", 0x2c0e0000, 0xfc0f0000, "r,R", 2 }, 126a5a4af3bSchristos { "tbrr", 0x2c020000, 0xfc0f0000, "r,B", 2 }, 127a5a4af3bSchristos { "trbr", 0x28030000, 0xfc0f0000, "b,R", 2 }, 128a5a4af3bSchristos { "xcbr", 0x28020000, 0xfc0f0000, "b,B", 2 }, 129a5a4af3bSchristos { "tbrbr", 0x28010000, 0xfc0f0000, "b,B", 2 }, 130a5a4af3bSchristos 131a5a4af3bSchristos { "trvv", 0x28050000, 0xfc0f0000, "v,V", 2 }, 132a5a4af3bSchristos { "trvvn", 0x2c050000, 0xfc0f0000, "v,V", 2 }, 133a5a4af3bSchristos { "trvvnd", 0x2c0d0000, 0xfc0f0000, "v,V", 2 }, 134a5a4af3bSchristos { "trvab", 0x2c070000, 0xfc0f0000, "v,V", 2 }, 135a5a4af3bSchristos { "trvabd", 0x2c0f0000, 0xfc0f0000, "v,V", 2 }, 136a5a4af3bSchristos { "cmpv", 0x14060000, 0xfc0f0000, "v,V", 2 }, 137a5a4af3bSchristos { "expv", 0x14070000, 0xfc0f0000, "v,V", 2 }, 138a5a4af3bSchristos { "mrvvlt", 0x10030000, 0xfc0f0000, "v,V", 2 }, 139a5a4af3bSchristos { "mrvvle", 0x10040000, 0xfc0f0000, "v,V", 2 }, 140a5a4af3bSchristos { "mrvvgt", 0x14030000, 0xfc0f0000, "v,V", 2 }, 141a5a4af3bSchristos { "mrvvge", 0x14040000, 0xfc0f0000, "v,V", 2 }, 142a5a4af3bSchristos { "mrvveq", 0x10050000, 0xfc0f0000, "v,V", 2 }, 143a5a4af3bSchristos { "mrvvne", 0x10050000, 0xfc0f0000, "v,V", 2 }, 144a5a4af3bSchristos { "mrvrlt", 0x100d0000, 0xfc0f0000, "v,R", 2 }, 145a5a4af3bSchristos { "mrvrle", 0x100e0000, 0xfc0f0000, "v,R", 2 }, 146a5a4af3bSchristos { "mrvrgt", 0x140d0000, 0xfc0f0000, "v,R", 2 }, 147a5a4af3bSchristos { "mrvrge", 0x140e0000, 0xfc0f0000, "v,R", 2 }, 148a5a4af3bSchristos { "mrvreq", 0x100f0000, 0xfc0f0000, "v,R", 2 }, 149a5a4af3bSchristos { "mrvrne", 0x140f0000, 0xfc0f0000, "v,R", 2 }, 150a5a4af3bSchristos { "trvr", 0x140b0000, 0xfc0f0000, "r,V", 2 }, 151a5a4af3bSchristos { "trrv", 0x140c0000, 0xfc0f0000, "v,R", 2 }, 152a5a4af3bSchristos 153a5a4af3bSchristos { "bu", 0x40000000, 0xff880000, "xOA,X", 4 }, 154a5a4af3bSchristos { "bns", 0x70080000, 0xff880000, "xOA,X", 4 }, 155a5a4af3bSchristos { "bnco", 0x70880000, 0xff880000, "xOA,X", 4 }, 156a5a4af3bSchristos { "bge", 0x71080000, 0xff880000, "xOA,X", 4 }, 157a5a4af3bSchristos { "bne", 0x71880000, 0xff880000, "xOA,X", 4 }, 158a5a4af3bSchristos { "bunge", 0x72080000, 0xff880000, "xOA,X", 4 }, 159a5a4af3bSchristos { "bunle", 0x72880000, 0xff880000, "xOA,X", 4 }, 160a5a4af3bSchristos { "bgt", 0x73080000, 0xff880000, "xOA,X", 4 }, 161a5a4af3bSchristos { "bnany", 0x73880000, 0xff880000, "xOA,X", 4 }, 162a5a4af3bSchristos { "bs" , 0x70000000, 0xff880000, "xOA,X", 4 }, 163a5a4af3bSchristos { "bco", 0x70800000, 0xff880000, "xOA,X", 4 }, 164a5a4af3bSchristos { "blt", 0x71000000, 0xff880000, "xOA,X", 4 }, 165a5a4af3bSchristos { "beq", 0x71800000, 0xff880000, "xOA,X", 4 }, 166a5a4af3bSchristos { "buge", 0x72000000, 0xff880000, "xOA,X", 4 }, 167a5a4af3bSchristos { "bult", 0x72800000, 0xff880000, "xOA,X", 4 }, 168a5a4af3bSchristos { "ble", 0x73000000, 0xff880000, "xOA,X", 4 }, 169a5a4af3bSchristos { "bany", 0x73800000, 0xff880000, "xOA,X", 4 }, 170a5a4af3bSchristos { "brlnk", 0x44000000, 0xfc080000, "r,xOA,X", 4 }, 171a5a4af3bSchristos { "bib", 0x48000000, 0xfc080000, "r,xOA,X", 4 }, 172a5a4af3bSchristos { "bih", 0x48080000, 0xfc080000, "r,xOA,X", 4 }, 173a5a4af3bSchristos { "biw", 0x4c000000, 0xfc080000, "r,xOA,X", 4 }, 174a5a4af3bSchristos { "bid", 0x4c080000, 0xfc080000, "r,xOA,X", 4 }, 175a5a4af3bSchristos { "bivb", 0x60000000, 0xfc080000, "r,xOA,X", 4 }, 176a5a4af3bSchristos { "bivh", 0x60080000, 0xfc080000, "r,xOA,X", 4 }, 177a5a4af3bSchristos { "bivw", 0x64000000, 0xfc080000, "r,xOA,X", 4 }, 178a5a4af3bSchristos { "bivd", 0x64080000, 0xfc080000, "r,xOA,X", 4 }, 179a5a4af3bSchristos { "bvsb", 0x68000000, 0xfc080000, "r,xOA,X", 4 }, 180a5a4af3bSchristos { "bvsh", 0x68080000, 0xfc080000, "r,xOA,X", 4 }, 181a5a4af3bSchristos { "bvsw", 0x6c000000, 0xfc080000, "r,xOA,X", 4 }, 182a5a4af3bSchristos { "bvsd", 0x6c080000, 0xfc080000, "r,xOA,X", 4 }, 183a5a4af3bSchristos 184a5a4af3bSchristos { "camb", 0x80080000, 0xfc080000, "r,xOA,X", 4 }, 185a5a4af3bSchristos { "camh", 0x80000001, 0xfc080001, "r,xOA,X", 4 }, 186a5a4af3bSchristos { "camw", 0x80000000, 0xfc080000, "r,xOA,X", 4 }, 187a5a4af3bSchristos { "camd", 0x80000002, 0xfc080002, "r,xOA,X", 4 }, 188a5a4af3bSchristos { "car", 0x10000000, 0xfc0f0000, "r,R", 2 }, 189a5a4af3bSchristos { "card", 0x14000000, 0xfc0f0000, "r,R", 2 }, 190a5a4af3bSchristos { "ci", 0xf8050000, 0xfc7f0000, "r,I", 4 }, 191a5a4af3bSchristos { "chkbnd", 0x5c080000, 0xfc080000, "r,xOA,X", 4 }, 192a5a4af3bSchristos 193a5a4af3bSchristos { "cavv", 0x10010000, 0xfc0f0000, "v,V", 2 }, 194a5a4af3bSchristos { "cavr", 0x10020000, 0xfc0f0000, "v,R", 2 }, 195a5a4af3bSchristos { "cavvd", 0x10090000, 0xfc0f0000, "v,V", 2 }, 196a5a4af3bSchristos { "cavrd", 0x100b0000, 0xfc0f0000, "v,R", 2 }, 197a5a4af3bSchristos 198a5a4af3bSchristos { "anmb", 0x84080000, 0xfc080000, "r,xOA,X", 4 }, 199a5a4af3bSchristos { "anmh", 0x84000001, 0xfc080001, "r,xOA,X", 4 }, 200a5a4af3bSchristos { "anmw", 0x84000000, 0xfc080000, "r,xOA,X", 4 }, 201a5a4af3bSchristos { "anmd", 0x84000002, 0xfc080002, "r,xOA,X", 4 }, 202a5a4af3bSchristos { "anr", 0x04000000, 0xfc0f0000, "r,R", 2 }, 203a5a4af3bSchristos { "ani", 0xf8080000, 0xfc7f0000, "r,I", 4 }, 204a5a4af3bSchristos { "ormb", 0xb8080000, 0xfc080000, "r,xOA,X", 4 }, 205a5a4af3bSchristos { "ormh", 0xb8000001, 0xfc080001, "r,xOA,X", 4 }, 206a5a4af3bSchristos { "ormw", 0xb8000000, 0xfc080000, "r,xOA,X", 4 }, 207a5a4af3bSchristos { "ormd", 0xb8000002, 0xfc080002, "r,xOA,X", 4 }, 208a5a4af3bSchristos { "orr", 0x08000000, 0xfc0f0000, "r,R", 2 }, 209a5a4af3bSchristos { "oi", 0xf8090000, 0xfc7f0000, "r,I", 4 }, 210a5a4af3bSchristos { "eomb", 0x8c080000, 0xfc080000, "r,xOA,X", 4 }, 211a5a4af3bSchristos { "eomh", 0x8c000001, 0xfc080001, "r,xOA,X", 4 }, 212a5a4af3bSchristos { "eomw", 0x8c000000, 0xfc080000, "r,xOA,X", 4 }, 213a5a4af3bSchristos { "eomd", 0x8c000002, 0xfc080002, "r,xOA,X", 4 }, 214a5a4af3bSchristos { "eor", 0x0c000000, 0xfc0f0000, "r,R", 2 }, 215a5a4af3bSchristos { "eoi", 0xf80a0000, 0xfc7f0000, "r,I", 4 }, 216a5a4af3bSchristos 217a5a4af3bSchristos { "anvv", 0x04010000, 0xfc0f0000, "v,V", 2 }, 218a5a4af3bSchristos { "anvr", 0x04020000, 0xfc0f0000, "v,R", 2 }, 219a5a4af3bSchristos { "orvv", 0x08010000, 0xfc0f0000, "v,V", 2 }, 220a5a4af3bSchristos { "orvr", 0x08020000, 0xfc0f0000, "v,R", 2 }, 221a5a4af3bSchristos { "eovv", 0x0c010000, 0xfc0f0000, "v,V", 2 }, 222a5a4af3bSchristos { "eovr", 0x0c020000, 0xfc0f0000, "v,R", 2 }, 223a5a4af3bSchristos 224a5a4af3bSchristos { "sacz", 0x100c0000, 0xfc0f0000, "r,R", 2 }, 225a5a4af3bSchristos { "sla", 0x1c400000, 0xfc600000, "r,S", 2 }, 226a5a4af3bSchristos { "sll", 0x1c600000, 0xfc600000, "r,S", 2 }, 227a5a4af3bSchristos { "slc", 0x24400000, 0xfc600000, "r,S", 2 }, 228a5a4af3bSchristos { "slad", 0x20400000, 0xfc600000, "r,S", 2 }, 229a5a4af3bSchristos { "slld", 0x20600000, 0xfc600000, "r,S", 2 }, 230a5a4af3bSchristos { "sra", 0x1c000000, 0xfc600000, "r,S", 2 }, 231a5a4af3bSchristos { "srl", 0x1c200000, 0xfc600000, "r,S", 2 }, 232a5a4af3bSchristos { "src", 0x24000000, 0xfc600000, "r,S", 2 }, 233a5a4af3bSchristos { "srad", 0x20000000, 0xfc600000, "r,S", 2 }, 234a5a4af3bSchristos { "srld", 0x20200000, 0xfc600000, "r,S", 2 }, 235a5a4af3bSchristos { "sda", 0x3c030000, 0xfc0f0000, "r,R", 2 }, 236a5a4af3bSchristos { "sdl", 0x3c020000, 0xfc0f0000, "r,R", 2 }, 237a5a4af3bSchristos { "sdc", 0x3c010000, 0xfc0f0000, "r,R", 2 }, 238a5a4af3bSchristos { "sdad", 0x3c0b0000, 0xfc0f0000, "r,R", 2 }, 239a5a4af3bSchristos { "sdld", 0x3c0a0000, 0xfc0f0000, "r,R", 2 }, 240a5a4af3bSchristos 241a5a4af3bSchristos { "svda", 0x3c070000, 0xfc0f0000, "v,R", 2 }, 242a5a4af3bSchristos { "svdl", 0x3c060000, 0xfc0f0000, "v,R", 2 }, 243a5a4af3bSchristos { "svdc", 0x3c050000, 0xfc0f0000, "v,R", 2 }, 244a5a4af3bSchristos { "svdad", 0x3c0e0000, 0xfc0f0000, "v,R", 2 }, 245a5a4af3bSchristos { "svdld", 0x3c0d0000, 0xfc0f0000, "v,R", 2 }, 246a5a4af3bSchristos 247a5a4af3bSchristos { "sbm", 0xac080000, 0xfc080000, "f,xOA,X", 4 }, 248a5a4af3bSchristos { "zbm", 0xac000000, 0xfc080000, "f,xOA,X", 4 }, 249a5a4af3bSchristos { "tbm", 0xa8080000, 0xfc080000, "f,xOA,X", 4 }, 250a5a4af3bSchristos { "incmb", 0xa0000000, 0xfc080000, "xOA,X", 4 }, 251a5a4af3bSchristos { "incmh", 0xa0080000, 0xfc080000, "xOA,X", 4 }, 252a5a4af3bSchristos { "incmw", 0xa4000000, 0xfc080000, "xOA,X", 4 }, 253a5a4af3bSchristos { "incmd", 0xa4080000, 0xfc080000, "xOA,X", 4 }, 254a5a4af3bSchristos { "sbmd", 0x7c080000, 0xfc080000, "r,xOA,X", 4 }, 255a5a4af3bSchristos { "zbmd", 0x7c000000, 0xfc080000, "r,xOA,X", 4 }, 256a5a4af3bSchristos { "tbmd", 0x78080000, 0xfc080000, "r,xOA,X", 4 }, 257a5a4af3bSchristos 258a5a4af3bSchristos { "ssm", 0x9c080000, 0xfc080000, "f,xOA,X", 4 }, 259a5a4af3bSchristos { "zsm", 0x9c000000, 0xfc080000, "f,xOA,X", 4 }, 260a5a4af3bSchristos { "tsm", 0x98080000, 0xfc080000, "f,xOA,X", 4 }, 261a5a4af3bSchristos 262a5a4af3bSchristos { "admb", 0xc8080000, 0xfc080000, "r,xOA,X", 4 }, 263a5a4af3bSchristos { "admh", 0xc8000001, 0xfc080001, "r,xOA,X", 4 }, 264a5a4af3bSchristos { "admw", 0xc8000000, 0xfc080000, "r,xOA,X", 4 }, 265a5a4af3bSchristos { "admd", 0xc8000002, 0xfc080002, "r,xOA,X", 4 }, 266a5a4af3bSchristos { "adr", 0x38000000, 0xfc0f0000, "r,R", 2 }, 267a5a4af3bSchristos { "armb", 0xe8080000, 0xfc080000, "r,xOA,X", 4 }, 268a5a4af3bSchristos { "armh", 0xe8000001, 0xfc080001, "r,xOA,X", 4 }, 269a5a4af3bSchristos { "armw", 0xe8000000, 0xfc080000, "r,xOA,X", 4 }, 270a5a4af3bSchristos { "armd", 0xe8000002, 0xfc080002, "r,xOA,X", 4 }, 271a5a4af3bSchristos { "adi", 0xf8010000, 0xfc0f0000, "r,I", 4 }, 272a5a4af3bSchristos { "sumb", 0xcc080000, 0xfc080000, "r,xOA,X", 4 }, 273a5a4af3bSchristos { "sumh", 0xcc000001, 0xfc080001, "r,xOA,X", 4 }, 274a5a4af3bSchristos { "sumw", 0xcc000000, 0xfc080000, "r,xOA,X", 4 }, 275a5a4af3bSchristos { "sumd", 0xcc000002, 0xfc080002, "r,xOA,X", 4 }, 276a5a4af3bSchristos { "sur", 0x3c000000, 0xfc0f0000, "r,R", 2 }, 277a5a4af3bSchristos { "sui", 0xf8020000, 0xfc0f0000, "r,I", 4 }, 278a5a4af3bSchristos { "mpmb", 0xc0080000, 0xfc080000, "r,xOA,X", 4 }, 279a5a4af3bSchristos { "mpmh", 0xc0000001, 0xfc080001, "r,xOA,X", 4 }, 280a5a4af3bSchristos { "mpmw", 0xc0000000, 0xfc080000, "r,xOA,X", 4 }, 281a5a4af3bSchristos { "mpr", 0x38020000, 0xfc0f0000, "r,R", 2 }, 282a5a4af3bSchristos { "mprd", 0x3c0f0000, 0xfc0f0000, "r,R", 2 }, 283a5a4af3bSchristos { "mpi", 0xf8030000, 0xfc0f0000, "r,I", 4 }, 284a5a4af3bSchristos { "dvmb", 0xc4080000, 0xfc080000, "r,xOA,X", 4 }, 285a5a4af3bSchristos { "dvmh", 0xc4000001, 0xfc080001, "r,xOA,X", 4 }, 286a5a4af3bSchristos { "dvmw", 0xc4000000, 0xfc080000, "r,xOA,X", 4 }, 287a5a4af3bSchristos { "dvr", 0x380a0000, 0xfc0f0000, "r,R", 2 }, 288a5a4af3bSchristos { "dvi", 0xf8040000, 0xfc0f0000, "r,I", 4 }, 289a5a4af3bSchristos { "exs", 0x38080000, 0xfc0f0000, "r,R", 2 }, 290a5a4af3bSchristos 291a5a4af3bSchristos { "advv", 0x30000000, 0xfc0f0000, "v,V", 2 }, 292a5a4af3bSchristos { "advvd", 0x30080000, 0xfc0f0000, "v,V", 2 }, 293a5a4af3bSchristos { "adrv", 0x34000000, 0xfc0f0000, "v,R", 2 }, 294a5a4af3bSchristos { "adrvd", 0x34080000, 0xfc0f0000, "v,R", 2 }, 295a5a4af3bSchristos { "suvv", 0x30010000, 0xfc0f0000, "v,V", 2 }, 296a5a4af3bSchristos { "suvvd", 0x30090000, 0xfc0f0000, "v,V", 2 }, 297a5a4af3bSchristos { "surv", 0x34010000, 0xfc0f0000, "v,R", 2 }, 298a5a4af3bSchristos { "survd", 0x34090000, 0xfc0f0000, "v,R", 2 }, 299a5a4af3bSchristos { "mpvv", 0x30020000, 0xfc0f0000, "v,V", 2 }, 300a5a4af3bSchristos { "mprv", 0x34020000, 0xfc0f0000, "v,R", 2 }, 301a5a4af3bSchristos 302a5a4af3bSchristos { "adfw", 0xe0080000, 0xfc080000, "r,xOA,X", 4 }, 303a5a4af3bSchristos { "adfd", 0xe0080002, 0xfc080002, "r,xOA,X", 4 }, 304a5a4af3bSchristos { "adrfw", 0x38010000, 0xfc0f0000, "r,R", 2 }, 305a5a4af3bSchristos { "adrfd", 0x38090000, 0xfc0f0000, "r,R", 2 }, 306a5a4af3bSchristos { "surfw", 0xe0000000, 0xfc080000, "r,xOA,X", 4 }, 307a5a4af3bSchristos { "surfd", 0xe0000002, 0xfc080002, "r,xOA,X", 4 }, 308a5a4af3bSchristos { "surfw", 0x38030000, 0xfc0f0000, "r,R", 2 }, 309a5a4af3bSchristos { "surfd", 0x380b0000, 0xfc0f0000, "r,R", 2 }, 310a5a4af3bSchristos { "mpfw", 0xe4080000, 0xfc080000, "r,xOA,X", 4 }, 311a5a4af3bSchristos { "mpfd", 0xe4080002, 0xfc080002, "r,xOA,X", 4 }, 312a5a4af3bSchristos { "mprfw", 0x38060000, 0xfc0f0000, "r,R", 2 }, 313a5a4af3bSchristos { "mprfd", 0x380e0000, 0xfc0f0000, "r,R", 2 }, 314a5a4af3bSchristos { "rfw", 0xe4000000, 0xfc080000, "r,xOA,X", 4 }, 315a5a4af3bSchristos { "rfd", 0xe4000002, 0xfc080002, "r,xOA,X", 4 }, 316a5a4af3bSchristos { "rrfw", 0x0c0e0000, 0xfc0f0000, "r", 2 }, 317a5a4af3bSchristos { "rrfd", 0x0c0f0000, 0xfc0f0000, "r", 2 }, 318a5a4af3bSchristos 319a5a4af3bSchristos { "advvfw", 0x30040000, 0xfc0f0000, "v,V", 2 }, 320a5a4af3bSchristos { "advvfd", 0x300c0000, 0xfc0f0000, "v,V", 2 }, 321a5a4af3bSchristos { "adrvfw", 0x34040000, 0xfc0f0000, "v,R", 2 }, 322a5a4af3bSchristos { "adrvfd", 0x340c0000, 0xfc0f0000, "v,R", 2 }, 323a5a4af3bSchristos { "suvvfw", 0x30050000, 0xfc0f0000, "v,V", 2 }, 324a5a4af3bSchristos { "suvvfd", 0x300d0000, 0xfc0f0000, "v,V", 2 }, 325a5a4af3bSchristos { "survfw", 0x34050000, 0xfc0f0000, "v,R", 2 }, 326a5a4af3bSchristos { "survfd", 0x340d0000, 0xfc0f0000, "v,R", 2 }, 327a5a4af3bSchristos { "mpvvfw", 0x30060000, 0xfc0f0000, "v,V", 2 }, 328a5a4af3bSchristos { "mpvvfd", 0x300e0000, 0xfc0f0000, "v,V", 2 }, 329a5a4af3bSchristos { "mprvfw", 0x34060000, 0xfc0f0000, "v,R", 2 }, 330a5a4af3bSchristos { "mprvfd", 0x340e0000, 0xfc0f0000, "v,R", 2 }, 331a5a4af3bSchristos { "rvfw", 0x30070000, 0xfc0f0000, "v", 2 }, 332a5a4af3bSchristos { "rvfd", 0x300f0000, 0xfc0f0000, "v", 2 }, 333a5a4af3bSchristos 334a5a4af3bSchristos { "fltw", 0x38070000, 0xfc0f0000, "r,R", 2 }, 335a5a4af3bSchristos { "fltd", 0x380f0000, 0xfc0f0000, "r,R", 2 }, 336a5a4af3bSchristos { "fixw", 0x38050000, 0xfc0f0000, "r,R", 2 }, 337a5a4af3bSchristos { "fixd", 0x380d0000, 0xfc0f0000, "r,R", 2 }, 338a5a4af3bSchristos { "cfpds", 0x3c090000, 0xfc0f0000, "r,R", 2 }, 339a5a4af3bSchristos 340a5a4af3bSchristos { "fltvw", 0x080d0000, 0xfc0f0000, "v,V", 2 }, 341a5a4af3bSchristos { "fltvd", 0x080f0000, 0xfc0f0000, "v,V", 2 }, 342a5a4af3bSchristos { "fixvw", 0x080c0000, 0xfc0f0000, "v,V", 2 }, 343a5a4af3bSchristos { "fixvd", 0x080e0000, 0xfc0f0000, "v,V", 2 }, 344a5a4af3bSchristos { "cfpvds", 0x0c0d0000, 0xfc0f0000, "v,V", 2 }, 345a5a4af3bSchristos 346a5a4af3bSchristos { "orvrn", 0x000a0000, 0xfc0f0000, "r,V", 2 }, 347a5a4af3bSchristos { "andvrn", 0x00080000, 0xfc0f0000, "r,V", 2 }, 348a5a4af3bSchristos { "frsteq", 0x04090000, 0xfc0f0000, "r,V", 2 }, 349a5a4af3bSchristos { "sigma", 0x0c080000, 0xfc0f0000, "r,V", 2 }, 350a5a4af3bSchristos { "sigmad", 0x0c0a0000, 0xfc0f0000, "r,V", 2 }, 351a5a4af3bSchristos { "sigmf", 0x08080000, 0xfc0f0000, "r,V", 2 }, 352a5a4af3bSchristos { "sigmfd", 0x080a0000, 0xfc0f0000, "r,V", 2 }, 353a5a4af3bSchristos { "prodf", 0x04080000, 0xfc0f0000, "r,V", 2 }, 354a5a4af3bSchristos { "prodfd", 0x040a0000, 0xfc0f0000, "r,V", 2 }, 355a5a4af3bSchristos { "maxv", 0x10080000, 0xfc0f0000, "r,V", 2 }, 356a5a4af3bSchristos { "maxvd", 0x100a0000, 0xfc0f0000, "r,V", 2 }, 357a5a4af3bSchristos { "minv", 0x14080000, 0xfc0f0000, "r,V", 2 }, 358a5a4af3bSchristos { "minvd", 0x140a0000, 0xfc0f0000, "r,V", 2 }, 359a5a4af3bSchristos 360a5a4af3bSchristos { "lpsd", 0xf0000000, 0xfc080000, "xOA,X", 4 }, 361a5a4af3bSchristos { "ldc", 0xf0080000, 0xfc080000, "xOA,X", 4 }, 362a5a4af3bSchristos { "spm", 0x040c0000, 0xfc0f0000, "r", 2 }, 363a5a4af3bSchristos { "rpm", 0x040d0000, 0xfc0f0000, "r", 2 }, 364a5a4af3bSchristos { "tritr", 0x00070000, 0xfc0f0000, "r", 2 }, 365a5a4af3bSchristos { "trrit", 0x00060000, 0xfc0f0000, "r", 2 }, 366a5a4af3bSchristos { "rpswt", 0x04080000, 0xfc0f0000, "r", 2 }, 367a5a4af3bSchristos { "exr", 0xf8070000, 0xfc0f0000, "", 4 }, 368a5a4af3bSchristos { "halt", 0x00000000, 0xfc0f0000, "", 2 }, 369a5a4af3bSchristos { "wait", 0x00010000, 0xfc0f0000, "", 2 }, 370a5a4af3bSchristos { "nop", 0x00020000, 0xfc0f0000, "", 2 }, 371a5a4af3bSchristos { "eiae", 0x00030000, 0xfc0f0000, "", 2 }, 372a5a4af3bSchristos { "efae", 0x000d0000, 0xfc0f0000, "", 2 }, 373a5a4af3bSchristos { "diae", 0x000e0000, 0xfc0f0000, "", 2 }, 374a5a4af3bSchristos { "dfae", 0x000f0000, 0xfc0f0000, "", 2 }, 375a5a4af3bSchristos { "spvc", 0xf8060000, 0xfc0f0000, "r,T,N", 4 }, 376a5a4af3bSchristos { "rdsts", 0x00090000, 0xfc0f0000, "r", 2 }, 377a5a4af3bSchristos { "setcpu", 0x000c0000, 0xfc0f0000, "r", 2 }, 378a5a4af3bSchristos { "cmc", 0x000b0000, 0xfc0f0000, "r", 2 }, 379a5a4af3bSchristos { "trrcu", 0x00040000, 0xfc0f0000, "r", 2 }, 380a5a4af3bSchristos { "attnio", 0x00050000, 0xfc0f0000, "", 2 }, 381a5a4af3bSchristos { "fudit", 0x28080000, 0xfc0f0000, "", 2 }, 382a5a4af3bSchristos { "break", 0x28090000, 0xfc0f0000, "", 2 }, 383a5a4af3bSchristos { "frzss", 0x280a0000, 0xfc0f0000, "", 2 }, 384a5a4af3bSchristos { "ripi", 0x04040000, 0xfc0f0000, "r,R", 2 }, 385a5a4af3bSchristos { "xcp", 0x04050000, 0xfc0f0000, "r", 2 }, 386a5a4af3bSchristos { "block", 0x04060000, 0xfc0f0000, "", 2 }, 387a5a4af3bSchristos { "unblock", 0x04070000, 0xfc0f0000, "", 2 }, 388a5a4af3bSchristos { "trsc", 0x08060000, 0xfc0f0000, "r,R", 2 }, 389a5a4af3bSchristos { "tscr", 0x08070000, 0xfc0f0000, "r,R", 2 }, 390a5a4af3bSchristos { "fq", 0x04080000, 0xfc0f0000, "r", 2 }, 391a5a4af3bSchristos { "flupte", 0x2c080000, 0xfc0f0000, "r", 2 }, 392a5a4af3bSchristos { "rviu", 0x040f0000, 0xfc0f0000, "", 2 }, 393a5a4af3bSchristos { "ldel", 0x280c0000, 0xfc0f0000, "r,R", 2 }, 394a5a4af3bSchristos { "ldu", 0x280d0000, 0xfc0f0000, "r,R", 2 }, 395a5a4af3bSchristos { "stdecc", 0x280b0000, 0xfc0f0000, "r,R", 2 }, 396a5a4af3bSchristos { "trpc", 0x08040000, 0xfc0f0000, "r", 2 }, 397a5a4af3bSchristos { "tpcr", 0x08050000, 0xfc0f0000, "r", 2 }, 398a5a4af3bSchristos { "ghalt", 0x0c050000, 0xfc0f0000, "r", 2 }, 399a5a4af3bSchristos { "grun", 0x0c040000, 0xfc0f0000, "", 2 }, 400a5a4af3bSchristos { "tmpr", 0x2c0a0000, 0xfc0f0000, "r,R", 2 }, 401a5a4af3bSchristos { "trmp", 0x2c0b0000, 0xfc0f0000, "r,R", 2 }, 402a5a4af3bSchristos 403a5a4af3bSchristos { "trrve", 0x28060000, 0xfc0f0000, "r", 2 }, 404a5a4af3bSchristos { "trver", 0x28070000, 0xfc0f0000, "r", 2 }, 405a5a4af3bSchristos { "trvlr", 0x280f0000, 0xfc0f0000, "r", 2 }, 406a5a4af3bSchristos 407a5a4af3bSchristos { "linkfl", 0x18000000, 0xfc0f0000, "r,R", 2 }, 408a5a4af3bSchristos { "linkbl", 0x18020000, 0xfc0f0000, "r,R", 2 }, 409a5a4af3bSchristos { "linkfp", 0x18010000, 0xfc0f0000, "r,R", 2 }, 410a5a4af3bSchristos { "linkbp", 0x18030000, 0xfc0f0000, "r,R", 2 }, 411a5a4af3bSchristos { "linkpl", 0x18040000, 0xfc0f0000, "r,R", 2 }, 412a5a4af3bSchristos { "ulinkl", 0x18080000, 0xfc0f0000, "r,R", 2 }, 413a5a4af3bSchristos { "ulinkp", 0x18090000, 0xfc0f0000, "r,R", 2 }, 414a5a4af3bSchristos { "ulinktl", 0x180a0000, 0xfc0f0000, "r,R", 2 }, 415a5a4af3bSchristos { "ulinktp", 0x180b0000, 0xfc0f0000, "r,R", 2 }, 416a5a4af3bSchristos }; 417a5a4af3bSchristos 418a5a4af3bSchristos int numopcodes = sizeof(gld_opcodes) / sizeof(gld_opcodes[0]); 419a5a4af3bSchristos 420a5a4af3bSchristos struct gld_opcode *endop = gld_opcodes + sizeof(gld_opcodes) / 421a5a4af3bSchristos sizeof(gld_opcodes[0]); 422