1/* Instruction opcode table for iq2000. 2 3THIS FILE IS MACHINE GENERATED WITH CGEN. 4 5Copyright 1996-2005 Free Software Foundation, Inc. 6 7This file is part of the GNU Binutils and/or GDB, the GNU debugger. 8 9This program is free software; you can redistribute it and/or modify 10it under the terms of the GNU General Public License as published by 11the Free Software Foundation; either version 2, or (at your option) 12any later version. 13 14This program is distributed in the hope that it will be useful, 15but WITHOUT ANY WARRANTY; without even the implied warranty of 16MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17GNU General Public License for more details. 18 19You should have received a copy of the GNU General Public License along 20with this program; if not, write to the Free Software Foundation, Inc., 2151 Franklin Street - Fifth Floor, Boston, MA 02110-1301, 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 36static int asm_hash_insn_p (const CGEN_INSN *); 37static unsigned int asm_hash_insn (const char *); 38static int dis_hash_insn_p (const CGEN_INSN *); 39static unsigned int dis_hash_insn (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 48static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = { 49 0, 0, 0x0, { { 0 } } 50}; 51 52static const CGEN_IFMT ifmt_add2 ATTRIBUTE_UNUSED = { 53 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 54}; 55 56static const CGEN_IFMT ifmt_add ATTRIBUTE_UNUSED = { 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 60static const CGEN_IFMT ifmt_addi2 ATTRIBUTE_UNUSED = { 61 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } } 62}; 63 64static const CGEN_IFMT ifmt_addi ATTRIBUTE_UNUSED = { 65 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 66}; 67 68static const CGEN_IFMT ifmt_ram ATTRIBUTE_UNUSED = { 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 72static const CGEN_IFMT ifmt_sll ATTRIBUTE_UNUSED = { 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 76static const CGEN_IFMT ifmt_sllv2 ATTRIBUTE_UNUSED = { 77 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 78}; 79 80static const CGEN_IFMT ifmt_slmv2 ATTRIBUTE_UNUSED = { 81 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 82}; 83 84static const CGEN_IFMT ifmt_slmv ATTRIBUTE_UNUSED = { 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 88static const CGEN_IFMT ifmt_slti2 ATTRIBUTE_UNUSED = { 89 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } } 90}; 91 92static const CGEN_IFMT ifmt_slti ATTRIBUTE_UNUSED = { 93 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 94}; 95 96static const CGEN_IFMT ifmt_sra2 ATTRIBUTE_UNUSED = { 97 32, 32, 0xffe0003f, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RD_RT) }, { F (F_SHAMT) }, { F (F_FUNC) }, { 0 } } 98}; 99 100static const CGEN_IFMT ifmt_bbi ATTRIBUTE_UNUSED = { 101 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } } 102}; 103 104static const CGEN_IFMT ifmt_bbv ATTRIBUTE_UNUSED = { 105 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } } 106}; 107 108static const CGEN_IFMT ifmt_bgez ATTRIBUTE_UNUSED = { 109 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } } 110}; 111 112static const CGEN_IFMT ifmt_jalr ATTRIBUTE_UNUSED = { 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 116static const CGEN_IFMT ifmt_jr ATTRIBUTE_UNUSED = { 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 120static const CGEN_IFMT ifmt_lb ATTRIBUTE_UNUSED = { 121 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 122}; 123 124static const CGEN_IFMT ifmt_lui ATTRIBUTE_UNUSED = { 125 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 126}; 127 128static const CGEN_IFMT ifmt_break ATTRIBUTE_UNUSED = { 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 132static const CGEN_IFMT ifmt_syscall ATTRIBUTE_UNUSED = { 133 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_EXCODE) }, { F (F_FUNC) }, { 0 } } 134}; 135 136static const CGEN_IFMT ifmt_andoui ATTRIBUTE_UNUSED = { 137 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 138}; 139 140static const CGEN_IFMT ifmt_andoui2 ATTRIBUTE_UNUSED = { 141 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RT_RS) }, { F (F_IMM) }, { 0 } } 142}; 143 144static const CGEN_IFMT ifmt_mrgb ATTRIBUTE_UNUSED = { 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 148static const CGEN_IFMT ifmt_mrgb2 ATTRIBUTE_UNUSED = { 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 152static const CGEN_IFMT ifmt_bc0f ATTRIBUTE_UNUSED = { 153 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_OFFSET) }, { 0 } } 154}; 155 156static const CGEN_IFMT ifmt_cfc0 ATTRIBUTE_UNUSED = { 157 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_RD) }, { F (F_10_11) }, { 0 } } 158}; 159 160static const CGEN_IFMT ifmt_chkhdr ATTRIBUTE_UNUSED = { 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 164static const CGEN_IFMT ifmt_lulck ATTRIBUTE_UNUSED = { 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 168static const CGEN_IFMT ifmt_pkrlr1 ATTRIBUTE_UNUSED = { 169 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_COUNT) }, { F (F_INDEX) }, { 0 } } 170}; 171 172static const CGEN_IFMT ifmt_rfe ATTRIBUTE_UNUSED = { 173 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_25) }, { F (F_24_19) }, { F (F_FUNC) }, { 0 } } 174}; 175 176static const CGEN_IFMT ifmt_j ATTRIBUTE_UNUSED = { 177 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RSRVD) }, { F (F_JTARG) }, { 0 } } 178}; 179 180static const CGEN_IFMT ifmt_mrgbq10 ATTRIBUTE_UNUSED = { 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 184static const CGEN_IFMT ifmt_mrgbq102 ATTRIBUTE_UNUSED = { 185 32, 32, 0xfc00003f, { { F (F_OPCODE) }, { F (F_RT) }, { F (F_RD_RS) }, { F (F_MASKQ10) }, { F (F_FUNC) }, { 0 } } 186}; 187 188static const CGEN_IFMT ifmt_jq10 ATTRIBUTE_UNUSED = { 189 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } } 190}; 191 192static const CGEN_IFMT ifmt_jalq10 ATTRIBUTE_UNUSED = { 193 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_JTARG) }, { 0 } } 194}; 195 196static const CGEN_IFMT ifmt_avail ATTRIBUTE_UNUSED = { 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 200static const CGEN_IFMT ifmt_rbi ATTRIBUTE_UNUSED = { 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 204static const CGEN_IFMT ifmt_cam36 ATTRIBUTE_UNUSED = { 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 208static const CGEN_IFMT ifmt_cm32and ATTRIBUTE_UNUSED = { 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 212static const CGEN_IFMT ifmt_cm32rd ATTRIBUTE_UNUSED = { 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 216static const CGEN_IFMT ifmt_cm128ria3 ATTRIBUTE_UNUSED = { 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 220static const CGEN_IFMT ifmt_cm128ria4 ATTRIBUTE_UNUSED = { 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 224static const CGEN_IFMT ifmt_ctc ATTRIBUTE_UNUSED = { 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 245static 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,$_index,$count */ 1074 { 1075 { 0, 0, 0, 0 }, 1076 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } }, 1077 & ifmt_pkrlr1, { 0x4fa00000 } 1078 }, 1079/* pkrlr30 $rt,$_index,$count */ 1080 { 1081 { 0, 0, 0, 0 }, 1082 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', 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,$_index,$count */ 1092 { 1093 { 0, 0, 0, 0 }, 1094 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } }, 1095 & ifmt_pkrlr1, { 0x4f000000 } 1096 }, 1097/* rbr30 $rt,$_index,$count */ 1098 { 1099 { 0, 0, 0, 0 }, 1100 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', 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,$_index,$count */ 1116 { 1117 { 0, 0, 0, 0 }, 1118 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } }, 1119 & ifmt_pkrlr1, { 0x4f800000 } 1120 }, 1121/* rxr30 $rt,$_index,$count */ 1122 { 1123 { 0, 0, 0, 0 }, 1124 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', 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,$_index,$count */ 1194 { 1195 { 0, 0, 0, 0 }, 1196 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } }, 1197 & ifmt_pkrlr1, { 0x4e000000 } 1198 }, 1199/* wbr1u $rt,$_index,$count */ 1200 { 1201 { 0, 0, 0, 0 }, 1202 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } }, 1203 & ifmt_pkrlr1, { 0x4e200000 } 1204 }, 1205/* wbr30 $rt,$_index,$count */ 1206 { 1207 { 0, 0, 0, 0 }, 1208 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } }, 1209 & ifmt_pkrlr1, { 0x4e400000 } 1210 }, 1211/* wbr30u $rt,$_index,$count */ 1212 { 1213 { 0, 0, 0, 0 }, 1214 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', 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,$_index,$count */ 1230 { 1231 { 0, 0, 0, 0 }, 1232 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } }, 1233 & ifmt_pkrlr1, { 0x4e800000 } 1234 }, 1235/* wxr1u $rt,$_index,$count */ 1236 { 1237 { 0, 0, 0, 0 }, 1238 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } }, 1239 & ifmt_pkrlr1, { 0x4ea00000 } 1240 }, 1241/* wxr30 $rt,$_index,$count */ 1242 { 1243 { 0, 0, 0, 0 }, 1244 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', OP (COUNT), 0 } }, 1245 & ifmt_pkrlr1, { 0x4ec00000 } 1246 }, 1247/* wxr30u $rt,$_index,$count */ 1248 { 1249 { 0, 0, 0, 0 }, 1250 { { MNEM, ' ', OP (RT), ',', OP (_INDEX), ',', 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 1915static const CGEN_IFMT ifmt_nop ATTRIBUTE_UNUSED = { 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 1919static const CGEN_IFMT ifmt_li ATTRIBUTE_UNUSED = { 1920 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1921}; 1922 1923static const CGEN_IFMT ifmt_move ATTRIBUTE_UNUSED = { 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 1927static const CGEN_IFMT ifmt_lb_base_0 ATTRIBUTE_UNUSED = { 1928 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1929}; 1930 1931static const CGEN_IFMT ifmt_lbu_base_0 ATTRIBUTE_UNUSED = { 1932 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1933}; 1934 1935static const CGEN_IFMT ifmt_lh_base_0 ATTRIBUTE_UNUSED = { 1936 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1937}; 1938 1939static const CGEN_IFMT ifmt_lw_base_0 ATTRIBUTE_UNUSED = { 1940 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1941}; 1942 1943static const CGEN_IFMT ifmt_m_add ATTRIBUTE_UNUSED = { 1944 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1945}; 1946 1947static const CGEN_IFMT ifmt_m_addu ATTRIBUTE_UNUSED = { 1948 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1949}; 1950 1951static const CGEN_IFMT ifmt_m_and ATTRIBUTE_UNUSED = { 1952 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1953}; 1954 1955static const CGEN_IFMT ifmt_m_j ATTRIBUTE_UNUSED = { 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 1959static const CGEN_IFMT ifmt_m_or ATTRIBUTE_UNUSED = { 1960 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1961}; 1962 1963static const CGEN_IFMT ifmt_m_sll ATTRIBUTE_UNUSED = { 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 1967static const CGEN_IFMT ifmt_m_slt ATTRIBUTE_UNUSED = { 1968 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1969}; 1970 1971static const CGEN_IFMT ifmt_m_sltu ATTRIBUTE_UNUSED = { 1972 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1973}; 1974 1975static const CGEN_IFMT ifmt_m_sra ATTRIBUTE_UNUSED = { 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 1979static const CGEN_IFMT ifmt_m_srl ATTRIBUTE_UNUSED = { 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 1983static const CGEN_IFMT ifmt_not ATTRIBUTE_UNUSED = { 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 1987static const CGEN_IFMT ifmt_subi ATTRIBUTE_UNUSED = { 1988 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1989}; 1990 1991static const CGEN_IFMT ifmt_m_sub ATTRIBUTE_UNUSED = { 1992 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1993}; 1994 1995static const CGEN_IFMT ifmt_m_subu ATTRIBUTE_UNUSED = { 1996 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 1997}; 1998 1999static const CGEN_IFMT ifmt_sb_base_0 ATTRIBUTE_UNUSED = { 2000 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2001}; 2002 2003static const CGEN_IFMT ifmt_sh_base_0 ATTRIBUTE_UNUSED = { 2004 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2005}; 2006 2007static const CGEN_IFMT ifmt_sw_base_0 ATTRIBUTE_UNUSED = { 2008 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2009}; 2010 2011static const CGEN_IFMT ifmt_m_xor ATTRIBUTE_UNUSED = { 2012 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2013}; 2014 2015static const CGEN_IFMT ifmt_ldw_base_0 ATTRIBUTE_UNUSED = { 2016 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2017}; 2018 2019static const CGEN_IFMT ifmt_sdw_base_0 ATTRIBUTE_UNUSED = { 2020 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RS) }, { F (F_RT) }, { F (F_IMM) }, { 0 } } 2021}; 2022 2023static const CGEN_IFMT ifmt_m_avail ATTRIBUTE_UNUSED = { 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 2027static const CGEN_IFMT ifmt_m_cam36 ATTRIBUTE_UNUSED = { 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 2031static const CGEN_IFMT ifmt_m_cam72 ATTRIBUTE_UNUSED = { 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 2035static const CGEN_IFMT ifmt_m_cam144 ATTRIBUTE_UNUSED = { 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 2039static const CGEN_IFMT ifmt_m_cam288 ATTRIBUTE_UNUSED = { 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 2043static const CGEN_IFMT ifmt_m_cm32read ATTRIBUTE_UNUSED = { 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 2047static const CGEN_IFMT ifmt_m_cm64read ATTRIBUTE_UNUSED = { 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 2051static const CGEN_IFMT ifmt_m_cm32mlog ATTRIBUTE_UNUSED = { 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 2055static const CGEN_IFMT ifmt_m_cm32and ATTRIBUTE_UNUSED = { 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 2059static const CGEN_IFMT ifmt_m_cm32andn ATTRIBUTE_UNUSED = { 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 2063static const CGEN_IFMT ifmt_m_cm32or ATTRIBUTE_UNUSED = { 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 2067static const CGEN_IFMT ifmt_m_cm32ra ATTRIBUTE_UNUSED = { 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 2071static const CGEN_IFMT ifmt_m_cm32rd ATTRIBUTE_UNUSED = { 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 2075static const CGEN_IFMT ifmt_m_cm32ri ATTRIBUTE_UNUSED = { 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 2079static const CGEN_IFMT ifmt_m_cm32rs ATTRIBUTE_UNUSED = { 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 2083static const CGEN_IFMT ifmt_m_cm32sa ATTRIBUTE_UNUSED = { 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 2087static const CGEN_IFMT ifmt_m_cm32sd ATTRIBUTE_UNUSED = { 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 2091static const CGEN_IFMT ifmt_m_cm32si ATTRIBUTE_UNUSED = { 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 2095static const CGEN_IFMT ifmt_m_cm32ss ATTRIBUTE_UNUSED = { 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 2099static const CGEN_IFMT ifmt_m_cm32xor ATTRIBUTE_UNUSED = { 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 2103static const CGEN_IFMT ifmt_m_cm64clr ATTRIBUTE_UNUSED = { 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 2107static const CGEN_IFMT ifmt_m_cm64ra ATTRIBUTE_UNUSED = { 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 2111static const CGEN_IFMT ifmt_m_cm64rd ATTRIBUTE_UNUSED = { 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 2115static const CGEN_IFMT ifmt_m_cm64ri ATTRIBUTE_UNUSED = { 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 2119static const CGEN_IFMT ifmt_m_cm64ria2 ATTRIBUTE_UNUSED = { 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 2123static const CGEN_IFMT ifmt_m_cm64rs ATTRIBUTE_UNUSED = { 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 2127static const CGEN_IFMT ifmt_m_cm64sa ATTRIBUTE_UNUSED = { 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 2131static const CGEN_IFMT ifmt_m_cm64sd ATTRIBUTE_UNUSED = { 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 2135static const CGEN_IFMT ifmt_m_cm64si ATTRIBUTE_UNUSED = { 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 2139static const CGEN_IFMT ifmt_m_cm64sia2 ATTRIBUTE_UNUSED = { 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 2143static const CGEN_IFMT ifmt_m_cm64ss ATTRIBUTE_UNUSED = { 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 2147static const CGEN_IFMT ifmt_m_cm128ria2 ATTRIBUTE_UNUSED = { 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 2151static const CGEN_IFMT ifmt_m_cm128ria3 ATTRIBUTE_UNUSED = { 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 2155static const CGEN_IFMT ifmt_m_cm128ria4 ATTRIBUTE_UNUSED = { 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 2159static const CGEN_IFMT ifmt_m_cm128sia2 ATTRIBUTE_UNUSED = { 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 2163static const CGEN_IFMT ifmt_m_cm128sia3 ATTRIBUTE_UNUSED = { 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 2167static const CGEN_IFMT ifmt_m_cm128sia4 ATTRIBUTE_UNUSED = { 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 2171static const CGEN_IFMT ifmt_m_cmphdr ATTRIBUTE_UNUSED = { 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 2175static const CGEN_IFMT ifmt_m_dbd ATTRIBUTE_UNUSED = { 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 2179static const CGEN_IFMT ifmt_m2_dbd ATTRIBUTE_UNUSED = { 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 2183static const CGEN_IFMT ifmt_m_dpwt ATTRIBUTE_UNUSED = { 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 2187static const CGEN_IFMT ifmt_m_free ATTRIBUTE_UNUSED = { 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 2191static const CGEN_IFMT ifmt_m_lock ATTRIBUTE_UNUSED = { 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 2195static const CGEN_IFMT ifmt_m_pkrla ATTRIBUTE_UNUSED = { 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 2199static const CGEN_IFMT ifmt_m_pkrlac ATTRIBUTE_UNUSED = { 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 2203static const CGEN_IFMT ifmt_m_pkrlah ATTRIBUTE_UNUSED = { 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 2207static const CGEN_IFMT ifmt_m_pkrlau ATTRIBUTE_UNUSED = { 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 2211static const CGEN_IFMT ifmt_m_pkrli ATTRIBUTE_UNUSED = { 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 2215static const CGEN_IFMT ifmt_m_pkrlic ATTRIBUTE_UNUSED = { 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 2219static const CGEN_IFMT ifmt_m_pkrlih ATTRIBUTE_UNUSED = { 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 2223static const CGEN_IFMT ifmt_m_pkrliu ATTRIBUTE_UNUSED = { 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 2227static const CGEN_IFMT ifmt_m_rba ATTRIBUTE_UNUSED = { 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 2231static const CGEN_IFMT ifmt_m_rbal ATTRIBUTE_UNUSED = { 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 2235static const CGEN_IFMT ifmt_m_rbar ATTRIBUTE_UNUSED = { 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 2239static const CGEN_IFMT ifmt_m_rbi ATTRIBUTE_UNUSED = { 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 2243static const CGEN_IFMT ifmt_m_rbil ATTRIBUTE_UNUSED = { 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 2247static const CGEN_IFMT ifmt_m_rbir ATTRIBUTE_UNUSED = { 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 2251static const CGEN_IFMT ifmt_m_swwr ATTRIBUTE_UNUSED = { 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 2255static const CGEN_IFMT ifmt_m_swwru ATTRIBUTE_UNUSED = { 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 2259static const CGEN_IFMT ifmt_m_tstod ATTRIBUTE_UNUSED = { 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 2263static const CGEN_IFMT ifmt_m_unlk ATTRIBUTE_UNUSED = { 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 2267static const CGEN_IFMT ifmt_m_wba ATTRIBUTE_UNUSED = { 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 2271static const CGEN_IFMT ifmt_m_wbac ATTRIBUTE_UNUSED = { 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 2275static const CGEN_IFMT ifmt_m_wbau ATTRIBUTE_UNUSED = { 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 2279static const CGEN_IFMT ifmt_m_wbi ATTRIBUTE_UNUSED = { 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 2283static const CGEN_IFMT ifmt_m_wbic ATTRIBUTE_UNUSED = { 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 2287static const CGEN_IFMT ifmt_m_wbiu ATTRIBUTE_UNUSED = { 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 2310static const CGEN_IBASE iq2000_cgen_macro_insn_table[] = 2311{ 2312/* nop */ 2313 { 2314 -1, "nop", "nop", 32, 2315 { 0|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } } 2316 }, 2317/* li $rs,$imm */ 2318 { 2319 -1, "li", "li", 32, 2320 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 2361 }, 2362/* j $rs */ 2363 { 2364 -1, "m-j", "j", 32, 2365 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_BASE), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 2446 }, 2447/* avail */ 2448 { 2449 -1, "m-avail", "avail", 32, 2450 { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 2631 }, 2632/* cmphdr */ 2633 { 2634 -1, "m-cmphdr", "cmphdr", 32, 2635 { 0|A(NO_DIS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } } 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), 0 } } } } 2641 }, 2642/* dbd $rt */ 2643 { 2644 -1, "m2-dbd", "dbd", 32, 2645 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } } 2646 }, 2647/* dpwt $rs */ 2648 { 2649 -1, "m-dpwt", "dpwt", 32, 2650 { 0|A(NO_DIS)|A(USES_RS)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } } 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), 0 } } } } 2656 }, 2657/* lock $rt */ 2658 { 2659 -1, "m-lock", "lock", 32, 2660 { 0|A(NO_DIS)|A(USES_RT)|A(ALIAS), { { { (1<<MACH_IQ10), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 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), 0 } } } } 2781 }, 2782}; 2783 2784/* The macro instruction opcode table. */ 2785 2786static 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 3370static int 3371asm_hash_insn_p (insn) 3372 const CGEN_INSN *insn ATTRIBUTE_UNUSED; 3373{ 3374 return CGEN_ASM_HASH_P (insn); 3375} 3376 3377static int 3378dis_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 3410static unsigned int 3411asm_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 3420static unsigned int 3421dis_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/* Set the recorded length of the insn in the CGEN_FIELDS struct. */ 3429 3430static void 3431set_fields_bitsize (CGEN_FIELDS *fields, int size) 3432{ 3433 CGEN_FIELDS_BITSIZE (fields) = size; 3434} 3435 3436/* Function to call before using the operand instance table. 3437 This plugs the opcode entries and macro instructions into the cpu table. */ 3438 3439void 3440iq2000_cgen_init_opcode_table (CGEN_CPU_DESC cd) 3441{ 3442 int i; 3443 int num_macros = (sizeof (iq2000_cgen_macro_insn_table) / 3444 sizeof (iq2000_cgen_macro_insn_table[0])); 3445 const CGEN_IBASE *ib = & iq2000_cgen_macro_insn_table[0]; 3446 const CGEN_OPCODE *oc = & iq2000_cgen_macro_insn_opcode_table[0]; 3447 CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN)); 3448 3449 memset (insns, 0, num_macros * sizeof (CGEN_INSN)); 3450 for (i = 0; i < num_macros; ++i) 3451 { 3452 insns[i].base = &ib[i]; 3453 insns[i].opcode = &oc[i]; 3454 iq2000_cgen_build_insn_regex (& insns[i]); 3455 } 3456 cd->macro_insn_table.init_entries = insns; 3457 cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE); 3458 cd->macro_insn_table.num_init_entries = num_macros; 3459 3460 oc = & iq2000_cgen_insn_opcode_table[0]; 3461 insns = (CGEN_INSN *) cd->insn_table.init_entries; 3462 for (i = 0; i < MAX_INSNS; ++i) 3463 { 3464 insns[i].opcode = &oc[i]; 3465 iq2000_cgen_build_insn_regex (& insns[i]); 3466 } 3467 3468 cd->sizeof_fields = sizeof (CGEN_FIELDS); 3469 cd->set_fields_bitsize = set_fields_bitsize; 3470 3471 cd->asm_hash_p = asm_hash_insn_p; 3472 cd->asm_hash = asm_hash_insn; 3473 cd->asm_hash_size = CGEN_ASM_HASH_SIZE; 3474 3475 cd->dis_hash_p = dis_hash_insn_p; 3476 cd->dis_hash = dis_hash_insn; 3477 cd->dis_hash_size = CGEN_DIS_HASH_SIZE; 3478} 3479