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