* mep.h (EF_MEP_COP_*): New.
[deliverable/binutils-gdb.git] / opcodes / mep-opc.h
CommitLineData
bd2f2e55
DB
1/* Instruction opcode header for mep.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
9b201bb5 5Copyright 1996-2007 Free Software Foundation, Inc.
bd2f2e55
DB
6
7This file is part of the GNU Binutils and/or GDB, the GNU debugger.
8
9b201bb5
NC
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.
bd2f2e55 13
9b201bb5
NC
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.
bd2f2e55 18
9b201bb5
NC
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.
bd2f2e55
DB
22
23*/
24
25#ifndef MEP_OPC_H
26#define MEP_OPC_H
27
28/* -- opc.h */
29
30#undef CGEN_DIS_HASH_SIZE
31#define CGEN_DIS_HASH_SIZE 1
32
33#undef CGEN_DIS_HASH
34#define CGEN_DIS_HASH(buffer, insn) 0
35
36#define CGEN_VERBOSE_ASSEMBLER_ERRORS
37
38typedef struct
39{
40 char * name;
41 int config_enum;
42 unsigned cpu_flag;
43 int big_endian;
44 int vliw_bits;
45 CGEN_ATTR_VALUE_BITSET_TYPE cop16_isa;
46 CGEN_ATTR_VALUE_BITSET_TYPE cop32_isa;
47 CGEN_ATTR_VALUE_BITSET_TYPE cop48_isa;
48 CGEN_ATTR_VALUE_BITSET_TYPE cop64_isa;
49 CGEN_ATTR_VALUE_BITSET_TYPE cop_isa;
50 CGEN_ATTR_VALUE_BITSET_TYPE core_isa;
51 unsigned int option_mask;
52} mep_config_map_struct;
53
54extern mep_config_map_struct mep_config_map[];
55extern int mep_config_index;
56
57extern void init_mep_all_core_isas_mask (void);
58extern void init_mep_all_cop_isas_mask (void);
59extern CGEN_ATTR_VALUE_BITSET_TYPE mep_cop_isa (void);
60
61#define MEP_CONFIG (mep_config_map[mep_config_index].config_enum)
62#define MEP_CPU (mep_config_map[mep_config_index].cpu_flag)
63#define MEP_OMASK (mep_config_map[mep_config_index].option_mask)
64#define MEP_VLIW (mep_config_map[mep_config_index].vliw_bits > 0)
65#define MEP_VLIW32 (mep_config_map[mep_config_index].vliw_bits == 32)
66#define MEP_VLIW64 (mep_config_map[mep_config_index].vliw_bits == 64)
67#define MEP_COP16_ISA (mep_config_map[mep_config_index].cop16_isa)
68#define MEP_COP32_ISA (mep_config_map[mep_config_index].cop32_isa)
69#define MEP_COP48_ISA (mep_config_map[mep_config_index].cop48_isa)
70#define MEP_COP64_ISA (mep_config_map[mep_config_index].cop64_isa)
71#define MEP_COP_ISA (mep_config_map[mep_config_index].cop_isa)
72#define MEP_CORE_ISA (mep_config_map[mep_config_index].core_isa)
73
74extern int mep_insn_supported_by_isa (const CGEN_INSN *, CGEN_ATTR_VALUE_BITSET_TYPE *);
75
76/* A mask for all ISAs executed by the core. */
77#define MEP_ALL_CORE_ISAS_MASK mep_all_core_isas_mask
78extern CGEN_ATTR_VALUE_BITSET_TYPE mep_all_core_isas_mask;
79
80#define MEP_INSN_CORE_P(insn) ( \
81 init_mep_all_core_isas_mask (), \
82 mep_insn_supported_by_isa (insn, & MEP_ALL_CORE_ISAS_MASK) \
83)
84
85/* A mask for all ISAs executed by a VLIW coprocessor. */
86#define MEP_ALL_COP_ISAS_MASK mep_all_cop_isas_mask
87extern CGEN_ATTR_VALUE_BITSET_TYPE mep_all_cop_isas_mask;
88
89#define MEP_INSN_COP_P(insn) ( \
90 init_mep_all_cop_isas_mask (), \
91 mep_insn_supported_by_isa (insn, & MEP_ALL_COP_ISAS_MASK) \
92)
93
94extern int mep_cgen_insn_supported (CGEN_CPU_DESC, const CGEN_INSN *);
95
96/* -- asm.c */
97/* Enum declaration for mep instruction types. */
98typedef enum cgen_insn_type {
40493983
DD
99 MEP_INSN_INVALID, MEP_INSN_STCB_R, MEP_INSN_LDCB_R, MEP_INSN_PREF
100 , MEP_INSN_PREFD, MEP_INSN_CASB3, MEP_INSN_CASH3, MEP_INSN_CASW3
101 , MEP_INSN_SBCP, MEP_INSN_LBCP, MEP_INSN_LBUCP, MEP_INSN_SHCP
102 , MEP_INSN_LHCP, MEP_INSN_LHUCP, MEP_INSN_LBUCPA, MEP_INSN_LHUCPA
103 , MEP_INSN_LBUCPM0, MEP_INSN_LHUCPM0, MEP_INSN_LBUCPM1, MEP_INSN_LHUCPM1
45be3704
DD
104 , MEP_INSN_UCI, MEP_INSN_DSP, MEP_INSN_DSP0, MEP_INSN_DSP1
105 , MEP_INSN_SB, MEP_INSN_SH, MEP_INSN_SW, MEP_INSN_LB
106 , MEP_INSN_LH, MEP_INSN_LW, MEP_INSN_LBU, MEP_INSN_LHU
107 , MEP_INSN_SW_SP, MEP_INSN_LW_SP, MEP_INSN_SB_TP, MEP_INSN_SH_TP
108 , MEP_INSN_SW_TP, MEP_INSN_LB_TP, MEP_INSN_LH_TP, MEP_INSN_LW_TP
109 , MEP_INSN_LBU_TP, MEP_INSN_LHU_TP, MEP_INSN_SB16, MEP_INSN_SH16
110 , MEP_INSN_SW16, MEP_INSN_LB16, MEP_INSN_LH16, MEP_INSN_LW16
111 , MEP_INSN_LBU16, MEP_INSN_LHU16, MEP_INSN_SW24, MEP_INSN_LW24
112 , MEP_INSN_EXTB, MEP_INSN_EXTH, MEP_INSN_EXTUB, MEP_INSN_EXTUH
113 , MEP_INSN_SSARB, MEP_INSN_MOV, MEP_INSN_MOVI8, MEP_INSN_MOVI16
114 , MEP_INSN_MOVU24, MEP_INSN_MOVU16, MEP_INSN_MOVH, MEP_INSN_ADD3
115 , MEP_INSN_ADD, MEP_INSN_ADD3I, MEP_INSN_ADVCK3, MEP_INSN_SUB
116 , MEP_INSN_SBVCK3, MEP_INSN_NEG, MEP_INSN_SLT3, MEP_INSN_SLTU3
117 , MEP_INSN_SLT3I, MEP_INSN_SLTU3I, MEP_INSN_SL1AD3, MEP_INSN_SL2AD3
118 , MEP_INSN_ADD3X, MEP_INSN_SLT3X, MEP_INSN_SLTU3X, MEP_INSN_OR
119 , MEP_INSN_AND, MEP_INSN_XOR, MEP_INSN_NOR, MEP_INSN_OR3
120 , MEP_INSN_AND3, MEP_INSN_XOR3, MEP_INSN_SRA, MEP_INSN_SRL
121 , MEP_INSN_SLL, MEP_INSN_SRAI, MEP_INSN_SRLI, MEP_INSN_SLLI
122 , MEP_INSN_SLL3, MEP_INSN_FSFT, MEP_INSN_BRA, MEP_INSN_BEQZ
123 , MEP_INSN_BNEZ, MEP_INSN_BEQI, MEP_INSN_BNEI, MEP_INSN_BLTI
124 , MEP_INSN_BGEI, MEP_INSN_BEQ, MEP_INSN_BNE, MEP_INSN_BSR12
125 , MEP_INSN_BSR24, MEP_INSN_JMP, MEP_INSN_JMP24, MEP_INSN_JSR
126 , MEP_INSN_RET, MEP_INSN_REPEAT, MEP_INSN_EREPEAT, MEP_INSN_STC_LP
127 , MEP_INSN_STC_HI, MEP_INSN_STC_LO, MEP_INSN_STC, MEP_INSN_LDC_LP
128 , MEP_INSN_LDC_HI, MEP_INSN_LDC_LO, MEP_INSN_LDC, MEP_INSN_DI
129 , MEP_INSN_EI, MEP_INSN_RETI, MEP_INSN_HALT, MEP_INSN_SLEEP
130 , MEP_INSN_SWI, MEP_INSN_BREAK, MEP_INSN_SYNCM, MEP_INSN_STCB
131 , MEP_INSN_LDCB, MEP_INSN_BSETM, MEP_INSN_BCLRM, MEP_INSN_BNOTM
132 , MEP_INSN_BTSTM, MEP_INSN_TAS, MEP_INSN_CACHE, MEP_INSN_MUL
133 , MEP_INSN_MULU, MEP_INSN_MULR, MEP_INSN_MULRU, MEP_INSN_MADD
134 , MEP_INSN_MADDU, MEP_INSN_MADDR, MEP_INSN_MADDRU, MEP_INSN_DIV
135 , MEP_INSN_DIVU, MEP_INSN_DRET, MEP_INSN_DBREAK, MEP_INSN_LDZ
136 , MEP_INSN_ABS, MEP_INSN_AVE, MEP_INSN_MIN, MEP_INSN_MAX
137 , MEP_INSN_MINU, MEP_INSN_MAXU, MEP_INSN_CLIP, MEP_INSN_CLIPU
138 , MEP_INSN_SADD, MEP_INSN_SSUB, MEP_INSN_SADDU, MEP_INSN_SSUBU
139 , MEP_INSN_SWCP, MEP_INSN_LWCP, MEP_INSN_SMCP, MEP_INSN_LMCP
140 , MEP_INSN_SWCPI, MEP_INSN_LWCPI, MEP_INSN_SMCPI, MEP_INSN_LMCPI
141 , MEP_INSN_SWCP16, MEP_INSN_LWCP16, MEP_INSN_SMCP16, MEP_INSN_LMCP16
142 , MEP_INSN_SBCPA, MEP_INSN_LBCPA, MEP_INSN_SHCPA, MEP_INSN_LHCPA
143 , MEP_INSN_SWCPA, MEP_INSN_LWCPA, MEP_INSN_SMCPA, MEP_INSN_LMCPA
144 , MEP_INSN_SBCPM0, MEP_INSN_LBCPM0, MEP_INSN_SHCPM0, MEP_INSN_LHCPM0
145 , MEP_INSN_SWCPM0, MEP_INSN_LWCPM0, MEP_INSN_SMCPM0, MEP_INSN_LMCPM0
146 , MEP_INSN_SBCPM1, MEP_INSN_LBCPM1, MEP_INSN_SHCPM1, MEP_INSN_LHCPM1
147 , MEP_INSN_SWCPM1, MEP_INSN_LWCPM1, MEP_INSN_SMCPM1, MEP_INSN_LMCPM1
148 , MEP_INSN_BCPEQ, MEP_INSN_BCPNE, MEP_INSN_BCPAT, MEP_INSN_BCPAF
149 , MEP_INSN_SYNCCP, MEP_INSN_JSRV, MEP_INSN_BSRV, MEP_INSN_SIM_SYSCALL
150 , MEP_INSN_RI_0, MEP_INSN_RI_1, MEP_INSN_RI_2, MEP_INSN_RI_3
151 , MEP_INSN_RI_4, MEP_INSN_RI_5, MEP_INSN_RI_6, MEP_INSN_RI_7
152 , MEP_INSN_RI_8, MEP_INSN_RI_9, MEP_INSN_RI_10, MEP_INSN_RI_11
153 , MEP_INSN_RI_12, MEP_INSN_RI_13, MEP_INSN_RI_14, MEP_INSN_RI_15
154 , MEP_INSN_RI_17, MEP_INSN_RI_20, MEP_INSN_RI_21, MEP_INSN_RI_22
155 , MEP_INSN_RI_23, MEP_INSN_RI_26
bd2f2e55
DB
156} CGEN_INSN_TYPE;
157
158/* Index of `invalid' insn place holder. */
159#define CGEN_INSN_INVALID MEP_INSN_INVALID
160
161/* Total number of insns in table. */
40493983 162#define MAX_INSNS ((int) MEP_INSN_RI_26 + 1)
bd2f2e55
DB
163
164/* This struct records data prior to insertion or after extraction. */
165struct cgen_fields
166{
167 int length;
168 long f_nil;
169 long f_anyof;
170 long f_major;
171 long f_rn;
172 long f_rn3;
173 long f_rm;
174 long f_rl;
175 long f_sub2;
176 long f_sub3;
177 long f_sub4;
178 long f_ext;
40493983
DD
179 long f_ext4;
180 long f_ext62;
bd2f2e55
DB
181 long f_crn;
182 long f_csrn_hi;
183 long f_csrn_lo;
184 long f_csrn;
185 long f_crnx_hi;
186 long f_crnx_lo;
187 long f_crnx;
188 long f_0;
189 long f_1;
190 long f_2;
191 long f_3;
192 long f_4;
193 long f_5;
194 long f_6;
195 long f_7;
196 long f_8;
197 long f_9;
198 long f_10;
199 long f_11;
200 long f_12;
201 long f_13;
202 long f_14;
203 long f_15;
204 long f_16;
205 long f_17;
206 long f_18;
207 long f_19;
208 long f_20;
209 long f_21;
210 long f_22;
211 long f_23;
212 long f_24;
213 long f_25;
214 long f_26;
215 long f_27;
216 long f_28;
217 long f_29;
218 long f_30;
219 long f_31;
220 long f_8s8a2;
221 long f_12s4a2;
222 long f_17s16a2;
223 long f_24s5a2n_hi;
224 long f_24s5a2n_lo;
225 long f_24s5a2n;
226 long f_24u5a2n_hi;
227 long f_24u5a2n_lo;
228 long f_24u5a2n;
229 long f_2u6;
230 long f_7u9;
231 long f_7u9a2;
232 long f_7u9a4;
233 long f_16s16;
234 long f_2u10;
235 long f_3u5;
236 long f_4u8;
237 long f_5u8;
238 long f_5u24;
239 long f_6s8;
240 long f_8s8;
241 long f_16u16;
242 long f_12u16;
243 long f_3u29;
40493983 244 long f_cdisp10;
bd2f2e55
DB
245 long f_24u8a4n_hi;
246 long f_24u8a4n_lo;
247 long f_24u8a4n;
248 long f_24u8n_hi;
249 long f_24u8n_lo;
250 long f_24u8n;
251 long f_24u4n_hi;
252 long f_24u4n_lo;
253 long f_24u4n;
254 long f_callnum;
255 long f_ccrn_hi;
256 long f_ccrn_lo;
257 long f_ccrn;
40493983
DD
258 long f_c5n4;
259 long f_c5n5;
260 long f_c5n6;
261 long f_c5n7;
262 long f_rl5;
263 long f_12s20;
264 long f_c5_rnm;
265 long f_c5_rm;
266 long f_c5_16u16;
267 long f_c5_rmuimm20;
268 long f_c5_rnmuimm24;
bd2f2e55
DB
269};
270
271#define CGEN_INIT_PARSE(od) \
272{\
273}
274#define CGEN_INIT_INSERT(od) \
275{\
276}
277#define CGEN_INIT_EXTRACT(od) \
278{\
279}
280#define CGEN_INIT_PRINT(od) \
281{\
282}
283
284
285#endif /* MEP_OPC_H */
This page took 0.139639 seconds and 4 git commands to generate.