1 1.1.1.4 christos /* DO NOT EDIT! -*- buffer-read-only: t -*- vi:set ro: */ 2 1.1 christos /* Instruction opcode table for or1k. 3 1.1 christos 4 1.1 christos THIS FILE IS MACHINE GENERATED WITH CGEN. 5 1.1 christos 6 1.1.1.8 christos Copyright (C) 1996-2025 Free Software Foundation, Inc. 7 1.1 christos 8 1.1 christos This file is part of the GNU Binutils and/or GDB, the GNU debugger. 9 1.1 christos 10 1.1 christos This file is free software; you can redistribute it and/or modify 11 1.1 christos it under the terms of the GNU General Public License as published by 12 1.1 christos the Free Software Foundation; either version 3, or (at your option) 13 1.1 christos any later version. 14 1.1 christos 15 1.1 christos It is distributed in the hope that it will be useful, but WITHOUT 16 1.1 christos ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 17 1.1 christos or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 18 1.1 christos License for more details. 19 1.1 christos 20 1.1 christos You should have received a copy of the GNU General Public License along 21 1.1 christos with this program; if not, write to the Free Software Foundation, Inc., 22 1.1 christos 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 23 1.1 christos 24 1.1 christos */ 25 1.1 christos 26 1.1 christos #include "sysdep.h" 27 1.1 christos #include "ansidecl.h" 28 1.1 christos #include "bfd.h" 29 1.1 christos #include "symcat.h" 30 1.1 christos #include "or1k-desc.h" 31 1.1 christos #include "or1k-opc.h" 32 1.1 christos #include "libiberty.h" 33 1.1 christos 34 1.1 christos /* -- opc.c */ 35 1.1.1.5 christos 36 1.1.1.5 christos /* Special check to ensure that instruction exists for given machine. */ 37 1.1.1.5 christos 38 1.1.1.5 christos int 39 1.1.1.5 christos or1k_cgen_insn_supported (CGEN_CPU_DESC cd, const CGEN_INSN *insn) 40 1.1.1.5 christos { 41 1.1.1.5 christos int machs = CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_MACH); 42 1.1.1.5 christos 43 1.1.1.5 christos /* No mach attribute? Assume it's supported for all machs. */ 44 1.1.1.5 christos if (machs == 0) 45 1.1.1.5 christos return 1; 46 1.1.1.5 christos 47 1.1.1.5 christos return ((machs & cd->machs) != 0); 48 1.1.1.5 christos } 49 1.1.1.5 christos 50 1.1 christos /* -- */ 51 1.1 christos /* The hash functions are recorded here to help keep assembler code out of 52 1.1 christos the disassembler and vice versa. */ 53 1.1 christos 54 1.1 christos static int asm_hash_insn_p (const CGEN_INSN *); 55 1.1 christos static unsigned int asm_hash_insn (const char *); 56 1.1 christos static int dis_hash_insn_p (const CGEN_INSN *); 57 1.1 christos static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT); 58 1.1 christos 59 1.1 christos /* Instruction formats. */ 60 1.1 christos 61 1.1 christos #define F(f) & or1k_cgen_ifld_table[OR1K_##f] 62 1.1 christos static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = { 63 1.1 christos 0, 0, 0x0, { { 0 } } 64 1.1 christos }; 65 1.1 christos 66 1.1 christos static const CGEN_IFMT ifmt_l_j ATTRIBUTE_UNUSED = { 67 1.1 christos 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_DISP26) }, { 0 } } 68 1.1 christos }; 69 1.1 christos 70 1.1.1.4 christos static const CGEN_IFMT ifmt_l_adrp ATTRIBUTE_UNUSED = { 71 1.1.1.4 christos 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_DISP21) }, { 0 } } 72 1.1.1.4 christos }; 73 1.1.1.4 christos 74 1.1 christos static const CGEN_IFMT ifmt_l_jr ATTRIBUTE_UNUSED = { 75 1.1 christos 32, 32, 0xffff07ff, { { F (F_OPCODE) }, { F (F_RESV_25_10) }, { F (F_R3) }, { F (F_RESV_10_11) }, { 0 } } 76 1.1 christos }; 77 1.1 christos 78 1.1 christos static const CGEN_IFMT ifmt_l_trap ATTRIBUTE_UNUSED = { 79 1.1 christos 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_OP_25_5) }, { F (F_RESV_20_5) }, { F (F_UIMM16) }, { 0 } } 80 1.1 christos }; 81 1.1 christos 82 1.1 christos static const CGEN_IFMT ifmt_l_msync ATTRIBUTE_UNUSED = { 83 1.1 christos 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_OP_25_5) }, { F (F_RESV_20_21) }, { 0 } } 84 1.1 christos }; 85 1.1 christos 86 1.1 christos static const CGEN_IFMT ifmt_l_rfe ATTRIBUTE_UNUSED = { 87 1.1 christos 32, 32, 0xffffffff, { { F (F_OPCODE) }, { F (F_RESV_25_26) }, { 0 } } 88 1.1 christos }; 89 1.1 christos 90 1.1 christos static const CGEN_IFMT ifmt_l_nop_imm ATTRIBUTE_UNUSED = { 91 1.1 christos 32, 32, 0xffff0000, { { F (F_OPCODE) }, { F (F_OP_25_2) }, { F (F_RESV_23_8) }, { F (F_UIMM16) }, { 0 } } 92 1.1 christos }; 93 1.1 christos 94 1.1 christos static const CGEN_IFMT ifmt_l_movhi ATTRIBUTE_UNUSED = { 95 1.1 christos 32, 32, 0xfc1f0000, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_RESV_20_4) }, { F (F_OP_16_1) }, { F (F_UIMM16) }, { 0 } } 96 1.1 christos }; 97 1.1 christos 98 1.1 christos static const CGEN_IFMT ifmt_l_macrc ATTRIBUTE_UNUSED = { 99 1.1 christos 32, 32, 0xfc1fffff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_RESV_20_4) }, { F (F_OP_16_1) }, { F (F_UIMM16) }, { 0 } } 100 1.1 christos }; 101 1.1 christos 102 1.1 christos static const CGEN_IFMT ifmt_l_mfspr ATTRIBUTE_UNUSED = { 103 1.1 christos 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_UIMM16) }, { 0 } } 104 1.1 christos }; 105 1.1 christos 106 1.1 christos static const CGEN_IFMT ifmt_l_mtspr ATTRIBUTE_UNUSED = { 107 1.1 christos 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R2) }, { F (F_R3) }, { F (F_UIMM16_SPLIT) }, { 0 } } 108 1.1 christos }; 109 1.1 christos 110 1.1 christos static const CGEN_IFMT ifmt_l_lwz ATTRIBUTE_UNUSED = { 111 1.1 christos 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } 112 1.1 christos }; 113 1.1 christos 114 1.1 christos static const CGEN_IFMT ifmt_l_sw ATTRIBUTE_UNUSED = { 115 1.1 christos 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R2) }, { F (F_R3) }, { F (F_SIMM16_SPLIT) }, { 0 } } 116 1.1 christos }; 117 1.1 christos 118 1.1 christos static const CGEN_IFMT ifmt_l_swa ATTRIBUTE_UNUSED = { 119 1.1 christos 32, 32, 0xfc000000, { { F (F_OPCODE) }, { F (F_R2) }, { F (F_R3) }, { F (F_SIMM16) }, { 0 } } 120 1.1 christos }; 121 1.1 christos 122 1.1 christos static const CGEN_IFMT ifmt_l_sll ATTRIBUTE_UNUSED = { 123 1.1 christos 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_2) }, { F (F_RESV_5_2) }, { F (F_OP_3_4) }, { 0 } } 124 1.1 christos }; 125 1.1 christos 126 1.1 christos static const CGEN_IFMT ifmt_l_slli ATTRIBUTE_UNUSED = { 127 1.1 christos 32, 32, 0xfc00ffc0, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_RESV_15_8) }, { F (F_OP_7_2) }, { F (F_UIMM6) }, { 0 } } 128 1.1 christos }; 129 1.1 christos 130 1.1 christos static const CGEN_IFMT ifmt_l_and ATTRIBUTE_UNUSED = { 131 1.1 christos 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_7) }, { F (F_OP_3_4) }, { 0 } } 132 1.1 christos }; 133 1.1 christos 134 1.1.1.4 christos static const CGEN_IFMT ifmt_l_muld ATTRIBUTE_UNUSED = { 135 1.1.1.4 christos 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RESV_25_5) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_7) }, { F (F_OP_3_4) }, { 0 } } 136 1.1.1.4 christos }; 137 1.1.1.4 christos 138 1.1 christos static const CGEN_IFMT ifmt_l_exths ATTRIBUTE_UNUSED = { 139 1.1 christos 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_RESV_15_6) }, { F (F_OP_9_4) }, { F (F_RESV_5_2) }, { F (F_OP_3_4) }, { 0 } } 140 1.1 christos }; 141 1.1 christos 142 1.1 christos static const CGEN_IFMT ifmt_l_cmov ATTRIBUTE_UNUSED = { 143 1.1 christos 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_1) }, { F (F_OP_9_2) }, { F (F_RESV_7_4) }, { F (F_OP_3_4) }, { 0 } } 144 1.1 christos }; 145 1.1 christos 146 1.1 christos static const CGEN_IFMT ifmt_l_sfgts ATTRIBUTE_UNUSED = { 147 1.1 christos 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_OP_25_5) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_11) }, { 0 } } 148 1.1 christos }; 149 1.1 christos 150 1.1 christos static const CGEN_IFMT ifmt_l_sfgtsi ATTRIBUTE_UNUSED = { 151 1.1 christos 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_OP_25_5) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } 152 1.1 christos }; 153 1.1 christos 154 1.1 christos static const CGEN_IFMT ifmt_l_mac ATTRIBUTE_UNUSED = { 155 1.1 christos 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_OP_25_5) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_7) }, { F (F_OP_3_4) }, { 0 } } 156 1.1 christos }; 157 1.1 christos 158 1.1 christos static const CGEN_IFMT ifmt_l_maci ATTRIBUTE_UNUSED = { 159 1.1 christos 32, 32, 0xffe00000, { { F (F_OPCODE) }, { F (F_RESV_25_5) }, { F (F_R2) }, { F (F_SIMM16) }, { 0 } } 160 1.1 christos }; 161 1.1 christos 162 1.1 christos static const CGEN_IFMT ifmt_lf_add_s ATTRIBUTE_UNUSED = { 163 1.1 christos 32, 32, 0xfc0007ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } } 164 1.1 christos }; 165 1.1 christos 166 1.1.1.5 christos static const CGEN_IFMT ifmt_lf_add_d32 ATTRIBUTE_UNUSED = { 167 1.1.1.5 christos 32, 32, 0xfc0000ff, { { F (F_OPCODE) }, { F (F_RDD32) }, { F (F_RAD32) }, { F (F_RBD32) }, { F (F_OP_7_8) }, { 0 } } 168 1.1 christos }; 169 1.1 christos 170 1.1 christos static const CGEN_IFMT ifmt_lf_itof_s ATTRIBUTE_UNUSED = { 171 1.1 christos 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } } 172 1.1 christos }; 173 1.1 christos 174 1.1.1.5 christos static const CGEN_IFMT ifmt_lf_itof_d32 ATTRIBUTE_UNUSED = { 175 1.1.1.5 christos 32, 32, 0xfc00f9ff, { { F (F_OPCODE) }, { F (F_R3) }, { F (F_RDD32) }, { F (F_RAD32) }, { F (F_RESV_8_1) }, { F (F_OP_7_8) }, { 0 } } 176 1.1.1.5 christos }; 177 1.1.1.5 christos 178 1.1 christos static const CGEN_IFMT ifmt_lf_ftoi_s ATTRIBUTE_UNUSED = { 179 1.1 christos 32, 32, 0xfc00ffff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } } 180 1.1 christos }; 181 1.1 christos 182 1.1.1.5 christos static const CGEN_IFMT ifmt_lf_ftoi_d32 ATTRIBUTE_UNUSED = { 183 1.1.1.5 christos 32, 32, 0xfc00f9ff, { { F (F_OPCODE) }, { F (F_R3) }, { F (F_RDD32) }, { F (F_RAD32) }, { F (F_RESV_8_1) }, { F (F_OP_7_8) }, { 0 } } 184 1.1 christos }; 185 1.1 christos 186 1.1.1.5 christos static const CGEN_IFMT ifmt_lf_sfeq_s ATTRIBUTE_UNUSED = { 187 1.1 christos 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } } 188 1.1 christos }; 189 1.1 christos 190 1.1.1.5 christos static const CGEN_IFMT ifmt_lf_sfeq_d32 ATTRIBUTE_UNUSED = { 191 1.1.1.5 christos 32, 32, 0xffe004ff, { { F (F_OPCODE) }, { F (F_R1) }, { F (F_RESV_10_1) }, { F (F_RAD32) }, { F (F_RBD32) }, { F (F_OP_7_8) }, { 0 } } 192 1.1.1.5 christos }; 193 1.1.1.5 christos 194 1.1 christos static const CGEN_IFMT ifmt_lf_cust1_s ATTRIBUTE_UNUSED = { 195 1.1 christos 32, 32, 0xffe007ff, { { F (F_OPCODE) }, { F (F_RESV_25_5) }, { F (F_R2) }, { F (F_R3) }, { F (F_RESV_10_3) }, { F (F_OP_7_8) }, { 0 } } 196 1.1 christos }; 197 1.1 christos 198 1.1.1.5 christos static const CGEN_IFMT ifmt_lf_cust1_d32 ATTRIBUTE_UNUSED = { 199 1.1.1.5 christos 32, 32, 0xffe004ff, { { F (F_OPCODE) }, { F (F_RESV_25_5) }, { F (F_RESV_10_1) }, { F (F_RAD32) }, { F (F_RBD32) }, { F (F_OP_7_8) }, { 0 } } 200 1.1 christos }; 201 1.1 christos 202 1.1 christos #undef F 203 1.1 christos 204 1.1 christos #define A(a) (1 << CGEN_INSN_##a) 205 1.1 christos #define OPERAND(op) OR1K_OPERAND_##op 206 1.1 christos #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */ 207 1.1 christos #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) 208 1.1 christos 209 1.1 christos /* The instruction table. */ 210 1.1 christos 211 1.1 christos static const CGEN_OPCODE or1k_cgen_insn_opcode_table[MAX_INSNS] = 212 1.1 christos { 213 1.1 christos /* Special null first entry. 214 1.1 christos A `num' value of zero is thus invalid. 215 1.1 christos Also, the special `invalid' insn resides here. */ 216 1.1 christos { { 0, 0, 0, 0 }, {{0}}, 0, {0}}, 217 1.1 christos /* l.j ${disp26} */ 218 1.1 christos { 219 1.1 christos { 0, 0, 0, 0 }, 220 1.1 christos { { MNEM, ' ', OP (DISP26), 0 } }, 221 1.1 christos & ifmt_l_j, { 0x0 } 222 1.1 christos }, 223 1.1.1.4 christos /* l.adrp $rD,${disp21} */ 224 1.1.1.4 christos { 225 1.1.1.4 christos { 0, 0, 0, 0 }, 226 1.1.1.4 christos { { MNEM, ' ', OP (RD), ',', OP (DISP21), 0 } }, 227 1.1.1.4 christos & ifmt_l_adrp, { 0x8000000 } 228 1.1.1.4 christos }, 229 1.1 christos /* l.jal ${disp26} */ 230 1.1 christos { 231 1.1 christos { 0, 0, 0, 0 }, 232 1.1 christos { { MNEM, ' ', OP (DISP26), 0 } }, 233 1.1 christos & ifmt_l_j, { 0x4000000 } 234 1.1 christos }, 235 1.1 christos /* l.jr $rB */ 236 1.1 christos { 237 1.1 christos { 0, 0, 0, 0 }, 238 1.1 christos { { MNEM, ' ', OP (RB), 0 } }, 239 1.1 christos & ifmt_l_jr, { 0x44000000 } 240 1.1 christos }, 241 1.1 christos /* l.jalr $rB */ 242 1.1 christos { 243 1.1 christos { 0, 0, 0, 0 }, 244 1.1 christos { { MNEM, ' ', OP (RB), 0 } }, 245 1.1 christos & ifmt_l_jr, { 0x48000000 } 246 1.1 christos }, 247 1.1 christos /* l.bnf ${disp26} */ 248 1.1 christos { 249 1.1 christos { 0, 0, 0, 0 }, 250 1.1 christos { { MNEM, ' ', OP (DISP26), 0 } }, 251 1.1 christos & ifmt_l_j, { 0xc000000 } 252 1.1 christos }, 253 1.1 christos /* l.bf ${disp26} */ 254 1.1 christos { 255 1.1 christos { 0, 0, 0, 0 }, 256 1.1 christos { { MNEM, ' ', OP (DISP26), 0 } }, 257 1.1 christos & ifmt_l_j, { 0x10000000 } 258 1.1 christos }, 259 1.1 christos /* l.trap ${uimm16} */ 260 1.1 christos { 261 1.1 christos { 0, 0, 0, 0 }, 262 1.1 christos { { MNEM, ' ', OP (UIMM16), 0 } }, 263 1.1 christos & ifmt_l_trap, { 0x21000000 } 264 1.1 christos }, 265 1.1 christos /* l.sys ${uimm16} */ 266 1.1 christos { 267 1.1 christos { 0, 0, 0, 0 }, 268 1.1 christos { { MNEM, ' ', OP (UIMM16), 0 } }, 269 1.1 christos & ifmt_l_trap, { 0x20000000 } 270 1.1 christos }, 271 1.1 christos /* l.msync */ 272 1.1 christos { 273 1.1 christos { 0, 0, 0, 0 }, 274 1.1 christos { { MNEM, 0 } }, 275 1.1 christos & ifmt_l_msync, { 0x22000000 } 276 1.1 christos }, 277 1.1 christos /* l.psync */ 278 1.1 christos { 279 1.1 christos { 0, 0, 0, 0 }, 280 1.1 christos { { MNEM, 0 } }, 281 1.1 christos & ifmt_l_msync, { 0x22800000 } 282 1.1 christos }, 283 1.1 christos /* l.csync */ 284 1.1 christos { 285 1.1 christos { 0, 0, 0, 0 }, 286 1.1 christos { { MNEM, 0 } }, 287 1.1 christos & ifmt_l_msync, { 0x23000000 } 288 1.1 christos }, 289 1.1 christos /* l.rfe */ 290 1.1 christos { 291 1.1 christos { 0, 0, 0, 0 }, 292 1.1 christos { { MNEM, 0 } }, 293 1.1 christos & ifmt_l_rfe, { 0x24000000 } 294 1.1 christos }, 295 1.1 christos /* l.nop ${uimm16} */ 296 1.1 christos { 297 1.1 christos { 0, 0, 0, 0 }, 298 1.1 christos { { MNEM, ' ', OP (UIMM16), 0 } }, 299 1.1 christos & ifmt_l_nop_imm, { 0x15000000 } 300 1.1 christos }, 301 1.1 christos /* l.nop */ 302 1.1 christos { 303 1.1 christos { 0, 0, 0, 0 }, 304 1.1 christos { { MNEM, 0 } }, 305 1.1 christos & ifmt_l_nop_imm, { 0x15000000 } 306 1.1 christos }, 307 1.1 christos /* l.movhi $rD,$uimm16 */ 308 1.1 christos { 309 1.1 christos { 0, 0, 0, 0 }, 310 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (UIMM16), 0 } }, 311 1.1 christos & ifmt_l_movhi, { 0x18000000 } 312 1.1 christos }, 313 1.1 christos /* l.macrc $rD */ 314 1.1 christos { 315 1.1 christos { 0, 0, 0, 0 }, 316 1.1 christos { { MNEM, ' ', OP (RD), 0 } }, 317 1.1 christos & ifmt_l_macrc, { 0x18010000 } 318 1.1 christos }, 319 1.1 christos /* l.mfspr $rD,$rA,${uimm16} */ 320 1.1 christos { 321 1.1 christos { 0, 0, 0, 0 }, 322 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM16), 0 } }, 323 1.1 christos & ifmt_l_mfspr, { 0xb4000000 } 324 1.1 christos }, 325 1.1 christos /* l.mtspr $rA,$rB,${uimm16-split} */ 326 1.1 christos { 327 1.1 christos { 0, 0, 0, 0 }, 328 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), ',', OP (UIMM16_SPLIT), 0 } }, 329 1.1 christos & ifmt_l_mtspr, { 0xc0000000 } 330 1.1 christos }, 331 1.1 christos /* l.lwz $rD,${simm16}($rA) */ 332 1.1 christos { 333 1.1 christos { 0, 0, 0, 0 }, 334 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } }, 335 1.1 christos & ifmt_l_lwz, { 0x84000000 } 336 1.1 christos }, 337 1.1 christos /* l.lws $rD,${simm16}($rA) */ 338 1.1 christos { 339 1.1 christos { 0, 0, 0, 0 }, 340 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } }, 341 1.1 christos & ifmt_l_lwz, { 0x88000000 } 342 1.1 christos }, 343 1.1 christos /* l.lwa $rD,${simm16}($rA) */ 344 1.1 christos { 345 1.1 christos { 0, 0, 0, 0 }, 346 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } }, 347 1.1 christos & ifmt_l_lwz, { 0x6c000000 } 348 1.1 christos }, 349 1.1 christos /* l.lbz $rD,${simm16}($rA) */ 350 1.1 christos { 351 1.1 christos { 0, 0, 0, 0 }, 352 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } }, 353 1.1 christos & ifmt_l_lwz, { 0x8c000000 } 354 1.1 christos }, 355 1.1 christos /* l.lbs $rD,${simm16}($rA) */ 356 1.1 christos { 357 1.1 christos { 0, 0, 0, 0 }, 358 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } }, 359 1.1 christos & ifmt_l_lwz, { 0x90000000 } 360 1.1 christos }, 361 1.1 christos /* l.lhz $rD,${simm16}($rA) */ 362 1.1 christos { 363 1.1 christos { 0, 0, 0, 0 }, 364 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } }, 365 1.1 christos & ifmt_l_lwz, { 0x94000000 } 366 1.1 christos }, 367 1.1 christos /* l.lhs $rD,${simm16}($rA) */ 368 1.1 christos { 369 1.1 christos { 0, 0, 0, 0 }, 370 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (SIMM16), '(', OP (RA), ')', 0 } }, 371 1.1 christos & ifmt_l_lwz, { 0x98000000 } 372 1.1 christos }, 373 1.1 christos /* l.sw ${simm16-split}($rA),$rB */ 374 1.1 christos { 375 1.1 christos { 0, 0, 0, 0 }, 376 1.1 christos { { MNEM, ' ', OP (SIMM16_SPLIT), '(', OP (RA), ')', ',', OP (RB), 0 } }, 377 1.1 christos & ifmt_l_sw, { 0xd4000000 } 378 1.1 christos }, 379 1.1 christos /* l.sb ${simm16-split}($rA),$rB */ 380 1.1 christos { 381 1.1 christos { 0, 0, 0, 0 }, 382 1.1 christos { { MNEM, ' ', OP (SIMM16_SPLIT), '(', OP (RA), ')', ',', OP (RB), 0 } }, 383 1.1 christos & ifmt_l_sw, { 0xd8000000 } 384 1.1 christos }, 385 1.1 christos /* l.sh ${simm16-split}($rA),$rB */ 386 1.1 christos { 387 1.1 christos { 0, 0, 0, 0 }, 388 1.1 christos { { MNEM, ' ', OP (SIMM16_SPLIT), '(', OP (RA), ')', ',', OP (RB), 0 } }, 389 1.1 christos & ifmt_l_sw, { 0xdc000000 } 390 1.1 christos }, 391 1.1 christos /* l.swa ${simm16-split}($rA),$rB */ 392 1.1 christos { 393 1.1 christos { 0, 0, 0, 0 }, 394 1.1 christos { { MNEM, ' ', OP (SIMM16_SPLIT), '(', OP (RA), ')', ',', OP (RB), 0 } }, 395 1.1 christos & ifmt_l_swa, { 0xcc000000 } 396 1.1 christos }, 397 1.1 christos /* l.sll $rD,$rA,$rB */ 398 1.1 christos { 399 1.1 christos { 0, 0, 0, 0 }, 400 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 401 1.1 christos & ifmt_l_sll, { 0xe0000008 } 402 1.1 christos }, 403 1.1 christos /* l.slli $rD,$rA,${uimm6} */ 404 1.1 christos { 405 1.1 christos { 0, 0, 0, 0 }, 406 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM6), 0 } }, 407 1.1 christos & ifmt_l_slli, { 0xb8000000 } 408 1.1 christos }, 409 1.1 christos /* l.srl $rD,$rA,$rB */ 410 1.1 christos { 411 1.1 christos { 0, 0, 0, 0 }, 412 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 413 1.1 christos & ifmt_l_sll, { 0xe0000048 } 414 1.1 christos }, 415 1.1 christos /* l.srli $rD,$rA,${uimm6} */ 416 1.1 christos { 417 1.1 christos { 0, 0, 0, 0 }, 418 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM6), 0 } }, 419 1.1 christos & ifmt_l_slli, { 0xb8000040 } 420 1.1 christos }, 421 1.1 christos /* l.sra $rD,$rA,$rB */ 422 1.1 christos { 423 1.1 christos { 0, 0, 0, 0 }, 424 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 425 1.1 christos & ifmt_l_sll, { 0xe0000088 } 426 1.1 christos }, 427 1.1 christos /* l.srai $rD,$rA,${uimm6} */ 428 1.1 christos { 429 1.1 christos { 0, 0, 0, 0 }, 430 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM6), 0 } }, 431 1.1 christos & ifmt_l_slli, { 0xb8000080 } 432 1.1 christos }, 433 1.1 christos /* l.ror $rD,$rA,$rB */ 434 1.1 christos { 435 1.1 christos { 0, 0, 0, 0 }, 436 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 437 1.1 christos & ifmt_l_sll, { 0xe00000c8 } 438 1.1 christos }, 439 1.1 christos /* l.rori $rD,$rA,${uimm6} */ 440 1.1 christos { 441 1.1 christos { 0, 0, 0, 0 }, 442 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM6), 0 } }, 443 1.1 christos & ifmt_l_slli, { 0xb80000c0 } 444 1.1 christos }, 445 1.1 christos /* l.and $rD,$rA,$rB */ 446 1.1 christos { 447 1.1 christos { 0, 0, 0, 0 }, 448 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 449 1.1 christos & ifmt_l_and, { 0xe0000003 } 450 1.1 christos }, 451 1.1 christos /* l.or $rD,$rA,$rB */ 452 1.1 christos { 453 1.1 christos { 0, 0, 0, 0 }, 454 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 455 1.1 christos & ifmt_l_and, { 0xe0000004 } 456 1.1 christos }, 457 1.1 christos /* l.xor $rD,$rA,$rB */ 458 1.1 christos { 459 1.1 christos { 0, 0, 0, 0 }, 460 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 461 1.1 christos & ifmt_l_and, { 0xe0000005 } 462 1.1 christos }, 463 1.1 christos /* l.add $rD,$rA,$rB */ 464 1.1 christos { 465 1.1 christos { 0, 0, 0, 0 }, 466 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 467 1.1 christos & ifmt_l_and, { 0xe0000000 } 468 1.1 christos }, 469 1.1 christos /* l.sub $rD,$rA,$rB */ 470 1.1 christos { 471 1.1 christos { 0, 0, 0, 0 }, 472 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 473 1.1 christos & ifmt_l_and, { 0xe0000002 } 474 1.1 christos }, 475 1.1 christos /* l.addc $rD,$rA,$rB */ 476 1.1 christos { 477 1.1 christos { 0, 0, 0, 0 }, 478 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 479 1.1 christos & ifmt_l_and, { 0xe0000001 } 480 1.1 christos }, 481 1.1 christos /* l.mul $rD,$rA,$rB */ 482 1.1 christos { 483 1.1 christos { 0, 0, 0, 0 }, 484 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 485 1.1 christos & ifmt_l_and, { 0xe0000306 } 486 1.1 christos }, 487 1.1.1.4 christos /* l.muld $rA,$rB */ 488 1.1.1.4 christos { 489 1.1.1.4 christos { 0, 0, 0, 0 }, 490 1.1.1.4 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 491 1.1.1.4 christos & ifmt_l_muld, { 0xe0000307 } 492 1.1.1.4 christos }, 493 1.1 christos /* l.mulu $rD,$rA,$rB */ 494 1.1 christos { 495 1.1 christos { 0, 0, 0, 0 }, 496 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 497 1.1 christos & ifmt_l_and, { 0xe000030b } 498 1.1 christos }, 499 1.1.1.4 christos /* l.muldu $rA,$rB */ 500 1.1.1.4 christos { 501 1.1.1.4 christos { 0, 0, 0, 0 }, 502 1.1.1.4 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 503 1.1.1.4 christos & ifmt_l_muld, { 0xe000030d } 504 1.1.1.4 christos }, 505 1.1 christos /* l.div $rD,$rA,$rB */ 506 1.1 christos { 507 1.1 christos { 0, 0, 0, 0 }, 508 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 509 1.1 christos & ifmt_l_and, { 0xe0000309 } 510 1.1 christos }, 511 1.1 christos /* l.divu $rD,$rA,$rB */ 512 1.1 christos { 513 1.1 christos { 0, 0, 0, 0 }, 514 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 515 1.1 christos & ifmt_l_and, { 0xe000030a } 516 1.1 christos }, 517 1.1 christos /* l.ff1 $rD,$rA */ 518 1.1 christos { 519 1.1 christos { 0, 0, 0, 0 }, 520 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } }, 521 1.1 christos & ifmt_l_and, { 0xe000000f } 522 1.1 christos }, 523 1.1 christos /* l.fl1 $rD,$rA */ 524 1.1 christos { 525 1.1 christos { 0, 0, 0, 0 }, 526 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } }, 527 1.1 christos & ifmt_l_and, { 0xe000010f } 528 1.1 christos }, 529 1.1 christos /* l.andi $rD,$rA,$uimm16 */ 530 1.1 christos { 531 1.1 christos { 0, 0, 0, 0 }, 532 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM16), 0 } }, 533 1.1 christos & ifmt_l_mfspr, { 0xa4000000 } 534 1.1 christos }, 535 1.1 christos /* l.ori $rD,$rA,$uimm16 */ 536 1.1 christos { 537 1.1 christos { 0, 0, 0, 0 }, 538 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (UIMM16), 0 } }, 539 1.1 christos & ifmt_l_mfspr, { 0xa8000000 } 540 1.1 christos }, 541 1.1 christos /* l.xori $rD,$rA,$simm16 */ 542 1.1 christos { 543 1.1 christos { 0, 0, 0, 0 }, 544 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (SIMM16), 0 } }, 545 1.1 christos & ifmt_l_lwz, { 0xac000000 } 546 1.1 christos }, 547 1.1 christos /* l.addi $rD,$rA,$simm16 */ 548 1.1 christos { 549 1.1 christos { 0, 0, 0, 0 }, 550 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (SIMM16), 0 } }, 551 1.1 christos & ifmt_l_lwz, { 0x9c000000 } 552 1.1 christos }, 553 1.1 christos /* l.addic $rD,$rA,$simm16 */ 554 1.1 christos { 555 1.1 christos { 0, 0, 0, 0 }, 556 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (SIMM16), 0 } }, 557 1.1 christos & ifmt_l_lwz, { 0xa0000000 } 558 1.1 christos }, 559 1.1 christos /* l.muli $rD,$rA,$simm16 */ 560 1.1 christos { 561 1.1 christos { 0, 0, 0, 0 }, 562 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (SIMM16), 0 } }, 563 1.1 christos & ifmt_l_lwz, { 0xb0000000 } 564 1.1 christos }, 565 1.1 christos /* l.exths $rD,$rA */ 566 1.1 christos { 567 1.1 christos { 0, 0, 0, 0 }, 568 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } }, 569 1.1 christos & ifmt_l_exths, { 0xe000000c } 570 1.1 christos }, 571 1.1 christos /* l.extbs $rD,$rA */ 572 1.1 christos { 573 1.1 christos { 0, 0, 0, 0 }, 574 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } }, 575 1.1 christos & ifmt_l_exths, { 0xe000004c } 576 1.1 christos }, 577 1.1 christos /* l.exthz $rD,$rA */ 578 1.1 christos { 579 1.1 christos { 0, 0, 0, 0 }, 580 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } }, 581 1.1 christos & ifmt_l_exths, { 0xe000008c } 582 1.1 christos }, 583 1.1 christos /* l.extbz $rD,$rA */ 584 1.1 christos { 585 1.1 christos { 0, 0, 0, 0 }, 586 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } }, 587 1.1 christos & ifmt_l_exths, { 0xe00000cc } 588 1.1 christos }, 589 1.1 christos /* l.extws $rD,$rA */ 590 1.1 christos { 591 1.1 christos { 0, 0, 0, 0 }, 592 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } }, 593 1.1 christos & ifmt_l_exths, { 0xe000000d } 594 1.1 christos }, 595 1.1 christos /* l.extwz $rD,$rA */ 596 1.1 christos { 597 1.1 christos { 0, 0, 0, 0 }, 598 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), 0 } }, 599 1.1 christos & ifmt_l_exths, { 0xe000004d } 600 1.1 christos }, 601 1.1 christos /* l.cmov $rD,$rA,$rB */ 602 1.1 christos { 603 1.1 christos { 0, 0, 0, 0 }, 604 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RA), ',', OP (RB), 0 } }, 605 1.1 christos & ifmt_l_cmov, { 0xe000000e } 606 1.1 christos }, 607 1.1 christos /* l.sfgts $rA,$rB */ 608 1.1 christos { 609 1.1 christos { 0, 0, 0, 0 }, 610 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 611 1.1 christos & ifmt_l_sfgts, { 0xe5400000 } 612 1.1 christos }, 613 1.1 christos /* l.sfgtsi $rA,$simm16 */ 614 1.1 christos { 615 1.1 christos { 0, 0, 0, 0 }, 616 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } }, 617 1.1 christos & ifmt_l_sfgtsi, { 0xbd400000 } 618 1.1 christos }, 619 1.1 christos /* l.sfgtu $rA,$rB */ 620 1.1 christos { 621 1.1 christos { 0, 0, 0, 0 }, 622 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 623 1.1 christos & ifmt_l_sfgts, { 0xe4400000 } 624 1.1 christos }, 625 1.1 christos /* l.sfgtui $rA,$simm16 */ 626 1.1 christos { 627 1.1 christos { 0, 0, 0, 0 }, 628 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } }, 629 1.1 christos & ifmt_l_sfgtsi, { 0xbc400000 } 630 1.1 christos }, 631 1.1 christos /* l.sfges $rA,$rB */ 632 1.1 christos { 633 1.1 christos { 0, 0, 0, 0 }, 634 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 635 1.1 christos & ifmt_l_sfgts, { 0xe5600000 } 636 1.1 christos }, 637 1.1 christos /* l.sfgesi $rA,$simm16 */ 638 1.1 christos { 639 1.1 christos { 0, 0, 0, 0 }, 640 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } }, 641 1.1 christos & ifmt_l_sfgtsi, { 0xbd600000 } 642 1.1 christos }, 643 1.1 christos /* l.sfgeu $rA,$rB */ 644 1.1 christos { 645 1.1 christos { 0, 0, 0, 0 }, 646 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 647 1.1 christos & ifmt_l_sfgts, { 0xe4600000 } 648 1.1 christos }, 649 1.1 christos /* l.sfgeui $rA,$simm16 */ 650 1.1 christos { 651 1.1 christos { 0, 0, 0, 0 }, 652 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } }, 653 1.1 christos & ifmt_l_sfgtsi, { 0xbc600000 } 654 1.1 christos }, 655 1.1 christos /* l.sflts $rA,$rB */ 656 1.1 christos { 657 1.1 christos { 0, 0, 0, 0 }, 658 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 659 1.1 christos & ifmt_l_sfgts, { 0xe5800000 } 660 1.1 christos }, 661 1.1 christos /* l.sfltsi $rA,$simm16 */ 662 1.1 christos { 663 1.1 christos { 0, 0, 0, 0 }, 664 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } }, 665 1.1 christos & ifmt_l_sfgtsi, { 0xbd800000 } 666 1.1 christos }, 667 1.1 christos /* l.sfltu $rA,$rB */ 668 1.1 christos { 669 1.1 christos { 0, 0, 0, 0 }, 670 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 671 1.1 christos & ifmt_l_sfgts, { 0xe4800000 } 672 1.1 christos }, 673 1.1 christos /* l.sfltui $rA,$simm16 */ 674 1.1 christos { 675 1.1 christos { 0, 0, 0, 0 }, 676 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } }, 677 1.1 christos & ifmt_l_sfgtsi, { 0xbc800000 } 678 1.1 christos }, 679 1.1 christos /* l.sfles $rA,$rB */ 680 1.1 christos { 681 1.1 christos { 0, 0, 0, 0 }, 682 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 683 1.1 christos & ifmt_l_sfgts, { 0xe5a00000 } 684 1.1 christos }, 685 1.1 christos /* l.sflesi $rA,$simm16 */ 686 1.1 christos { 687 1.1 christos { 0, 0, 0, 0 }, 688 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } }, 689 1.1 christos & ifmt_l_sfgtsi, { 0xbda00000 } 690 1.1 christos }, 691 1.1 christos /* l.sfleu $rA,$rB */ 692 1.1 christos { 693 1.1 christos { 0, 0, 0, 0 }, 694 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 695 1.1 christos & ifmt_l_sfgts, { 0xe4a00000 } 696 1.1 christos }, 697 1.1 christos /* l.sfleui $rA,$simm16 */ 698 1.1 christos { 699 1.1 christos { 0, 0, 0, 0 }, 700 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } }, 701 1.1 christos & ifmt_l_sfgtsi, { 0xbca00000 } 702 1.1 christos }, 703 1.1 christos /* l.sfeq $rA,$rB */ 704 1.1 christos { 705 1.1 christos { 0, 0, 0, 0 }, 706 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 707 1.1 christos & ifmt_l_sfgts, { 0xe4000000 } 708 1.1 christos }, 709 1.1 christos /* l.sfeqi $rA,$simm16 */ 710 1.1 christos { 711 1.1 christos { 0, 0, 0, 0 }, 712 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } }, 713 1.1 christos & ifmt_l_sfgtsi, { 0xbc000000 } 714 1.1 christos }, 715 1.1 christos /* l.sfne $rA,$rB */ 716 1.1 christos { 717 1.1 christos { 0, 0, 0, 0 }, 718 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 719 1.1 christos & ifmt_l_sfgts, { 0xe4200000 } 720 1.1 christos }, 721 1.1 christos /* l.sfnei $rA,$simm16 */ 722 1.1 christos { 723 1.1 christos { 0, 0, 0, 0 }, 724 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } }, 725 1.1 christos & ifmt_l_sfgtsi, { 0xbc200000 } 726 1.1 christos }, 727 1.1 christos /* l.mac $rA,$rB */ 728 1.1 christos { 729 1.1 christos { 0, 0, 0, 0 }, 730 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 731 1.1 christos & ifmt_l_mac, { 0xc4000001 } 732 1.1 christos }, 733 1.1.1.4 christos /* l.maci $rA,${simm16} */ 734 1.1.1.4 christos { 735 1.1.1.4 christos { 0, 0, 0, 0 }, 736 1.1.1.4 christos { { MNEM, ' ', OP (RA), ',', OP (SIMM16), 0 } }, 737 1.1.1.4 christos & ifmt_l_maci, { 0x4c000000 } 738 1.1.1.4 christos }, 739 1.1.1.4 christos /* l.macu $rA,$rB */ 740 1.1.1.4 christos { 741 1.1.1.4 christos { 0, 0, 0, 0 }, 742 1.1.1.4 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 743 1.1.1.4 christos & ifmt_l_mac, { 0xc4000003 } 744 1.1.1.4 christos }, 745 1.1 christos /* l.msb $rA,$rB */ 746 1.1 christos { 747 1.1 christos { 0, 0, 0, 0 }, 748 1.1 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 749 1.1 christos & ifmt_l_mac, { 0xc4000002 } 750 1.1 christos }, 751 1.1.1.4 christos /* l.msbu $rA,$rB */ 752 1.1 christos { 753 1.1 christos { 0, 0, 0, 0 }, 754 1.1.1.4 christos { { MNEM, ' ', OP (RA), ',', OP (RB), 0 } }, 755 1.1.1.4 christos & ifmt_l_mac, { 0xc4000004 } 756 1.1 christos }, 757 1.1 christos /* l.cust1 */ 758 1.1 christos { 759 1.1 christos { 0, 0, 0, 0 }, 760 1.1 christos { { MNEM, 0 } }, 761 1.1 christos & ifmt_l_rfe, { 0x70000000 } 762 1.1 christos }, 763 1.1 christos /* l.cust2 */ 764 1.1 christos { 765 1.1 christos { 0, 0, 0, 0 }, 766 1.1 christos { { MNEM, 0 } }, 767 1.1 christos & ifmt_l_rfe, { 0x74000000 } 768 1.1 christos }, 769 1.1 christos /* l.cust3 */ 770 1.1 christos { 771 1.1 christos { 0, 0, 0, 0 }, 772 1.1 christos { { MNEM, 0 } }, 773 1.1 christos & ifmt_l_rfe, { 0x78000000 } 774 1.1 christos }, 775 1.1 christos /* l.cust4 */ 776 1.1 christos { 777 1.1 christos { 0, 0, 0, 0 }, 778 1.1 christos { { MNEM, 0 } }, 779 1.1 christos & ifmt_l_rfe, { 0x7c000000 } 780 1.1 christos }, 781 1.1 christos /* l.cust5 */ 782 1.1 christos { 783 1.1 christos { 0, 0, 0, 0 }, 784 1.1 christos { { MNEM, 0 } }, 785 1.1 christos & ifmt_l_rfe, { 0xf0000000 } 786 1.1 christos }, 787 1.1 christos /* l.cust6 */ 788 1.1 christos { 789 1.1 christos { 0, 0, 0, 0 }, 790 1.1 christos { { MNEM, 0 } }, 791 1.1 christos & ifmt_l_rfe, { 0xf4000000 } 792 1.1 christos }, 793 1.1 christos /* l.cust7 */ 794 1.1 christos { 795 1.1 christos { 0, 0, 0, 0 }, 796 1.1 christos { { MNEM, 0 } }, 797 1.1 christos & ifmt_l_rfe, { 0xf8000000 } 798 1.1 christos }, 799 1.1 christos /* l.cust8 */ 800 1.1 christos { 801 1.1 christos { 0, 0, 0, 0 }, 802 1.1 christos { { MNEM, 0 } }, 803 1.1 christos & ifmt_l_rfe, { 0xfc000000 } 804 1.1 christos }, 805 1.1 christos /* lf.add.s $rDSF,$rASF,$rBSF */ 806 1.1 christos { 807 1.1 christos { 0, 0, 0, 0 }, 808 1.1 christos { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } }, 809 1.1 christos & ifmt_lf_add_s, { 0xc8000000 } 810 1.1 christos }, 811 1.1.1.5 christos /* lf.add.d $rDD32F,$rAD32F,$rBD32F */ 812 1.1 christos { 813 1.1 christos { 0, 0, 0, 0 }, 814 1.1.1.5 christos { { MNEM, ' ', OP (RDD32F), ',', OP (RAD32F), ',', OP (RBD32F), 0 } }, 815 1.1.1.5 christos & ifmt_lf_add_d32, { 0xc8000010 } 816 1.1 christos }, 817 1.1 christos /* lf.sub.s $rDSF,$rASF,$rBSF */ 818 1.1 christos { 819 1.1 christos { 0, 0, 0, 0 }, 820 1.1 christos { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } }, 821 1.1 christos & ifmt_lf_add_s, { 0xc8000001 } 822 1.1 christos }, 823 1.1.1.5 christos /* lf.sub.d $rDD32F,$rAD32F,$rBD32F */ 824 1.1 christos { 825 1.1 christos { 0, 0, 0, 0 }, 826 1.1.1.5 christos { { MNEM, ' ', OP (RDD32F), ',', OP (RAD32F), ',', OP (RBD32F), 0 } }, 827 1.1.1.5 christos & ifmt_lf_add_d32, { 0xc8000011 } 828 1.1 christos }, 829 1.1 christos /* lf.mul.s $rDSF,$rASF,$rBSF */ 830 1.1 christos { 831 1.1 christos { 0, 0, 0, 0 }, 832 1.1 christos { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } }, 833 1.1 christos & ifmt_lf_add_s, { 0xc8000002 } 834 1.1 christos }, 835 1.1.1.5 christos /* lf.mul.d $rDD32F,$rAD32F,$rBD32F */ 836 1.1 christos { 837 1.1 christos { 0, 0, 0, 0 }, 838 1.1.1.5 christos { { MNEM, ' ', OP (RDD32F), ',', OP (RAD32F), ',', OP (RBD32F), 0 } }, 839 1.1.1.5 christos & ifmt_lf_add_d32, { 0xc8000012 } 840 1.1 christos }, 841 1.1 christos /* lf.div.s $rDSF,$rASF,$rBSF */ 842 1.1 christos { 843 1.1 christos { 0, 0, 0, 0 }, 844 1.1 christos { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } }, 845 1.1 christos & ifmt_lf_add_s, { 0xc8000003 } 846 1.1 christos }, 847 1.1.1.5 christos /* lf.div.d $rDD32F,$rAD32F,$rBD32F */ 848 1.1 christos { 849 1.1 christos { 0, 0, 0, 0 }, 850 1.1.1.5 christos { { MNEM, ' ', OP (RDD32F), ',', OP (RAD32F), ',', OP (RBD32F), 0 } }, 851 1.1.1.5 christos & ifmt_lf_add_d32, { 0xc8000013 } 852 1.1 christos }, 853 1.1 christos /* lf.rem.s $rDSF,$rASF,$rBSF */ 854 1.1 christos { 855 1.1 christos { 0, 0, 0, 0 }, 856 1.1 christos { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } }, 857 1.1 christos & ifmt_lf_add_s, { 0xc8000006 } 858 1.1 christos }, 859 1.1.1.5 christos /* lf.rem.d $rDD32F,$rAD32F,$rBD32F */ 860 1.1 christos { 861 1.1 christos { 0, 0, 0, 0 }, 862 1.1.1.5 christos { { MNEM, ' ', OP (RDD32F), ',', OP (RAD32F), ',', OP (RBD32F), 0 } }, 863 1.1.1.5 christos & ifmt_lf_add_d32, { 0xc8000016 } 864 1.1 christos }, 865 1.1 christos /* lf.itof.s $rDSF,$rA */ 866 1.1 christos { 867 1.1 christos { 0, 0, 0, 0 }, 868 1.1 christos { { MNEM, ' ', OP (RDSF), ',', OP (RA), 0 } }, 869 1.1 christos & ifmt_lf_itof_s, { 0xc8000004 } 870 1.1 christos }, 871 1.1.1.5 christos /* lf.itof.d $rDD32F,$rADI */ 872 1.1 christos { 873 1.1 christos { 0, 0, 0, 0 }, 874 1.1.1.5 christos { { MNEM, ' ', OP (RDD32F), ',', OP (RADI), 0 } }, 875 1.1.1.5 christos & ifmt_lf_itof_d32, { 0xc8000014 } 876 1.1 christos }, 877 1.1 christos /* lf.ftoi.s $rD,$rASF */ 878 1.1 christos { 879 1.1 christos { 0, 0, 0, 0 }, 880 1.1 christos { { MNEM, ' ', OP (RD), ',', OP (RASF), 0 } }, 881 1.1 christos & ifmt_lf_ftoi_s, { 0xc8000005 } 882 1.1 christos }, 883 1.1.1.5 christos /* lf.ftoi.d $rDDI,$rAD32F */ 884 1.1 christos { 885 1.1 christos { 0, 0, 0, 0 }, 886 1.1.1.5 christos { { MNEM, ' ', OP (RDDI), ',', OP (RAD32F), 0 } }, 887 1.1.1.5 christos & ifmt_lf_ftoi_d32, { 0xc8000015 } 888 1.1 christos }, 889 1.1 christos /* lf.sfeq.s $rASF,$rBSF */ 890 1.1 christos { 891 1.1 christos { 0, 0, 0, 0 }, 892 1.1 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 893 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc8000008 } 894 1.1 christos }, 895 1.1.1.5 christos /* lf.sfeq.d $rAD32F,$rBD32F */ 896 1.1 christos { 897 1.1 christos { 0, 0, 0, 0 }, 898 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 899 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc8000018 } 900 1.1 christos }, 901 1.1 christos /* lf.sfne.s $rASF,$rBSF */ 902 1.1 christos { 903 1.1 christos { 0, 0, 0, 0 }, 904 1.1 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 905 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc8000009 } 906 1.1 christos }, 907 1.1.1.5 christos /* lf.sfne.d $rAD32F,$rBD32F */ 908 1.1 christos { 909 1.1 christos { 0, 0, 0, 0 }, 910 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 911 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc8000019 } 912 1.1 christos }, 913 1.1 christos /* lf.sfge.s $rASF,$rBSF */ 914 1.1 christos { 915 1.1 christos { 0, 0, 0, 0 }, 916 1.1 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 917 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc800000b } 918 1.1 christos }, 919 1.1.1.5 christos /* lf.sfge.d $rAD32F,$rBD32F */ 920 1.1 christos { 921 1.1 christos { 0, 0, 0, 0 }, 922 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 923 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc800001b } 924 1.1 christos }, 925 1.1 christos /* lf.sfgt.s $rASF,$rBSF */ 926 1.1 christos { 927 1.1 christos { 0, 0, 0, 0 }, 928 1.1 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 929 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc800000a } 930 1.1 christos }, 931 1.1.1.5 christos /* lf.sfgt.d $rAD32F,$rBD32F */ 932 1.1 christos { 933 1.1 christos { 0, 0, 0, 0 }, 934 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 935 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc800001a } 936 1.1 christos }, 937 1.1 christos /* lf.sflt.s $rASF,$rBSF */ 938 1.1 christos { 939 1.1 christos { 0, 0, 0, 0 }, 940 1.1 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 941 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc800000c } 942 1.1 christos }, 943 1.1.1.5 christos /* lf.sflt.d $rAD32F,$rBD32F */ 944 1.1 christos { 945 1.1 christos { 0, 0, 0, 0 }, 946 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 947 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc800001c } 948 1.1 christos }, 949 1.1 christos /* lf.sfle.s $rASF,$rBSF */ 950 1.1 christos { 951 1.1 christos { 0, 0, 0, 0 }, 952 1.1 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 953 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc800000d } 954 1.1 christos }, 955 1.1.1.5 christos /* lf.sfle.d $rAD32F,$rBD32F */ 956 1.1.1.5 christos { 957 1.1.1.5 christos { 0, 0, 0, 0 }, 958 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 959 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc800001d } 960 1.1.1.5 christos }, 961 1.1.1.5 christos /* lf.sfueq.s $rASF,$rBSF */ 962 1.1.1.5 christos { 963 1.1.1.5 christos { 0, 0, 0, 0 }, 964 1.1.1.5 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 965 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc8000028 } 966 1.1.1.5 christos }, 967 1.1.1.5 christos /* lf.sfueq.d $rAD32F,$rBD32F */ 968 1.1.1.5 christos { 969 1.1.1.5 christos { 0, 0, 0, 0 }, 970 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 971 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc8000038 } 972 1.1.1.5 christos }, 973 1.1.1.5 christos /* lf.sfune.s $rASF,$rBSF */ 974 1.1 christos { 975 1.1 christos { 0, 0, 0, 0 }, 976 1.1 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 977 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc8000029 } 978 1.1.1.5 christos }, 979 1.1.1.5 christos /* lf.sfune.d $rAD32F,$rBD32F */ 980 1.1.1.5 christos { 981 1.1.1.5 christos { 0, 0, 0, 0 }, 982 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 983 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc8000039 } 984 1.1.1.5 christos }, 985 1.1.1.5 christos /* lf.sfugt.s $rASF,$rBSF */ 986 1.1.1.5 christos { 987 1.1.1.5 christos { 0, 0, 0, 0 }, 988 1.1.1.5 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 989 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc800002a } 990 1.1.1.5 christos }, 991 1.1.1.5 christos /* lf.sfugt.d $rAD32F,$rBD32F */ 992 1.1.1.5 christos { 993 1.1.1.5 christos { 0, 0, 0, 0 }, 994 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 995 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc800003a } 996 1.1.1.5 christos }, 997 1.1.1.5 christos /* lf.sfuge.s $rASF,$rBSF */ 998 1.1.1.5 christos { 999 1.1.1.5 christos { 0, 0, 0, 0 }, 1000 1.1.1.5 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 1001 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc800002b } 1002 1.1.1.5 christos }, 1003 1.1.1.5 christos /* lf.sfuge.d $rAD32F,$rBD32F */ 1004 1.1.1.5 christos { 1005 1.1.1.5 christos { 0, 0, 0, 0 }, 1006 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 1007 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc800003b } 1008 1.1.1.5 christos }, 1009 1.1.1.5 christos /* lf.sfult.s $rASF,$rBSF */ 1010 1.1.1.5 christos { 1011 1.1.1.5 christos { 0, 0, 0, 0 }, 1012 1.1.1.5 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 1013 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc800002c } 1014 1.1.1.5 christos }, 1015 1.1.1.5 christos /* lf.sfult.d $rAD32F,$rBD32F */ 1016 1.1.1.5 christos { 1017 1.1.1.5 christos { 0, 0, 0, 0 }, 1018 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 1019 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc800003c } 1020 1.1.1.5 christos }, 1021 1.1.1.5 christos /* lf.sfule.s $rASF,$rBSF */ 1022 1.1.1.5 christos { 1023 1.1.1.5 christos { 0, 0, 0, 0 }, 1024 1.1.1.5 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 1025 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc800002d } 1026 1.1.1.5 christos }, 1027 1.1.1.5 christos /* lf.sfule.d $rAD32F,$rBD32F */ 1028 1.1.1.5 christos { 1029 1.1.1.5 christos { 0, 0, 0, 0 }, 1030 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 1031 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc800003d } 1032 1.1.1.5 christos }, 1033 1.1.1.5 christos /* lf.sfun.s $rASF,$rBSF */ 1034 1.1.1.5 christos { 1035 1.1.1.5 christos { 0, 0, 0, 0 }, 1036 1.1.1.5 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 1037 1.1.1.5 christos & ifmt_lf_sfeq_s, { 0xc800002e } 1038 1.1.1.5 christos }, 1039 1.1.1.5 christos /* lf.sfun.d $rAD32F,$rBD32F */ 1040 1.1.1.5 christos { 1041 1.1.1.5 christos { 0, 0, 0, 0 }, 1042 1.1.1.5 christos { { MNEM, ' ', OP (RAD32F), ',', OP (RBD32F), 0 } }, 1043 1.1.1.5 christos & ifmt_lf_sfeq_d32, { 0xc800003e } 1044 1.1 christos }, 1045 1.1 christos /* lf.madd.s $rDSF,$rASF,$rBSF */ 1046 1.1 christos { 1047 1.1 christos { 0, 0, 0, 0 }, 1048 1.1 christos { { MNEM, ' ', OP (RDSF), ',', OP (RASF), ',', OP (RBSF), 0 } }, 1049 1.1 christos & ifmt_lf_add_s, { 0xc8000007 } 1050 1.1 christos }, 1051 1.1.1.5 christos /* lf.madd.d $rDD32F,$rAD32F,$rBD32F */ 1052 1.1 christos { 1053 1.1 christos { 0, 0, 0, 0 }, 1054 1.1.1.5 christos { { MNEM, ' ', OP (RDD32F), ',', OP (RAD32F), ',', OP (RBD32F), 0 } }, 1055 1.1.1.5 christos & ifmt_lf_add_d32, { 0xc8000017 } 1056 1.1 christos }, 1057 1.1 christos /* lf.cust1.s $rASF,$rBSF */ 1058 1.1 christos { 1059 1.1 christos { 0, 0, 0, 0 }, 1060 1.1 christos { { MNEM, ' ', OP (RASF), ',', OP (RBSF), 0 } }, 1061 1.1 christos & ifmt_lf_cust1_s, { 0xc80000d0 } 1062 1.1 christos }, 1063 1.1 christos /* lf.cust1.d */ 1064 1.1 christos { 1065 1.1 christos { 0, 0, 0, 0 }, 1066 1.1 christos { { MNEM, 0 } }, 1067 1.1.1.5 christos & ifmt_lf_cust1_d32, { 0xc80000e0 } 1068 1.1 christos }, 1069 1.1 christos }; 1070 1.1 christos 1071 1.1 christos #undef A 1072 1.1 christos #undef OPERAND 1073 1.1 christos #undef MNEM 1074 1.1 christos #undef OP 1075 1.1 christos 1076 1.1 christos /* Formats for ALIAS macro-insns. */ 1077 1.1 christos 1078 1.1 christos #define F(f) & or1k_cgen_ifld_table[OR1K_##f] 1079 1.1 christos #undef F 1080 1.1 christos 1081 1.1 christos /* Each non-simple macro entry points to an array of expansion possibilities. */ 1082 1.1 christos 1083 1.1 christos #define A(a) (1 << CGEN_INSN_##a) 1084 1.1 christos #define OPERAND(op) OR1K_OPERAND_##op 1085 1.1 christos #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */ 1086 1.1 christos #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field)) 1087 1.1 christos 1088 1.1 christos /* The macro instruction table. */ 1089 1.1 christos 1090 1.1 christos static const CGEN_IBASE or1k_cgen_macro_insn_table[] = 1091 1.1 christos { 1092 1.1 christos }; 1093 1.1 christos 1094 1.1 christos /* The macro instruction opcode table. */ 1095 1.1 christos 1096 1.1 christos static const CGEN_OPCODE or1k_cgen_macro_insn_opcode_table[] = 1097 1.1 christos { 1098 1.1 christos }; 1099 1.1 christos 1100 1.1 christos #undef A 1101 1.1 christos #undef OPERAND 1102 1.1 christos #undef MNEM 1103 1.1 christos #undef OP 1104 1.1 christos 1105 1.1 christos #ifndef CGEN_ASM_HASH_P 1106 1.1 christos #define CGEN_ASM_HASH_P(insn) 1 1107 1.1 christos #endif 1108 1.1 christos 1109 1.1 christos #ifndef CGEN_DIS_HASH_P 1110 1.1 christos #define CGEN_DIS_HASH_P(insn) 1 1111 1.1 christos #endif 1112 1.1 christos 1113 1.1 christos /* Return non-zero if INSN is to be added to the hash table. 1114 1.1 christos Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file. */ 1115 1.1 christos 1116 1.1 christos static int 1117 1.1.1.2 christos asm_hash_insn_p (const CGEN_INSN *insn ATTRIBUTE_UNUSED) 1118 1.1 christos { 1119 1.1 christos return CGEN_ASM_HASH_P (insn); 1120 1.1 christos } 1121 1.1 christos 1122 1.1 christos static int 1123 1.1.1.2 christos dis_hash_insn_p (const CGEN_INSN *insn) 1124 1.1 christos { 1125 1.1 christos /* If building the hash table and the NO-DIS attribute is present, 1126 1.1 christos ignore. */ 1127 1.1 christos if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS)) 1128 1.1 christos return 0; 1129 1.1 christos return CGEN_DIS_HASH_P (insn); 1130 1.1 christos } 1131 1.1 christos 1132 1.1 christos #ifndef CGEN_ASM_HASH 1133 1.1 christos #define CGEN_ASM_HASH_SIZE 127 1134 1.1 christos #ifdef CGEN_MNEMONIC_OPERANDS 1135 1.1 christos #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) 1136 1.1 christos #else 1137 1.1 christos #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/ 1138 1.1 christos #endif 1139 1.1 christos #endif 1140 1.1 christos 1141 1.1 christos /* It doesn't make much sense to provide a default here, 1142 1.1 christos but while this is under development we do. 1143 1.1 christos BUFFER is a pointer to the bytes of the insn, target order. 1144 1.1 christos VALUE is the first base_insn_bitsize bits as an int in host order. */ 1145 1.1 christos 1146 1.1 christos #ifndef CGEN_DIS_HASH 1147 1.1 christos #define CGEN_DIS_HASH_SIZE 256 1148 1.1 christos #define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf)) 1149 1.1 christos #endif 1150 1.1 christos 1151 1.1 christos /* The result is the hash value of the insn. 1152 1.1 christos Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file. */ 1153 1.1 christos 1154 1.1 christos static unsigned int 1155 1.1.1.2 christos asm_hash_insn (const char *mnem) 1156 1.1 christos { 1157 1.1 christos return CGEN_ASM_HASH (mnem); 1158 1.1 christos } 1159 1.1 christos 1160 1.1 christos /* BUF is a pointer to the bytes of the insn, target order. 1161 1.1 christos VALUE is the first base_insn_bitsize bits as an int in host order. */ 1162 1.1 christos 1163 1.1 christos static unsigned int 1164 1.1.1.2 christos dis_hash_insn (const char *buf ATTRIBUTE_UNUSED, 1165 1.1.1.2 christos CGEN_INSN_INT value ATTRIBUTE_UNUSED) 1166 1.1 christos { 1167 1.1 christos return CGEN_DIS_HASH (buf, value); 1168 1.1 christos } 1169 1.1 christos 1170 1.1 christos /* Set the recorded length of the insn in the CGEN_FIELDS struct. */ 1171 1.1 christos 1172 1.1 christos static void 1173 1.1 christos set_fields_bitsize (CGEN_FIELDS *fields, int size) 1174 1.1 christos { 1175 1.1 christos CGEN_FIELDS_BITSIZE (fields) = size; 1176 1.1 christos } 1177 1.1 christos 1178 1.1 christos /* Function to call before using the operand instance table. 1179 1.1 christos This plugs the opcode entries and macro instructions into the cpu table. */ 1180 1.1 christos 1181 1.1 christos void 1182 1.1 christos or1k_cgen_init_opcode_table (CGEN_CPU_DESC cd) 1183 1.1 christos { 1184 1.1 christos int i; 1185 1.1 christos int num_macros = (sizeof (or1k_cgen_macro_insn_table) / 1186 1.1 christos sizeof (or1k_cgen_macro_insn_table[0])); 1187 1.1 christos const CGEN_IBASE *ib = & or1k_cgen_macro_insn_table[0]; 1188 1.1 christos const CGEN_OPCODE *oc = & or1k_cgen_macro_insn_opcode_table[0]; 1189 1.1 christos CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN)); 1190 1.1 christos 1191 1.1 christos /* This test has been added to avoid a warning generated 1192 1.1 christos if memset is called with a third argument of value zero. */ 1193 1.1 christos if (num_macros >= 1) 1194 1.1 christos memset (insns, 0, num_macros * sizeof (CGEN_INSN)); 1195 1.1 christos for (i = 0; i < num_macros; ++i) 1196 1.1 christos { 1197 1.1 christos insns[i].base = &ib[i]; 1198 1.1 christos insns[i].opcode = &oc[i]; 1199 1.1 christos or1k_cgen_build_insn_regex (& insns[i]); 1200 1.1 christos } 1201 1.1 christos cd->macro_insn_table.init_entries = insns; 1202 1.1 christos cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE); 1203 1.1 christos cd->macro_insn_table.num_init_entries = num_macros; 1204 1.1 christos 1205 1.1 christos oc = & or1k_cgen_insn_opcode_table[0]; 1206 1.1 christos insns = (CGEN_INSN *) cd->insn_table.init_entries; 1207 1.1 christos for (i = 0; i < MAX_INSNS; ++i) 1208 1.1 christos { 1209 1.1 christos insns[i].opcode = &oc[i]; 1210 1.1 christos or1k_cgen_build_insn_regex (& insns[i]); 1211 1.1 christos } 1212 1.1 christos 1213 1.1 christos cd->sizeof_fields = sizeof (CGEN_FIELDS); 1214 1.1 christos cd->set_fields_bitsize = set_fields_bitsize; 1215 1.1 christos 1216 1.1 christos cd->asm_hash_p = asm_hash_insn_p; 1217 1.1 christos cd->asm_hash = asm_hash_insn; 1218 1.1 christos cd->asm_hash_size = CGEN_ASM_HASH_SIZE; 1219 1.1 christos 1220 1.1 christos cd->dis_hash_p = dis_hash_insn_p; 1221 1.1 christos cd->dis_hash = dis_hash_insn; 1222 1.1 christos cd->dis_hash_size = CGEN_DIS_HASH_SIZE; 1223 1.1 christos } 1224