1 /* Instruction opcode table for iq2000. 2 3 THIS FILE IS MACHINE GENERATED WITH CGEN. 4 5 Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc. 6 7 This file is part of the GNU Binutils and/or GDB, the GNU debugger. 8 9 This program is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 2, or (at your option) 12 any later version. 13 14 This program is distributed in the hope that it will be useful, 15 but WITHOUT ANY WARRANTY; without even the implied warranty of 16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17 GNU General Public License for more details. 18 19 You should have received a copy of the GNU General Public License along 20 with this program; if not, write to the Free Software Foundation, Inc., 21 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. 22 23 */ 24 25 #include "sysdep.h" 26 #include "ansidecl.h" 27 #include "bfd.h" 28 #include "symcat.h" 29 #include "iq2000-desc.h" 30 #include "iq2000-opc.h" 31 #include "libiberty.h" 32 33 /* The hash functions are recorded here to help keep assembler code out of 34 the disassembler and vice versa. */ 35 36 static int asm_hash_insn_p PARAMS ((const CGEN_INSN *)); 37 static unsigned int asm_hash_insn PARAMS ((const char *)); 38 static int dis_hash_insn_p PARAMS ((const CGEN_INSN *)); 39 static unsigned int dis_hash_insn PARAMS ((const char *, CGEN_INSN_INT)); 40 41 /* Instruction formats. */ 42 43 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 44 #define F(f) & iq2000_cgen_ifld_table[IQ2000_##f] 45 #else 46 #define F(f) & iq2000_cgen_ifld_table[IQ2000_/**/f] 47 #endif 48 static const CGEN_IFMT ifmt_empty = { 49 0, 0, 0x0, { { 0 } } 50 }; 51 52 static const CGEN_IFMT ifmt_add2 = { 53 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 54 }; 55 56 static const CGEN_IFMT ifmt_add = { 57 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 58 }; 59 60 static const CGEN_IFMT ifmt_addi2 = { 61 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } } 62 }; 63 64 static const CGEN_IFMT ifmt_addi = { 65 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 66 }; 67 68 static const CGEN_IFMT ifmt_ram = { 69 32, 32, 0xfc000020, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_5) }, { F (F_MASKL) }, { 0 } } 70 }; 71 72 static const CGEN_IFMT ifmt_sll = { 73 32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 74 }; 75 76 static const CGEN_IFMT ifmt_sllv2 = { 77 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 78 }; 79 80 static const CGEN_IFMT ifmt_slmv2 = { 81 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 82 }; 83 84 static const CGEN_IFMT ifmt_slmv = { 85 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 86 }; 87 88 static const CGEN_IFMT ifmt_slti2 = { 89 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } } 90 }; 91 92 static const CGEN_IFMT ifmt_slti = { 93 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 94 }; 95 96 static const CGEN_IFMT ifmt_sra2 = { 97 32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 98 }; 99 100 static const CGEN_IFMT ifmt_bbi = { 101 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } } 102 }; 103 104 static const CGEN_IFMT ifmt_bbv = { 105 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } } 106 }; 107 108 static const CGEN_IFMT ifmt_bgez = { 109 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } } 110 }; 111 112 static const CGEN_IFMT ifmt_jalr = { 113 32, 32, 0xfc1f07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 114 }; 115 116 static const CGEN_IFMT ifmt_jr = { 117 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 118 }; 119 120 static const CGEN_IFMT ifmt_lb = { 121 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 122 }; 123 124 static const CGEN_IFMT ifmt_lui = { 125 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 126 }; 127 128 static const CGEN_IFMT ifmt_break = { 129 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 130 }; 131 132 static const CGEN_IFMT ifmt_syscall = { 133 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_EXCODE) }, { F (F_FUNC) }, { 0 } } 134 }; 135 136 static const CGEN_IFMT ifmt_andoui = { 137 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 138 }; 139 140 static const CGEN_IFMT ifmt_andoui2 = { 141 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } } 142 }; 143 144 static const CGEN_IFMT ifmt_mrgb = { 145 32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } } 146 }; 147 148 static const CGEN_IFMT ifmt_mrgb2 = { 149 32, 32, 0xfc00043f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_10) }, { F (F_MASK) }, { F (F_FUNC) }, { 0 } } 150 }; 151 152 static const CGEN_IFMT ifmt_bc0f = { 153 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } } 154 }; 155 156 static const CGEN_IFMT ifmt_cfc0 = { 157 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10_11) }, { 0 } } 158 }; 159 160 static const CGEN_IFMT ifmt_chkhdr = { 161 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 162 }; 163 164 static const CGEN_IFMT ifmt_lulck = { 165 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 166 }; 167 168 static const CGEN_IFMT ifmt_pkrlr1 = { 169 23, 23, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_COUNT) }, { 0 } } 170 }; 171 172 static const CGEN_IFMT ifmt_rfe = { 173 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_25) }, { F (F_24_19) }, { F (F_FUNC) }, { 0 } } 174 }; 175 176 static const CGEN_IFMT ifmt_j = { 177 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RSRVD) }, { F (F_JTARG) }, { 0 } } 178 }; 179 180 static const CGEN_IFMT ifmt_mrgbq10 = { 181 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } } 182 }; 183 184 static const CGEN_IFMT ifmt_mrgbq102 = { 185 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } } 186 }; 187 188 static const CGEN_IFMT ifmt_jq10 = { 189 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } } 190 }; 191 192 static const CGEN_IFMT ifmt_jalq10 = { 193 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } } 194 }; 195 196 static const CGEN_IFMT ifmt_avail = { 197 32, 32, 0xffff07ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 198 }; 199 200 static const CGEN_IFMT ifmt_rbi = { 201 32, 32, 0xfc000700, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } } 202 }; 203 204 static const CGEN_IFMT ifmt_cam36 = { 205 32, 32, 0xffe007c0, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } } 206 }; 207 208 static const CGEN_IFMT ifmt_cm32and = { 209 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 210 }; 211 212 static const CGEN_IFMT ifmt_cm32rd = { 213 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 214 }; 215 216 static const CGEN_IFMT ifmt_cm128ria3 = { 217 32, 32, 0xfc0007fc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } } 218 }; 219 220 static const CGEN_IFMT ifmt_cm128ria4 = { 221 32, 32, 0xfc0007f8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } } 222 }; 223 224 static const CGEN_IFMT ifmt_ctc = { 225 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 226 }; 227 228 #undef F 229 230 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 231 #define A(a) (1 << CGEN_INSN_##a) 232 #else 233 #define A(a) (1 << CGEN_INSN_/**/a) 234 #endif 235 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 236 #define OPERAND(op) IQ2000_OPERAND_##op 237 #else 238 #define OPERAND(op) IQ2000_OPERAND_/**/op 239 #endif 240 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */ 241 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) 242 243 /* The instruction table. */ 244 245 static const CGEN_OPCODE iq2000_cgen_insn_opcode_table[MAX_INSNS] = 246 { 247 /* Special null first entry. 248 A `num' value of zero is thus invalid. 249 Also, the special `invalid' insn resides here. */ 250 { { 0, 0, 0, 0 }, {{0}}, 0, {0}}, 251 /* add ${rd-rs},$rt */ 252 { 253 { 0, 0, 0, 0 }, 254 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } }, 255 & ifmt_add2, { 0x20 } 256 }, 257 /* add $rd,$rs,$rt */ 258 { 259 { 0, 0, 0, 0 }, 260 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 261 & ifmt_add, { 0x20 } 262 }, 263 /* addi ${rt-rs},$lo16 */ 264 { 265 { 0, 0, 0, 0 }, 266 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } }, 267 & ifmt_addi2, { 0x20000000 } 268 }, 269 /* addi $rt,$rs,$lo16 */ 270 { 271 { 0, 0, 0, 0 }, 272 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } }, 273 & ifmt_addi, { 0x20000000 } 274 }, 275 /* addiu ${rt-rs},$lo16 */ 276 { 277 { 0, 0, 0, 0 }, 278 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } }, 279 & ifmt_addi2, { 0x24000000 } 280 }, 281 /* addiu $rt,$rs,$lo16 */ 282 { 283 { 0, 0, 0, 0 }, 284 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } }, 285 & ifmt_addi, { 0x24000000 } 286 }, 287 /* addu ${rd-rs},$rt */ 288 { 289 { 0, 0, 0, 0 }, 290 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } }, 291 & ifmt_add2, { 0x21 } 292 }, 293 /* addu $rd,$rs,$rt */ 294 { 295 { 0, 0, 0, 0 }, 296 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 297 & ifmt_add, { 0x21 } 298 }, 299 /* ado16 ${rd-rs},$rt */ 300 { 301 { 0, 0, 0, 0 }, 302 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } }, 303 & ifmt_add2, { 0x29 } 304 }, 305 /* ado16 $rd,$rs,$rt */ 306 { 307 { 0, 0, 0, 0 }, 308 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 309 & ifmt_add, { 0x29 } 310 }, 311 /* and ${rd-rs},$rt */ 312 { 313 { 0, 0, 0, 0 }, 314 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } }, 315 & ifmt_add2, { 0x24 } 316 }, 317 /* and $rd,$rs,$rt */ 318 { 319 { 0, 0, 0, 0 }, 320 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 321 & ifmt_add, { 0x24 } 322 }, 323 /* andi ${rt-rs},$lo16 */ 324 { 325 { 0, 0, 0, 0 }, 326 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } }, 327 & ifmt_addi2, { 0x30000000 } 328 }, 329 /* andi $rt,$rs,$lo16 */ 330 { 331 { 0, 0, 0, 0 }, 332 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } }, 333 & ifmt_addi, { 0x30000000 } 334 }, 335 /* andoi ${rt-rs},$lo16 */ 336 { 337 { 0, 0, 0, 0 }, 338 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } }, 339 & ifmt_addi2, { 0xb0000000 } 340 }, 341 /* andoi $rt,$rs,$lo16 */ 342 { 343 { 0, 0, 0, 0 }, 344 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } }, 345 & ifmt_addi, { 0xb0000000 } 346 }, 347 /* nor ${rd-rs},$rt */ 348 { 349 { 0, 0, 0, 0 }, 350 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } }, 351 & ifmt_add2, { 0x27 } 352 }, 353 /* nor $rd,$rs,$rt */ 354 { 355 { 0, 0, 0, 0 }, 356 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 357 & ifmt_add, { 0x27 } 358 }, 359 /* or ${rd-rs},$rt */ 360 { 361 { 0, 0, 0, 0 }, 362 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } }, 363 & ifmt_add2, { 0x25 } 364 }, 365 /* or $rd,$rs,$rt */ 366 { 367 { 0, 0, 0, 0 }, 368 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 369 & ifmt_add, { 0x25 } 370 }, 371 /* ori ${rt-rs},$lo16 */ 372 { 373 { 0, 0, 0, 0 }, 374 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } }, 375 & ifmt_addi2, { 0x34000000 } 376 }, 377 /* ori $rt,$rs,$lo16 */ 378 { 379 { 0, 0, 0, 0 }, 380 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } }, 381 & ifmt_addi, { 0x34000000 } 382 }, 383 /* ram $rd,$rt,$shamt,$maskl,$maskr */ 384 { 385 { 0, 0, 0, 0 }, 386 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), ',', OP (MASKL), ',', OP (MASKR), 0 } }, 387 & ifmt_ram, { 0x9c000000 } 388 }, 389 /* sll $rd,$rt,$shamt */ 390 { 391 { 0, 0, 0, 0 }, 392 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } }, 393 & ifmt_sll, { 0x0 } 394 }, 395 /* sllv ${rd-rt},$rs */ 396 { 397 { 0, 0, 0, 0 }, 398 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } }, 399 & ifmt_sllv2, { 0x4 } 400 }, 401 /* sllv $rd,$rt,$rs */ 402 { 403 { 0, 0, 0, 0 }, 404 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } }, 405 & ifmt_add, { 0x4 } 406 }, 407 /* slmv ${rd-rt},$rs,$shamt */ 408 { 409 { 0, 0, 0, 0 }, 410 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } }, 411 & ifmt_slmv2, { 0x1 } 412 }, 413 /* slmv $rd,$rt,$rs,$shamt */ 414 { 415 { 0, 0, 0, 0 }, 416 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } }, 417 & ifmt_slmv, { 0x1 } 418 }, 419 /* slt ${rd-rs},$rt */ 420 { 421 { 0, 0, 0, 0 }, 422 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } }, 423 & ifmt_add2, { 0x2a } 424 }, 425 /* slt $rd,$rs,$rt */ 426 { 427 { 0, 0, 0, 0 }, 428 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 429 & ifmt_add, { 0x2a } 430 }, 431 /* slti ${rt-rs},$imm */ 432 { 433 { 0, 0, 0, 0 }, 434 { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } }, 435 & ifmt_slti2, { 0x28000000 } 436 }, 437 /* slti $rt,$rs,$imm */ 438 { 439 { 0, 0, 0, 0 }, 440 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } }, 441 & ifmt_slti, { 0x28000000 } 442 }, 443 /* sltiu ${rt-rs},$imm */ 444 { 445 { 0, 0, 0, 0 }, 446 { { MNEM, ' ', OP (RT_RS), ',', OP (IMM), 0 } }, 447 & ifmt_slti2, { 0x2c000000 } 448 }, 449 /* sltiu $rt,$rs,$imm */ 450 { 451 { 0, 0, 0, 0 }, 452 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } }, 453 & ifmt_slti, { 0x2c000000 } 454 }, 455 /* sltu ${rd-rs},$rt */ 456 { 457 { 0, 0, 0, 0 }, 458 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } }, 459 & ifmt_add2, { 0x2b } 460 }, 461 /* sltu $rd,$rs,$rt */ 462 { 463 { 0, 0, 0, 0 }, 464 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 465 & ifmt_add, { 0x2b } 466 }, 467 /* sra ${rd-rt},$shamt */ 468 { 469 { 0, 0, 0, 0 }, 470 { { MNEM, ' ', OP (RD_RT), ',', OP (SHAMT), 0 } }, 471 & ifmt_sra2, { 0x3 } 472 }, 473 /* sra $rd,$rt,$shamt */ 474 { 475 { 0, 0, 0, 0 }, 476 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } }, 477 & ifmt_sll, { 0x3 } 478 }, 479 /* srav ${rd-rt},$rs */ 480 { 481 { 0, 0, 0, 0 }, 482 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } }, 483 & ifmt_sllv2, { 0x7 } 484 }, 485 /* srav $rd,$rt,$rs */ 486 { 487 { 0, 0, 0, 0 }, 488 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } }, 489 & ifmt_add, { 0x7 } 490 }, 491 /* srl $rd,$rt,$shamt */ 492 { 493 { 0, 0, 0, 0 }, 494 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (SHAMT), 0 } }, 495 & ifmt_sll, { 0x2 } 496 }, 497 /* srlv ${rd-rt},$rs */ 498 { 499 { 0, 0, 0, 0 }, 500 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), 0 } }, 501 & ifmt_sllv2, { 0x6 } 502 }, 503 /* srlv $rd,$rt,$rs */ 504 { 505 { 0, 0, 0, 0 }, 506 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } }, 507 & ifmt_add, { 0x6 } 508 }, 509 /* srmv ${rd-rt},$rs,$shamt */ 510 { 511 { 0, 0, 0, 0 }, 512 { { MNEM, ' ', OP (RD_RT), ',', OP (RS), ',', OP (SHAMT), 0 } }, 513 & ifmt_slmv2, { 0x5 } 514 }, 515 /* srmv $rd,$rt,$rs,$shamt */ 516 { 517 { 0, 0, 0, 0 }, 518 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), ',', OP (SHAMT), 0 } }, 519 & ifmt_slmv, { 0x5 } 520 }, 521 /* sub ${rd-rs},$rt */ 522 { 523 { 0, 0, 0, 0 }, 524 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } }, 525 & ifmt_add2, { 0x22 } 526 }, 527 /* sub $rd,$rs,$rt */ 528 { 529 { 0, 0, 0, 0 }, 530 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 531 & ifmt_add, { 0x22 } 532 }, 533 /* subu ${rd-rs},$rt */ 534 { 535 { 0, 0, 0, 0 }, 536 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } }, 537 & ifmt_add2, { 0x23 } 538 }, 539 /* subu $rd,$rs,$rt */ 540 { 541 { 0, 0, 0, 0 }, 542 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 543 & ifmt_add, { 0x23 } 544 }, 545 /* xor ${rd-rs},$rt */ 546 { 547 { 0, 0, 0, 0 }, 548 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), 0 } }, 549 & ifmt_add2, { 0x26 } 550 }, 551 /* xor $rd,$rs,$rt */ 552 { 553 { 0, 0, 0, 0 }, 554 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 555 & ifmt_add, { 0x26 } 556 }, 557 /* xori ${rt-rs},$lo16 */ 558 { 559 { 0, 0, 0, 0 }, 560 { { MNEM, ' ', OP (RT_RS), ',', OP (LO16), 0 } }, 561 & ifmt_addi2, { 0x38000000 } 562 }, 563 /* xori $rt,$rs,$lo16 */ 564 { 565 { 0, 0, 0, 0 }, 566 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } }, 567 & ifmt_addi, { 0x38000000 } 568 }, 569 /* bbi $rs($bitnum),$offset */ 570 { 571 { 0, 0, 0, 0 }, 572 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } }, 573 & ifmt_bbi, { 0x70000000 } 574 }, 575 /* bbin $rs($bitnum),$offset */ 576 { 577 { 0, 0, 0, 0 }, 578 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } }, 579 & ifmt_bbi, { 0x78000000 } 580 }, 581 /* bbv $rs,$rt,$offset */ 582 { 583 { 0, 0, 0, 0 }, 584 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 585 & ifmt_bbv, { 0x74000000 } 586 }, 587 /* bbvn $rs,$rt,$offset */ 588 { 589 { 0, 0, 0, 0 }, 590 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 591 & ifmt_bbv, { 0x7c000000 } 592 }, 593 /* beq $rs,$rt,$offset */ 594 { 595 { 0, 0, 0, 0 }, 596 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 597 & ifmt_bbv, { 0x10000000 } 598 }, 599 /* beql $rs,$rt,$offset */ 600 { 601 { 0, 0, 0, 0 }, 602 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 603 & ifmt_bbv, { 0x50000000 } 604 }, 605 /* bgez $rs,$offset */ 606 { 607 { 0, 0, 0, 0 }, 608 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 609 & ifmt_bgez, { 0x4010000 } 610 }, 611 /* bgezal $rs,$offset */ 612 { 613 { 0, 0, 0, 0 }, 614 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 615 & ifmt_bgez, { 0x4110000 } 616 }, 617 /* bgezall $rs,$offset */ 618 { 619 { 0, 0, 0, 0 }, 620 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 621 & ifmt_bgez, { 0x4130000 } 622 }, 623 /* bgezl $rs,$offset */ 624 { 625 { 0, 0, 0, 0 }, 626 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 627 & ifmt_bgez, { 0x4030000 } 628 }, 629 /* bltz $rs,$offset */ 630 { 631 { 0, 0, 0, 0 }, 632 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 633 & ifmt_bgez, { 0x4000000 } 634 }, 635 /* bltzl $rs,$offset */ 636 { 637 { 0, 0, 0, 0 }, 638 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 639 & ifmt_bgez, { 0x4020000 } 640 }, 641 /* bltzal $rs,$offset */ 642 { 643 { 0, 0, 0, 0 }, 644 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 645 & ifmt_bgez, { 0x4100000 } 646 }, 647 /* bltzall $rs,$offset */ 648 { 649 { 0, 0, 0, 0 }, 650 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 651 & ifmt_bgez, { 0x4120000 } 652 }, 653 /* bmb0 $rs,$rt,$offset */ 654 { 655 { 0, 0, 0, 0 }, 656 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 657 & ifmt_bbv, { 0x60000000 } 658 }, 659 /* bmb1 $rs,$rt,$offset */ 660 { 661 { 0, 0, 0, 0 }, 662 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 663 & ifmt_bbv, { 0x64000000 } 664 }, 665 /* bmb2 $rs,$rt,$offset */ 666 { 667 { 0, 0, 0, 0 }, 668 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 669 & ifmt_bbv, { 0x68000000 } 670 }, 671 /* bmb3 $rs,$rt,$offset */ 672 { 673 { 0, 0, 0, 0 }, 674 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 675 & ifmt_bbv, { 0x6c000000 } 676 }, 677 /* bne $rs,$rt,$offset */ 678 { 679 { 0, 0, 0, 0 }, 680 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 681 & ifmt_bbv, { 0x14000000 } 682 }, 683 /* bnel $rs,$rt,$offset */ 684 { 685 { 0, 0, 0, 0 }, 686 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 687 & ifmt_bbv, { 0x54000000 } 688 }, 689 /* jalr $rd,$rs */ 690 { 691 { 0, 0, 0, 0 }, 692 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } }, 693 & ifmt_jalr, { 0x9 } 694 }, 695 /* jr $rs */ 696 { 697 { 0, 0, 0, 0 }, 698 { { MNEM, ' ', OP (RS), 0 } }, 699 & ifmt_jr, { 0x8 } 700 }, 701 /* lb $rt,$lo16($base) */ 702 { 703 { 0, 0, 0, 0 }, 704 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } }, 705 & ifmt_lb, { 0x80000000 } 706 }, 707 /* lbu $rt,$lo16($base) */ 708 { 709 { 0, 0, 0, 0 }, 710 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } }, 711 & ifmt_lb, { 0x90000000 } 712 }, 713 /* lh $rt,$lo16($base) */ 714 { 715 { 0, 0, 0, 0 }, 716 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } }, 717 & ifmt_lb, { 0x84000000 } 718 }, 719 /* lhu $rt,$lo16($base) */ 720 { 721 { 0, 0, 0, 0 }, 722 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } }, 723 & ifmt_lb, { 0x94000000 } 724 }, 725 /* lui $rt,$hi16 */ 726 { 727 { 0, 0, 0, 0 }, 728 { { MNEM, ' ', OP (RT), ',', OP (HI16), 0 } }, 729 & ifmt_lui, { 0x3c000000 } 730 }, 731 /* lw $rt,$lo16($base) */ 732 { 733 { 0, 0, 0, 0 }, 734 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } }, 735 & ifmt_lb, { 0x8c000000 } 736 }, 737 /* sb $rt,$lo16($base) */ 738 { 739 { 0, 0, 0, 0 }, 740 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } }, 741 & ifmt_lb, { 0xa0000000 } 742 }, 743 /* sh $rt,$lo16($base) */ 744 { 745 { 0, 0, 0, 0 }, 746 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } }, 747 & ifmt_lb, { 0xa4000000 } 748 }, 749 /* sw $rt,$lo16($base) */ 750 { 751 { 0, 0, 0, 0 }, 752 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } }, 753 & ifmt_lb, { 0xac000000 } 754 }, 755 /* break */ 756 { 757 { 0, 0, 0, 0 }, 758 { { MNEM, 0 } }, 759 & ifmt_break, { 0xd } 760 }, 761 /* syscall */ 762 { 763 { 0, 0, 0, 0 }, 764 { { MNEM, 0 } }, 765 & ifmt_syscall, { 0xc } 766 }, 767 /* andoui $rt,$rs,$hi16 */ 768 { 769 { 0, 0, 0, 0 }, 770 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } }, 771 & ifmt_andoui, { 0xfc000000 } 772 }, 773 /* andoui ${rt-rs},$hi16 */ 774 { 775 { 0, 0, 0, 0 }, 776 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } }, 777 & ifmt_andoui2, { 0xfc000000 } 778 }, 779 /* orui ${rt-rs},$hi16 */ 780 { 781 { 0, 0, 0, 0 }, 782 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } }, 783 & ifmt_andoui2, { 0xbc000000 } 784 }, 785 /* orui $rt,$rs,$hi16 */ 786 { 787 { 0, 0, 0, 0 }, 788 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } }, 789 & ifmt_andoui, { 0xbc000000 } 790 }, 791 /* bgtz $rs,$offset */ 792 { 793 { 0, 0, 0, 0 }, 794 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 795 & ifmt_bgez, { 0x1c000000 } 796 }, 797 /* bgtzl $rs,$offset */ 798 { 799 { 0, 0, 0, 0 }, 800 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 801 & ifmt_bgez, { 0x5c000000 } 802 }, 803 /* blez $rs,$offset */ 804 { 805 { 0, 0, 0, 0 }, 806 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 807 & ifmt_bgez, { 0x18000000 } 808 }, 809 /* blezl $rs,$offset */ 810 { 811 { 0, 0, 0, 0 }, 812 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 813 & ifmt_bgez, { 0x58000000 } 814 }, 815 /* mrgb $rd,$rs,$rt,$mask */ 816 { 817 { 0, 0, 0, 0 }, 818 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASK), 0 } }, 819 & ifmt_mrgb, { 0x2d } 820 }, 821 /* mrgb ${rd-rs},$rt,$mask */ 822 { 823 { 0, 0, 0, 0 }, 824 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASK), 0 } }, 825 & ifmt_mrgb2, { 0x2d } 826 }, 827 /* bctxt $rs,$offset */ 828 { 829 { 0, 0, 0, 0 }, 830 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 831 & ifmt_bgez, { 0x4060000 } 832 }, 833 /* bc0f $offset */ 834 { 835 { 0, 0, 0, 0 }, 836 { { MNEM, ' ', OP (OFFSET), 0 } }, 837 & ifmt_bc0f, { 0x41000000 } 838 }, 839 /* bc0fl $offset */ 840 { 841 { 0, 0, 0, 0 }, 842 { { MNEM, ' ', OP (OFFSET), 0 } }, 843 & ifmt_bc0f, { 0x41020000 } 844 }, 845 /* bc3f $offset */ 846 { 847 { 0, 0, 0, 0 }, 848 { { MNEM, ' ', OP (OFFSET), 0 } }, 849 & ifmt_bc0f, { 0x4d000000 } 850 }, 851 /* bc3fl $offset */ 852 { 853 { 0, 0, 0, 0 }, 854 { { MNEM, ' ', OP (OFFSET), 0 } }, 855 & ifmt_bc0f, { 0x4d020000 } 856 }, 857 /* bc0t $offset */ 858 { 859 { 0, 0, 0, 0 }, 860 { { MNEM, ' ', OP (OFFSET), 0 } }, 861 & ifmt_bc0f, { 0x41010000 } 862 }, 863 /* bc0tl $offset */ 864 { 865 { 0, 0, 0, 0 }, 866 { { MNEM, ' ', OP (OFFSET), 0 } }, 867 & ifmt_bc0f, { 0x41030000 } 868 }, 869 /* bc3t $offset */ 870 { 871 { 0, 0, 0, 0 }, 872 { { MNEM, ' ', OP (OFFSET), 0 } }, 873 & ifmt_bc0f, { 0x4d010000 } 874 }, 875 /* bc3tl $offset */ 876 { 877 { 0, 0, 0, 0 }, 878 { { MNEM, ' ', OP (OFFSET), 0 } }, 879 & ifmt_bc0f, { 0x4d030000 } 880 }, 881 /* cfc0 $rt,$rd */ 882 { 883 { 0, 0, 0, 0 }, 884 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 885 & ifmt_cfc0, { 0x40400000 } 886 }, 887 /* cfc1 $rt,$rd */ 888 { 889 { 0, 0, 0, 0 }, 890 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 891 & ifmt_cfc0, { 0x44400000 } 892 }, 893 /* cfc2 $rt,$rd */ 894 { 895 { 0, 0, 0, 0 }, 896 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 897 & ifmt_cfc0, { 0x48400000 } 898 }, 899 /* cfc3 $rt,$rd */ 900 { 901 { 0, 0, 0, 0 }, 902 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 903 & ifmt_cfc0, { 0x4c400000 } 904 }, 905 /* chkhdr $rd,$rt */ 906 { 907 { 0, 0, 0, 0 }, 908 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 909 & ifmt_chkhdr, { 0x4d200000 } 910 }, 911 /* ctc0 $rt,$rd */ 912 { 913 { 0, 0, 0, 0 }, 914 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 915 & ifmt_cfc0, { 0x40c00000 } 916 }, 917 /* ctc1 $rt,$rd */ 918 { 919 { 0, 0, 0, 0 }, 920 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 921 & ifmt_cfc0, { 0x44c00000 } 922 }, 923 /* ctc2 $rt,$rd */ 924 { 925 { 0, 0, 0, 0 }, 926 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 927 & ifmt_cfc0, { 0x48c00000 } 928 }, 929 /* ctc3 $rt,$rd */ 930 { 931 { 0, 0, 0, 0 }, 932 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 933 & ifmt_cfc0, { 0x4cc00000 } 934 }, 935 /* jcr $rs */ 936 { 937 { 0, 0, 0, 0 }, 938 { { MNEM, ' ', OP (RS), 0 } }, 939 & ifmt_jr, { 0xa } 940 }, 941 /* luc32 $rt,$rd */ 942 { 943 { 0, 0, 0, 0 }, 944 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 945 & ifmt_chkhdr, { 0x48200003 } 946 }, 947 /* luc32l $rt,$rd */ 948 { 949 { 0, 0, 0, 0 }, 950 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 951 & ifmt_chkhdr, { 0x48200007 } 952 }, 953 /* luc64 $rt,$rd */ 954 { 955 { 0, 0, 0, 0 }, 956 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 957 & ifmt_chkhdr, { 0x4820000b } 958 }, 959 /* luc64l $rt,$rd */ 960 { 961 { 0, 0, 0, 0 }, 962 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 963 & ifmt_chkhdr, { 0x4820000f } 964 }, 965 /* luk $rt,$rd */ 966 { 967 { 0, 0, 0, 0 }, 968 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 969 & ifmt_chkhdr, { 0x48200008 } 970 }, 971 /* lulck $rt */ 972 { 973 { 0, 0, 0, 0 }, 974 { { MNEM, ' ', OP (RT), 0 } }, 975 & ifmt_lulck, { 0x48200004 } 976 }, 977 /* lum32 $rt,$rd */ 978 { 979 { 0, 0, 0, 0 }, 980 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 981 & ifmt_chkhdr, { 0x48200002 } 982 }, 983 /* lum32l $rt,$rd */ 984 { 985 { 0, 0, 0, 0 }, 986 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 987 & ifmt_chkhdr, { 0x48200006 } 988 }, 989 /* lum64 $rt,$rd */ 990 { 991 { 0, 0, 0, 0 }, 992 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 993 & ifmt_chkhdr, { 0x4820000a } 994 }, 995 /* lum64l $rt,$rd */ 996 { 997 { 0, 0, 0, 0 }, 998 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 999 & ifmt_chkhdr, { 0x4820000e } 1000 }, 1001 /* lur $rt,$rd */ 1002 { 1003 { 0, 0, 0, 0 }, 1004 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1005 & ifmt_chkhdr, { 0x48200001 } 1006 }, 1007 /* lurl $rt,$rd */ 1008 { 1009 { 0, 0, 0, 0 }, 1010 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1011 & ifmt_chkhdr, { 0x48200005 } 1012 }, 1013 /* luulck $rt */ 1014 { 1015 { 0, 0, 0, 0 }, 1016 { { MNEM, ' ', OP (RT), 0 } }, 1017 & ifmt_lulck, { 0x48200000 } 1018 }, 1019 /* mfc0 $rt,$rd */ 1020 { 1021 { 0, 0, 0, 0 }, 1022 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1023 & ifmt_cfc0, { 0x40000000 } 1024 }, 1025 /* mfc1 $rt,$rd */ 1026 { 1027 { 0, 0, 0, 0 }, 1028 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1029 & ifmt_cfc0, { 0x44000000 } 1030 }, 1031 /* mfc2 $rt,$rd */ 1032 { 1033 { 0, 0, 0, 0 }, 1034 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1035 & ifmt_cfc0, { 0x48000000 } 1036 }, 1037 /* mfc3 $rt,$rd */ 1038 { 1039 { 0, 0, 0, 0 }, 1040 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1041 & ifmt_cfc0, { 0x4c000000 } 1042 }, 1043 /* mtc0 $rt,$rd */ 1044 { 1045 { 0, 0, 0, 0 }, 1046 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1047 & ifmt_cfc0, { 0x40800000 } 1048 }, 1049 /* mtc1 $rt,$rd */ 1050 { 1051 { 0, 0, 0, 0 }, 1052 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1053 & ifmt_cfc0, { 0x44800000 } 1054 }, 1055 /* mtc2 $rt,$rd */ 1056 { 1057 { 0, 0, 0, 0 }, 1058 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1059 & ifmt_cfc0, { 0x48800000 } 1060 }, 1061 /* mtc3 $rt,$rd */ 1062 { 1063 { 0, 0, 0, 0 }, 1064 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1065 & ifmt_cfc0, { 0x4c800000 } 1066 }, 1067 /* pkrl $rd,$rt */ 1068 { 1069 { 0, 0, 0, 0 }, 1070 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1071 & ifmt_chkhdr, { 0x4c200007 } 1072 }, 1073 /* pkrlr1 $rt,$count */ 1074 { 1075 { 0, 0, 0, 0 }, 1076 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1077 & ifmt_pkrlr1, { 0x4fa00000 } 1078 }, 1079 /* pkrlr30 $rt,$count */ 1080 { 1081 { 0, 0, 0, 0 }, 1082 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1083 & ifmt_pkrlr1, { 0x4fe00000 } 1084 }, 1085 /* rb $rd,$rt */ 1086 { 1087 { 0, 0, 0, 0 }, 1088 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1089 & ifmt_chkhdr, { 0x4c200004 } 1090 }, 1091 /* rbr1 $rt,$count */ 1092 { 1093 { 0, 0, 0, 0 }, 1094 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1095 & ifmt_pkrlr1, { 0x4f000000 } 1096 }, 1097 /* rbr30 $rt,$count */ 1098 { 1099 { 0, 0, 0, 0 }, 1100 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1101 & ifmt_pkrlr1, { 0x4f400000 } 1102 }, 1103 /* rfe */ 1104 { 1105 { 0, 0, 0, 0 }, 1106 { { MNEM, 0 } }, 1107 & ifmt_rfe, { 0x42000010 } 1108 }, 1109 /* rx $rd,$rt */ 1110 { 1111 { 0, 0, 0, 0 }, 1112 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1113 & ifmt_chkhdr, { 0x4c200006 } 1114 }, 1115 /* rxr1 $rt,$count */ 1116 { 1117 { 0, 0, 0, 0 }, 1118 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1119 & ifmt_pkrlr1, { 0x4f800000 } 1120 }, 1121 /* rxr30 $rt,$count */ 1122 { 1123 { 0, 0, 0, 0 }, 1124 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1125 & ifmt_pkrlr1, { 0x4fc00000 } 1126 }, 1127 /* sleep */ 1128 { 1129 { 0, 0, 0, 0 }, 1130 { { MNEM, 0 } }, 1131 & ifmt_syscall, { 0xe } 1132 }, 1133 /* srrd $rt */ 1134 { 1135 { 0, 0, 0, 0 }, 1136 { { MNEM, ' ', OP (RT), 0 } }, 1137 & ifmt_lulck, { 0x48200010 } 1138 }, 1139 /* srrdl $rt */ 1140 { 1141 { 0, 0, 0, 0 }, 1142 { { MNEM, ' ', OP (RT), 0 } }, 1143 & ifmt_lulck, { 0x48200014 } 1144 }, 1145 /* srulck $rt */ 1146 { 1147 { 0, 0, 0, 0 }, 1148 { { MNEM, ' ', OP (RT), 0 } }, 1149 & ifmt_lulck, { 0x48200016 } 1150 }, 1151 /* srwr $rt,$rd */ 1152 { 1153 { 0, 0, 0, 0 }, 1154 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1155 & ifmt_chkhdr, { 0x48200011 } 1156 }, 1157 /* srwru $rt,$rd */ 1158 { 1159 { 0, 0, 0, 0 }, 1160 { { MNEM, ' ', OP (RT), ',', OP (RD), 0 } }, 1161 & ifmt_chkhdr, { 0x48200015 } 1162 }, 1163 /* trapqfl */ 1164 { 1165 { 0, 0, 0, 0 }, 1166 { { MNEM, 0 } }, 1167 & ifmt_break, { 0x4c200008 } 1168 }, 1169 /* trapqne */ 1170 { 1171 { 0, 0, 0, 0 }, 1172 { { MNEM, 0 } }, 1173 & ifmt_break, { 0x4c200009 } 1174 }, 1175 /* traprel $rt */ 1176 { 1177 { 0, 0, 0, 0 }, 1178 { { MNEM, ' ', OP (RT), 0 } }, 1179 & ifmt_lulck, { 0x4c20000a } 1180 }, 1181 /* wb $rd,$rt */ 1182 { 1183 { 0, 0, 0, 0 }, 1184 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1185 & ifmt_chkhdr, { 0x4c200000 } 1186 }, 1187 /* wbu $rd,$rt */ 1188 { 1189 { 0, 0, 0, 0 }, 1190 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1191 & ifmt_chkhdr, { 0x4c200001 } 1192 }, 1193 /* wbr1 $rt,$count */ 1194 { 1195 { 0, 0, 0, 0 }, 1196 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1197 & ifmt_pkrlr1, { 0x4e000000 } 1198 }, 1199 /* wbr1u $rt,$count */ 1200 { 1201 { 0, 0, 0, 0 }, 1202 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1203 & ifmt_pkrlr1, { 0x4e200000 } 1204 }, 1205 /* wbr30 $rt,$count */ 1206 { 1207 { 0, 0, 0, 0 }, 1208 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1209 & ifmt_pkrlr1, { 0x4e400000 } 1210 }, 1211 /* wbr30u $rt,$count */ 1212 { 1213 { 0, 0, 0, 0 }, 1214 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1215 & ifmt_pkrlr1, { 0x4e600000 } 1216 }, 1217 /* wx $rd,$rt */ 1218 { 1219 { 0, 0, 0, 0 }, 1220 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1221 & ifmt_chkhdr, { 0x4c200002 } 1222 }, 1223 /* wxu $rd,$rt */ 1224 { 1225 { 0, 0, 0, 0 }, 1226 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1227 & ifmt_chkhdr, { 0x4c200003 } 1228 }, 1229 /* wxr1 $rt,$count */ 1230 { 1231 { 0, 0, 0, 0 }, 1232 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1233 & ifmt_pkrlr1, { 0x4e800000 } 1234 }, 1235 /* wxr1u $rt,$count */ 1236 { 1237 { 0, 0, 0, 0 }, 1238 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1239 & ifmt_pkrlr1, { 0x4ea00000 } 1240 }, 1241 /* wxr30 $rt,$count */ 1242 { 1243 { 0, 0, 0, 0 }, 1244 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1245 & ifmt_pkrlr1, { 0x4ec00000 } 1246 }, 1247 /* wxr30u $rt,$count */ 1248 { 1249 { 0, 0, 0, 0 }, 1250 { { MNEM, ' ', OP (RT), ',', OP (COUNT), 0 } }, 1251 & ifmt_pkrlr1, { 0x4ee00000 } 1252 }, 1253 /* ldw $rt,$lo16($base) */ 1254 { 1255 { 0, 0, 0, 0 }, 1256 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } }, 1257 & ifmt_lb, { 0xc0000000 } 1258 }, 1259 /* sdw $rt,$lo16($base) */ 1260 { 1261 { 0, 0, 0, 0 }, 1262 { { MNEM, ' ', OP (RT), ',', OP (LO16), '(', OP (BASE), ')', 0 } }, 1263 & ifmt_lb, { 0xe0000000 } 1264 }, 1265 /* j $jmptarg */ 1266 { 1267 { 0, 0, 0, 0 }, 1268 { { MNEM, ' ', OP (JMPTARG), 0 } }, 1269 & ifmt_j, { 0x8000000 } 1270 }, 1271 /* jal $jmptarg */ 1272 { 1273 { 0, 0, 0, 0 }, 1274 { { MNEM, ' ', OP (JMPTARG), 0 } }, 1275 & ifmt_j, { 0xc000000 } 1276 }, 1277 /* bmb $rs,$rt,$offset */ 1278 { 1279 { 0, 0, 0, 0 }, 1280 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 1281 & ifmt_bbv, { 0xb4000000 } 1282 }, 1283 /* andoui $rt,$rs,$hi16 */ 1284 { 1285 { 0, 0, 0, 0 }, 1286 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } }, 1287 & ifmt_andoui, { 0xbc000000 } 1288 }, 1289 /* andoui ${rt-rs},$hi16 */ 1290 { 1291 { 0, 0, 0, 0 }, 1292 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } }, 1293 & ifmt_andoui2, { 0xbc000000 } 1294 }, 1295 /* orui $rt,$rs,$hi16 */ 1296 { 1297 { 0, 0, 0, 0 }, 1298 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (HI16), 0 } }, 1299 & ifmt_andoui, { 0x3c000000 } 1300 }, 1301 /* orui ${rt-rs},$hi16 */ 1302 { 1303 { 0, 0, 0, 0 }, 1304 { { MNEM, ' ', OP (RT_RS), ',', OP (HI16), 0 } }, 1305 & ifmt_andoui2, { 0x3c000000 } 1306 }, 1307 /* mrgb $rd,$rs,$rt,$maskq10 */ 1308 { 1309 { 0, 0, 0, 0 }, 1310 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (MASKQ10), 0 } }, 1311 & ifmt_mrgbq10, { 0x2d } 1312 }, 1313 /* mrgb ${rd-rs},$rt,$maskq10 */ 1314 { 1315 { 0, 0, 0, 0 }, 1316 { { MNEM, ' ', OP (RD_RS), ',', OP (RT), ',', OP (MASKQ10), 0 } }, 1317 & ifmt_mrgbq102, { 0x2d } 1318 }, 1319 /* j $jmptarg */ 1320 { 1321 { 0, 0, 0, 0 }, 1322 { { MNEM, ' ', OP (JMPTARG), 0 } }, 1323 & ifmt_jq10, { 0x8000000 } 1324 }, 1325 /* jal $rt,$jmptarg */ 1326 { 1327 { 0, 0, 0, 0 }, 1328 { { MNEM, ' ', OP (RT), ',', OP (JMPTARG), 0 } }, 1329 & ifmt_jalq10, { 0xc000000 } 1330 }, 1331 /* jal $jmptarg */ 1332 { 1333 { 0, 0, 0, 0 }, 1334 { { MNEM, ' ', OP (JMPTARG), 0 } }, 1335 & ifmt_jq10, { 0xc1f0000 } 1336 }, 1337 /* bbil $rs($bitnum),$offset */ 1338 { 1339 { 0, 0, 0, 0 }, 1340 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } }, 1341 & ifmt_bbi, { 0xf0000000 } 1342 }, 1343 /* bbinl $rs($bitnum),$offset */ 1344 { 1345 { 0, 0, 0, 0 }, 1346 { { MNEM, ' ', OP (RS), '(', OP (BITNUM), ')', ',', OP (OFFSET), 0 } }, 1347 & ifmt_bbi, { 0xf8000000 } 1348 }, 1349 /* bbvl $rs,$rt,$offset */ 1350 { 1351 { 0, 0, 0, 0 }, 1352 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 1353 & ifmt_bbv, { 0xf4000000 } 1354 }, 1355 /* bbvnl $rs,$rt,$offset */ 1356 { 1357 { 0, 0, 0, 0 }, 1358 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 1359 & ifmt_bbv, { 0xfc000000 } 1360 }, 1361 /* bgtzal $rs,$offset */ 1362 { 1363 { 0, 0, 0, 0 }, 1364 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 1365 & ifmt_bgez, { 0x4150000 } 1366 }, 1367 /* bgtzall $rs,$offset */ 1368 { 1369 { 0, 0, 0, 0 }, 1370 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 1371 & ifmt_bgez, { 0x4170000 } 1372 }, 1373 /* blezal $rs,$offset */ 1374 { 1375 { 0, 0, 0, 0 }, 1376 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 1377 & ifmt_bgez, { 0x4140000 } 1378 }, 1379 /* blezall $rs,$offset */ 1380 { 1381 { 0, 0, 0, 0 }, 1382 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 1383 & ifmt_bgez, { 0x4160000 } 1384 }, 1385 /* bgtz $rs,$offset */ 1386 { 1387 { 0, 0, 0, 0 }, 1388 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 1389 & ifmt_bgez, { 0x4050000 } 1390 }, 1391 /* bgtzl $rs,$offset */ 1392 { 1393 { 0, 0, 0, 0 }, 1394 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 1395 & ifmt_bgez, { 0x4070000 } 1396 }, 1397 /* blez $rs,$offset */ 1398 { 1399 { 0, 0, 0, 0 }, 1400 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 1401 & ifmt_bgez, { 0x4040000 } 1402 }, 1403 /* blezl $rs,$offset */ 1404 { 1405 { 0, 0, 0, 0 }, 1406 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 1407 & ifmt_bgez, { 0x4060000 } 1408 }, 1409 /* bmb $rs,$rt,$offset */ 1410 { 1411 { 0, 0, 0, 0 }, 1412 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 1413 & ifmt_bbv, { 0x18000000 } 1414 }, 1415 /* bmbl $rs,$rt,$offset */ 1416 { 1417 { 0, 0, 0, 0 }, 1418 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (OFFSET), 0 } }, 1419 & ifmt_bbv, { 0x58000000 } 1420 }, 1421 /* bri $rs,$offset */ 1422 { 1423 { 0, 0, 0, 0 }, 1424 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 1425 & ifmt_bgez, { 0x4080000 } 1426 }, 1427 /* brv $rs,$offset */ 1428 { 1429 { 0, 0, 0, 0 }, 1430 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 1431 & ifmt_bgez, { 0x4090000 } 1432 }, 1433 /* bctx $rs,$offset */ 1434 { 1435 { 0, 0, 0, 0 }, 1436 { { MNEM, ' ', OP (RS), ',', OP (OFFSET), 0 } }, 1437 & ifmt_bgez, { 0x40c0000 } 1438 }, 1439 /* yield */ 1440 { 1441 { 0, 0, 0, 0 }, 1442 { { MNEM, 0 } }, 1443 & ifmt_break, { 0xe } 1444 }, 1445 /* crc32 $rd,$rs,$rt */ 1446 { 1447 { 0, 0, 0, 0 }, 1448 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1449 & ifmt_add, { 0x4c000014 } 1450 }, 1451 /* crc32b $rd,$rs,$rt */ 1452 { 1453 { 0, 0, 0, 0 }, 1454 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1455 & ifmt_add, { 0x4c000015 } 1456 }, 1457 /* cnt1s $rd,$rs */ 1458 { 1459 { 0, 0, 0, 0 }, 1460 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } }, 1461 & ifmt_add, { 0x2e } 1462 }, 1463 /* avail $rd */ 1464 { 1465 { 0, 0, 0, 0 }, 1466 { { MNEM, ' ', OP (RD), 0 } }, 1467 & ifmt_avail, { 0x4c000024 } 1468 }, 1469 /* free $rd,$rs */ 1470 { 1471 { 0, 0, 0, 0 }, 1472 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } }, 1473 & ifmt_jalr, { 0x4c000025 } 1474 }, 1475 /* tstod $rd,$rs */ 1476 { 1477 { 0, 0, 0, 0 }, 1478 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } }, 1479 & ifmt_jalr, { 0x4c000027 } 1480 }, 1481 /* cmphdr $rd */ 1482 { 1483 { 0, 0, 0, 0 }, 1484 { { MNEM, ' ', OP (RD), 0 } }, 1485 & ifmt_avail, { 0x4c00002c } 1486 }, 1487 /* mcid $rd,$rt */ 1488 { 1489 { 0, 0, 0, 0 }, 1490 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1491 & ifmt_chkhdr, { 0x4c000020 } 1492 }, 1493 /* dba $rd */ 1494 { 1495 { 0, 0, 0, 0 }, 1496 { { MNEM, ' ', OP (RD), 0 } }, 1497 & ifmt_avail, { 0x4c000022 } 1498 }, 1499 /* dbd $rd,$rs,$rt */ 1500 { 1501 { 0, 0, 0, 0 }, 1502 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1503 & ifmt_add, { 0x4c000021 } 1504 }, 1505 /* dpwt $rd,$rs */ 1506 { 1507 { 0, 0, 0, 0 }, 1508 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } }, 1509 & ifmt_jalr, { 0x4c000023 } 1510 }, 1511 /* chkhdr $rd,$rs */ 1512 { 1513 { 0, 0, 0, 0 }, 1514 { { MNEM, ' ', OP (RD), ',', OP (RS), 0 } }, 1515 & ifmt_jalr, { 0x4c000026 } 1516 }, 1517 /* rba $rd,$rs,$rt */ 1518 { 1519 { 0, 0, 0, 0 }, 1520 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1521 & ifmt_add, { 0x4c000008 } 1522 }, 1523 /* rbal $rd,$rs,$rt */ 1524 { 1525 { 0, 0, 0, 0 }, 1526 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1527 & ifmt_add, { 0x4c000009 } 1528 }, 1529 /* rbar $rd,$rs,$rt */ 1530 { 1531 { 0, 0, 0, 0 }, 1532 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1533 & ifmt_add, { 0x4c00000a } 1534 }, 1535 /* wba $rd,$rs,$rt */ 1536 { 1537 { 0, 0, 0, 0 }, 1538 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1539 & ifmt_add, { 0x4c000010 } 1540 }, 1541 /* wbau $rd,$rs,$rt */ 1542 { 1543 { 0, 0, 0, 0 }, 1544 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1545 & ifmt_add, { 0x4c000011 } 1546 }, 1547 /* wbac $rd,$rs,$rt */ 1548 { 1549 { 0, 0, 0, 0 }, 1550 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1551 & ifmt_add, { 0x4c000012 } 1552 }, 1553 /* rbi $rd,$rs,$rt,$bytecount */ 1554 { 1555 { 0, 0, 0, 0 }, 1556 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 1557 & ifmt_rbi, { 0x4c000200 } 1558 }, 1559 /* rbil $rd,$rs,$rt,$bytecount */ 1560 { 1561 { 0, 0, 0, 0 }, 1562 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 1563 & ifmt_rbi, { 0x4c000300 } 1564 }, 1565 /* rbir $rd,$rs,$rt,$bytecount */ 1566 { 1567 { 0, 0, 0, 0 }, 1568 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 1569 & ifmt_rbi, { 0x4c000100 } 1570 }, 1571 /* wbi $rd,$rs,$rt,$bytecount */ 1572 { 1573 { 0, 0, 0, 0 }, 1574 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 1575 & ifmt_rbi, { 0x4c000600 } 1576 }, 1577 /* wbic $rd,$rs,$rt,$bytecount */ 1578 { 1579 { 0, 0, 0, 0 }, 1580 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 1581 & ifmt_rbi, { 0x4c000500 } 1582 }, 1583 /* wbiu $rd,$rs,$rt,$bytecount */ 1584 { 1585 { 0, 0, 0, 0 }, 1586 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 1587 & ifmt_rbi, { 0x4c000700 } 1588 }, 1589 /* pkrli $rd,$rs,$rt,$bytecount */ 1590 { 1591 { 0, 0, 0, 0 }, 1592 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 1593 & ifmt_rbi, { 0x48000000 } 1594 }, 1595 /* pkrlih $rd,$rs,$rt,$bytecount */ 1596 { 1597 { 0, 0, 0, 0 }, 1598 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 1599 & ifmt_rbi, { 0x48000200 } 1600 }, 1601 /* pkrliu $rd,$rs,$rt,$bytecount */ 1602 { 1603 { 0, 0, 0, 0 }, 1604 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 1605 & ifmt_rbi, { 0x48000100 } 1606 }, 1607 /* pkrlic $rd,$rs,$rt,$bytecount */ 1608 { 1609 { 0, 0, 0, 0 }, 1610 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 1611 & ifmt_rbi, { 0x48000300 } 1612 }, 1613 /* pkrla $rd,$rs,$rt */ 1614 { 1615 { 0, 0, 0, 0 }, 1616 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1617 & ifmt_add, { 0x4c000028 } 1618 }, 1619 /* pkrlau $rd,$rs,$rt */ 1620 { 1621 { 0, 0, 0, 0 }, 1622 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1623 & ifmt_add, { 0x4c000029 } 1624 }, 1625 /* pkrlah $rd,$rs,$rt */ 1626 { 1627 { 0, 0, 0, 0 }, 1628 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1629 & ifmt_add, { 0x4c00002a } 1630 }, 1631 /* pkrlac $rd,$rs,$rt */ 1632 { 1633 { 0, 0, 0, 0 }, 1634 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1635 & ifmt_add, { 0x4c00002b } 1636 }, 1637 /* lock $rd,$rt */ 1638 { 1639 { 0, 0, 0, 0 }, 1640 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1641 & ifmt_chkhdr, { 0x4c000001 } 1642 }, 1643 /* unlk $rd,$rt */ 1644 { 1645 { 0, 0, 0, 0 }, 1646 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1647 & ifmt_chkhdr, { 0x4c000003 } 1648 }, 1649 /* swrd $rd,$rt */ 1650 { 1651 { 0, 0, 0, 0 }, 1652 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1653 & ifmt_chkhdr, { 0x4c000004 } 1654 }, 1655 /* swrdl $rd,$rt */ 1656 { 1657 { 0, 0, 0, 0 }, 1658 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1659 & ifmt_chkhdr, { 0x4c000005 } 1660 }, 1661 /* swwr $rd,$rs,$rt */ 1662 { 1663 { 0, 0, 0, 0 }, 1664 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1665 & ifmt_add, { 0x4c000006 } 1666 }, 1667 /* swwru $rd,$rs,$rt */ 1668 { 1669 { 0, 0, 0, 0 }, 1670 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1671 & ifmt_add, { 0x4c000007 } 1672 }, 1673 /* dwrd $rd,$rt */ 1674 { 1675 { 0, 0, 0, 0 }, 1676 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1677 & ifmt_chkhdr, { 0x4c00000c } 1678 }, 1679 /* dwrdl $rd,$rt */ 1680 { 1681 { 0, 0, 0, 0 }, 1682 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1683 & ifmt_chkhdr, { 0x4c00000d } 1684 }, 1685 /* cam36 $rd,$rt,${cam-z},${cam-y} */ 1686 { 1687 { 0, 0, 0, 0 }, 1688 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), ',', OP (CAM_Y), 0 } }, 1689 & ifmt_cam36, { 0x4c000400 } 1690 }, 1691 /* cam72 $rd,$rt,${cam-y},${cam-z} */ 1692 { 1693 { 0, 0, 0, 0 }, 1694 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } }, 1695 & ifmt_cam36, { 0x4c000440 } 1696 }, 1697 /* cam144 $rd,$rt,${cam-y},${cam-z} */ 1698 { 1699 { 0, 0, 0, 0 }, 1700 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } }, 1701 & ifmt_cam36, { 0x4c000480 } 1702 }, 1703 /* cam288 $rd,$rt,${cam-y},${cam-z} */ 1704 { 1705 { 0, 0, 0, 0 }, 1706 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Y), ',', OP (CAM_Z), 0 } }, 1707 & ifmt_cam36, { 0x4c0004c0 } 1708 }, 1709 /* cm32and $rd,$rs,$rt */ 1710 { 1711 { 0, 0, 0, 0 }, 1712 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1713 & ifmt_cm32and, { 0x4c0000ab } 1714 }, 1715 /* cm32andn $rd,$rs,$rt */ 1716 { 1717 { 0, 0, 0, 0 }, 1718 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1719 & ifmt_cm32and, { 0x4c0000a3 } 1720 }, 1721 /* cm32or $rd,$rs,$rt */ 1722 { 1723 { 0, 0, 0, 0 }, 1724 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1725 & ifmt_cm32and, { 0x4c0000aa } 1726 }, 1727 /* cm32ra $rd,$rs,$rt */ 1728 { 1729 { 0, 0, 0, 0 }, 1730 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1731 & ifmt_add, { 0x4c0000b0 } 1732 }, 1733 /* cm32rd $rd,$rt */ 1734 { 1735 { 0, 0, 0, 0 }, 1736 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1737 & ifmt_cm32rd, { 0x4c0000a1 } 1738 }, 1739 /* cm32ri $rd,$rt */ 1740 { 1741 { 0, 0, 0, 0 }, 1742 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1743 & ifmt_cm32rd, { 0x4c0000a4 } 1744 }, 1745 /* cm32rs $rd,$rs,$rt */ 1746 { 1747 { 0, 0, 0, 0 }, 1748 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1749 & ifmt_add, { 0x4c0000a0 } 1750 }, 1751 /* cm32sa $rd,$rs,$rt */ 1752 { 1753 { 0, 0, 0, 0 }, 1754 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1755 & ifmt_cm32and, { 0x4c0000b8 } 1756 }, 1757 /* cm32sd $rd,$rt */ 1758 { 1759 { 0, 0, 0, 0 }, 1760 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1761 & ifmt_cm32rd, { 0x4c0000a9 } 1762 }, 1763 /* cm32si $rd,$rt */ 1764 { 1765 { 0, 0, 0, 0 }, 1766 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1767 & ifmt_cm32rd, { 0x4c0000ac } 1768 }, 1769 /* cm32ss $rd,$rs,$rt */ 1770 { 1771 { 0, 0, 0, 0 }, 1772 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1773 & ifmt_cm32and, { 0x4c0000a8 } 1774 }, 1775 /* cm32xor $rd,$rs,$rt */ 1776 { 1777 { 0, 0, 0, 0 }, 1778 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1779 & ifmt_cm32and, { 0x4c0000a2 } 1780 }, 1781 /* cm64clr $rd,$rt */ 1782 { 1783 { 0, 0, 0, 0 }, 1784 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1785 & ifmt_cm32rd, { 0x4c000085 } 1786 }, 1787 /* cm64ra $rd,$rs,$rt */ 1788 { 1789 { 0, 0, 0, 0 }, 1790 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1791 & ifmt_cm32and, { 0x4c000090 } 1792 }, 1793 /* cm64rd $rd,$rt */ 1794 { 1795 { 0, 0, 0, 0 }, 1796 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1797 & ifmt_cm32rd, { 0x4c000081 } 1798 }, 1799 /* cm64ri $rd,$rt */ 1800 { 1801 { 0, 0, 0, 0 }, 1802 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1803 & ifmt_cm32rd, { 0x4c000084 } 1804 }, 1805 /* cm64ria2 $rd,$rs,$rt */ 1806 { 1807 { 0, 0, 0, 0 }, 1808 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1809 & ifmt_cm32and, { 0x4c000094 } 1810 }, 1811 /* cm64rs $rd,$rs,$rt */ 1812 { 1813 { 0, 0, 0, 0 }, 1814 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1815 & ifmt_cm32and, { 0x4c000080 } 1816 }, 1817 /* cm64sa $rd,$rs,$rt */ 1818 { 1819 { 0, 0, 0, 0 }, 1820 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1821 & ifmt_cm32and, { 0x4c000098 } 1822 }, 1823 /* cm64sd $rd,$rt */ 1824 { 1825 { 0, 0, 0, 0 }, 1826 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1827 & ifmt_cm32rd, { 0x4c000089 } 1828 }, 1829 /* cm64si $rd,$rt */ 1830 { 1831 { 0, 0, 0, 0 }, 1832 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1833 & ifmt_cm32rd, { 0x4c00008c } 1834 }, 1835 /* cm64sia2 $rd,$rs,$rt */ 1836 { 1837 { 0, 0, 0, 0 }, 1838 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1839 & ifmt_cm32and, { 0x4c00009c } 1840 }, 1841 /* cm64ss $rd,$rs,$rt */ 1842 { 1843 { 0, 0, 0, 0 }, 1844 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1845 & ifmt_cm32and, { 0x4c000088 } 1846 }, 1847 /* cm128ria2 $rd,$rs,$rt */ 1848 { 1849 { 0, 0, 0, 0 }, 1850 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1851 & ifmt_cm32and, { 0x4c000095 } 1852 }, 1853 /* cm128ria3 $rd,$rs,$rt,${cm-3z} */ 1854 { 1855 { 0, 0, 0, 0 }, 1856 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } }, 1857 & ifmt_cm128ria3, { 0x4c000090 } 1858 }, 1859 /* cm128ria4 $rd,$rs,$rt,${cm-4z} */ 1860 { 1861 { 0, 0, 0, 0 }, 1862 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } }, 1863 & ifmt_cm128ria4, { 0x4c0000b0 } 1864 }, 1865 /* cm128sia2 $rd,$rs,$rt */ 1866 { 1867 { 0, 0, 0, 0 }, 1868 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1869 & ifmt_cm32and, { 0x4c00009d } 1870 }, 1871 /* cm128sia3 $rd,$rs,$rt,${cm-3z} */ 1872 { 1873 { 0, 0, 0, 0 }, 1874 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } }, 1875 & ifmt_cm128ria3, { 0x4c000098 } 1876 }, 1877 /* cm128sia4 $rd,$rs,$rt,${cm-4z} */ 1878 { 1879 { 0, 0, 0, 0 }, 1880 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } }, 1881 & ifmt_cm128ria4, { 0x4c0000b8 } 1882 }, 1883 /* cm128vsa $rd,$rs,$rt */ 1884 { 1885 { 0, 0, 0, 0 }, 1886 { { MNEM, ' ', OP (RD), ',', OP (RS), ',', OP (RT), 0 } }, 1887 & ifmt_cm32and, { 0x4c0000a6 } 1888 }, 1889 /* cfc $rd,$rt */ 1890 { 1891 { 0, 0, 0, 0 }, 1892 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 1893 & ifmt_chkhdr, { 0x4c000000 } 1894 }, 1895 /* ctc $rs,$rt */ 1896 { 1897 { 0, 0, 0, 0 }, 1898 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 1899 & ifmt_ctc, { 0x4c000002 } 1900 }, 1901 }; 1902 1903 #undef A 1904 #undef OPERAND 1905 #undef MNEM 1906 #undef OP 1907 1908 /* Formats for ALIAS macro-insns. */ 1909 1910 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 1911 #define F(f) & iq2000_cgen_ifld_table[IQ2000_##f] 1912 #else 1913 #define F(f) & iq2000_cgen_ifld_table[IQ2000_/**/f] 1914 #endif 1915 static const CGEN_IFMT ifmt_nop = { 1916 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 1917 }; 1918 1919 static const CGEN_IFMT ifmt_li = { 1920 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1921 }; 1922 1923 static const CGEN_IFMT ifmt_move = { 1924 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 1925 }; 1926 1927 static const CGEN_IFMT ifmt_lb_base_0 = { 1928 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1929 }; 1930 1931 static const CGEN_IFMT ifmt_lbu_base_0 = { 1932 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1933 }; 1934 1935 static const CGEN_IFMT ifmt_lh_base_0 = { 1936 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1937 }; 1938 1939 static const CGEN_IFMT ifmt_lw_base_0 = { 1940 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1941 }; 1942 1943 static const CGEN_IFMT ifmt_m_add = { 1944 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1945 }; 1946 1947 static const CGEN_IFMT ifmt_m_addu = { 1948 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1949 }; 1950 1951 static const CGEN_IFMT ifmt_m_and = { 1952 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1953 }; 1954 1955 static const CGEN_IFMT ifmt_m_j = { 1956 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 1957 }; 1958 1959 static const CGEN_IFMT ifmt_m_or = { 1960 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1961 }; 1962 1963 static const CGEN_IFMT ifmt_m_sll = { 1964 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 1965 }; 1966 1967 static const CGEN_IFMT ifmt_m_slt = { 1968 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1969 }; 1970 1971 static const CGEN_IFMT ifmt_m_sltu = { 1972 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1973 }; 1974 1975 static const CGEN_IFMT ifmt_m_sra = { 1976 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 1977 }; 1978 1979 static const CGEN_IFMT ifmt_m_srl = { 1980 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 1981 }; 1982 1983 static const CGEN_IFMT ifmt_not = { 1984 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 1985 }; 1986 1987 static const CGEN_IFMT ifmt_subi = { 1988 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1989 }; 1990 1991 static const CGEN_IFMT ifmt_m_sub = { 1992 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1993 }; 1994 1995 static const CGEN_IFMT ifmt_m_subu = { 1996 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1997 }; 1998 1999 static const CGEN_IFMT ifmt_sb_base_0 = { 2000 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2001 }; 2002 2003 static const CGEN_IFMT ifmt_sh_base_0 = { 2004 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2005 }; 2006 2007 static const CGEN_IFMT ifmt_sw_base_0 = { 2008 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2009 }; 2010 2011 static const CGEN_IFMT ifmt_m_xor = { 2012 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2013 }; 2014 2015 static const CGEN_IFMT ifmt_ldw_base_0 = { 2016 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2017 }; 2018 2019 static const CGEN_IFMT ifmt_sdw_base_0 = { 2020 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2021 }; 2022 2023 static const CGEN_IFMT ifmt_m_avail = { 2024 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2025 }; 2026 2027 static const CGEN_IFMT ifmt_m_cam36 = { 2028 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } } 2029 }; 2030 2031 static const CGEN_IFMT ifmt_m_cam72 = { 2032 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } } 2033 }; 2034 2035 static const CGEN_IFMT ifmt_m_cam144 = { 2036 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } } 2037 }; 2038 2039 static const CGEN_IFMT ifmt_m_cam288 = { 2040 32, 32, 0xffe007c7, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP_10) }, { F (F_CAM_Z) }, { F (F_CAM_Y) }, { 0 } } 2041 }; 2042 2043 static const CGEN_IFMT ifmt_m_cm32read = { 2044 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2045 }; 2046 2047 static const CGEN_IFMT ifmt_m_cm64read = { 2048 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2049 }; 2050 2051 static const CGEN_IFMT ifmt_m_cm32mlog = { 2052 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2053 }; 2054 2055 static const CGEN_IFMT ifmt_m_cm32and = { 2056 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2057 }; 2058 2059 static const CGEN_IFMT ifmt_m_cm32andn = { 2060 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2061 }; 2062 2063 static const CGEN_IFMT ifmt_m_cm32or = { 2064 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2065 }; 2066 2067 static const CGEN_IFMT ifmt_m_cm32ra = { 2068 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2069 }; 2070 2071 static const CGEN_IFMT ifmt_m_cm32rd = { 2072 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2073 }; 2074 2075 static const CGEN_IFMT ifmt_m_cm32ri = { 2076 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2077 }; 2078 2079 static const CGEN_IFMT ifmt_m_cm32rs = { 2080 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2081 }; 2082 2083 static const CGEN_IFMT ifmt_m_cm32sa = { 2084 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2085 }; 2086 2087 static const CGEN_IFMT ifmt_m_cm32sd = { 2088 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2089 }; 2090 2091 static const CGEN_IFMT ifmt_m_cm32si = { 2092 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2093 }; 2094 2095 static const CGEN_IFMT ifmt_m_cm32ss = { 2096 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2097 }; 2098 2099 static const CGEN_IFMT ifmt_m_cm32xor = { 2100 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2101 }; 2102 2103 static const CGEN_IFMT ifmt_m_cm64clr = { 2104 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2105 }; 2106 2107 static const CGEN_IFMT ifmt_m_cm64ra = { 2108 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2109 }; 2110 2111 static const CGEN_IFMT ifmt_m_cm64rd = { 2112 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2113 }; 2114 2115 static const CGEN_IFMT ifmt_m_cm64ri = { 2116 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2117 }; 2118 2119 static const CGEN_IFMT ifmt_m_cm64ria2 = { 2120 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2121 }; 2122 2123 static const CGEN_IFMT ifmt_m_cm64rs = { 2124 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2125 }; 2126 2127 static const CGEN_IFMT ifmt_m_cm64sa = { 2128 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2129 }; 2130 2131 static const CGEN_IFMT ifmt_m_cm64sd = { 2132 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2133 }; 2134 2135 static const CGEN_IFMT ifmt_m_cm64si = { 2136 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2137 }; 2138 2139 static const CGEN_IFMT ifmt_m_cm64sia2 = { 2140 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2141 }; 2142 2143 static const CGEN_IFMT ifmt_m_cm64ss = { 2144 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2145 }; 2146 2147 static const CGEN_IFMT ifmt_m_cm128ria2 = { 2148 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2149 }; 2150 2151 static const CGEN_IFMT ifmt_m_cm128ria3 = { 2152 32, 32, 0xfc00fffc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } } 2153 }; 2154 2155 static const CGEN_IFMT ifmt_m_cm128ria4 = { 2156 32, 32, 0xfc00fff8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } } 2157 }; 2158 2159 static const CGEN_IFMT ifmt_m_cm128sia2 = { 2160 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_FUNC) }, { 0 } } 2161 }; 2162 2163 static const CGEN_IFMT ifmt_m_cm128sia3 = { 2164 32, 32, 0xfc00fffc, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_4FUNC) }, { F (F_CM_3Z) }, { 0 } } 2165 }; 2166 2167 static const CGEN_IFMT ifmt_m_cm128sia4 = { 2168 32, 32, 0xfc00fff8, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_CP_GRP) }, { F (F_CM_3FUNC) }, { F (F_CM_4Z) }, { 0 } } 2169 }; 2170 2171 static const CGEN_IFMT ifmt_m_cmphdr = { 2172 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2173 }; 2174 2175 static const CGEN_IFMT ifmt_m_dbd = { 2176 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2177 }; 2178 2179 static const CGEN_IFMT ifmt_m2_dbd = { 2180 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2181 }; 2182 2183 static const CGEN_IFMT ifmt_m_dpwt = { 2184 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2185 }; 2186 2187 static const CGEN_IFMT ifmt_m_free = { 2188 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2189 }; 2190 2191 static const CGEN_IFMT ifmt_m_lock = { 2192 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2193 }; 2194 2195 static const CGEN_IFMT ifmt_m_pkrla = { 2196 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2197 }; 2198 2199 static const CGEN_IFMT ifmt_m_pkrlac = { 2200 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2201 }; 2202 2203 static const CGEN_IFMT ifmt_m_pkrlah = { 2204 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2205 }; 2206 2207 static const CGEN_IFMT ifmt_m_pkrlau = { 2208 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2209 }; 2210 2211 static const CGEN_IFMT ifmt_m_pkrli = { 2212 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } } 2213 }; 2214 2215 static const CGEN_IFMT ifmt_m_pkrlic = { 2216 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } } 2217 }; 2218 2219 static const CGEN_IFMT ifmt_m_pkrlih = { 2220 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } } 2221 }; 2222 2223 static const CGEN_IFMT ifmt_m_pkrliu = { 2224 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } } 2225 }; 2226 2227 static const CGEN_IFMT ifmt_m_rba = { 2228 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2229 }; 2230 2231 static const CGEN_IFMT ifmt_m_rbal = { 2232 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2233 }; 2234 2235 static const CGEN_IFMT ifmt_m_rbar = { 2236 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2237 }; 2238 2239 static const CGEN_IFMT ifmt_m_rbi = { 2240 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } } 2241 }; 2242 2243 static const CGEN_IFMT ifmt_m_rbil = { 2244 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } } 2245 }; 2246 2247 static const CGEN_IFMT ifmt_m_rbir = { 2248 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } } 2249 }; 2250 2251 static const CGEN_IFMT ifmt_m_swwr = { 2252 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2253 }; 2254 2255 static const CGEN_IFMT ifmt_m_swwru = { 2256 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2257 }; 2258 2259 static const CGEN_IFMT ifmt_m_tstod = { 2260 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2261 }; 2262 2263 static const CGEN_IFMT ifmt_m_unlk = { 2264 32, 32, 0xffe0ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2265 }; 2266 2267 static const CGEN_IFMT ifmt_m_wba = { 2268 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2269 }; 2270 2271 static const CGEN_IFMT ifmt_m_wbac = { 2272 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2273 }; 2274 2275 static const CGEN_IFMT ifmt_m_wbau = { 2276 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 2277 }; 2278 2279 static const CGEN_IFMT ifmt_m_wbi = { 2280 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } } 2281 }; 2282 2283 static const CGEN_IFMT ifmt_m_wbic = { 2284 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } } 2285 }; 2286 2287 static const CGEN_IFMT ifmt_m_wbiu = { 2288 32, 32, 0xfc00ff00, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_CP_OP) }, { F (F_BYTECOUNT) }, { 0 } } 2289 }; 2290 2291 #undef F 2292 2293 /* Each non-simple macro entry points to an array of expansion possibilities. */ 2294 2295 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 2296 #define A(a) (1 << CGEN_INSN_##a) 2297 #else 2298 #define A(a) (1 << CGEN_INSN_/**/a) 2299 #endif 2300 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE) 2301 #define OPERAND(op) IQ2000_OPERAND_##op 2302 #else 2303 #define OPERAND(op) IQ2000_OPERAND_/**/op 2304 #endif 2305 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */ 2306 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) 2307 2308 /* The macro instruction table. */ 2309 2310 static const CGEN_IBASE iq2000_cgen_macro_insn_table[] = 2311 { 2312 /* nop */ 2313 { 2314 -1, "nop", "nop", 32, 2315 { 0|A(ALIAS), { (1<<MACH_BASE) } } 2316 }, 2317 /* li $rs,$imm */ 2318 { 2319 -1, "li", "li", 32, 2320 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2321 }, 2322 /* move $rd,$rt */ 2323 { 2324 -1, "move", "move", 32, 2325 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } } 2326 }, 2327 /* lb $rt,$lo16 */ 2328 { 2329 -1, "lb-base-0", "lb", 32, 2330 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } } 2331 }, 2332 /* lbu $rt,$lo16 */ 2333 { 2334 -1, "lbu-base-0", "lbu", 32, 2335 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } } 2336 }, 2337 /* lh $rt,$lo16 */ 2338 { 2339 -1, "lh-base-0", "lh", 32, 2340 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } } 2341 }, 2342 /* lw $rt,$lo16 */ 2343 { 2344 -1, "lw-base-0", "lw", 32, 2345 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } } 2346 }, 2347 /* add $rt,$rs,$lo16 */ 2348 { 2349 -1, "m-add", "add", 32, 2350 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2351 }, 2352 /* addu $rt,$rs,$lo16 */ 2353 { 2354 -1, "m-addu", "addu", 32, 2355 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2356 }, 2357 /* and $rt,$rs,$lo16 */ 2358 { 2359 -1, "m-and", "and", 32, 2360 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2361 }, 2362 /* j $rs */ 2363 { 2364 -1, "m-j", "j", 32, 2365 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2366 }, 2367 /* or $rt,$rs,$lo16 */ 2368 { 2369 -1, "m-or", "or", 32, 2370 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2371 }, 2372 /* sll $rd,$rt,$rs */ 2373 { 2374 -1, "m-sll", "sll", 32, 2375 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } } 2376 }, 2377 /* slt $rt,$rs,$imm */ 2378 { 2379 -1, "m-slt", "slt", 32, 2380 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2381 }, 2382 /* sltu $rt,$rs,$imm */ 2383 { 2384 -1, "m-sltu", "sltu", 32, 2385 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2386 }, 2387 /* sra $rd,$rt,$rs */ 2388 { 2389 -1, "m-sra", "sra", 32, 2390 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } } 2391 }, 2392 /* srl $rd,$rt,$rs */ 2393 { 2394 -1, "m-srl", "srl", 32, 2395 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } } 2396 }, 2397 /* not $rd,$rt */ 2398 { 2399 -1, "not", "not", 32, 2400 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_BASE) } } 2401 }, 2402 /* subi $rt,$rs,$mlo16 */ 2403 { 2404 -1, "subi", "subi", 32, 2405 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2406 }, 2407 /* sub $rt,$rs,$mlo16 */ 2408 { 2409 -1, "m-sub", "sub", 32, 2410 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2411 }, 2412 /* subu $rt,$rs,$mlo16 */ 2413 { 2414 -1, "m-subu", "subu", 32, 2415 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2416 }, 2417 /* sb $rt,$lo16 */ 2418 { 2419 -1, "sb-base-0", "sb", 32, 2420 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } } 2421 }, 2422 /* sh $rt,$lo16 */ 2423 { 2424 -1, "sh-base-0", "sh", 32, 2425 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } } 2426 }, 2427 /* sw $rt,$lo16 */ 2428 { 2429 -1, "sw-base-0", "sw", 32, 2430 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_BASE) } } 2431 }, 2432 /* xor $rt,$rs,$lo16 */ 2433 { 2434 -1, "m-xor", "xor", 32, 2435 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_BASE) } } 2436 }, 2437 /* ldw $rt,$lo16 */ 2438 { 2439 -1, "ldw-base-0", "ldw", 32, 2440 { 0|A(NO_DIS)|A(USES_RS)|A(USES_RT)|A(LOAD_DELAY)|A(EVEN_REG_NUM)|A(ALIAS), { (1<<MACH_IQ2000) } } 2441 }, 2442 /* sdw $rt,$lo16 */ 2443 { 2444 -1, "sdw-base-0", "sdw", 32, 2445 { 0|A(NO_DIS)|A(USES_RT)|A(EVEN_REG_NUM)|A(ALIAS), { (1<<MACH_IQ2000) } } 2446 }, 2447 /* avail */ 2448 { 2449 -1, "m-avail", "avail", 32, 2450 { 0|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } } 2451 }, 2452 /* cam36 $rd,$rt,${cam-z} */ 2453 { 2454 -1, "m-cam36", "cam36", 32, 2455 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2456 }, 2457 /* cam72 $rd,$rt,${cam-z} */ 2458 { 2459 -1, "m-cam72", "cam72", 32, 2460 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2461 }, 2462 /* cam144 $rd,$rt,${cam-z} */ 2463 { 2464 -1, "m-cam144", "cam144", 32, 2465 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2466 }, 2467 /* cam288 $rd,$rt,${cam-z} */ 2468 { 2469 -1, "m-cam288", "cam288", 32, 2470 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2471 }, 2472 /* cm32read $rd,$rt */ 2473 { 2474 -1, "m-cm32read", "cm32read", 32, 2475 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2476 }, 2477 /* cm64read $rd,$rt */ 2478 { 2479 -1, "m-cm64read", "cm64read", 32, 2480 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2481 }, 2482 /* cm32mlog $rs,$rt */ 2483 { 2484 -1, "m-cm32mlog", "cm32mlog", 32, 2485 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2486 }, 2487 /* cm32and $rs,$rt */ 2488 { 2489 -1, "m-cm32and", "cm32and", 32, 2490 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2491 }, 2492 /* cm32andn $rs,$rt */ 2493 { 2494 -1, "m-cm32andn", "cm32andn", 32, 2495 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2496 }, 2497 /* cm32or $rs,$rt */ 2498 { 2499 -1, "m-cm32or", "cm32or", 32, 2500 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2501 }, 2502 /* cm32ra $rs,$rt */ 2503 { 2504 -1, "m-cm32ra", "cm32ra", 32, 2505 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2506 }, 2507 /* cm32rd $rt */ 2508 { 2509 -1, "m-cm32rd", "cm32rd", 32, 2510 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2511 }, 2512 /* cm32ri $rt */ 2513 { 2514 -1, "m-cm32ri", "cm32ri", 32, 2515 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2516 }, 2517 /* cm32rs $rs,$rt */ 2518 { 2519 -1, "m-cm32rs", "cm32rs", 32, 2520 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2521 }, 2522 /* cm32sa $rs,$rt */ 2523 { 2524 -1, "m-cm32sa", "cm32sa", 32, 2525 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2526 }, 2527 /* cm32sd $rt */ 2528 { 2529 -1, "m-cm32sd", "cm32sd", 32, 2530 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2531 }, 2532 /* cm32si $rt */ 2533 { 2534 -1, "m-cm32si", "cm32si", 32, 2535 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2536 }, 2537 /* cm32ss $rs,$rt */ 2538 { 2539 -1, "m-cm32ss", "cm32ss", 32, 2540 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2541 }, 2542 /* cm32xor $rs,$rt */ 2543 { 2544 -1, "m-cm32xor", "cm32xor", 32, 2545 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2546 }, 2547 /* cm64clr $rt */ 2548 { 2549 -1, "m-cm64clr", "cm64clr", 32, 2550 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2551 }, 2552 /* cm64ra $rs,$rt */ 2553 { 2554 -1, "m-cm64ra", "cm64ra", 32, 2555 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2556 }, 2557 /* cm64rd $rt */ 2558 { 2559 -1, "m-cm64rd", "cm64rd", 32, 2560 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2561 }, 2562 /* cm64ri $rt */ 2563 { 2564 -1, "m-cm64ri", "cm64ri", 32, 2565 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2566 }, 2567 /* cm64ria2 $rs,$rt */ 2568 { 2569 -1, "m-cm64ria2", "cm64ria2", 32, 2570 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2571 }, 2572 /* cm64rs $rs,$rt */ 2573 { 2574 -1, "m-cm64rs", "cm64rs", 32, 2575 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2576 }, 2577 /* cm64sa $rs,$rt */ 2578 { 2579 -1, "m-cm64sa", "cm64sa", 32, 2580 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2581 }, 2582 /* cm64sd $rt */ 2583 { 2584 -1, "m-cm64sd", "cm64sd", 32, 2585 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2586 }, 2587 /* cm64si $rt */ 2588 { 2589 -1, "m-cm64si", "cm64si", 32, 2590 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2591 }, 2592 /* cm64sia2 $rs,$rt */ 2593 { 2594 -1, "m-cm64sia2", "cm64sia2", 32, 2595 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2596 }, 2597 /* cm64ss $rs,$rt */ 2598 { 2599 -1, "m-cm64ss", "cm64ss", 32, 2600 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2601 }, 2602 /* cm128ria2 $rs,$rt */ 2603 { 2604 -1, "m-cm128ria2", "cm128ria2", 32, 2605 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2606 }, 2607 /* cm128ria3 $rs,$rt,${cm-3z} */ 2608 { 2609 -1, "m-cm128ria3", "cm128ria3", 32, 2610 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2611 }, 2612 /* cm128ria4 $rs,$rt,${cm-4z} */ 2613 { 2614 -1, "m-cm128ria4", "cm128ria4", 32, 2615 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2616 }, 2617 /* cm128sia2 $rs,$rt */ 2618 { 2619 -1, "m-cm128sia2", "cm128sia2", 32, 2620 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2621 }, 2622 /* cm128sia3 $rs,$rt,${cm-3z} */ 2623 { 2624 -1, "m-cm128sia3", "cm128sia3", 32, 2625 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2626 }, 2627 /* cm128sia4 $rs,$rt,${cm-4z} */ 2628 { 2629 -1, "m-cm128sia4", "cm128sia4", 32, 2630 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2631 }, 2632 /* cmphdr */ 2633 { 2634 -1, "m-cmphdr", "cmphdr", 32, 2635 { 0|A(NO_DIS)|A(ALIAS), { (1<<MACH_IQ10) } } 2636 }, 2637 /* dbd $rd,$rt */ 2638 { 2639 -1, "m-dbd", "dbd", 32, 2640 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } } 2641 }, 2642 /* dbd $rt */ 2643 { 2644 -1, "m2-dbd", "dbd", 32, 2645 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2646 }, 2647 /* dpwt $rs */ 2648 { 2649 -1, "m-dpwt", "dpwt", 32, 2650 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2651 }, 2652 /* free $rs */ 2653 { 2654 -1, "m-free", "free", 32, 2655 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2656 }, 2657 /* lock $rt */ 2658 { 2659 -1, "m-lock", "lock", 32, 2660 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2661 }, 2662 /* pkrla $rs,$rt */ 2663 { 2664 -1, "m-pkrla", "pkrla", 32, 2665 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2666 }, 2667 /* pkrlac $rs,$rt */ 2668 { 2669 -1, "m-pkrlac", "pkrlac", 32, 2670 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2671 }, 2672 /* pkrlah $rs,$rt */ 2673 { 2674 -1, "m-pkrlah", "pkrlah", 32, 2675 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2676 }, 2677 /* pkrlau $rs,$rt */ 2678 { 2679 -1, "m-pkrlau", "pkrlau", 32, 2680 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2681 }, 2682 /* pkrli $rs,$rt,$bytecount */ 2683 { 2684 -1, "m-pkrli", "pkrli", 32, 2685 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } } 2686 }, 2687 /* pkrlic $rs,$rt,$bytecount */ 2688 { 2689 -1, "m-pkrlic", "pkrlic", 32, 2690 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2691 }, 2692 /* pkrlih $rs,$rt,$bytecount */ 2693 { 2694 -1, "m-pkrlih", "pkrlih", 32, 2695 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } } 2696 }, 2697 /* pkrliu $rs,$rt,$bytecount */ 2698 { 2699 -1, "m-pkrliu", "pkrliu", 32, 2700 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } } 2701 }, 2702 /* rba $rs,$rt */ 2703 { 2704 -1, "m-rba", "rba", 32, 2705 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2706 }, 2707 /* rbal $rs,$rt */ 2708 { 2709 -1, "m-rbal", "rbal", 32, 2710 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2711 }, 2712 /* rbar $rs,$rt */ 2713 { 2714 -1, "m-rbar", "rbar", 32, 2715 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2716 }, 2717 /* rbi $rs,$rt,$bytecount */ 2718 { 2719 -1, "m-rbi", "rbi", 32, 2720 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2721 }, 2722 /* rbil $rs,$rt,$bytecount */ 2723 { 2724 -1, "m-rbil", "rbil", 32, 2725 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2726 }, 2727 /* rbir $rs,$rt,$bytecount */ 2728 { 2729 -1, "m-rbir", "rbir", 32, 2730 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2731 }, 2732 /* swwr $rs,$rt */ 2733 { 2734 -1, "m-swwr", "swwr", 32, 2735 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2736 }, 2737 /* swwru $rs,$rt */ 2738 { 2739 -1, "m-swwru", "swwru", 32, 2740 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2741 }, 2742 /* tstod $rs */ 2743 { 2744 -1, "m-tstod", "tstod", 32, 2745 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2746 }, 2747 /* unlk $rt */ 2748 { 2749 -1, "m-unlk", "unlk", 32, 2750 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(ALIAS), { (1<<MACH_IQ10) } } 2751 }, 2752 /* wba $rs,$rt */ 2753 { 2754 -1, "m-wba", "wba", 32, 2755 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2756 }, 2757 /* wbac $rs,$rt */ 2758 { 2759 -1, "m-wbac", "wbac", 32, 2760 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2761 }, 2762 /* wbau $rs,$rt */ 2763 { 2764 -1, "m-wbau", "wbau", 32, 2765 { 0|A(NO_DIS)|A(USES_RD)|A(USES_RT)|A(USES_RS)|A(ALIAS), { (1<<MACH_IQ10) } } 2766 }, 2767 /* wbi $rs,$rt,$bytecount */ 2768 { 2769 -1, "m-wbi", "wbi", 32, 2770 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } } 2771 }, 2772 /* wbic $rs,$rt,$bytecount */ 2773 { 2774 -1, "m-wbic", "wbic", 32, 2775 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } } 2776 }, 2777 /* wbiu $rs,$rt,$bytecount */ 2778 { 2779 -1, "m-wbiu", "wbiu", 32, 2780 { 0|A(NO_DIS)|A(USES_RT)|A(USES_RS)|A(USES_RD)|A(ALIAS), { (1<<MACH_IQ10) } } 2781 }, 2782 }; 2783 2784 /* The macro instruction opcode table. */ 2785 2786 static const CGEN_OPCODE iq2000_cgen_macro_insn_opcode_table[] = 2787 { 2788 /* nop */ 2789 { 2790 { 0, 0, 0, 0 }, 2791 { { MNEM, 0 } }, 2792 & ifmt_nop, { 0x0 } 2793 }, 2794 /* li $rs,$imm */ 2795 { 2796 { 0, 0, 0, 0 }, 2797 { { MNEM, ' ', OP (RS), ',', OP (IMM), 0 } }, 2798 & ifmt_li, { 0x34000000 } 2799 }, 2800 /* move $rd,$rt */ 2801 { 2802 { 0, 0, 0, 0 }, 2803 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 2804 & ifmt_move, { 0x25 } 2805 }, 2806 /* lb $rt,$lo16 */ 2807 { 2808 { 0, 0, 0, 0 }, 2809 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } }, 2810 & ifmt_lb_base_0, { 0x80000000 } 2811 }, 2812 /* lbu $rt,$lo16 */ 2813 { 2814 { 0, 0, 0, 0 }, 2815 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } }, 2816 & ifmt_lbu_base_0, { 0x90000000 } 2817 }, 2818 /* lh $rt,$lo16 */ 2819 { 2820 { 0, 0, 0, 0 }, 2821 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } }, 2822 & ifmt_lh_base_0, { 0x84000000 } 2823 }, 2824 /* lw $rt,$lo16 */ 2825 { 2826 { 0, 0, 0, 0 }, 2827 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } }, 2828 & ifmt_lw_base_0, { 0x8c000000 } 2829 }, 2830 /* add $rt,$rs,$lo16 */ 2831 { 2832 { 0, 0, 0, 0 }, 2833 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } }, 2834 & ifmt_m_add, { 0x20000000 } 2835 }, 2836 /* addu $rt,$rs,$lo16 */ 2837 { 2838 { 0, 0, 0, 0 }, 2839 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } }, 2840 & ifmt_m_addu, { 0x24000000 } 2841 }, 2842 /* and $rt,$rs,$lo16 */ 2843 { 2844 { 0, 0, 0, 0 }, 2845 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } }, 2846 & ifmt_m_and, { 0x30000000 } 2847 }, 2848 /* j $rs */ 2849 { 2850 { 0, 0, 0, 0 }, 2851 { { MNEM, ' ', OP (RS), 0 } }, 2852 & ifmt_m_j, { 0x8 } 2853 }, 2854 /* or $rt,$rs,$lo16 */ 2855 { 2856 { 0, 0, 0, 0 }, 2857 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } }, 2858 & ifmt_m_or, { 0x34000000 } 2859 }, 2860 /* sll $rd,$rt,$rs */ 2861 { 2862 { 0, 0, 0, 0 }, 2863 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } }, 2864 & ifmt_m_sll, { 0x4 } 2865 }, 2866 /* slt $rt,$rs,$imm */ 2867 { 2868 { 0, 0, 0, 0 }, 2869 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } }, 2870 & ifmt_m_slt, { 0x28000000 } 2871 }, 2872 /* sltu $rt,$rs,$imm */ 2873 { 2874 { 0, 0, 0, 0 }, 2875 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (IMM), 0 } }, 2876 & ifmt_m_sltu, { 0x2c000000 } 2877 }, 2878 /* sra $rd,$rt,$rs */ 2879 { 2880 { 0, 0, 0, 0 }, 2881 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } }, 2882 & ifmt_m_sra, { 0x7 } 2883 }, 2884 /* srl $rd,$rt,$rs */ 2885 { 2886 { 0, 0, 0, 0 }, 2887 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (RS), 0 } }, 2888 & ifmt_m_srl, { 0x6 } 2889 }, 2890 /* not $rd,$rt */ 2891 { 2892 { 0, 0, 0, 0 }, 2893 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 2894 & ifmt_not, { 0x27 } 2895 }, 2896 /* subi $rt,$rs,$mlo16 */ 2897 { 2898 { 0, 0, 0, 0 }, 2899 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } }, 2900 & ifmt_subi, { 0x24000000 } 2901 }, 2902 /* sub $rt,$rs,$mlo16 */ 2903 { 2904 { 0, 0, 0, 0 }, 2905 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } }, 2906 & ifmt_m_sub, { 0x24000000 } 2907 }, 2908 /* subu $rt,$rs,$mlo16 */ 2909 { 2910 { 0, 0, 0, 0 }, 2911 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (MLO16), 0 } }, 2912 & ifmt_m_subu, { 0x24000000 } 2913 }, 2914 /* sb $rt,$lo16 */ 2915 { 2916 { 0, 0, 0, 0 }, 2917 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } }, 2918 & ifmt_sb_base_0, { 0xa0000000 } 2919 }, 2920 /* sh $rt,$lo16 */ 2921 { 2922 { 0, 0, 0, 0 }, 2923 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } }, 2924 & ifmt_sh_base_0, { 0xa4000000 } 2925 }, 2926 /* sw $rt,$lo16 */ 2927 { 2928 { 0, 0, 0, 0 }, 2929 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } }, 2930 & ifmt_sw_base_0, { 0xac000000 } 2931 }, 2932 /* xor $rt,$rs,$lo16 */ 2933 { 2934 { 0, 0, 0, 0 }, 2935 { { MNEM, ' ', OP (RT), ',', OP (RS), ',', OP (LO16), 0 } }, 2936 & ifmt_m_xor, { 0x38000000 } 2937 }, 2938 /* ldw $rt,$lo16 */ 2939 { 2940 { 0, 0, 0, 0 }, 2941 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } }, 2942 & ifmt_ldw_base_0, { 0xc0000000 } 2943 }, 2944 /* sdw $rt,$lo16 */ 2945 { 2946 { 0, 0, 0, 0 }, 2947 { { MNEM, ' ', OP (RT), ',', OP (LO16), 0 } }, 2948 & ifmt_sdw_base_0, { 0xe0000000 } 2949 }, 2950 /* avail */ 2951 { 2952 { 0, 0, 0, 0 }, 2953 { { MNEM, 0 } }, 2954 & ifmt_m_avail, { 0x4c000024 } 2955 }, 2956 /* cam36 $rd,$rt,${cam-z} */ 2957 { 2958 { 0, 0, 0, 0 }, 2959 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } }, 2960 & ifmt_m_cam36, { 0x4c000400 } 2961 }, 2962 /* cam72 $rd,$rt,${cam-z} */ 2963 { 2964 { 0, 0, 0, 0 }, 2965 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } }, 2966 & ifmt_m_cam72, { 0x4c000440 } 2967 }, 2968 /* cam144 $rd,$rt,${cam-z} */ 2969 { 2970 { 0, 0, 0, 0 }, 2971 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } }, 2972 & ifmt_m_cam144, { 0x4c000480 } 2973 }, 2974 /* cam288 $rd,$rt,${cam-z} */ 2975 { 2976 { 0, 0, 0, 0 }, 2977 { { MNEM, ' ', OP (RD), ',', OP (RT), ',', OP (CAM_Z), 0 } }, 2978 & ifmt_m_cam288, { 0x4c0004c0 } 2979 }, 2980 /* cm32read $rd,$rt */ 2981 { 2982 { 0, 0, 0, 0 }, 2983 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 2984 & ifmt_m_cm32read, { 0x4c0000b0 } 2985 }, 2986 /* cm64read $rd,$rt */ 2987 { 2988 { 0, 0, 0, 0 }, 2989 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 2990 & ifmt_m_cm64read, { 0x4c000090 } 2991 }, 2992 /* cm32mlog $rs,$rt */ 2993 { 2994 { 0, 0, 0, 0 }, 2995 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 2996 & ifmt_m_cm32mlog, { 0x4c0000aa } 2997 }, 2998 /* cm32and $rs,$rt */ 2999 { 3000 { 0, 0, 0, 0 }, 3001 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3002 & ifmt_m_cm32and, { 0x4c0000ab } 3003 }, 3004 /* cm32andn $rs,$rt */ 3005 { 3006 { 0, 0, 0, 0 }, 3007 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3008 & ifmt_m_cm32andn, { 0x4c0000a3 } 3009 }, 3010 /* cm32or $rs,$rt */ 3011 { 3012 { 0, 0, 0, 0 }, 3013 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3014 & ifmt_m_cm32or, { 0x4c0000aa } 3015 }, 3016 /* cm32ra $rs,$rt */ 3017 { 3018 { 0, 0, 0, 0 }, 3019 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3020 & ifmt_m_cm32ra, { 0x4c0000b0 } 3021 }, 3022 /* cm32rd $rt */ 3023 { 3024 { 0, 0, 0, 0 }, 3025 { { MNEM, ' ', OP (RT), 0 } }, 3026 & ifmt_m_cm32rd, { 0x4c0000a1 } 3027 }, 3028 /* cm32ri $rt */ 3029 { 3030 { 0, 0, 0, 0 }, 3031 { { MNEM, ' ', OP (RT), 0 } }, 3032 & ifmt_m_cm32ri, { 0x4c0000a4 } 3033 }, 3034 /* cm32rs $rs,$rt */ 3035 { 3036 { 0, 0, 0, 0 }, 3037 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3038 & ifmt_m_cm32rs, { 0x4c0000a0 } 3039 }, 3040 /* cm32sa $rs,$rt */ 3041 { 3042 { 0, 0, 0, 0 }, 3043 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3044 & ifmt_m_cm32sa, { 0x4c0000b8 } 3045 }, 3046 /* cm32sd $rt */ 3047 { 3048 { 0, 0, 0, 0 }, 3049 { { MNEM, ' ', OP (RT), 0 } }, 3050 & ifmt_m_cm32sd, { 0x4c0000a9 } 3051 }, 3052 /* cm32si $rt */ 3053 { 3054 { 0, 0, 0, 0 }, 3055 { { MNEM, ' ', OP (RT), 0 } }, 3056 & ifmt_m_cm32si, { 0x4c0000ac } 3057 }, 3058 /* cm32ss $rs,$rt */ 3059 { 3060 { 0, 0, 0, 0 }, 3061 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3062 & ifmt_m_cm32ss, { 0x4c0000a8 } 3063 }, 3064 /* cm32xor $rs,$rt */ 3065 { 3066 { 0, 0, 0, 0 }, 3067 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3068 & ifmt_m_cm32xor, { 0x4c0000a2 } 3069 }, 3070 /* cm64clr $rt */ 3071 { 3072 { 0, 0, 0, 0 }, 3073 { { MNEM, ' ', OP (RT), 0 } }, 3074 & ifmt_m_cm64clr, { 0x4c000085 } 3075 }, 3076 /* cm64ra $rs,$rt */ 3077 { 3078 { 0, 0, 0, 0 }, 3079 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3080 & ifmt_m_cm64ra, { 0x4c000090 } 3081 }, 3082 /* cm64rd $rt */ 3083 { 3084 { 0, 0, 0, 0 }, 3085 { { MNEM, ' ', OP (RT), 0 } }, 3086 & ifmt_m_cm64rd, { 0x4c000081 } 3087 }, 3088 /* cm64ri $rt */ 3089 { 3090 { 0, 0, 0, 0 }, 3091 { { MNEM, ' ', OP (RT), 0 } }, 3092 & ifmt_m_cm64ri, { 0x4c000084 } 3093 }, 3094 /* cm64ria2 $rs,$rt */ 3095 { 3096 { 0, 0, 0, 0 }, 3097 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3098 & ifmt_m_cm64ria2, { 0x4c000094 } 3099 }, 3100 /* cm64rs $rs,$rt */ 3101 { 3102 { 0, 0, 0, 0 }, 3103 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3104 & ifmt_m_cm64rs, { 0x4c000080 } 3105 }, 3106 /* cm64sa $rs,$rt */ 3107 { 3108 { 0, 0, 0, 0 }, 3109 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3110 & ifmt_m_cm64sa, { 0x4c000098 } 3111 }, 3112 /* cm64sd $rt */ 3113 { 3114 { 0, 0, 0, 0 }, 3115 { { MNEM, ' ', OP (RT), 0 } }, 3116 & ifmt_m_cm64sd, { 0x4c000089 } 3117 }, 3118 /* cm64si $rt */ 3119 { 3120 { 0, 0, 0, 0 }, 3121 { { MNEM, ' ', OP (RT), 0 } }, 3122 & ifmt_m_cm64si, { 0x4c00008c } 3123 }, 3124 /* cm64sia2 $rs,$rt */ 3125 { 3126 { 0, 0, 0, 0 }, 3127 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3128 & ifmt_m_cm64sia2, { 0x4c00009c } 3129 }, 3130 /* cm64ss $rs,$rt */ 3131 { 3132 { 0, 0, 0, 0 }, 3133 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3134 & ifmt_m_cm64ss, { 0x4c000088 } 3135 }, 3136 /* cm128ria2 $rs,$rt */ 3137 { 3138 { 0, 0, 0, 0 }, 3139 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3140 & ifmt_m_cm128ria2, { 0x4c000095 } 3141 }, 3142 /* cm128ria3 $rs,$rt,${cm-3z} */ 3143 { 3144 { 0, 0, 0, 0 }, 3145 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } }, 3146 & ifmt_m_cm128ria3, { 0x4c000090 } 3147 }, 3148 /* cm128ria4 $rs,$rt,${cm-4z} */ 3149 { 3150 { 0, 0, 0, 0 }, 3151 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } }, 3152 & ifmt_m_cm128ria4, { 0x4c0000b0 } 3153 }, 3154 /* cm128sia2 $rs,$rt */ 3155 { 3156 { 0, 0, 0, 0 }, 3157 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3158 & ifmt_m_cm128sia2, { 0x4c00009d } 3159 }, 3160 /* cm128sia3 $rs,$rt,${cm-3z} */ 3161 { 3162 { 0, 0, 0, 0 }, 3163 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_3Z), 0 } }, 3164 & ifmt_m_cm128sia3, { 0x4c000098 } 3165 }, 3166 /* cm128sia4 $rs,$rt,${cm-4z} */ 3167 { 3168 { 0, 0, 0, 0 }, 3169 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (CM_4Z), 0 } }, 3170 & ifmt_m_cm128sia4, { 0x4c0000b8 } 3171 }, 3172 /* cmphdr */ 3173 { 3174 { 0, 0, 0, 0 }, 3175 { { MNEM, 0 } }, 3176 & ifmt_m_cmphdr, { 0x4c00002c } 3177 }, 3178 /* dbd $rd,$rt */ 3179 { 3180 { 0, 0, 0, 0 }, 3181 { { MNEM, ' ', OP (RD), ',', OP (RT), 0 } }, 3182 & ifmt_m_dbd, { 0x4c000021 } 3183 }, 3184 /* dbd $rt */ 3185 { 3186 { 0, 0, 0, 0 }, 3187 { { MNEM, ' ', OP (RT), 0 } }, 3188 & ifmt_m2_dbd, { 0x4c000021 } 3189 }, 3190 /* dpwt $rs */ 3191 { 3192 { 0, 0, 0, 0 }, 3193 { { MNEM, ' ', OP (RS), 0 } }, 3194 & ifmt_m_dpwt, { 0x4c000023 } 3195 }, 3196 /* free $rs */ 3197 { 3198 { 0, 0, 0, 0 }, 3199 { { MNEM, ' ', OP (RS), 0 } }, 3200 & ifmt_m_free, { 0x4c000025 } 3201 }, 3202 /* lock $rt */ 3203 { 3204 { 0, 0, 0, 0 }, 3205 { { MNEM, ' ', OP (RT), 0 } }, 3206 & ifmt_m_lock, { 0x4c000001 } 3207 }, 3208 /* pkrla $rs,$rt */ 3209 { 3210 { 0, 0, 0, 0 }, 3211 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3212 & ifmt_m_pkrla, { 0x4c000028 } 3213 }, 3214 /* pkrlac $rs,$rt */ 3215 { 3216 { 0, 0, 0, 0 }, 3217 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3218 & ifmt_m_pkrlac, { 0x4c00002b } 3219 }, 3220 /* pkrlah $rs,$rt */ 3221 { 3222 { 0, 0, 0, 0 }, 3223 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3224 & ifmt_m_pkrlah, { 0x4c00002a } 3225 }, 3226 /* pkrlau $rs,$rt */ 3227 { 3228 { 0, 0, 0, 0 }, 3229 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3230 & ifmt_m_pkrlau, { 0x4c000029 } 3231 }, 3232 /* pkrli $rs,$rt,$bytecount */ 3233 { 3234 { 0, 0, 0, 0 }, 3235 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 3236 & ifmt_m_pkrli, { 0x48000000 } 3237 }, 3238 /* pkrlic $rs,$rt,$bytecount */ 3239 { 3240 { 0, 0, 0, 0 }, 3241 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 3242 & ifmt_m_pkrlic, { 0x48000300 } 3243 }, 3244 /* pkrlih $rs,$rt,$bytecount */ 3245 { 3246 { 0, 0, 0, 0 }, 3247 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 3248 & ifmt_m_pkrlih, { 0x48000200 } 3249 }, 3250 /* pkrliu $rs,$rt,$bytecount */ 3251 { 3252 { 0, 0, 0, 0 }, 3253 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 3254 & ifmt_m_pkrliu, { 0x48000100 } 3255 }, 3256 /* rba $rs,$rt */ 3257 { 3258 { 0, 0, 0, 0 }, 3259 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3260 & ifmt_m_rba, { 0x4c000008 } 3261 }, 3262 /* rbal $rs,$rt */ 3263 { 3264 { 0, 0, 0, 0 }, 3265 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3266 & ifmt_m_rbal, { 0x4c000009 } 3267 }, 3268 /* rbar $rs,$rt */ 3269 { 3270 { 0, 0, 0, 0 }, 3271 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3272 & ifmt_m_rbar, { 0x4c00000a } 3273 }, 3274 /* rbi $rs,$rt,$bytecount */ 3275 { 3276 { 0, 0, 0, 0 }, 3277 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 3278 & ifmt_m_rbi, { 0x4c000200 } 3279 }, 3280 /* rbil $rs,$rt,$bytecount */ 3281 { 3282 { 0, 0, 0, 0 }, 3283 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 3284 & ifmt_m_rbil, { 0x4c000300 } 3285 }, 3286 /* rbir $rs,$rt,$bytecount */ 3287 { 3288 { 0, 0, 0, 0 }, 3289 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 3290 & ifmt_m_rbir, { 0x4c000100 } 3291 }, 3292 /* swwr $rs,$rt */ 3293 { 3294 { 0, 0, 0, 0 }, 3295 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3296 & ifmt_m_swwr, { 0x4c000006 } 3297 }, 3298 /* swwru $rs,$rt */ 3299 { 3300 { 0, 0, 0, 0 }, 3301 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3302 & ifmt_m_swwru, { 0x4c000007 } 3303 }, 3304 /* tstod $rs */ 3305 { 3306 { 0, 0, 0, 0 }, 3307 { { MNEM, ' ', OP (RS), 0 } }, 3308 & ifmt_m_tstod, { 0x4c000027 } 3309 }, 3310 /* unlk $rt */ 3311 { 3312 { 0, 0, 0, 0 }, 3313 { { MNEM, ' ', OP (RT), 0 } }, 3314 & ifmt_m_unlk, { 0x4c000003 } 3315 }, 3316 /* wba $rs,$rt */ 3317 { 3318 { 0, 0, 0, 0 }, 3319 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3320 & ifmt_m_wba, { 0x4c000010 } 3321 }, 3322 /* wbac $rs,$rt */ 3323 { 3324 { 0, 0, 0, 0 }, 3325 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3326 & ifmt_m_wbac, { 0x4c000012 } 3327 }, 3328 /* wbau $rs,$rt */ 3329 { 3330 { 0, 0, 0, 0 }, 3331 { { MNEM, ' ', OP (RS), ',', OP (RT), 0 } }, 3332 & ifmt_m_wbau, { 0x4c000011 } 3333 }, 3334 /* wbi $rs,$rt,$bytecount */ 3335 { 3336 { 0, 0, 0, 0 }, 3337 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 3338 & ifmt_m_wbi, { 0x4c000600 } 3339 }, 3340 /* wbic $rs,$rt,$bytecount */ 3341 { 3342 { 0, 0, 0, 0 }, 3343 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 3344 & ifmt_m_wbic, { 0x4c000500 } 3345 }, 3346 /* wbiu $rs,$rt,$bytecount */ 3347 { 3348 { 0, 0, 0, 0 }, 3349 { { MNEM, ' ', OP (RS), ',', OP (RT), ',', OP (BYTECOUNT), 0 } }, 3350 & ifmt_m_wbiu, { 0x4c000700 } 3351 }, 3352 }; 3353 3354 #undef A 3355 #undef OPERAND 3356 #undef MNEM 3357 #undef OP 3358 3359 #ifndef CGEN_ASM_HASH_P 3360 #define CGEN_ASM_HASH_P(insn) 1 3361 #endif 3362 3363 #ifndef CGEN_DIS_HASH_P 3364 #define CGEN_DIS_HASH_P(insn) 1 3365 #endif 3366 3367 /* Return non-zero if INSN is to be added to the hash table. 3368 Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file. */ 3369 3370 static int 3371 asm_hash_insn_p (insn) 3372 const CGEN_INSN *insn ATTRIBUTE_UNUSED; 3373 { 3374 return CGEN_ASM_HASH_P (insn); 3375 } 3376 3377 static int 3378 dis_hash_insn_p (insn) 3379 const CGEN_INSN *insn; 3380 { 3381 /* If building the hash table and the NO-DIS attribute is present, 3382 ignore. */ 3383 if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS)) 3384 return 0; 3385 return CGEN_DIS_HASH_P (insn); 3386 } 3387 3388 #ifndef CGEN_ASM_HASH 3389 #define CGEN_ASM_HASH_SIZE 127 3390 #ifdef CGEN_MNEMONIC_OPERANDS 3391 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) 3392 #else 3393 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/ 3394 #endif 3395 #endif 3396 3397 /* It doesn't make much sense to provide a default here, 3398 but while this is under development we do. 3399 BUFFER is a pointer to the bytes of the insn, target order. 3400 VALUE is the first base_insn_bitsize bits as an int in host order. */ 3401 3402 #ifndef CGEN_DIS_HASH 3403 #define CGEN_DIS_HASH_SIZE 256 3404 #define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf)) 3405 #endif 3406 3407 /* The result is the hash value of the insn. 3408 Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file. */ 3409 3410 static unsigned int 3411 asm_hash_insn (mnem) 3412 const char * mnem; 3413 { 3414 return CGEN_ASM_HASH (mnem); 3415 } 3416 3417 /* BUF is a pointer to the bytes of the insn, target order. 3418 VALUE is the first base_insn_bitsize bits as an int in host order. */ 3419 3420 static unsigned int 3421 dis_hash_insn (buf, value) 3422 const char * buf ATTRIBUTE_UNUSED; 3423 CGEN_INSN_INT value ATTRIBUTE_UNUSED; 3424 { 3425 return CGEN_DIS_HASH (buf, value); 3426 } 3427 3428 static void set_fields_bitsize PARAMS ((CGEN_FIELDS *, int)); 3429 3430 /* Set the recorded length of the insn in the CGEN_FIELDS struct. */ 3431 3432 static void 3433 set_fields_bitsize (fields, size) 3434 CGEN_FIELDS *fields; 3435 int size; 3436 { 3437 CGEN_FIELDS_BITSIZE (fields) = size; 3438 } 3439 3440 /* Function to call before using the operand instance table. 3441 This plugs the opcode entries and macro instructions into the cpu table. */ 3442 3443 void 3444 iq2000_cgen_init_opcode_table (cd) 3445 CGEN_CPU_DESC cd; 3446 { 3447 int i; 3448 int num_macros = (sizeof (iq2000_cgen_macro_insn_table) / 3449 sizeof (iq2000_cgen_macro_insn_table[0])); 3450 const CGEN_IBASE *ib = & iq2000_cgen_macro_insn_table[0]; 3451 const CGEN_OPCODE *oc = & iq2000_cgen_macro_insn_opcode_table[0]; 3452 CGEN_INSN *insns = (CGEN_INSN *) xmalloc (num_macros * sizeof (CGEN_INSN)); 3453 memset (insns, 0, num_macros * sizeof (CGEN_INSN)); 3454 for (i = 0; i < num_macros; ++i) 3455 { 3456 insns[i].base = &ib[i]; 3457 insns[i].opcode = &oc[i]; 3458 iq2000_cgen_build_insn_regex (& insns[i]); 3459 } 3460 cd->macro_insn_table.init_entries = insns; 3461 cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE); 3462 cd->macro_insn_table.num_init_entries = num_macros; 3463 3464 oc = & iq2000_cgen_insn_opcode_table[0]; 3465 insns = (CGEN_INSN *) cd->insn_table.init_entries; 3466 for (i = 0; i < MAX_INSNS; ++i) 3467 { 3468 insns[i].opcode = &oc[i]; 3469 iq2000_cgen_build_insn_regex (& insns[i]); 3470 } 3471 3472 cd->sizeof_fields = sizeof (CGEN_FIELDS); 3473 cd->set_fields_bitsize = set_fields_bitsize; 3474 3475 cd->asm_hash_p = asm_hash_insn_p; 3476 cd->asm_hash = asm_hash_insn; 3477 cd->asm_hash_size = CGEN_ASM_HASH_SIZE; 3478 3479 cd->dis_hash_p = dis_hash_insn_p; 3480 cd->dis_hash = dis_hash_insn; 3481 cd->dis_hash_size = CGEN_DIS_HASH_SIZE; 3482 } 3483