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