1 /* Semantic operand instances for m32r. 2 3 THIS FILE IS MACHINE GENERATED WITH CGEN. 4 5 Copyright (C) 1996-2016 Free Software Foundation, Inc. 6 7 This file is part of the GNU Binutils and/or GDB, the GNU debugger. 8 9 This file is free software; you can redistribute it and/or modify 10 it under the terms of the GNU General Public License as published by 11 the Free Software Foundation; either version 3, or (at your option) 12 any later version. 13 14 It is distributed in the hope that it will be useful, but WITHOUT 15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 17 License for more details. 18 19 You should have received a copy of the GNU General Public License along 20 with this program; if not, write to the Free Software Foundation, Inc., 21 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 22 23 */ 24 25 #include "sysdep.h" 26 #include "ansidecl.h" 27 #include "bfd.h" 28 #include "symcat.h" 29 #include "m32r-desc.h" 30 #include "m32r-opc.h" 31 32 /* Operand references. */ 33 34 #define OP_ENT(op) M32R_OPERAND_##op 35 #define INPUT CGEN_OPINST_INPUT 36 #define OUTPUT CGEN_OPINST_OUTPUT 37 #define END CGEN_OPINST_END 38 #define COND_REF CGEN_OPINST_COND_REF 39 40 static const CGEN_OPINST sfmt_empty_ops[] ATTRIBUTE_UNUSED = { 41 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 42 }; 43 44 static const CGEN_OPINST sfmt_add_ops[] ATTRIBUTE_UNUSED = { 45 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 46 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 47 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 48 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 49 }; 50 51 static const CGEN_OPINST sfmt_add3_ops[] ATTRIBUTE_UNUSED = { 52 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 53 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 54 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 55 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 56 }; 57 58 static const CGEN_OPINST sfmt_and3_ops[] ATTRIBUTE_UNUSED = { 59 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 60 { INPUT, "uimm16", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 }, 61 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 62 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 63 }; 64 65 static const CGEN_OPINST sfmt_or3_ops[] ATTRIBUTE_UNUSED = { 66 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 67 { INPUT, "ulo16", HW_H_ULO16, CGEN_MODE_UINT, OP_ENT (ULO16), 0, 0 }, 68 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 69 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 70 }; 71 72 static const CGEN_OPINST sfmt_addi_ops[] ATTRIBUTE_UNUSED = { 73 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 74 { INPUT, "simm8", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM8), 0, 0 }, 75 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 76 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 77 }; 78 79 static const CGEN_OPINST sfmt_addv_ops[] ATTRIBUTE_UNUSED = { 80 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 81 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 82 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 83 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 84 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 85 }; 86 87 static const CGEN_OPINST sfmt_addv3_ops[] ATTRIBUTE_UNUSED = { 88 { INPUT, "simm16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 }, 89 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 90 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 91 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 92 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 93 }; 94 95 static const CGEN_OPINST sfmt_addx_ops[] ATTRIBUTE_UNUSED = { 96 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 97 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 98 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 99 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 100 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 101 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 102 }; 103 104 static const CGEN_OPINST sfmt_bc8_ops[] ATTRIBUTE_UNUSED = { 105 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 106 { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, COND_REF }, 107 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 108 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 109 }; 110 111 static const CGEN_OPINST sfmt_bc24_ops[] ATTRIBUTE_UNUSED = { 112 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 113 { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, COND_REF }, 114 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 115 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 116 }; 117 118 static const CGEN_OPINST sfmt_beq_ops[] ATTRIBUTE_UNUSED = { 119 { INPUT, "disp16", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP16), 0, COND_REF }, 120 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 121 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 122 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 123 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 124 }; 125 126 static const CGEN_OPINST sfmt_beqz_ops[] ATTRIBUTE_UNUSED = { 127 { INPUT, "disp16", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP16), 0, COND_REF }, 128 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 129 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 130 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 131 }; 132 133 static const CGEN_OPINST sfmt_bl8_ops[] ATTRIBUTE_UNUSED = { 134 { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, 0 }, 135 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 136 { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 }, 137 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 138 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 139 }; 140 141 static const CGEN_OPINST sfmt_bl24_ops[] ATTRIBUTE_UNUSED = { 142 { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, 0 }, 143 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 144 { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 }, 145 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 146 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 147 }; 148 149 static const CGEN_OPINST sfmt_bcl8_ops[] ATTRIBUTE_UNUSED = { 150 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 151 { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, COND_REF }, 152 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 153 { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, COND_REF }, 154 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 155 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 156 }; 157 158 static const CGEN_OPINST sfmt_bcl24_ops[] ATTRIBUTE_UNUSED = { 159 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 160 { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, COND_REF }, 161 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 162 { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, COND_REF }, 163 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 164 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 165 }; 166 167 static const CGEN_OPINST sfmt_bra8_ops[] ATTRIBUTE_UNUSED = { 168 { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, 0 }, 169 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 170 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 171 }; 172 173 static const CGEN_OPINST sfmt_bra24_ops[] ATTRIBUTE_UNUSED = { 174 { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, 0 }, 175 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 176 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 177 }; 178 179 static const CGEN_OPINST sfmt_cmp_ops[] ATTRIBUTE_UNUSED = { 180 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 181 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 182 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 183 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 184 }; 185 186 static const CGEN_OPINST sfmt_cmpi_ops[] ATTRIBUTE_UNUSED = { 187 { INPUT, "simm16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 }, 188 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 189 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 190 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 191 }; 192 193 static const CGEN_OPINST sfmt_cmpz_ops[] ATTRIBUTE_UNUSED = { 194 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 195 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 196 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 197 }; 198 199 static const CGEN_OPINST sfmt_div_ops[] ATTRIBUTE_UNUSED = { 200 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, COND_REF }, 201 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 202 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, COND_REF }, 203 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 204 }; 205 206 static const CGEN_OPINST sfmt_jc_ops[] ATTRIBUTE_UNUSED = { 207 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 208 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, COND_REF }, 209 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF }, 210 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 211 }; 212 213 static const CGEN_OPINST sfmt_jl_ops[] ATTRIBUTE_UNUSED = { 214 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 215 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 216 { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 }, 217 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 218 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 219 }; 220 221 static const CGEN_OPINST sfmt_jmp_ops[] ATTRIBUTE_UNUSED = { 222 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 223 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 224 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 225 }; 226 227 static const CGEN_OPINST sfmt_ld_ops[] ATTRIBUTE_UNUSED = { 228 { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 229 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 230 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 231 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 232 }; 233 234 static const CGEN_OPINST sfmt_ld_d_ops[] ATTRIBUTE_UNUSED = { 235 { INPUT, "h_memory_SI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 236 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 237 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 238 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 239 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 240 }; 241 242 static const CGEN_OPINST sfmt_ldb_ops[] ATTRIBUTE_UNUSED = { 243 { INPUT, "h_memory_QI_sr", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 244 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 245 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 246 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 247 }; 248 249 static const CGEN_OPINST sfmt_ldb_d_ops[] ATTRIBUTE_UNUSED = { 250 { INPUT, "h_memory_QI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 251 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 252 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 253 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 254 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 255 }; 256 257 static const CGEN_OPINST sfmt_ldh_ops[] ATTRIBUTE_UNUSED = { 258 { INPUT, "h_memory_HI_sr", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 259 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 260 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 261 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 262 }; 263 264 static const CGEN_OPINST sfmt_ldh_d_ops[] ATTRIBUTE_UNUSED = { 265 { INPUT, "h_memory_HI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 266 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 267 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 268 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 269 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 270 }; 271 272 static const CGEN_OPINST sfmt_ld_plus_ops[] ATTRIBUTE_UNUSED = { 273 { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 274 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 275 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 276 { OUTPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 277 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 278 }; 279 280 static const CGEN_OPINST sfmt_ld24_ops[] ATTRIBUTE_UNUSED = { 281 { INPUT, "uimm24", HW_H_ADDR, CGEN_MODE_USI, OP_ENT (UIMM24), 0, 0 }, 282 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 283 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 284 }; 285 286 static const CGEN_OPINST sfmt_ldi8_ops[] ATTRIBUTE_UNUSED = { 287 { INPUT, "simm8", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM8), 0, 0 }, 288 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 289 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 290 }; 291 292 static const CGEN_OPINST sfmt_ldi16_ops[] ATTRIBUTE_UNUSED = { 293 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 294 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 295 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 296 }; 297 298 static const CGEN_OPINST sfmt_lock_ops[] ATTRIBUTE_UNUSED = { 299 { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 300 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 301 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 302 { OUTPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 }, 303 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 304 }; 305 306 static const CGEN_OPINST sfmt_machi_ops[] ATTRIBUTE_UNUSED = { 307 { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 308 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 309 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 310 { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 311 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 312 }; 313 314 static const CGEN_OPINST sfmt_machi_a_ops[] ATTRIBUTE_UNUSED = { 315 { INPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 }, 316 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 317 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 318 { OUTPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 }, 319 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 320 }; 321 322 static const CGEN_OPINST sfmt_mulhi_ops[] ATTRIBUTE_UNUSED = { 323 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 324 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 325 { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 326 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 327 }; 328 329 static const CGEN_OPINST sfmt_mulhi_a_ops[] ATTRIBUTE_UNUSED = { 330 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 331 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 332 { OUTPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 }, 333 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 334 }; 335 336 static const CGEN_OPINST sfmt_mv_ops[] ATTRIBUTE_UNUSED = { 337 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 338 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 339 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 340 }; 341 342 static const CGEN_OPINST sfmt_mvfachi_ops[] ATTRIBUTE_UNUSED = { 343 { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 344 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 345 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 346 }; 347 348 static const CGEN_OPINST sfmt_mvfachi_a_ops[] ATTRIBUTE_UNUSED = { 349 { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 }, 350 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 351 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 352 }; 353 354 static const CGEN_OPINST sfmt_mvfc_ops[] ATTRIBUTE_UNUSED = { 355 { INPUT, "scr", HW_H_CR, CGEN_MODE_USI, OP_ENT (SCR), 0, 0 }, 356 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 357 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 358 }; 359 360 static const CGEN_OPINST sfmt_mvtachi_ops[] ATTRIBUTE_UNUSED = { 361 { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 362 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 363 { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 364 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 365 }; 366 367 static const CGEN_OPINST sfmt_mvtachi_a_ops[] ATTRIBUTE_UNUSED = { 368 { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 }, 369 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 370 { OUTPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 }, 371 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 372 }; 373 374 static const CGEN_OPINST sfmt_mvtc_ops[] ATTRIBUTE_UNUSED = { 375 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 376 { OUTPUT, "dcr", HW_H_CR, CGEN_MODE_USI, OP_ENT (DCR), 0, 0 }, 377 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 378 }; 379 380 static const CGEN_OPINST sfmt_nop_ops[] ATTRIBUTE_UNUSED = { 381 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 382 }; 383 384 static const CGEN_OPINST sfmt_rac_ops[] ATTRIBUTE_UNUSED = { 385 { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 386 { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 }, 387 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 388 }; 389 390 static const CGEN_OPINST sfmt_rac_dsi_ops[] ATTRIBUTE_UNUSED = { 391 { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 }, 392 { INPUT, "imm1", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (IMM1), 0, 0 }, 393 { OUTPUT, "accd", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCD), 0, 0 }, 394 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 395 }; 396 397 static const CGEN_OPINST sfmt_rte_ops[] ATTRIBUTE_UNUSED = { 398 { INPUT, "h_bbpsw_UQI", HW_H_BBPSW, CGEN_MODE_UQI, 0, 0, 0 }, 399 { INPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 }, 400 { INPUT, "h_cr_USI_14", HW_H_CR, CGEN_MODE_USI, 0, 14, 0 }, 401 { INPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 }, 402 { OUTPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 }, 403 { OUTPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 }, 404 { OUTPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 }, 405 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 406 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 407 }; 408 409 static const CGEN_OPINST sfmt_seth_ops[] ATTRIBUTE_UNUSED = { 410 { INPUT, "hi16", HW_H_HI16, CGEN_MODE_UINT, OP_ENT (HI16), 0, 0 }, 411 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 412 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 413 }; 414 415 static const CGEN_OPINST sfmt_sll3_ops[] ATTRIBUTE_UNUSED = { 416 { INPUT, "simm16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 }, 417 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 418 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 419 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 420 }; 421 422 static const CGEN_OPINST sfmt_slli_ops[] ATTRIBUTE_UNUSED = { 423 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 424 { INPUT, "uimm5", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM5), 0, 0 }, 425 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 426 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 427 }; 428 429 static const CGEN_OPINST sfmt_st_ops[] ATTRIBUTE_UNUSED = { 430 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 431 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 432 { OUTPUT, "h_memory_SI_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 433 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 434 }; 435 436 static const CGEN_OPINST sfmt_st_d_ops[] ATTRIBUTE_UNUSED = { 437 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 438 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 439 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 440 { OUTPUT, "h_memory_SI_add__SI_src2_slo16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 441 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 442 }; 443 444 static const CGEN_OPINST sfmt_stb_ops[] ATTRIBUTE_UNUSED = { 445 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 446 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 447 { OUTPUT, "h_memory_QI_src2", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 448 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 449 }; 450 451 static const CGEN_OPINST sfmt_stb_d_ops[] ATTRIBUTE_UNUSED = { 452 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 453 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 454 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 455 { OUTPUT, "h_memory_QI_add__SI_src2_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 456 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 457 }; 458 459 static const CGEN_OPINST sfmt_sth_ops[] ATTRIBUTE_UNUSED = { 460 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 461 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 462 { OUTPUT, "h_memory_HI_src2", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 463 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 464 }; 465 466 static const CGEN_OPINST sfmt_sth_d_ops[] ATTRIBUTE_UNUSED = { 467 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 468 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 469 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 470 { OUTPUT, "h_memory_HI_add__SI_src2_slo16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 471 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 472 }; 473 474 static const CGEN_OPINST sfmt_st_plus_ops[] ATTRIBUTE_UNUSED = { 475 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 476 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 477 { OUTPUT, "h_memory_SI_new_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 }, 478 { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 479 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 480 }; 481 482 static const CGEN_OPINST sfmt_sth_plus_ops[] ATTRIBUTE_UNUSED = { 483 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 484 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 485 { OUTPUT, "h_memory_HI_new_src2", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 }, 486 { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 487 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 488 }; 489 490 static const CGEN_OPINST sfmt_stb_plus_ops[] ATTRIBUTE_UNUSED = { 491 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 492 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 493 { OUTPUT, "h_memory_QI_new_src2", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 494 { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 495 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 496 }; 497 498 static const CGEN_OPINST sfmt_trap_ops[] ATTRIBUTE_UNUSED = { 499 { INPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 }, 500 { INPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 }, 501 { INPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 }, 502 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 503 { INPUT, "uimm4", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM4), 0, 0 }, 504 { OUTPUT, "h_bbpsw_UQI", HW_H_BBPSW, CGEN_MODE_UQI, 0, 0, 0 }, 505 { OUTPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 }, 506 { OUTPUT, "h_cr_USI_14", HW_H_CR, CGEN_MODE_USI, 0, 14, 0 }, 507 { OUTPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 }, 508 { OUTPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 }, 509 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 }, 510 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 511 }; 512 513 static const CGEN_OPINST sfmt_unlock_ops[] ATTRIBUTE_UNUSED = { 514 { INPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 }, 515 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, COND_REF }, 516 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, COND_REF }, 517 { OUTPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 }, 518 { OUTPUT, "h_memory_SI_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, COND_REF }, 519 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 520 }; 521 522 static const CGEN_OPINST sfmt_satb_ops[] ATTRIBUTE_UNUSED = { 523 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 524 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 525 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 526 }; 527 528 static const CGEN_OPINST sfmt_sat_ops[] ATTRIBUTE_UNUSED = { 529 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 530 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, COND_REF }, 531 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 }, 532 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 533 }; 534 535 static const CGEN_OPINST sfmt_sadd_ops[] ATTRIBUTE_UNUSED = { 536 { INPUT, "h_accums_DI_0", HW_H_ACCUMS, CGEN_MODE_DI, 0, 0, 0 }, 537 { INPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 }, 538 { OUTPUT, "h_accums_DI_0", HW_H_ACCUMS, CGEN_MODE_DI, 0, 0, 0 }, 539 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 540 }; 541 542 static const CGEN_OPINST sfmt_macwu1_ops[] ATTRIBUTE_UNUSED = { 543 { INPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 }, 544 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 545 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 546 { OUTPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 }, 547 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 548 }; 549 550 static const CGEN_OPINST sfmt_mulwu1_ops[] ATTRIBUTE_UNUSED = { 551 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 }, 552 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 }, 553 { OUTPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 }, 554 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 555 }; 556 557 static const CGEN_OPINST sfmt_sc_ops[] ATTRIBUTE_UNUSED = { 558 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 559 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 560 }; 561 562 static const CGEN_OPINST sfmt_clrpsw_ops[] ATTRIBUTE_UNUSED = { 563 { INPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 }, 564 { INPUT, "uimm8", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM8), 0, 0 }, 565 { OUTPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 }, 566 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 567 }; 568 569 static const CGEN_OPINST sfmt_setpsw_ops[] ATTRIBUTE_UNUSED = { 570 { INPUT, "uimm8", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM8), 0, 0 }, 571 { OUTPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 }, 572 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 573 }; 574 575 static const CGEN_OPINST sfmt_bset_ops[] ATTRIBUTE_UNUSED = { 576 { INPUT, "h_memory_QI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 577 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 }, 578 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 579 { INPUT, "uimm3", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM3), 0, 0 }, 580 { OUTPUT, "h_memory_QI_add__SI_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 }, 581 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 582 }; 583 584 static const CGEN_OPINST sfmt_btst_ops[] ATTRIBUTE_UNUSED = { 585 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 }, 586 { INPUT, "uimm3", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM3), 0, 0 }, 587 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 }, 588 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 } 589 }; 590 591 #undef OP_ENT 592 #undef INPUT 593 #undef OUTPUT 594 #undef END 595 #undef COND_REF 596 597 /* Operand instance lookup table. */ 598 599 static const CGEN_OPINST *m32r_cgen_opinst_table[MAX_INSNS] = { 600 0, 601 & sfmt_add_ops[0], 602 & sfmt_add3_ops[0], 603 & sfmt_add_ops[0], 604 & sfmt_and3_ops[0], 605 & sfmt_add_ops[0], 606 & sfmt_or3_ops[0], 607 & sfmt_add_ops[0], 608 & sfmt_and3_ops[0], 609 & sfmt_addi_ops[0], 610 & sfmt_addv_ops[0], 611 & sfmt_addv3_ops[0], 612 & sfmt_addx_ops[0], 613 & sfmt_bc8_ops[0], 614 & sfmt_bc24_ops[0], 615 & sfmt_beq_ops[0], 616 & sfmt_beqz_ops[0], 617 & sfmt_beqz_ops[0], 618 & sfmt_beqz_ops[0], 619 & sfmt_beqz_ops[0], 620 & sfmt_beqz_ops[0], 621 & sfmt_beqz_ops[0], 622 & sfmt_bl8_ops[0], 623 & sfmt_bl24_ops[0], 624 & sfmt_bcl8_ops[0], 625 & sfmt_bcl24_ops[0], 626 & sfmt_bc8_ops[0], 627 & sfmt_bc24_ops[0], 628 & sfmt_beq_ops[0], 629 & sfmt_bra8_ops[0], 630 & sfmt_bra24_ops[0], 631 & sfmt_bcl8_ops[0], 632 & sfmt_bcl24_ops[0], 633 & sfmt_cmp_ops[0], 634 & sfmt_cmpi_ops[0], 635 & sfmt_cmp_ops[0], 636 & sfmt_cmpi_ops[0], 637 & sfmt_cmp_ops[0], 638 & sfmt_cmpz_ops[0], 639 & sfmt_div_ops[0], 640 & sfmt_div_ops[0], 641 & sfmt_div_ops[0], 642 & sfmt_div_ops[0], 643 & sfmt_div_ops[0], 644 & sfmt_div_ops[0], 645 & sfmt_div_ops[0], 646 & sfmt_div_ops[0], 647 & sfmt_div_ops[0], 648 & sfmt_div_ops[0], 649 & sfmt_div_ops[0], 650 & sfmt_div_ops[0], 651 & sfmt_jc_ops[0], 652 & sfmt_jc_ops[0], 653 & sfmt_jl_ops[0], 654 & sfmt_jmp_ops[0], 655 & sfmt_ld_ops[0], 656 & sfmt_ld_d_ops[0], 657 & sfmt_ldb_ops[0], 658 & sfmt_ldb_d_ops[0], 659 & sfmt_ldh_ops[0], 660 & sfmt_ldh_d_ops[0], 661 & sfmt_ldb_ops[0], 662 & sfmt_ldb_d_ops[0], 663 & sfmt_ldh_ops[0], 664 & sfmt_ldh_d_ops[0], 665 & sfmt_ld_plus_ops[0], 666 & sfmt_ld24_ops[0], 667 & sfmt_ldi8_ops[0], 668 & sfmt_ldi16_ops[0], 669 & sfmt_lock_ops[0], 670 & sfmt_machi_ops[0], 671 & sfmt_machi_a_ops[0], 672 & sfmt_machi_ops[0], 673 & sfmt_machi_a_ops[0], 674 & sfmt_machi_ops[0], 675 & sfmt_machi_a_ops[0], 676 & sfmt_machi_ops[0], 677 & sfmt_machi_a_ops[0], 678 & sfmt_add_ops[0], 679 & sfmt_mulhi_ops[0], 680 & sfmt_mulhi_a_ops[0], 681 & sfmt_mulhi_ops[0], 682 & sfmt_mulhi_a_ops[0], 683 & sfmt_mulhi_ops[0], 684 & sfmt_mulhi_a_ops[0], 685 & sfmt_mulhi_ops[0], 686 & sfmt_mulhi_a_ops[0], 687 & sfmt_mv_ops[0], 688 & sfmt_mvfachi_ops[0], 689 & sfmt_mvfachi_a_ops[0], 690 & sfmt_mvfachi_ops[0], 691 & sfmt_mvfachi_a_ops[0], 692 & sfmt_mvfachi_ops[0], 693 & sfmt_mvfachi_a_ops[0], 694 & sfmt_mvfc_ops[0], 695 & sfmt_mvtachi_ops[0], 696 & sfmt_mvtachi_a_ops[0], 697 & sfmt_mvtachi_ops[0], 698 & sfmt_mvtachi_a_ops[0], 699 & sfmt_mvtc_ops[0], 700 & sfmt_mv_ops[0], 701 & sfmt_nop_ops[0], 702 & sfmt_mv_ops[0], 703 & sfmt_rac_ops[0], 704 & sfmt_rac_dsi_ops[0], 705 & sfmt_rac_ops[0], 706 & sfmt_rac_dsi_ops[0], 707 & sfmt_rte_ops[0], 708 & sfmt_seth_ops[0], 709 & sfmt_add_ops[0], 710 & sfmt_sll3_ops[0], 711 & sfmt_slli_ops[0], 712 & sfmt_add_ops[0], 713 & sfmt_sll3_ops[0], 714 & sfmt_slli_ops[0], 715 & sfmt_add_ops[0], 716 & sfmt_sll3_ops[0], 717 & sfmt_slli_ops[0], 718 & sfmt_st_ops[0], 719 & sfmt_st_d_ops[0], 720 & sfmt_stb_ops[0], 721 & sfmt_stb_d_ops[0], 722 & sfmt_sth_ops[0], 723 & sfmt_sth_d_ops[0], 724 & sfmt_st_plus_ops[0], 725 & sfmt_sth_plus_ops[0], 726 & sfmt_stb_plus_ops[0], 727 & sfmt_st_plus_ops[0], 728 & sfmt_add_ops[0], 729 & sfmt_addv_ops[0], 730 & sfmt_addx_ops[0], 731 & sfmt_trap_ops[0], 732 & sfmt_unlock_ops[0], 733 & sfmt_satb_ops[0], 734 & sfmt_satb_ops[0], 735 & sfmt_sat_ops[0], 736 & sfmt_cmpz_ops[0], 737 & sfmt_sadd_ops[0], 738 & sfmt_macwu1_ops[0], 739 & sfmt_machi_ops[0], 740 & sfmt_mulwu1_ops[0], 741 & sfmt_macwu1_ops[0], 742 & sfmt_sc_ops[0], 743 & sfmt_sc_ops[0], 744 & sfmt_clrpsw_ops[0], 745 & sfmt_setpsw_ops[0], 746 & sfmt_bset_ops[0], 747 & sfmt_bset_ops[0], 748 & sfmt_btst_ops[0], 749 }; 750 751 /* Function to call before using the operand instance table. */ 752 753 void 754 m32r_cgen_init_opinst_table (CGEN_CPU_DESC cd) 755 { 756 int i; 757 const CGEN_OPINST **oi = & m32r_cgen_opinst_table[0]; 758 CGEN_INSN *insns = (CGEN_INSN *) cd->insn_table.init_entries; 759 for (i = 0; i < MAX_INSNS; ++i) 760 insns[i].opinst = oi[i]; 761 } 762