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