00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029 #include "sysdep.h"
00030 #include "ansidecl.h"
00031 #include "bfd.h"
00032 #include "symcat.h"
00033 #include "m32r-desc.h"
00034 #include "m32r-opc.h"
00035
00036
00037
00038 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
00039 #define OP_ENT(op) M32R_OPERAND_##op
00040 #else
00041 #define OP_ENT(op) M32R_OPERAND_op
00042 #endif
00043 #define INPUT CGEN_OPINST_INPUT
00044 #define OUTPUT CGEN_OPINST_OUTPUT
00045 #define END CGEN_OPINST_END
00046 #define COND_REF CGEN_OPINST_COND_REF
00047
00048 static const CGEN_OPINST sfmt_empty_ops[] ATTRIBUTE_UNUSED = {
00049 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00050 };
00051
00052 static const CGEN_OPINST sfmt_add_ops[] ATTRIBUTE_UNUSED = {
00053 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00054 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00055 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00056 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00057 };
00058
00059 static const CGEN_OPINST sfmt_add3_ops[] ATTRIBUTE_UNUSED = {
00060 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
00061 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00062 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00063 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00064 };
00065
00066 static const CGEN_OPINST sfmt_and3_ops[] ATTRIBUTE_UNUSED = {
00067 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00068 { INPUT, "uimm16", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM16), 0, 0 },
00069 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00070 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00071 };
00072
00073 static const CGEN_OPINST sfmt_or3_ops[] ATTRIBUTE_UNUSED = {
00074 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00075 { INPUT, "ulo16", HW_H_ULO16, CGEN_MODE_UINT, OP_ENT (ULO16), 0, 0 },
00076 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00077 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00078 };
00079
00080 static const CGEN_OPINST sfmt_addi_ops[] ATTRIBUTE_UNUSED = {
00081 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00082 { INPUT, "simm8", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM8), 0, 0 },
00083 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00084 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00085 };
00086
00087 static const CGEN_OPINST sfmt_addv_ops[] ATTRIBUTE_UNUSED = {
00088 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00089 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00090 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00091 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00092 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00093 };
00094
00095 static const CGEN_OPINST sfmt_addv3_ops[] ATTRIBUTE_UNUSED = {
00096 { INPUT, "simm16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
00097 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00098 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00099 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00100 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00101 };
00102
00103 static const CGEN_OPINST sfmt_addx_ops[] ATTRIBUTE_UNUSED = {
00104 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00105 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00106 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00107 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00108 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00109 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00110 };
00111
00112 static const CGEN_OPINST sfmt_bc8_ops[] ATTRIBUTE_UNUSED = {
00113 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00114 { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, COND_REF },
00115 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
00116 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00117 };
00118
00119 static const CGEN_OPINST sfmt_bc24_ops[] ATTRIBUTE_UNUSED = {
00120 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00121 { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, COND_REF },
00122 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
00123 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00124 };
00125
00126 static const CGEN_OPINST sfmt_beq_ops[] ATTRIBUTE_UNUSED = {
00127 { INPUT, "disp16", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP16), 0, COND_REF },
00128 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00129 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00130 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
00131 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00132 };
00133
00134 static const CGEN_OPINST sfmt_beqz_ops[] ATTRIBUTE_UNUSED = {
00135 { INPUT, "disp16", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP16), 0, COND_REF },
00136 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00137 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
00138 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00139 };
00140
00141 static const CGEN_OPINST sfmt_bl8_ops[] ATTRIBUTE_UNUSED = {
00142 { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, 0 },
00143 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
00144 { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 },
00145 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
00146 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00147 };
00148
00149 static const CGEN_OPINST sfmt_bl24_ops[] ATTRIBUTE_UNUSED = {
00150 { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, 0 },
00151 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
00152 { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 },
00153 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
00154 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00155 };
00156
00157 static const CGEN_OPINST sfmt_bcl8_ops[] ATTRIBUTE_UNUSED = {
00158 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00159 { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, COND_REF },
00160 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
00161 { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, COND_REF },
00162 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
00163 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00164 };
00165
00166 static const CGEN_OPINST sfmt_bcl24_ops[] ATTRIBUTE_UNUSED = {
00167 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00168 { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, COND_REF },
00169 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
00170 { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, COND_REF },
00171 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
00172 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00173 };
00174
00175 static const CGEN_OPINST sfmt_bra8_ops[] ATTRIBUTE_UNUSED = {
00176 { INPUT, "disp8", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP8), 0, 0 },
00177 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
00178 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00179 };
00180
00181 static const CGEN_OPINST sfmt_bra24_ops[] ATTRIBUTE_UNUSED = {
00182 { INPUT, "disp24", HW_H_IADDR, CGEN_MODE_USI, OP_ENT (DISP24), 0, 0 },
00183 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
00184 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00185 };
00186
00187 static const CGEN_OPINST sfmt_cmp_ops[] ATTRIBUTE_UNUSED = {
00188 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00189 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00190 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00191 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00192 };
00193
00194 static const CGEN_OPINST sfmt_cmpi_ops[] ATTRIBUTE_UNUSED = {
00195 { INPUT, "simm16", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM16), 0, 0 },
00196 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00197 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00198 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00199 };
00200
00201 static const CGEN_OPINST sfmt_cmpz_ops[] ATTRIBUTE_UNUSED = {
00202 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00203 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00204 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00205 };
00206
00207 static const CGEN_OPINST sfmt_div_ops[] ATTRIBUTE_UNUSED = {
00208 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, COND_REF },
00209 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00210 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, COND_REF },
00211 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00212 };
00213
00214 static const CGEN_OPINST sfmt_jc_ops[] ATTRIBUTE_UNUSED = {
00215 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00216 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, COND_REF },
00217 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, COND_REF },
00218 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00219 };
00220
00221 static const CGEN_OPINST sfmt_jl_ops[] ATTRIBUTE_UNUSED = {
00222 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
00223 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00224 { OUTPUT, "h_gr_SI_14", HW_H_GR, CGEN_MODE_SI, 0, 14, 0 },
00225 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
00226 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00227 };
00228
00229 static const CGEN_OPINST sfmt_jmp_ops[] ATTRIBUTE_UNUSED = {
00230 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00231 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
00232 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00233 };
00234
00235 static const CGEN_OPINST sfmt_ld_ops[] ATTRIBUTE_UNUSED = {
00236 { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
00237 { INPUT, "sr", HW_H_GR, CGEN_MODE_USI, OP_ENT (SR), 0, 0 },
00238 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00239 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00240 };
00241
00242 static const CGEN_OPINST sfmt_ld_d_ops[] ATTRIBUTE_UNUSED = {
00243 { INPUT, "h_memory_SI_add__DFLT_sr_slo16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
00244 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
00245 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00246 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00247 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00248 };
00249
00250 static const CGEN_OPINST sfmt_ldb_ops[] ATTRIBUTE_UNUSED = {
00251 { INPUT, "h_memory_QI_sr", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
00252 { INPUT, "sr", HW_H_GR, CGEN_MODE_USI, OP_ENT (SR), 0, 0 },
00253 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00254 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00255 };
00256
00257 static const CGEN_OPINST sfmt_ldb_d_ops[] ATTRIBUTE_UNUSED = {
00258 { INPUT, "h_memory_QI_add__DFLT_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
00259 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
00260 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00261 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00262 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00263 };
00264
00265 static const CGEN_OPINST sfmt_ldh_ops[] ATTRIBUTE_UNUSED = {
00266 { INPUT, "h_memory_HI_sr", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
00267 { INPUT, "sr", HW_H_GR, CGEN_MODE_USI, OP_ENT (SR), 0, 0 },
00268 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00269 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00270 };
00271
00272 static const CGEN_OPINST sfmt_ldh_d_ops[] ATTRIBUTE_UNUSED = {
00273 { INPUT, "h_memory_HI_add__DFLT_sr_slo16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
00274 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
00275 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00276 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00277 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00278 };
00279
00280 static const CGEN_OPINST sfmt_ld_plus_ops[] ATTRIBUTE_UNUSED = {
00281 { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
00282 { INPUT, "sr", HW_H_GR, CGEN_MODE_USI, OP_ENT (SR), 0, 0 },
00283 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00284 { OUTPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00285 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00286 };
00287
00288 static const CGEN_OPINST sfmt_ld24_ops[] ATTRIBUTE_UNUSED = {
00289 { INPUT, "uimm24", HW_H_ADDR, CGEN_MODE_USI, OP_ENT (UIMM24), 0, 0 },
00290 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00291 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00292 };
00293
00294 static const CGEN_OPINST sfmt_ldi8_ops[] ATTRIBUTE_UNUSED = {
00295 { INPUT, "simm8", HW_H_SINT, CGEN_MODE_INT, OP_ENT (SIMM8), 0, 0 },
00296 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00297 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00298 };
00299
00300 static const CGEN_OPINST sfmt_ldi16_ops[] ATTRIBUTE_UNUSED = {
00301 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
00302 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00303 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00304 };
00305
00306 static const CGEN_OPINST sfmt_lock_ops[] ATTRIBUTE_UNUSED = {
00307 { INPUT, "h_memory_SI_sr", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
00308 { INPUT, "sr", HW_H_GR, CGEN_MODE_USI, OP_ENT (SR), 0, 0 },
00309 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00310 { OUTPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 },
00311 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00312 };
00313
00314 static const CGEN_OPINST sfmt_machi_ops[] ATTRIBUTE_UNUSED = {
00315 { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
00316 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00317 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00318 { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
00319 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00320 };
00321
00322 static const CGEN_OPINST sfmt_machi_a_ops[] ATTRIBUTE_UNUSED = {
00323 { INPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 },
00324 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00325 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00326 { OUTPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 },
00327 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00328 };
00329
00330 static const CGEN_OPINST sfmt_mulhi_ops[] ATTRIBUTE_UNUSED = {
00331 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00332 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00333 { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
00334 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00335 };
00336
00337 static const CGEN_OPINST sfmt_mulhi_a_ops[] ATTRIBUTE_UNUSED = {
00338 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00339 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00340 { OUTPUT, "acc", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACC), 0, 0 },
00341 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00342 };
00343
00344 static const CGEN_OPINST sfmt_mv_ops[] ATTRIBUTE_UNUSED = {
00345 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00346 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00347 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00348 };
00349
00350 static const CGEN_OPINST sfmt_mvfachi_ops[] ATTRIBUTE_UNUSED = {
00351 { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
00352 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00353 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00354 };
00355
00356 static const CGEN_OPINST sfmt_mvfachi_a_ops[] ATTRIBUTE_UNUSED = {
00357 { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 },
00358 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00359 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00360 };
00361
00362 static const CGEN_OPINST sfmt_mvfc_ops[] ATTRIBUTE_UNUSED = {
00363 { INPUT, "scr", HW_H_CR, CGEN_MODE_USI, OP_ENT (SCR), 0, 0 },
00364 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00365 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00366 };
00367
00368 static const CGEN_OPINST sfmt_mvtachi_ops[] ATTRIBUTE_UNUSED = {
00369 { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
00370 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00371 { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
00372 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00373 };
00374
00375 static const CGEN_OPINST sfmt_mvtachi_a_ops[] ATTRIBUTE_UNUSED = {
00376 { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 },
00377 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00378 { OUTPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 },
00379 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00380 };
00381
00382 static const CGEN_OPINST sfmt_mvtc_ops[] ATTRIBUTE_UNUSED = {
00383 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00384 { OUTPUT, "dcr", HW_H_CR, CGEN_MODE_USI, OP_ENT (DCR), 0, 0 },
00385 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00386 };
00387
00388 static const CGEN_OPINST sfmt_nop_ops[] ATTRIBUTE_UNUSED = {
00389 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00390 };
00391
00392 static const CGEN_OPINST sfmt_rac_ops[] ATTRIBUTE_UNUSED = {
00393 { INPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
00394 { OUTPUT, "accum", HW_H_ACCUM, CGEN_MODE_DI, 0, 0, 0 },
00395 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00396 };
00397
00398 static const CGEN_OPINST sfmt_rac_dsi_ops[] ATTRIBUTE_UNUSED = {
00399 { INPUT, "accs", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCS), 0, 0 },
00400 { INPUT, "imm1", HW_H_UINT, CGEN_MODE_INT, OP_ENT (IMM1), 0, 0 },
00401 { OUTPUT, "accd", HW_H_ACCUMS, CGEN_MODE_DI, OP_ENT (ACCD), 0, 0 },
00402 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00403 };
00404
00405 static const CGEN_OPINST sfmt_rte_ops[] ATTRIBUTE_UNUSED = {
00406 { INPUT, "h_bbpsw_UQI", HW_H_BBPSW, CGEN_MODE_UQI, 0, 0, 0 },
00407 { INPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 },
00408 { INPUT, "h_cr_USI_14", HW_H_CR, CGEN_MODE_USI, 0, 14, 0 },
00409 { INPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 },
00410 { OUTPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 },
00411 { OUTPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 },
00412 { OUTPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 },
00413 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
00414 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00415 };
00416
00417 static const CGEN_OPINST sfmt_seth_ops[] ATTRIBUTE_UNUSED = {
00418 { INPUT, "hi16", HW_H_HI16, CGEN_MODE_SI, OP_ENT (HI16), 0, 0 },
00419 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00420 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00421 };
00422
00423 static const CGEN_OPINST sfmt_sll3_ops[] ATTRIBUTE_UNUSED = {
00424 { INPUT, "simm16", HW_H_SINT, CGEN_MODE_SI, OP_ENT (SIMM16), 0, 0 },
00425 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00426 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00427 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00428 };
00429
00430 static const CGEN_OPINST sfmt_slli_ops[] ATTRIBUTE_UNUSED = {
00431 { INPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00432 { INPUT, "uimm5", HW_H_UINT, CGEN_MODE_INT, OP_ENT (UIMM5), 0, 0 },
00433 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00434 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00435 };
00436
00437 static const CGEN_OPINST sfmt_st_ops[] ATTRIBUTE_UNUSED = {
00438 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00439 { INPUT, "src2", HW_H_GR, CGEN_MODE_USI, OP_ENT (SRC2), 0, 0 },
00440 { OUTPUT, "h_memory_SI_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
00441 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00442 };
00443
00444 static const CGEN_OPINST sfmt_st_d_ops[] ATTRIBUTE_UNUSED = {
00445 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
00446 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00447 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00448 { OUTPUT, "h_memory_SI_add__DFLT_src2_slo16", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
00449 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00450 };
00451
00452 static const CGEN_OPINST sfmt_stb_ops[] ATTRIBUTE_UNUSED = {
00453 { INPUT, "src1", HW_H_GR, CGEN_MODE_QI, OP_ENT (SRC1), 0, 0 },
00454 { INPUT, "src2", HW_H_GR, CGEN_MODE_USI, OP_ENT (SRC2), 0, 0 },
00455 { OUTPUT, "h_memory_QI_src2", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
00456 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00457 };
00458
00459 static const CGEN_OPINST sfmt_stb_d_ops[] ATTRIBUTE_UNUSED = {
00460 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
00461 { INPUT, "src1", HW_H_GR, CGEN_MODE_QI, OP_ENT (SRC1), 0, 0 },
00462 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00463 { OUTPUT, "h_memory_QI_add__DFLT_src2_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
00464 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00465 };
00466
00467 static const CGEN_OPINST sfmt_sth_ops[] ATTRIBUTE_UNUSED = {
00468 { INPUT, "src1", HW_H_GR, CGEN_MODE_HI, OP_ENT (SRC1), 0, 0 },
00469 { INPUT, "src2", HW_H_GR, CGEN_MODE_USI, OP_ENT (SRC2), 0, 0 },
00470 { OUTPUT, "h_memory_HI_src2", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
00471 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00472 };
00473
00474 static const CGEN_OPINST sfmt_sth_d_ops[] ATTRIBUTE_UNUSED = {
00475 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
00476 { INPUT, "src1", HW_H_GR, CGEN_MODE_HI, OP_ENT (SRC1), 0, 0 },
00477 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00478 { OUTPUT, "h_memory_HI_add__DFLT_src2_slo16", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
00479 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00480 };
00481
00482 static const CGEN_OPINST sfmt_st_plus_ops[] ATTRIBUTE_UNUSED = {
00483 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00484 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00485 { OUTPUT, "h_memory_SI_new_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, 0 },
00486 { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00487 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00488 };
00489
00490 static const CGEN_OPINST sfmt_sth_plus_ops[] ATTRIBUTE_UNUSED = {
00491 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00492 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00493 { OUTPUT, "h_memory_HI_new_src2", HW_H_MEMORY, CGEN_MODE_HI, 0, 0, 0 },
00494 { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00495 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00496 };
00497
00498 static const CGEN_OPINST sfmt_stb_plus_ops[] ATTRIBUTE_UNUSED = {
00499 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00500 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00501 { OUTPUT, "h_memory_QI_new_src2", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
00502 { OUTPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00503 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00504 };
00505
00506 static const CGEN_OPINST sfmt_trap_ops[] ATTRIBUTE_UNUSED = {
00507 { INPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 },
00508 { INPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 },
00509 { INPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 },
00510 { INPUT, "pc", HW_H_PC, CGEN_MODE_USI, 0, 0, 0 },
00511 { INPUT, "uimm4", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM4), 0, 0 },
00512 { OUTPUT, "h_bbpsw_UQI", HW_H_BBPSW, CGEN_MODE_UQI, 0, 0, 0 },
00513 { OUTPUT, "h_bpsw_UQI", HW_H_BPSW, CGEN_MODE_UQI, 0, 0, 0 },
00514 { OUTPUT, "h_cr_USI_14", HW_H_CR, CGEN_MODE_USI, 0, 14, 0 },
00515 { OUTPUT, "h_cr_USI_6", HW_H_CR, CGEN_MODE_USI, 0, 6, 0 },
00516 { OUTPUT, "h_psw_UQI", HW_H_PSW, CGEN_MODE_UQI, 0, 0, 0 },
00517 { OUTPUT, "pc", HW_H_PC, CGEN_MODE_SI, 0, 0, 0 },
00518 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00519 };
00520
00521 static const CGEN_OPINST sfmt_unlock_ops[] ATTRIBUTE_UNUSED = {
00522 { INPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 },
00523 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, COND_REF },
00524 { INPUT, "src2", HW_H_GR, CGEN_MODE_USI, OP_ENT (SRC2), 0, COND_REF },
00525 { OUTPUT, "h_lock_BI", HW_H_LOCK, CGEN_MODE_BI, 0, 0, 0 },
00526 { OUTPUT, "h_memory_SI_src2", HW_H_MEMORY, CGEN_MODE_SI, 0, 0, COND_REF },
00527 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00528 };
00529
00530 static const CGEN_OPINST sfmt_satb_ops[] ATTRIBUTE_UNUSED = {
00531 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00532 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00533 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00534 };
00535
00536 static const CGEN_OPINST sfmt_sat_ops[] ATTRIBUTE_UNUSED = {
00537 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00538 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, COND_REF },
00539 { OUTPUT, "dr", HW_H_GR, CGEN_MODE_SI, OP_ENT (DR), 0, 0 },
00540 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00541 };
00542
00543 static const CGEN_OPINST sfmt_sadd_ops[] ATTRIBUTE_UNUSED = {
00544 { INPUT, "h_accums_DI_0", HW_H_ACCUMS, CGEN_MODE_DI, 0, 0, 0 },
00545 { INPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 },
00546 { OUTPUT, "h_accums_DI_0", HW_H_ACCUMS, CGEN_MODE_DI, 0, 0, 0 },
00547 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00548 };
00549
00550 static const CGEN_OPINST sfmt_macwu1_ops[] ATTRIBUTE_UNUSED = {
00551 { INPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 },
00552 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00553 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00554 { OUTPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 },
00555 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00556 };
00557
00558 static const CGEN_OPINST sfmt_mulwu1_ops[] ATTRIBUTE_UNUSED = {
00559 { INPUT, "src1", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC1), 0, 0 },
00560 { INPUT, "src2", HW_H_GR, CGEN_MODE_SI, OP_ENT (SRC2), 0, 0 },
00561 { OUTPUT, "h_accums_DI_1", HW_H_ACCUMS, CGEN_MODE_DI, 0, 1, 0 },
00562 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00563 };
00564
00565 static const CGEN_OPINST sfmt_sc_ops[] ATTRIBUTE_UNUSED = {
00566 { INPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00567 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00568 };
00569
00570 static const CGEN_OPINST sfmt_clrpsw_ops[] ATTRIBUTE_UNUSED = {
00571 { INPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 },
00572 { INPUT, "uimm8", HW_H_UINT, CGEN_MODE_BI, OP_ENT (UIMM8), 0, 0 },
00573 { OUTPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 },
00574 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00575 };
00576
00577 static const CGEN_OPINST sfmt_setpsw_ops[] ATTRIBUTE_UNUSED = {
00578 { INPUT, "uimm8", HW_H_UINT, CGEN_MODE_USI, OP_ENT (UIMM8), 0, 0 },
00579 { OUTPUT, "h_cr_USI_0", HW_H_CR, CGEN_MODE_USI, 0, 0, 0 },
00580 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00581 };
00582
00583 static const CGEN_OPINST sfmt_bset_ops[] ATTRIBUTE_UNUSED = {
00584 { INPUT, "h_memory_QI_add__DFLT_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
00585 { INPUT, "slo16", HW_H_SLO16, CGEN_MODE_INT, OP_ENT (SLO16), 0, 0 },
00586 { INPUT, "sr", HW_H_GR, CGEN_MODE_SI, OP_ENT (SR), 0, 0 },
00587 { INPUT, "uimm3", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM3), 0, 0 },
00588 { OUTPUT, "h_memory_QI_add__DFLT_sr_slo16", HW_H_MEMORY, CGEN_MODE_QI, 0, 0, 0 },
00589 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00590 };
00591
00592 static const CGEN_OPINST sfmt_btst_ops[] ATTRIBUTE_UNUSED = {
00593 { INPUT, "sr", HW_H_GR, CGEN_MODE_USI, OP_ENT (SR), 0, 0 },
00594 { INPUT, "uimm3", HW_H_UINT, CGEN_MODE_UINT, OP_ENT (UIMM3), 0, 0 },
00595 { OUTPUT, "condbit", HW_H_COND, CGEN_MODE_BI, 0, 0, 0 },
00596 { END, (const char *)0, (enum cgen_hw_type)0, (enum cgen_mode)0, (enum cgen_operand_type)0, 0, 0 }
00597 };
00598
00599 #undef OP_ENT
00600 #undef INPUT
00601 #undef OUTPUT
00602 #undef END
00603 #undef COND_REF
00604
00605
00606
00607 static const CGEN_OPINST *m32r_cgen_opinst_table[MAX_INSNS] = {
00608 0,
00609 & sfmt_add_ops[0],
00610 & sfmt_add3_ops[0],
00611 & sfmt_add_ops[0],
00612 & sfmt_and3_ops[0],
00613 & sfmt_add_ops[0],
00614 & sfmt_or3_ops[0],
00615 & sfmt_add_ops[0],
00616 & sfmt_and3_ops[0],
00617 & sfmt_addi_ops[0],
00618 & sfmt_addv_ops[0],
00619 & sfmt_addv3_ops[0],
00620 & sfmt_addx_ops[0],
00621 & sfmt_bc8_ops[0],
00622 & sfmt_bc24_ops[0],
00623 & sfmt_beq_ops[0],
00624 & sfmt_beqz_ops[0],
00625 & sfmt_beqz_ops[0],
00626 & sfmt_beqz_ops[0],
00627 & sfmt_beqz_ops[0],
00628 & sfmt_beqz_ops[0],
00629 & sfmt_beqz_ops[0],
00630 & sfmt_bl8_ops[0],
00631 & sfmt_bl24_ops[0],
00632 & sfmt_bcl8_ops[0],
00633 & sfmt_bcl24_ops[0],
00634 & sfmt_bc8_ops[0],
00635 & sfmt_bc24_ops[0],
00636 & sfmt_beq_ops[0],
00637 & sfmt_bra8_ops[0],
00638 & sfmt_bra24_ops[0],
00639 & sfmt_bcl8_ops[0],
00640 & sfmt_bcl24_ops[0],
00641 & sfmt_cmp_ops[0],
00642 & sfmt_cmpi_ops[0],
00643 & sfmt_cmp_ops[0],
00644 & sfmt_cmpi_ops[0],
00645 & sfmt_cmp_ops[0],
00646 & sfmt_cmpz_ops[0],
00647 & sfmt_div_ops[0],
00648 & sfmt_div_ops[0],
00649 & sfmt_div_ops[0],
00650 & sfmt_div_ops[0],
00651 & sfmt_div_ops[0],
00652 & sfmt_div_ops[0],
00653 & sfmt_div_ops[0],
00654 & sfmt_div_ops[0],
00655 & sfmt_div_ops[0],
00656 & sfmt_div_ops[0],
00657 & sfmt_div_ops[0],
00658 & sfmt_div_ops[0],
00659 & sfmt_jc_ops[0],
00660 & sfmt_jc_ops[0],
00661 & sfmt_jl_ops[0],
00662 & sfmt_jmp_ops[0],
00663 & sfmt_ld_ops[0],
00664 & sfmt_ld_d_ops[0],
00665 & sfmt_ldb_ops[0],
00666 & sfmt_ldb_d_ops[0],
00667 & sfmt_ldh_ops[0],
00668 & sfmt_ldh_d_ops[0],
00669 & sfmt_ldb_ops[0],
00670 & sfmt_ldb_d_ops[0],
00671 & sfmt_ldh_ops[0],
00672 & sfmt_ldh_d_ops[0],
00673 & sfmt_ld_plus_ops[0],
00674 & sfmt_ld24_ops[0],
00675 & sfmt_ldi8_ops[0],
00676 & sfmt_ldi16_ops[0],
00677 & sfmt_lock_ops[0],
00678 & sfmt_machi_ops[0],
00679 & sfmt_machi_a_ops[0],
00680 & sfmt_machi_ops[0],
00681 & sfmt_machi_a_ops[0],
00682 & sfmt_machi_ops[0],
00683 & sfmt_machi_a_ops[0],
00684 & sfmt_machi_ops[0],
00685 & sfmt_machi_a_ops[0],
00686 & sfmt_add_ops[0],
00687 & sfmt_mulhi_ops[0],
00688 & sfmt_mulhi_a_ops[0],
00689 & sfmt_mulhi_ops[0],
00690 & sfmt_mulhi_a_ops[0],
00691 & sfmt_mulhi_ops[0],
00692 & sfmt_mulhi_a_ops[0],
00693 & sfmt_mulhi_ops[0],
00694 & sfmt_mulhi_a_ops[0],
00695 & sfmt_mv_ops[0],
00696 & sfmt_mvfachi_ops[0],
00697 & sfmt_mvfachi_a_ops[0],
00698 & sfmt_mvfachi_ops[0],
00699 & sfmt_mvfachi_a_ops[0],
00700 & sfmt_mvfachi_ops[0],
00701 & sfmt_mvfachi_a_ops[0],
00702 & sfmt_mvfc_ops[0],
00703 & sfmt_mvtachi_ops[0],
00704 & sfmt_mvtachi_a_ops[0],
00705 & sfmt_mvtachi_ops[0],
00706 & sfmt_mvtachi_a_ops[0],
00707 & sfmt_mvtc_ops[0],
00708 & sfmt_mv_ops[0],
00709 & sfmt_nop_ops[0],
00710 & sfmt_mv_ops[0],
00711 & sfmt_rac_ops[0],
00712 & sfmt_rac_dsi_ops[0],
00713 & sfmt_rac_ops[0],
00714 & sfmt_rac_dsi_ops[0],
00715 & sfmt_rte_ops[0],
00716 & sfmt_seth_ops[0],
00717 & sfmt_add_ops[0],
00718 & sfmt_sll3_ops[0],
00719 & sfmt_slli_ops[0],
00720 & sfmt_add_ops[0],
00721 & sfmt_sll3_ops[0],
00722 & sfmt_slli_ops[0],
00723 & sfmt_add_ops[0],
00724 & sfmt_sll3_ops[0],
00725 & sfmt_slli_ops[0],
00726 & sfmt_st_ops[0],
00727 & sfmt_st_d_ops[0],
00728 & sfmt_stb_ops[0],
00729 & sfmt_stb_d_ops[0],
00730 & sfmt_sth_ops[0],
00731 & sfmt_sth_d_ops[0],
00732 & sfmt_st_plus_ops[0],
00733 & sfmt_sth_plus_ops[0],
00734 & sfmt_stb_plus_ops[0],
00735 & sfmt_st_plus_ops[0],
00736 & sfmt_add_ops[0],
00737 & sfmt_addv_ops[0],
00738 & sfmt_addx_ops[0],
00739 & sfmt_trap_ops[0],
00740 & sfmt_unlock_ops[0],
00741 & sfmt_satb_ops[0],
00742 & sfmt_satb_ops[0],
00743 & sfmt_sat_ops[0],
00744 & sfmt_cmpz_ops[0],
00745 & sfmt_sadd_ops[0],
00746 & sfmt_macwu1_ops[0],
00747 & sfmt_machi_ops[0],
00748 & sfmt_mulwu1_ops[0],
00749 & sfmt_macwu1_ops[0],
00750 & sfmt_sc_ops[0],
00751 & sfmt_sc_ops[0],
00752 & sfmt_clrpsw_ops[0],
00753 & sfmt_setpsw_ops[0],
00754 & sfmt_bset_ops[0],
00755 & sfmt_bset_ops[0],
00756 & sfmt_btst_ops[0],
00757 };
00758
00759
00760
00761 void
00762 m32r_cgen_init_opinst_table (cd)
00763 CGEN_CPU_DESC cd;
00764 {
00765 int i;
00766 const CGEN_OPINST **oi = & m32r_cgen_opinst_table[0];
00767 CGEN_INSN *insns = (CGEN_INSN *) cd->insn_table.init_entries;
00768 for (i = 0; i < MAX_INSNS; ++i)
00769 insns[i].opinst = oi[i];
00770 }