Tue Dec 8 13:12:44 1998 Dave Brolley <brolley@cygnus.com>
[deliverable/binutils-gdb.git] / opcodes / fr30-opc.c
1 /* Generic opcode table support for targets using CGEN. -*- C -*-
2 CGEN: Cpu tools GENerator
3
4 THIS FILE IS USED TO GENERATE fr30-opc.c.
5
6 Copyright (C) 1998 Free Software Foundation, Inc.
7
8 This file is part of the GNU Binutils and GDB, the GNU debugger.
9
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation; either version 2, or (at your option)
13 any later version.
14
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
19
20 You should have received a copy of the GNU General Public License
21 along with this program; if not, write to the Free Software Foundation, Inc.,
22 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
23
24 #include "sysdep.h"
25 #include <stdio.h>
26 #include "ansidecl.h"
27 #include "libiberty.h"
28 #include "bfd.h"
29 #include "symcat.h"
30 #include "fr30-opc.h"
31 #include "opintl.h"
32
33 /* Used by the ifield rtx function. */
34 #define FLD(f) (fields->f)
35
36 /* The hash functions are recorded here to help keep assembler code out of
37 the disassembler and vice versa. */
38
39 static int asm_hash_insn_p PARAMS ((const CGEN_INSN *));
40 static unsigned int asm_hash_insn PARAMS ((const char *));
41 static int dis_hash_insn_p PARAMS ((const CGEN_INSN *));
42 static unsigned int dis_hash_insn PARAMS ((const char *, CGEN_INSN_INT));
43
44 /* Look up instruction INSN_VALUE and extract its fields.
45 INSN, if non-null, is the insn table entry.
46 Otherwise INSN_VALUE is examined to compute it.
47 LENGTH is the bit length of INSN_VALUE if known, otherwise 0.
48 0 is only valid if `insn == NULL && ! CGEN_INT_INSN_P'.
49 If INSN != NULL, LENGTH must be valid.
50 ALIAS_P is non-zero if alias insns are to be included in the search.
51
52 The result is a pointer to the insn table entry, or NULL if the instruction
53 wasn't recognized. */
54
55 const CGEN_INSN *
56 fr30_cgen_lookup_insn (od, insn, insn_value, length, fields, alias_p)
57 CGEN_OPCODE_DESC od;
58 const CGEN_INSN *insn;
59 CGEN_INSN_BYTES insn_value;
60 int length;
61 CGEN_FIELDS *fields;
62 int alias_p;
63 {
64 unsigned char buf[CGEN_MAX_INSN_SIZE];
65 unsigned char *bufp;
66 CGEN_INSN_INT base_insn;
67 #if CGEN_INT_INSN_P
68 CGEN_EXTRACT_INFO *info = NULL;
69 #else
70 CGEN_EXTRACT_INFO ex_info;
71 CGEN_EXTRACT_INFO *info = &ex_info;
72 #endif
73
74 #if CGEN_INT_INSN_P
75 cgen_put_insn_value (od, buf, length, insn_value);
76 bufp = buf;
77 base_insn = insn_value; /*???*/
78 #else
79 ex_info.dis_info = NULL;
80 ex_info.insn_bytes = insn_value;
81 ex_info.valid = -1;
82 base_insn = cgen_get_insn_value (od, buf, length);
83 bufp = insn_value;
84 #endif
85
86 if (!insn)
87 {
88 const CGEN_INSN_LIST *insn_list;
89
90 /* The instructions are stored in hash lists.
91 Pick the first one and keep trying until we find the right one. */
92
93 insn_list = CGEN_DIS_LOOKUP_INSN (od, bufp, base_insn);
94 while (insn_list != NULL)
95 {
96 insn = insn_list->insn;
97
98 if (alias_p
99 || ! CGEN_INSN_ATTR (insn, CGEN_INSN_ALIAS))
100 {
101 /* Basic bit mask must be correct. */
102 /* ??? May wish to allow target to defer this check until the
103 extract handler. */
104 if ((base_insn & CGEN_INSN_BASE_MASK (insn))
105 == CGEN_INSN_BASE_VALUE (insn))
106 {
107 /* ??? 0 is passed for `pc' */
108 int elength = (*CGEN_EXTRACT_FN (insn)) (od, insn, info,
109 base_insn, fields,
110 (bfd_vma) 0);
111 if (elength > 0)
112 {
113 /* sanity check */
114 if (length != 0 && length != elength)
115 abort ();
116 return insn;
117 }
118 }
119 }
120
121 insn_list = CGEN_DIS_NEXT_INSN (insn_list);
122 }
123 }
124 else
125 {
126 /* Sanity check: can't pass an alias insn if ! alias_p. */
127 if (! alias_p
128 && CGEN_INSN_ATTR (insn, CGEN_INSN_ALIAS))
129 abort ();
130 /* Sanity check: length must be correct. */
131 if (length != CGEN_INSN_BITSIZE (insn))
132 abort ();
133
134 /* ??? 0 is passed for `pc' */
135 length = (*CGEN_EXTRACT_FN (insn)) (od, insn, info, base_insn, fields,
136 (bfd_vma) 0);
137 /* Sanity check: must succeed.
138 Could relax this later if it ever proves useful. */
139 if (length == 0)
140 abort ();
141 return insn;
142 }
143
144 return NULL;
145 }
146
147 /* Fill in the operand instances used by INSN whose operands are FIELDS.
148 INDICES is a pointer to a buffer of MAX_OPERAND_INSTANCES ints to be filled
149 in. */
150
151 void
152 fr30_cgen_get_insn_operands (od, insn, fields, indices)
153 CGEN_OPCODE_DESC od;
154 const CGEN_INSN * insn;
155 const CGEN_FIELDS * fields;
156 int *indices;
157 {
158 const CGEN_OPERAND_INSTANCE *opinst;
159 int i;
160
161 for (i = 0, opinst = CGEN_INSN_OPERANDS (insn);
162 opinst != NULL
163 && CGEN_OPERAND_INSTANCE_TYPE (opinst) != CGEN_OPERAND_INSTANCE_END;
164 ++i, ++opinst)
165 {
166 const CGEN_OPERAND *op = CGEN_OPERAND_INSTANCE_OPERAND (opinst);
167 if (op == NULL)
168 indices[i] = CGEN_OPERAND_INSTANCE_INDEX (opinst);
169 else
170 indices[i] = fr30_cgen_get_int_operand (CGEN_OPERAND_INDEX (op),
171 fields);
172 }
173 }
174
175 /* Cover function to fr30_cgen_get_insn_operands when either INSN or FIELDS
176 isn't known.
177 The INSN, INSN_VALUE, and LENGTH arguments are passed to
178 fr30_cgen_lookup_insn unchanged.
179
180 The result is the insn table entry or NULL if the instruction wasn't
181 recognized. */
182
183 const CGEN_INSN *
184 fr30_cgen_lookup_get_insn_operands (od, insn, insn_value, length, indices)
185 CGEN_OPCODE_DESC od;
186 const CGEN_INSN *insn;
187 CGEN_INSN_BYTES insn_value;
188 int length;
189 int *indices;
190 {
191 CGEN_FIELDS fields;
192
193 /* Pass non-zero for ALIAS_P only if INSN != NULL.
194 If INSN == NULL, we want a real insn. */
195 insn = fr30_cgen_lookup_insn (od, insn, insn_value, length, &fields,
196 insn != NULL);
197 if (! insn)
198 return NULL;
199
200 fr30_cgen_get_insn_operands (od, insn, &fields, indices);
201 return insn;
202 }
203 /* Attributes. */
204
205 static const CGEN_ATTR_ENTRY MACH_attr[] =
206 {
207 { "base", MACH_BASE },
208 { "fr30", MACH_FR30 },
209 { "max", MACH_MAX },
210 { 0, 0 }
211 };
212
213 const CGEN_ATTR_TABLE fr30_cgen_hardware_attr_table[] =
214 {
215 { "CACHE-ADDR", NULL },
216 { "FUN-ACCESS", NULL },
217 { "PC", NULL },
218 { "PROFILE", NULL },
219 { 0, 0 }
220 };
221
222 const CGEN_ATTR_TABLE fr30_cgen_operand_attr_table[] =
223 {
224 { "ABS-ADDR", NULL },
225 { "HASH-PREFIX", NULL },
226 { "NEGATIVE", NULL },
227 { "PCREL-ADDR", NULL },
228 { "RELAX", NULL },
229 { "SEM-ONLY", NULL },
230 { "SIGN-OPT", NULL },
231 { "SIGNED", NULL },
232 { "UNSIGNED", NULL },
233 { "VIRTUAL", NULL },
234 { 0, 0 }
235 };
236
237 const CGEN_ATTR_TABLE fr30_cgen_insn_attr_table[] =
238 {
239 { "ALIAS", NULL },
240 { "COND-CTI", NULL },
241 { "DELAY-SLOT", NULL },
242 { "NO-DIS", NULL },
243 { "NOT-IN-DELAY-SLOT", NULL },
244 { "RELAX", NULL },
245 { "RELAXABLE", NULL },
246 { "SKIP-CTI", NULL },
247 { "UNCOND-CTI", NULL },
248 { "VIRTUAL", NULL },
249 { 0, 0 }
250 };
251
252 CGEN_KEYWORD_ENTRY fr30_cgen_opval_h_gr_entries[] =
253 {
254 { "ac", 13 },
255 { "fp", 14 },
256 { "sp", 15 },
257 { "r0", 0 },
258 { "r1", 1 },
259 { "r2", 2 },
260 { "r3", 3 },
261 { "r4", 4 },
262 { "r5", 5 },
263 { "r6", 6 },
264 { "r7", 7 },
265 { "r8", 8 },
266 { "r9", 9 },
267 { "r10", 10 },
268 { "r11", 11 },
269 { "r12", 12 },
270 { "r13", 13 },
271 { "r14", 14 },
272 { "r15", 15 }
273 };
274
275 CGEN_KEYWORD fr30_cgen_opval_h_gr =
276 {
277 & fr30_cgen_opval_h_gr_entries[0],
278 19
279 };
280
281 CGEN_KEYWORD_ENTRY fr30_cgen_opval_h_cr_entries[] =
282 {
283 { "cr0", 0 },
284 { "cr1", 1 },
285 { "cr2", 2 },
286 { "cr3", 3 },
287 { "cr4", 4 },
288 { "cr5", 5 },
289 { "cr6", 6 },
290 { "cr7", 7 },
291 { "cr8", 8 },
292 { "cr9", 9 },
293 { "cr10", 10 },
294 { "cr11", 11 },
295 { "cr12", 12 },
296 { "cr13", 13 },
297 { "cr14", 14 },
298 { "cr15", 15 }
299 };
300
301 CGEN_KEYWORD fr30_cgen_opval_h_cr =
302 {
303 & fr30_cgen_opval_h_cr_entries[0],
304 16
305 };
306
307 CGEN_KEYWORD_ENTRY fr30_cgen_opval_h_dr_entries[] =
308 {
309 { "tbr", 0 },
310 { "rp", 1 },
311 { "ssp", 2 },
312 { "usp", 3 },
313 { "mdh", 4 },
314 { "mdl", 5 }
315 };
316
317 CGEN_KEYWORD fr30_cgen_opval_h_dr =
318 {
319 & fr30_cgen_opval_h_dr_entries[0],
320 6
321 };
322
323 CGEN_KEYWORD_ENTRY fr30_cgen_opval_h_ps_entries[] =
324 {
325 { "ps", 0 }
326 };
327
328 CGEN_KEYWORD fr30_cgen_opval_h_ps =
329 {
330 & fr30_cgen_opval_h_ps_entries[0],
331 1
332 };
333
334 CGEN_KEYWORD_ENTRY fr30_cgen_opval_h_r13_entries[] =
335 {
336 { "r13", 0 }
337 };
338
339 CGEN_KEYWORD fr30_cgen_opval_h_r13 =
340 {
341 & fr30_cgen_opval_h_r13_entries[0],
342 1
343 };
344
345 CGEN_KEYWORD_ENTRY fr30_cgen_opval_h_r14_entries[] =
346 {
347 { "r14", 0 }
348 };
349
350 CGEN_KEYWORD fr30_cgen_opval_h_r14 =
351 {
352 & fr30_cgen_opval_h_r14_entries[0],
353 1
354 };
355
356 CGEN_KEYWORD_ENTRY fr30_cgen_opval_h_r15_entries[] =
357 {
358 { "r15", 0 }
359 };
360
361 CGEN_KEYWORD fr30_cgen_opval_h_r15 =
362 {
363 & fr30_cgen_opval_h_r15_entries[0],
364 1
365 };
366
367
368 /* The hardware table. */
369
370 #define HW_ENT(n) fr30_cgen_hw_entries[n]
371 static const CGEN_HW_ENTRY fr30_cgen_hw_entries[] =
372 {
373 { HW_H_PC, & HW_ENT (HW_H_PC + 1), "h-pc", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0|(1<<CGEN_HW_PROFILE)|(1<<CGEN_HW_PC), { 0 } } },
374 { HW_H_MEMORY, & HW_ENT (HW_H_MEMORY + 1), "h-memory", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
375 { HW_H_SINT, & HW_ENT (HW_H_SINT + 1), "h-sint", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
376 { HW_H_UINT, & HW_ENT (HW_H_UINT + 1), "h-uint", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
377 { HW_H_ADDR, & HW_ENT (HW_H_ADDR + 1), "h-addr", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
378 { HW_H_IADDR, & HW_ENT (HW_H_IADDR + 1), "h-iaddr", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
379 { HW_H_GR, & HW_ENT (HW_H_GR + 1), "h-gr", CGEN_ASM_KEYWORD, (PTR) & fr30_cgen_opval_h_gr, { 0, 0|(1<<CGEN_HW_CACHE_ADDR)|(1<<CGEN_HW_PROFILE), { 0 } } },
380 { HW_H_CR, & HW_ENT (HW_H_CR + 1), "h-cr", CGEN_ASM_KEYWORD, (PTR) & fr30_cgen_opval_h_cr, { 0, 0, { 0 } } },
381 { HW_H_DR, & HW_ENT (HW_H_DR + 1), "h-dr", CGEN_ASM_KEYWORD, (PTR) & fr30_cgen_opval_h_dr, { 0, 0|(1<<CGEN_HW_FUN_ACCESS), { 0 } } },
382 { HW_H_PS, & HW_ENT (HW_H_PS + 1), "h-ps", CGEN_ASM_KEYWORD, (PTR) & fr30_cgen_opval_h_ps, { 0, 0|(1<<CGEN_HW_FUN_ACCESS), { 0 } } },
383 { HW_H_R13, & HW_ENT (HW_H_R13 + 1), "h-r13", CGEN_ASM_KEYWORD, (PTR) & fr30_cgen_opval_h_r13, { 0, 0, { 0 } } },
384 { HW_H_R14, & HW_ENT (HW_H_R14 + 1), "h-r14", CGEN_ASM_KEYWORD, (PTR) & fr30_cgen_opval_h_r14, { 0, 0, { 0 } } },
385 { HW_H_R15, & HW_ENT (HW_H_R15 + 1), "h-r15", CGEN_ASM_KEYWORD, (PTR) & fr30_cgen_opval_h_r15, { 0, 0, { 0 } } },
386 { HW_H_NBIT, & HW_ENT (HW_H_NBIT + 1), "h-nbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
387 { HW_H_ZBIT, & HW_ENT (HW_H_ZBIT + 1), "h-zbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
388 { HW_H_VBIT, & HW_ENT (HW_H_VBIT + 1), "h-vbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
389 { HW_H_CBIT, & HW_ENT (HW_H_CBIT + 1), "h-cbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
390 { HW_H_IBIT, & HW_ENT (HW_H_IBIT + 1), "h-ibit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
391 { HW_H_SBIT, & HW_ENT (HW_H_SBIT + 1), "h-sbit", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0, { 0 } } },
392 { HW_H_CCR, & HW_ENT (HW_H_CCR + 1), "h-ccr", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0|(1<<CGEN_HW_FUN_ACCESS), { 0 } } },
393 { HW_H_SCR, & HW_ENT (HW_H_SCR + 1), "h-scr", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0|(1<<CGEN_HW_FUN_ACCESS), { 0 } } },
394 { HW_H_ILM, & HW_ENT (HW_H_ILM + 1), "h-ilm", CGEN_ASM_KEYWORD, (PTR) 0, { 0, 0|(1<<CGEN_HW_FUN_ACCESS), { 0 } } },
395 { 0 }
396 };
397
398 /* The instruction field table. */
399
400 static const CGEN_IFLD fr30_cgen_ifld_table[] =
401 {
402 { FR30_F_NIL, "f-nil", 0, 0, 0, 0, { 0, 0, { 0 } } },
403 { FR30_F_OP1, "f-op1", 0, 16, 0, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
404 { FR30_F_OP2, "f-op2", 0, 16, 4, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
405 { FR30_F_OP3, "f-op3", 0, 16, 8, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
406 { FR30_F_OP4, "f-op4", 0, 16, 12, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
407 { FR30_F_OP5, "f-op5", 0, 16, 4, 1, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
408 { FR30_F_CC, "f-cc", 0, 16, 4, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
409 { FR30_F_CCC, "f-ccc", 16, 16, 0, 8, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
410 { FR30_F_RJ, "f-Rj", 0, 16, 8, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
411 { FR30_F_RI, "f-Ri", 0, 16, 12, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
412 { FR30_F_RS1, "f-Rs1", 0, 16, 8, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
413 { FR30_F_RS2, "f-Rs2", 0, 16, 12, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
414 { FR30_F_RJC, "f-Rjc", 16, 16, 8, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
415 { FR30_F_RIC, "f-Ric", 16, 16, 12, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
416 { FR30_F_CRJ, "f-CRj", 16, 16, 8, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
417 { FR30_F_CRI, "f-CRi", 16, 16, 12, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
418 { FR30_F_U4, "f-u4", 0, 16, 8, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
419 { FR30_F_U4C, "f-u4c", 0, 16, 12, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
420 { FR30_F_I4, "f-i4", 0, 16, 8, 4, { 0, 0|(1<<CGEN_IFLD_SIGNED), { 0 } } },
421 { FR30_F_M4, "f-m4", 0, 16, 8, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
422 { FR30_F_U8, "f-u8", 0, 16, 8, 8, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
423 { FR30_F_I8, "f-i8", 0, 16, 4, 8, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
424 { FR30_F_I20_4, "f-i20-4", 0, 16, 8, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
425 { FR30_F_I20_16, "f-i20-16", 16, 16, 0, 16, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
426 { FR30_F_I32, "f-i32", 16, 32, 0, 32, { 0, 0|(1<<CGEN_IFLD_SIGN_OPT)|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
427 { FR30_F_UDISP6, "f-udisp6", 0, 16, 8, 4, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
428 { FR30_F_DISP8, "f-disp8", 0, 16, 4, 8, { 0, 0|(1<<CGEN_IFLD_SIGNED), { 0 } } },
429 { FR30_F_DISP9, "f-disp9", 0, 16, 4, 8, { 0, 0|(1<<CGEN_IFLD_SIGNED), { 0 } } },
430 { FR30_F_DISP10, "f-disp10", 0, 16, 4, 8, { 0, 0|(1<<CGEN_IFLD_SIGNED), { 0 } } },
431 { FR30_F_S10, "f-s10", 0, 16, 8, 8, { 0, 0|(1<<CGEN_IFLD_SIGNED), { 0 } } },
432 { FR30_F_U10, "f-u10", 0, 16, 8, 8, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
433 { FR30_F_REL9, "f-rel9", 0, 16, 8, 8, { 0, 0|(1<<CGEN_IFLD_PCREL_ADDR)|(1<<CGEN_IFLD_SIGNED), { 0 } } },
434 { FR30_F_DIR8, "f-dir8", 0, 16, 8, 8, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
435 { FR30_F_DIR9, "f-dir9", 0, 16, 8, 8, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
436 { FR30_F_DIR10, "f-dir10", 0, 16, 8, 8, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
437 { FR30_F_REL12, "f-rel12", 0, 16, 5, 11, { 0, 0|(1<<CGEN_IFLD_PCREL_ADDR)|(1<<CGEN_IFLD_SIGNED), { 0 } } },
438 { FR30_F_REGLIST_HI_ST, "f-reglist_hi_st", 0, 16, 8, 8, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
439 { FR30_F_REGLIST_LOW_ST, "f-reglist_low_st", 0, 16, 8, 8, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
440 { FR30_F_REGLIST_HI_LD, "f-reglist_hi_ld", 0, 16, 8, 8, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
441 { FR30_F_REGLIST_LOW_LD, "f-reglist_low_ld", 0, 16, 8, 8, { 0, 0|(1<<CGEN_IFLD_UNSIGNED), { 0 } } },
442 { 0 }
443 };
444
445 /* The operand table. */
446
447 #define OPERAND(op) CONCAT2 (FR30_OPERAND_,op)
448 #define OP_ENT(op) fr30_cgen_operand_table[OPERAND (op)]
449
450 const CGEN_OPERAND fr30_cgen_operand_table[MAX_OPERANDS] =
451 {
452 /* pc: program counter */
453 { "pc", & HW_ENT (HW_H_PC), 0, 0,
454 { 0, 0|(1<<CGEN_OPERAND_SEM_ONLY), { 0 } } },
455 /* Ri: destination register */
456 { "Ri", & HW_ENT (HW_H_GR), 12, 4,
457 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
458 /* Rj: source register */
459 { "Rj", & HW_ENT (HW_H_GR), 8, 4,
460 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
461 /* Ric: target register coproc insn */
462 { "Ric", & HW_ENT (HW_H_GR), 12, 4,
463 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
464 /* Rjc: source register coproc insn */
465 { "Rjc", & HW_ENT (HW_H_GR), 8, 4,
466 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
467 /* CRi: coprocessor register */
468 { "CRi", & HW_ENT (HW_H_CR), 12, 4,
469 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
470 /* CRj: coprocessor register */
471 { "CRj", & HW_ENT (HW_H_CR), 8, 4,
472 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
473 /* Rs1: dedicated register */
474 { "Rs1", & HW_ENT (HW_H_DR), 8, 4,
475 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
476 /* Rs2: dedicated register */
477 { "Rs2", & HW_ENT (HW_H_DR), 12, 4,
478 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
479 /* R13: General Register 13 */
480 { "R13", & HW_ENT (HW_H_R13), 0, 0,
481 { 0, 0, { 0 } } },
482 /* R14: General Register 14 */
483 { "R14", & HW_ENT (HW_H_R14), 0, 0,
484 { 0, 0, { 0 } } },
485 /* R15: General Register 15 */
486 { "R15", & HW_ENT (HW_H_R15), 0, 0,
487 { 0, 0, { 0 } } },
488 /* ps: Program Status register */
489 { "ps", & HW_ENT (HW_H_PS), 0, 0,
490 { 0, 0, { 0 } } },
491 /* u4: 4 bit unsigned immediate */
492 { "u4", & HW_ENT (HW_H_UINT), 8, 4,
493 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
494 /* u4c: 4 bit unsigned immediate */
495 { "u4c", & HW_ENT (HW_H_UINT), 12, 4,
496 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
497 /* u8: 8 bit unsigned immediate */
498 { "u8", & HW_ENT (HW_H_UINT), 8, 8,
499 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
500 /* i8: 8 bit unsigned immediate */
501 { "i8", & HW_ENT (HW_H_UINT), 4, 8,
502 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
503 /* udisp6: 6 bit unsigned immediate */
504 { "udisp6", & HW_ENT (HW_H_UINT), 8, 4,
505 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
506 /* disp8: 8 bit signed immediate */
507 { "disp8", & HW_ENT (HW_H_SINT), 4, 8,
508 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_SIGNED), { 0 } } },
509 /* disp9: 9 bit signed immediate */
510 { "disp9", & HW_ENT (HW_H_SINT), 4, 8,
511 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_SIGNED), { 0 } } },
512 /* disp10: 10 bit signed immediate */
513 { "disp10", & HW_ENT (HW_H_SINT), 4, 8,
514 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_SIGNED), { 0 } } },
515 /* s10: 10 bit signed immediate */
516 { "s10", & HW_ENT (HW_H_SINT), 8, 8,
517 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_SIGNED), { 0 } } },
518 /* u10: 10 bit unsigned immediate */
519 { "u10", & HW_ENT (HW_H_UINT), 8, 8,
520 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
521 /* i32: 32 bit immediate */
522 { "i32", & HW_ENT (HW_H_UINT), 0, 32,
523 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_SIGN_OPT)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
524 /* m4: 4 bit negative immediate */
525 { "m4", & HW_ENT (HW_H_SINT), 8, 4,
526 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
527 /* i20: 20 bit immediate */
528 { "i20", & HW_ENT (HW_H_UINT), 0, 20,
529 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED)|(1<<CGEN_OPERAND_VIRTUAL), { 0 } } },
530 /* dir8: 8 bit direct address */
531 { "dir8", & HW_ENT (HW_H_UINT), 8, 8,
532 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
533 /* dir9: 9 bit direct address */
534 { "dir9", & HW_ENT (HW_H_UINT), 8, 8,
535 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
536 /* dir10: 10 bit direct address */
537 { "dir10", & HW_ENT (HW_H_UINT), 8, 8,
538 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
539 /* label9: 9 bit pc relative address */
540 { "label9", & HW_ENT (HW_H_IADDR), 8, 8,
541 { 0, 0|(1<<CGEN_OPERAND_PCREL_ADDR)|(1<<CGEN_OPERAND_SIGNED), { 0 } } },
542 /* label12: 12 bit pc relative address */
543 { "label12", & HW_ENT (HW_H_IADDR), 5, 11,
544 { 0, 0|(1<<CGEN_OPERAND_PCREL_ADDR)|(1<<CGEN_OPERAND_SIGNED), { 0 } } },
545 /* reglist_low_ld: 8 bit register mask for ldm */
546 { "reglist_low_ld", & HW_ENT (HW_H_UINT), 8, 8,
547 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
548 /* reglist_hi_ld: 8 bit register mask for ldm */
549 { "reglist_hi_ld", & HW_ENT (HW_H_UINT), 8, 8,
550 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
551 /* reglist_low_st: 8 bit register mask for ldm */
552 { "reglist_low_st", & HW_ENT (HW_H_UINT), 8, 8,
553 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
554 /* reglist_hi_st: 8 bit register mask for ldm */
555 { "reglist_hi_st", & HW_ENT (HW_H_UINT), 8, 8,
556 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
557 /* cc: condition codes */
558 { "cc", & HW_ENT (HW_H_UINT), 4, 4,
559 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
560 /* ccc: coprocessor calc */
561 { "ccc", & HW_ENT (HW_H_UINT), 0, 8,
562 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
563 /* nbit: negative bit */
564 { "nbit", & HW_ENT (HW_H_NBIT), 0, 0,
565 { 0, 0|(1<<CGEN_OPERAND_SEM_ONLY), { 0 } } },
566 /* vbit: overflow bit */
567 { "vbit", & HW_ENT (HW_H_VBIT), 0, 0,
568 { 0, 0|(1<<CGEN_OPERAND_SEM_ONLY), { 0 } } },
569 /* zbit: zero bit */
570 { "zbit", & HW_ENT (HW_H_ZBIT), 0, 0,
571 { 0, 0|(1<<CGEN_OPERAND_SEM_ONLY), { 0 } } },
572 /* cbit: carry bit */
573 { "cbit", & HW_ENT (HW_H_CBIT), 0, 0,
574 { 0, 0|(1<<CGEN_OPERAND_SEM_ONLY), { 0 } } },
575 /* ibit: interrupt bit */
576 { "ibit", & HW_ENT (HW_H_IBIT), 0, 0,
577 { 0, 0|(1<<CGEN_OPERAND_SEM_ONLY), { 0 } } },
578 /* sbit: stack bit */
579 { "sbit", & HW_ENT (HW_H_SBIT), 0, 0,
580 { 0, 0|(1<<CGEN_OPERAND_SEM_ONLY), { 0 } } },
581 /* ccr: condition code bits */
582 { "ccr", & HW_ENT (HW_H_CCR), 0, 0,
583 { 0, 0|(1<<CGEN_OPERAND_SEM_ONLY), { 0 } } },
584 /* scr: system condition bits */
585 { "scr", & HW_ENT (HW_H_SCR), 0, 0,
586 { 0, 0|(1<<CGEN_OPERAND_SEM_ONLY), { 0 } } },
587 /* ilm: condition code bits */
588 { "ilm", & HW_ENT (HW_H_ILM), 0, 0,
589 { 0, 0|(1<<CGEN_OPERAND_SEM_ONLY), { 0 } } },
590 };
591
592 /* Operand references. */
593
594 #define INPUT CGEN_OPERAND_INSTANCE_INPUT
595 #define OUTPUT CGEN_OPERAND_INSTANCE_OUTPUT
596 #define COND_REF CGEN_OPERAND_INSTANCE_COND_REF
597
598 static const CGEN_OPERAND_INSTANCE fmt_add_ops[] = {
599 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
600 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
601 { OUTPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
602 { OUTPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, 0 },
603 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
604 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
605 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
606 { 0 }
607 };
608
609 static const CGEN_OPERAND_INSTANCE fmt_addi_ops[] = {
610 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
611 { INPUT, "u4", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (U4), 0, 0 },
612 { OUTPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
613 { OUTPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, 0 },
614 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
615 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
616 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
617 { 0 }
618 };
619
620 static const CGEN_OPERAND_INSTANCE fmt_add2_ops[] = {
621 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
622 { INPUT, "m4", & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (M4), 0, 0 },
623 { OUTPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
624 { OUTPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, 0 },
625 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
626 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
627 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
628 { 0 }
629 };
630
631 static const CGEN_OPERAND_INSTANCE fmt_addc_ops[] = {
632 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
633 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
634 { INPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, 0 },
635 { OUTPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
636 { OUTPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, 0 },
637 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
638 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
639 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
640 { 0 }
641 };
642
643 static const CGEN_OPERAND_INSTANCE fmt_addn_ops[] = {
644 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
645 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
646 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
647 { 0 }
648 };
649
650 static const CGEN_OPERAND_INSTANCE fmt_addni_ops[] = {
651 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
652 { INPUT, "u4", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (U4), 0, 0 },
653 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
654 { 0 }
655 };
656
657 static const CGEN_OPERAND_INSTANCE fmt_addn2_ops[] = {
658 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
659 { INPUT, "m4", & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (M4), 0, 0 },
660 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
661 { 0 }
662 };
663
664 static const CGEN_OPERAND_INSTANCE fmt_cmp_ops[] = {
665 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
666 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
667 { OUTPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
668 { OUTPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, 0 },
669 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
670 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
671 { 0 }
672 };
673
674 static const CGEN_OPERAND_INSTANCE fmt_cmpi_ops[] = {
675 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
676 { INPUT, "u4", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (U4), 0, 0 },
677 { OUTPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
678 { OUTPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, 0 },
679 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
680 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
681 { 0 }
682 };
683
684 static const CGEN_OPERAND_INSTANCE fmt_cmp2_ops[] = {
685 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
686 { INPUT, "m4", & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (M4), 0, 0 },
687 { OUTPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
688 { OUTPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, 0 },
689 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
690 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
691 { 0 }
692 };
693
694 static const CGEN_OPERAND_INSTANCE fmt_and_ops[] = {
695 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
696 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
697 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
698 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
699 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
700 { 0 }
701 };
702
703 static const CGEN_OPERAND_INSTANCE fmt_andm_ops[] = {
704 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RI), 0, 0 },
705 { INPUT, "h_memory_Ri", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
706 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
707 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
708 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
709 { OUTPUT, "h_memory_Ri", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
710 { 0 }
711 };
712
713 static const CGEN_OPERAND_INSTANCE fmt_andh_ops[] = {
714 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RI), 0, 0 },
715 { INPUT, "h_memory_Ri", & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0, 0 },
716 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_HI, & OP_ENT (RJ), 0, 0 },
717 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
718 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
719 { OUTPUT, "h_memory_Ri", & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0, 0 },
720 { 0 }
721 };
722
723 static const CGEN_OPERAND_INSTANCE fmt_andb_ops[] = {
724 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RI), 0, 0 },
725 { INPUT, "h_memory_Ri", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
726 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_QI, & OP_ENT (RJ), 0, 0 },
727 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
728 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
729 { OUTPUT, "h_memory_Ri", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
730 { 0 }
731 };
732
733 static const CGEN_OPERAND_INSTANCE fmt_bandl_ops[] = {
734 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RI), 0, 0 },
735 { INPUT, "u4", & HW_ENT (HW_H_UINT), CGEN_MODE_QI, & OP_ENT (U4), 0, 0 },
736 { INPUT, "h_memory_Ri", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
737 { OUTPUT, "h_memory_Ri", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
738 { 0 }
739 };
740
741 static const CGEN_OPERAND_INSTANCE fmt_btstl_ops[] = {
742 { INPUT, "u4", & HW_ENT (HW_H_UINT), CGEN_MODE_QI, & OP_ENT (U4), 0, 0 },
743 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RI), 0, 0 },
744 { INPUT, "h_memory_Ri", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
745 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
746 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
747 { 0 }
748 };
749
750 static const CGEN_OPERAND_INSTANCE fmt_mul_ops[] = {
751 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
752 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
753 { INPUT, "h_dr_5", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 5, 0 },
754 { OUTPUT, "h_dr_5", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 5, 0 },
755 { OUTPUT, "h_dr_4", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 4, 0 },
756 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
757 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
758 { OUTPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
759 { 0 }
760 };
761
762 static const CGEN_OPERAND_INSTANCE fmt_mulu_ops[] = {
763 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
764 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
765 { INPUT, "h_dr_4", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 4, 0 },
766 { INPUT, "h_dr_5", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 5, 0 },
767 { OUTPUT, "h_dr_5", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 5, 0 },
768 { OUTPUT, "h_dr_4", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 4, 0 },
769 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
770 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
771 { OUTPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
772 { 0 }
773 };
774
775 static const CGEN_OPERAND_INSTANCE fmt_mulh_ops[] = {
776 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
777 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
778 { INPUT, "h_dr_5", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 5, 0 },
779 { OUTPUT, "h_dr_5", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 5, 0 },
780 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
781 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
782 { 0 }
783 };
784
785 static const CGEN_OPERAND_INSTANCE fmt_lsl_ops[] = {
786 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
787 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, COND_REF },
788 { OUTPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, COND_REF },
789 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, COND_REF },
790 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
791 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
792 { 0 }
793 };
794
795 static const CGEN_OPERAND_INSTANCE fmt_lsli_ops[] = {
796 { INPUT, "u4", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (U4), 0, 0 },
797 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, COND_REF },
798 { OUTPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, COND_REF },
799 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, COND_REF },
800 { OUTPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
801 { OUTPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
802 { 0 }
803 };
804
805 static const CGEN_OPERAND_INSTANCE fmt_ldi8_ops[] = {
806 { INPUT, "i8", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (I8), 0, 0 },
807 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
808 { 0 }
809 };
810
811 static const CGEN_OPERAND_INSTANCE fmt_ldi20_ops[] = {
812 { INPUT, "i20", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (I20), 0, 0 },
813 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
814 { 0 }
815 };
816
817 static const CGEN_OPERAND_INSTANCE fmt_ldi32_ops[] = {
818 { INPUT, "i32", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (I32), 0, 0 },
819 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
820 { 0 }
821 };
822
823 static const CGEN_OPERAND_INSTANCE fmt_ld_ops[] = {
824 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RJ), 0, 0 },
825 { INPUT, "h_memory_Rj", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
826 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
827 { 0 }
828 };
829
830 static const CGEN_OPERAND_INSTANCE fmt_lduh_ops[] = {
831 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RJ), 0, 0 },
832 { INPUT, "h_memory_Rj", & HW_ENT (HW_H_MEMORY), CGEN_MODE_UHI, 0, 0, 0 },
833 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
834 { 0 }
835 };
836
837 static const CGEN_OPERAND_INSTANCE fmt_ldub_ops[] = {
838 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RJ), 0, 0 },
839 { INPUT, "h_memory_Rj", & HW_ENT (HW_H_MEMORY), CGEN_MODE_UQI, 0, 0, 0 },
840 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
841 { 0 }
842 };
843
844 static const CGEN_OPERAND_INSTANCE fmt_ldr13_ops[] = {
845 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
846 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
847 { INPUT, "h_memory_add__VM_Rj_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
848 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
849 { 0 }
850 };
851
852 static const CGEN_OPERAND_INSTANCE fmt_ldr13uh_ops[] = {
853 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
854 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
855 { INPUT, "h_memory_add__VM_Rj_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_UHI, 0, 0, 0 },
856 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
857 { 0 }
858 };
859
860 static const CGEN_OPERAND_INSTANCE fmt_ldr13ub_ops[] = {
861 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
862 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
863 { INPUT, "h_memory_add__VM_Rj_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_UQI, 0, 0, 0 },
864 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
865 { 0 }
866 };
867
868 static const CGEN_OPERAND_INSTANCE fmt_ldr14_ops[] = {
869 { INPUT, "disp10", & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (DISP10), 0, 0 },
870 { INPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, 0 },
871 { INPUT, "h_memory_add__VM_disp10_reg__VM_h_gr_14", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
872 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
873 { 0 }
874 };
875
876 static const CGEN_OPERAND_INSTANCE fmt_ldr14uh_ops[] = {
877 { INPUT, "disp9", & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (DISP9), 0, 0 },
878 { INPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, 0 },
879 { INPUT, "h_memory_add__VM_disp9_reg__VM_h_gr_14", & HW_ENT (HW_H_MEMORY), CGEN_MODE_UHI, 0, 0, 0 },
880 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
881 { 0 }
882 };
883
884 static const CGEN_OPERAND_INSTANCE fmt_ldr14ub_ops[] = {
885 { INPUT, "disp8", & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (DISP8), 0, 0 },
886 { INPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, 0 },
887 { INPUT, "h_memory_add__VM_disp8_reg__VM_h_gr_14", & HW_ENT (HW_H_MEMORY), CGEN_MODE_UQI, 0, 0, 0 },
888 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
889 { 0 }
890 };
891
892 static const CGEN_OPERAND_INSTANCE fmt_ldr15_ops[] = {
893 { INPUT, "udisp6", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (UDISP6), 0, 0 },
894 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
895 { INPUT, "h_memory_add__VM_udisp6_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
896 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
897 { 0 }
898 };
899
900 static const CGEN_OPERAND_INSTANCE fmt_ldr15gr_ops[] = {
901 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
902 { INPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
903 { INPUT, "f_Ri", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, 0, 0, COND_REF },
904 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
905 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, COND_REF },
906 { 0 }
907 };
908
909 static const CGEN_OPERAND_INSTANCE fmt_ldr15dr_ops[] = {
910 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
911 { INPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
912 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
913 { OUTPUT, "Rs2", & HW_ENT (HW_H_DR), CGEN_MODE_SI, & OP_ENT (RS2), 0, 0 },
914 { 0 }
915 };
916
917 static const CGEN_OPERAND_INSTANCE fmt_ldr15ps_ops[] = {
918 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
919 { INPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
920 { OUTPUT, "ps", & HW_ENT (HW_H_PS), CGEN_MODE_USI, 0, 0, 0 },
921 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
922 { 0 }
923 };
924
925 static const CGEN_OPERAND_INSTANCE fmt_st_ops[] = {
926 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RJ), 0, 0 },
927 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
928 { OUTPUT, "h_memory_Rj", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
929 { 0 }
930 };
931
932 static const CGEN_OPERAND_INSTANCE fmt_sth_ops[] = {
933 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RJ), 0, 0 },
934 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
935 { OUTPUT, "h_memory_Rj", & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0, 0 },
936 { 0 }
937 };
938
939 static const CGEN_OPERAND_INSTANCE fmt_stb_ops[] = {
940 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RJ), 0, 0 },
941 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
942 { OUTPUT, "h_memory_Rj", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
943 { 0 }
944 };
945
946 static const CGEN_OPERAND_INSTANCE fmt_str13_ops[] = {
947 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
948 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
949 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
950 { OUTPUT, "h_memory_add__VM_Rj_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
951 { 0 }
952 };
953
954 static const CGEN_OPERAND_INSTANCE fmt_str13h_ops[] = {
955 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
956 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
957 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
958 { OUTPUT, "h_memory_add__VM_Rj_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0, 0 },
959 { 0 }
960 };
961
962 static const CGEN_OPERAND_INSTANCE fmt_str13b_ops[] = {
963 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
964 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
965 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
966 { OUTPUT, "h_memory_add__VM_Rj_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
967 { 0 }
968 };
969
970 static const CGEN_OPERAND_INSTANCE fmt_str14_ops[] = {
971 { INPUT, "disp10", & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (DISP10), 0, 0 },
972 { INPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, 0 },
973 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
974 { OUTPUT, "h_memory_add__VM_disp10_reg__VM_h_gr_14", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
975 { 0 }
976 };
977
978 static const CGEN_OPERAND_INSTANCE fmt_str14h_ops[] = {
979 { INPUT, "disp9", & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (DISP9), 0, 0 },
980 { INPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, 0 },
981 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
982 { OUTPUT, "h_memory_add__VM_disp9_reg__VM_h_gr_14", & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0, 0 },
983 { 0 }
984 };
985
986 static const CGEN_OPERAND_INSTANCE fmt_str14b_ops[] = {
987 { INPUT, "disp8", & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (DISP8), 0, 0 },
988 { INPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, 0 },
989 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
990 { OUTPUT, "h_memory_add__VM_disp8_reg__VM_h_gr_14", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
991 { 0 }
992 };
993
994 static const CGEN_OPERAND_INSTANCE fmt_str15_ops[] = {
995 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
996 { INPUT, "udisp6", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (UDISP6), 0, 0 },
997 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
998 { OUTPUT, "h_memory_add__VM_reg__VM_h_gr_15_udisp6", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
999 { 0 }
1000 };
1001
1002 static const CGEN_OPERAND_INSTANCE fmt_str15gr_ops[] = {
1003 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1004 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1005 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1006 { OUTPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1007 { 0 }
1008 };
1009
1010 static const CGEN_OPERAND_INSTANCE fmt_str15dr_ops[] = {
1011 { INPUT, "Rs2", & HW_ENT (HW_H_DR), CGEN_MODE_SI, & OP_ENT (RS2), 0, 0 },
1012 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1013 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1014 { OUTPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1015 { 0 }
1016 };
1017
1018 static const CGEN_OPERAND_INSTANCE fmt_str15ps_ops[] = {
1019 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1020 { INPUT, "ps", & HW_ENT (HW_H_PS), CGEN_MODE_USI, 0, 0, 0 },
1021 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1022 { OUTPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1023 { 0 }
1024 };
1025
1026 static const CGEN_OPERAND_INSTANCE fmt_mov_ops[] = {
1027 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RJ), 0, 0 },
1028 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1029 { 0 }
1030 };
1031
1032 static const CGEN_OPERAND_INSTANCE fmt_movdr_ops[] = {
1033 { INPUT, "Rs1", & HW_ENT (HW_H_DR), CGEN_MODE_SI, & OP_ENT (RS1), 0, 0 },
1034 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1035 { 0 }
1036 };
1037
1038 static const CGEN_OPERAND_INSTANCE fmt_movps_ops[] = {
1039 { INPUT, "ps", & HW_ENT (HW_H_PS), CGEN_MODE_USI, 0, 0, 0 },
1040 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1041 { 0 }
1042 };
1043
1044 static const CGEN_OPERAND_INSTANCE fmt_mov2dr_ops[] = {
1045 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1046 { OUTPUT, "Rs1", & HW_ENT (HW_H_DR), CGEN_MODE_SI, & OP_ENT (RS1), 0, 0 },
1047 { 0 }
1048 };
1049
1050 static const CGEN_OPERAND_INSTANCE fmt_mov2ps_ops[] = {
1051 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1052 { OUTPUT, "ps", & HW_ENT (HW_H_PS), CGEN_MODE_USI, 0, 0, 0 },
1053 { 0 }
1054 };
1055
1056 static const CGEN_OPERAND_INSTANCE fmt_jmp_ops[] = {
1057 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1058 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, 0 },
1059 { 0 }
1060 };
1061
1062 static const CGEN_OPERAND_INSTANCE fmt_callr_ops[] = {
1063 { INPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, 0 },
1064 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1065 { OUTPUT, "h_dr_1", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 1, 0 },
1066 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, 0 },
1067 { 0 }
1068 };
1069
1070 static const CGEN_OPERAND_INSTANCE fmt_call_ops[] = {
1071 { INPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, 0 },
1072 { INPUT, "label12", & HW_ENT (HW_H_IADDR), CGEN_MODE_USI, & OP_ENT (LABEL12), 0, 0 },
1073 { OUTPUT, "h_dr_1", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 1, 0 },
1074 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, 0 },
1075 { 0 }
1076 };
1077
1078 static const CGEN_OPERAND_INSTANCE fmt_ret_ops[] = {
1079 { INPUT, "h_dr_1", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 1, 0 },
1080 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, 0 },
1081 { 0 }
1082 };
1083
1084 static const CGEN_OPERAND_INSTANCE fmt_int_ops[] = {
1085 { INPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_SI, 0, 0, 0 },
1086 { INPUT, "u8", & HW_ENT (HW_H_UINT), CGEN_MODE_SI, & OP_ENT (U8), 0, 0 },
1087 { OUTPUT, "h_dr_2", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 2, 0 },
1088 { OUTPUT, "ibit", & HW_ENT (HW_H_IBIT), CGEN_MODE_BI, 0, 0, 0 },
1089 { OUTPUT, "sbit", & HW_ENT (HW_H_SBIT), CGEN_MODE_BI, 0, 0, 0 },
1090 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_SI, 0, 0, 0 },
1091 { 0 }
1092 };
1093
1094 static const CGEN_OPERAND_INSTANCE fmt_inte_ops[] = {
1095 { INPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_SI, 0, 0, 0 },
1096 { OUTPUT, "h_dr_2", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 2, 0 },
1097 { OUTPUT, "ibit", & HW_ENT (HW_H_IBIT), CGEN_MODE_BI, 0, 0, 0 },
1098 { OUTPUT, "ilm", & HW_ENT (HW_H_ILM), CGEN_MODE_UQI, 0, 0, 0 },
1099 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_SI, 0, 0, 0 },
1100 { 0 }
1101 };
1102
1103 static const CGEN_OPERAND_INSTANCE fmt_reti_ops[] = {
1104 { INPUT, "sbit", & HW_ENT (HW_H_SBIT), CGEN_MODE_BI, 0, 0, 0 },
1105 { INPUT, "h_dr_2", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 2, COND_REF },
1106 { INPUT, "h_memory_reg__VM_h_dr_2", & HW_ENT (HW_H_MEMORY), CGEN_MODE_USI, 0, 0, COND_REF },
1107 { INPUT, "h_dr_3", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 3, COND_REF },
1108 { INPUT, "h_memory_reg__VM_h_dr_3", & HW_ENT (HW_H_MEMORY), CGEN_MODE_USI, 0, 0, COND_REF },
1109 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, COND_REF },
1110 { OUTPUT, "h_dr_2", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 2, COND_REF },
1111 { OUTPUT, "ps", & HW_ENT (HW_H_PS), CGEN_MODE_USI, 0, 0, COND_REF },
1112 { OUTPUT, "h_dr_3", & HW_ENT (HW_H_DR), CGEN_MODE_SI, 0, 3, COND_REF },
1113 { 0 }
1114 };
1115
1116 static const CGEN_OPERAND_INSTANCE fmt_bra_ops[] = {
1117 { INPUT, "label9", & HW_ENT (HW_H_IADDR), CGEN_MODE_USI, & OP_ENT (LABEL9), 0, COND_REF },
1118 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, COND_REF },
1119 { 0 }
1120 };
1121
1122 static const CGEN_OPERAND_INSTANCE fmt_beq_ops[] = {
1123 { INPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
1124 { INPUT, "label9", & HW_ENT (HW_H_IADDR), CGEN_MODE_USI, & OP_ENT (LABEL9), 0, COND_REF },
1125 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, COND_REF },
1126 { 0 }
1127 };
1128
1129 static const CGEN_OPERAND_INSTANCE fmt_bc_ops[] = {
1130 { INPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, 0 },
1131 { INPUT, "label9", & HW_ENT (HW_H_IADDR), CGEN_MODE_USI, & OP_ENT (LABEL9), 0, COND_REF },
1132 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, COND_REF },
1133 { 0 }
1134 };
1135
1136 static const CGEN_OPERAND_INSTANCE fmt_bn_ops[] = {
1137 { INPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
1138 { INPUT, "label9", & HW_ENT (HW_H_IADDR), CGEN_MODE_USI, & OP_ENT (LABEL9), 0, COND_REF },
1139 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, COND_REF },
1140 { 0 }
1141 };
1142
1143 static const CGEN_OPERAND_INSTANCE fmt_bv_ops[] = {
1144 { INPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
1145 { INPUT, "label9", & HW_ENT (HW_H_IADDR), CGEN_MODE_USI, & OP_ENT (LABEL9), 0, COND_REF },
1146 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, COND_REF },
1147 { 0 }
1148 };
1149
1150 static const CGEN_OPERAND_INSTANCE fmt_blt_ops[] = {
1151 { INPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
1152 { INPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
1153 { INPUT, "label9", & HW_ENT (HW_H_IADDR), CGEN_MODE_USI, & OP_ENT (LABEL9), 0, COND_REF },
1154 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, COND_REF },
1155 { 0 }
1156 };
1157
1158 static const CGEN_OPERAND_INSTANCE fmt_ble_ops[] = {
1159 { INPUT, "vbit", & HW_ENT (HW_H_VBIT), CGEN_MODE_BI, 0, 0, 0 },
1160 { INPUT, "nbit", & HW_ENT (HW_H_NBIT), CGEN_MODE_BI, 0, 0, 0 },
1161 { INPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
1162 { INPUT, "label9", & HW_ENT (HW_H_IADDR), CGEN_MODE_USI, & OP_ENT (LABEL9), 0, COND_REF },
1163 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, COND_REF },
1164 { 0 }
1165 };
1166
1167 static const CGEN_OPERAND_INSTANCE fmt_bls_ops[] = {
1168 { INPUT, "cbit", & HW_ENT (HW_H_CBIT), CGEN_MODE_BI, 0, 0, 0 },
1169 { INPUT, "zbit", & HW_ENT (HW_H_ZBIT), CGEN_MODE_BI, 0, 0, 0 },
1170 { INPUT, "label9", & HW_ENT (HW_H_IADDR), CGEN_MODE_USI, & OP_ENT (LABEL9), 0, COND_REF },
1171 { OUTPUT, "pc", & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0, COND_REF },
1172 { 0 }
1173 };
1174
1175 static const CGEN_OPERAND_INSTANCE fmt_dmovr13_ops[] = {
1176 { INPUT, "dir10", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR10), 0, 0 },
1177 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1178 { OUTPUT, "h_memory_dir10", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1179 { 0 }
1180 };
1181
1182 static const CGEN_OPERAND_INSTANCE fmt_dmovr13h_ops[] = {
1183 { INPUT, "dir9", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR9), 0, 0 },
1184 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1185 { OUTPUT, "h_memory_dir9", & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0, 0 },
1186 { 0 }
1187 };
1188
1189 static const CGEN_OPERAND_INSTANCE fmt_dmovr13b_ops[] = {
1190 { INPUT, "dir8", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR8), 0, 0 },
1191 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1192 { OUTPUT, "h_memory_dir8", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
1193 { 0 }
1194 };
1195
1196 static const CGEN_OPERAND_INSTANCE fmt_dmovr13pi_ops[] = {
1197 { INPUT, "dir10", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR10), 0, 0 },
1198 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1199 { INPUT, "h_memory_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1200 { OUTPUT, "h_memory_dir10", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1201 { OUTPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1202 { 0 }
1203 };
1204
1205 static const CGEN_OPERAND_INSTANCE fmt_dmovr13pih_ops[] = {
1206 { INPUT, "dir9", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR9), 0, 0 },
1207 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1208 { INPUT, "h_memory_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0, 0 },
1209 { OUTPUT, "h_memory_dir9", & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0, 0 },
1210 { OUTPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1211 { 0 }
1212 };
1213
1214 static const CGEN_OPERAND_INSTANCE fmt_dmovr13pib_ops[] = {
1215 { INPUT, "dir8", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR8), 0, 0 },
1216 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1217 { INPUT, "h_memory_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
1218 { OUTPUT, "h_memory_dir8", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
1219 { OUTPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1220 { 0 }
1221 };
1222
1223 static const CGEN_OPERAND_INSTANCE fmt_dmovr15pi_ops[] = {
1224 { INPUT, "dir10", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR10), 0, 0 },
1225 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1226 { INPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1227 { OUTPUT, "h_memory_dir10", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1228 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1229 { 0 }
1230 };
1231
1232 static const CGEN_OPERAND_INSTANCE fmt_dmov2r13_ops[] = {
1233 { INPUT, "dir10", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR10), 0, 0 },
1234 { INPUT, "h_memory_dir10", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1235 { OUTPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1236 { 0 }
1237 };
1238
1239 static const CGEN_OPERAND_INSTANCE fmt_dmov2r13h_ops[] = {
1240 { INPUT, "dir9", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR9), 0, 0 },
1241 { INPUT, "h_memory_dir9", & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0, 0 },
1242 { OUTPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1243 { 0 }
1244 };
1245
1246 static const CGEN_OPERAND_INSTANCE fmt_dmov2r13b_ops[] = {
1247 { INPUT, "dir8", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR8), 0, 0 },
1248 { INPUT, "h_memory_dir8", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
1249 { OUTPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1250 { 0 }
1251 };
1252
1253 static const CGEN_OPERAND_INSTANCE fmt_dmov2r13pi_ops[] = {
1254 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1255 { INPUT, "dir10", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR10), 0, 0 },
1256 { INPUT, "h_memory_dir10", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1257 { OUTPUT, "h_memory_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1258 { OUTPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1259 { 0 }
1260 };
1261
1262 static const CGEN_OPERAND_INSTANCE fmt_dmov2r13pih_ops[] = {
1263 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1264 { INPUT, "dir9", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR9), 0, 0 },
1265 { INPUT, "h_memory_dir9", & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0, 0 },
1266 { OUTPUT, "h_memory_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0, 0 },
1267 { OUTPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1268 { 0 }
1269 };
1270
1271 static const CGEN_OPERAND_INSTANCE fmt_dmov2r13pib_ops[] = {
1272 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1273 { INPUT, "dir8", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR8), 0, 0 },
1274 { INPUT, "h_memory_dir8", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
1275 { OUTPUT, "h_memory_reg__VM_h_gr_13", & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0, 0 },
1276 { OUTPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, 0 },
1277 { 0 }
1278 };
1279
1280 static const CGEN_OPERAND_INSTANCE fmt_dmov2r15pd_ops[] = {
1281 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1282 { INPUT, "dir10", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (DIR10), 0, 0 },
1283 { INPUT, "h_memory_dir10", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1284 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1285 { OUTPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1286 { 0 }
1287 };
1288
1289 static const CGEN_OPERAND_INSTANCE fmt_andccr_ops[] = {
1290 { INPUT, "ccr", & HW_ENT (HW_H_CCR), CGEN_MODE_UQI, 0, 0, 0 },
1291 { INPUT, "u8", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (U8), 0, 0 },
1292 { OUTPUT, "ccr", & HW_ENT (HW_H_CCR), CGEN_MODE_UQI, 0, 0, 0 },
1293 { 0 }
1294 };
1295
1296 static const CGEN_OPERAND_INSTANCE fmt_stilm_ops[] = {
1297 { INPUT, "u8", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (U8), 0, 0 },
1298 { OUTPUT, "ilm", & HW_ENT (HW_H_ILM), CGEN_MODE_UQI, 0, 0, 0 },
1299 { 0 }
1300 };
1301
1302 static const CGEN_OPERAND_INSTANCE fmt_addsp_ops[] = {
1303 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1304 { INPUT, "s10", & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (S10), 0, 0 },
1305 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1306 { 0 }
1307 };
1308
1309 static const CGEN_OPERAND_INSTANCE fmt_extsb_ops[] = {
1310 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_QI, & OP_ENT (RI), 0, 0 },
1311 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1312 { 0 }
1313 };
1314
1315 static const CGEN_OPERAND_INSTANCE fmt_extub_ops[] = {
1316 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_UQI, & OP_ENT (RI), 0, 0 },
1317 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1318 { 0 }
1319 };
1320
1321 static const CGEN_OPERAND_INSTANCE fmt_extsh_ops[] = {
1322 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_HI, & OP_ENT (RI), 0, 0 },
1323 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1324 { 0 }
1325 };
1326
1327 static const CGEN_OPERAND_INSTANCE fmt_extuh_ops[] = {
1328 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_UHI, & OP_ENT (RI), 0, 0 },
1329 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1330 { 0 }
1331 };
1332
1333 static const CGEN_OPERAND_INSTANCE fmt_ldm0_ops[] = {
1334 { INPUT, "reglist_low_ld", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (REGLIST_LOW_LD), 0, 0 },
1335 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, COND_REF },
1336 { INPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, COND_REF },
1337 { OUTPUT, "h_gr_0", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 0, COND_REF },
1338 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, COND_REF },
1339 { OUTPUT, "h_gr_1", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 1, COND_REF },
1340 { OUTPUT, "h_gr_2", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 2, COND_REF },
1341 { OUTPUT, "h_gr_3", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 3, COND_REF },
1342 { OUTPUT, "h_gr_4", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 4, COND_REF },
1343 { OUTPUT, "h_gr_5", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 5, COND_REF },
1344 { OUTPUT, "h_gr_6", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 6, COND_REF },
1345 { OUTPUT, "h_gr_7", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 7, COND_REF },
1346 { 0 }
1347 };
1348
1349 static const CGEN_OPERAND_INSTANCE fmt_ldm1_ops[] = {
1350 { INPUT, "reglist_hi_ld", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (REGLIST_HI_LD), 0, 0 },
1351 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, COND_REF },
1352 { INPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, COND_REF },
1353 { OUTPUT, "h_gr_8", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 8, COND_REF },
1354 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, COND_REF },
1355 { OUTPUT, "h_gr_9", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 9, COND_REF },
1356 { OUTPUT, "h_gr_10", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 10, COND_REF },
1357 { OUTPUT, "h_gr_11", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 11, COND_REF },
1358 { OUTPUT, "h_gr_12", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 12, COND_REF },
1359 { OUTPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, COND_REF },
1360 { OUTPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, COND_REF },
1361 { 0 }
1362 };
1363
1364 static const CGEN_OPERAND_INSTANCE fmt_stm0_ops[] = {
1365 { INPUT, "reglist_low_st", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (REGLIST_LOW_ST), 0, 0 },
1366 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, COND_REF },
1367 { INPUT, "h_gr_7", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 7, COND_REF },
1368 { INPUT, "h_gr_6", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 6, COND_REF },
1369 { INPUT, "h_gr_5", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 5, COND_REF },
1370 { INPUT, "h_gr_4", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 4, COND_REF },
1371 { INPUT, "h_gr_3", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 3, COND_REF },
1372 { INPUT, "h_gr_2", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 2, COND_REF },
1373 { INPUT, "h_gr_1", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 1, COND_REF },
1374 { INPUT, "h_gr_0", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 0, COND_REF },
1375 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, COND_REF },
1376 { OUTPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, COND_REF },
1377 { 0 }
1378 };
1379
1380 static const CGEN_OPERAND_INSTANCE fmt_stm1_ops[] = {
1381 { INPUT, "reglist_hi_st", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (REGLIST_HI_ST), 0, 0 },
1382 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, COND_REF },
1383 { INPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, COND_REF },
1384 { INPUT, "h_gr_13", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 13, COND_REF },
1385 { INPUT, "h_gr_12", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 12, COND_REF },
1386 { INPUT, "h_gr_11", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 11, COND_REF },
1387 { INPUT, "h_gr_10", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 10, COND_REF },
1388 { INPUT, "h_gr_9", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 9, COND_REF },
1389 { INPUT, "h_gr_8", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 8, COND_REF },
1390 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, COND_REF },
1391 { OUTPUT, "h_memory_reg__VM_h_gr_15", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, COND_REF },
1392 { 0 }
1393 };
1394
1395 static const CGEN_OPERAND_INSTANCE fmt_enter_ops[] = {
1396 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1397 { INPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, 0 },
1398 { INPUT, "u10", & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (U10), 0, 0 },
1399 { OUTPUT, "h_memory_tmp", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1400 { OUTPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, 0 },
1401 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1402 { 0 }
1403 };
1404
1405 static const CGEN_OPERAND_INSTANCE fmt_leave_ops[] = {
1406 { INPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, 0 },
1407 { INPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1408 { INPUT, "h_memory_sub__VM_reg__VM_h_gr_15_const__WI_4", & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0, 0 },
1409 { OUTPUT, "h_gr_15", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 15, 0 },
1410 { OUTPUT, "h_gr_14", & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14, 0 },
1411 { 0 }
1412 };
1413
1414 static const CGEN_OPERAND_INSTANCE fmt_xchb_ops[] = {
1415 { INPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1416 { INPUT, "Rj", & HW_ENT (HW_H_GR), CGEN_MODE_USI, & OP_ENT (RJ), 0, 0 },
1417 { INPUT, "h_memory_Rj", & HW_ENT (HW_H_MEMORY), CGEN_MODE_UQI, 0, 0, 0 },
1418 { OUTPUT, "Ri", & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (RI), 0, 0 },
1419 { OUTPUT, "h_memory_Rj", & HW_ENT (HW_H_MEMORY), CGEN_MODE_UQI, 0, 0, 0 },
1420 { 0 }
1421 };
1422
1423 #undef INPUT
1424 #undef OUTPUT
1425 #undef COND_REF
1426
1427 /* Instruction formats. */
1428
1429 #define F(f) & fr30_cgen_ifld_table[CONCAT2 (FR30_,f)]
1430
1431 static const CGEN_IFMT fmt_add = {
1432 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1433 };
1434
1435 static const CGEN_IFMT fmt_addi = {
1436 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_U4), F (F_RI), 0 }
1437 };
1438
1439 static const CGEN_IFMT fmt_add2 = {
1440 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_M4), F (F_RI), 0 }
1441 };
1442
1443 static const CGEN_IFMT fmt_addc = {
1444 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1445 };
1446
1447 static const CGEN_IFMT fmt_addn = {
1448 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1449 };
1450
1451 static const CGEN_IFMT fmt_addni = {
1452 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_U4), F (F_RI), 0 }
1453 };
1454
1455 static const CGEN_IFMT fmt_addn2 = {
1456 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_M4), F (F_RI), 0 }
1457 };
1458
1459 static const CGEN_IFMT fmt_cmp = {
1460 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1461 };
1462
1463 static const CGEN_IFMT fmt_cmpi = {
1464 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_U4), F (F_RI), 0 }
1465 };
1466
1467 static const CGEN_IFMT fmt_cmp2 = {
1468 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_M4), F (F_RI), 0 }
1469 };
1470
1471 static const CGEN_IFMT fmt_and = {
1472 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1473 };
1474
1475 static const CGEN_IFMT fmt_andm = {
1476 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1477 };
1478
1479 static const CGEN_IFMT fmt_andh = {
1480 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1481 };
1482
1483 static const CGEN_IFMT fmt_andb = {
1484 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1485 };
1486
1487 static const CGEN_IFMT fmt_bandl = {
1488 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_U4), F (F_RI), 0 }
1489 };
1490
1491 static const CGEN_IFMT fmt_btstl = {
1492 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_U4), F (F_RI), 0 }
1493 };
1494
1495 static const CGEN_IFMT fmt_mul = {
1496 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1497 };
1498
1499 static const CGEN_IFMT fmt_mulu = {
1500 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1501 };
1502
1503 static const CGEN_IFMT fmt_mulh = {
1504 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1505 };
1506
1507 static const CGEN_IFMT fmt_div0s = {
1508 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1509 };
1510
1511 static const CGEN_IFMT fmt_div3 = {
1512 16, 16, 0xffff, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_OP4), 0 }
1513 };
1514
1515 static const CGEN_IFMT fmt_lsl = {
1516 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1517 };
1518
1519 static const CGEN_IFMT fmt_lsli = {
1520 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_U4), F (F_RI), 0 }
1521 };
1522
1523 static const CGEN_IFMT fmt_ldi8 = {
1524 16, 16, 0xf000, { F (F_OP1), F (F_I8), F (F_RI), 0 }
1525 };
1526
1527 static const CGEN_IFMT fmt_ldi20 = {
1528 16, 32, 0xff00, { F (F_OP1), F (F_I20), F (F_OP2), F (F_RI), 0 }
1529 };
1530
1531 static const CGEN_IFMT fmt_ldi32 = {
1532 16, 48, 0xfff0, { F (F_OP1), F (F_I32), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1533 };
1534
1535 static const CGEN_IFMT fmt_ld = {
1536 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1537 };
1538
1539 static const CGEN_IFMT fmt_lduh = {
1540 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1541 };
1542
1543 static const CGEN_IFMT fmt_ldub = {
1544 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1545 };
1546
1547 static const CGEN_IFMT fmt_ldr13 = {
1548 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1549 };
1550
1551 static const CGEN_IFMT fmt_ldr13uh = {
1552 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1553 };
1554
1555 static const CGEN_IFMT fmt_ldr13ub = {
1556 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1557 };
1558
1559 static const CGEN_IFMT fmt_ldr14 = {
1560 16, 16, 0xf000, { F (F_OP1), F (F_DISP10), F (F_RI), 0 }
1561 };
1562
1563 static const CGEN_IFMT fmt_ldr14uh = {
1564 16, 16, 0xf000, { F (F_OP1), F (F_DISP9), F (F_RI), 0 }
1565 };
1566
1567 static const CGEN_IFMT fmt_ldr14ub = {
1568 16, 16, 0xf000, { F (F_OP1), F (F_DISP8), F (F_RI), 0 }
1569 };
1570
1571 static const CGEN_IFMT fmt_ldr15 = {
1572 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_UDISP6), F (F_RI), 0 }
1573 };
1574
1575 static const CGEN_IFMT fmt_ldr15gr = {
1576 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1577 };
1578
1579 static const CGEN_IFMT fmt_ldr15dr = {
1580 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RS2), 0 }
1581 };
1582
1583 static const CGEN_IFMT fmt_ldr15ps = {
1584 16, 16, 0xffff, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_OP4), 0 }
1585 };
1586
1587 static const CGEN_IFMT fmt_st = {
1588 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1589 };
1590
1591 static const CGEN_IFMT fmt_sth = {
1592 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1593 };
1594
1595 static const CGEN_IFMT fmt_stb = {
1596 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1597 };
1598
1599 static const CGEN_IFMT fmt_str13 = {
1600 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1601 };
1602
1603 static const CGEN_IFMT fmt_str13h = {
1604 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1605 };
1606
1607 static const CGEN_IFMT fmt_str13b = {
1608 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1609 };
1610
1611 static const CGEN_IFMT fmt_str14 = {
1612 16, 16, 0xf000, { F (F_OP1), F (F_DISP10), F (F_RI), 0 }
1613 };
1614
1615 static const CGEN_IFMT fmt_str14h = {
1616 16, 16, 0xf000, { F (F_OP1), F (F_DISP9), F (F_RI), 0 }
1617 };
1618
1619 static const CGEN_IFMT fmt_str14b = {
1620 16, 16, 0xf000, { F (F_OP1), F (F_DISP8), F (F_RI), 0 }
1621 };
1622
1623 static const CGEN_IFMT fmt_str15 = {
1624 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_UDISP6), F (F_RI), 0 }
1625 };
1626
1627 static const CGEN_IFMT fmt_str15gr = {
1628 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1629 };
1630
1631 static const CGEN_IFMT fmt_str15dr = {
1632 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RS2), 0 }
1633 };
1634
1635 static const CGEN_IFMT fmt_str15ps = {
1636 16, 16, 0xffff, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_OP4), 0 }
1637 };
1638
1639 static const CGEN_IFMT fmt_mov = {
1640 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1641 };
1642
1643 static const CGEN_IFMT fmt_movdr = {
1644 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RS1), F (F_RI), 0 }
1645 };
1646
1647 static const CGEN_IFMT fmt_movps = {
1648 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1649 };
1650
1651 static const CGEN_IFMT fmt_mov2dr = {
1652 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RS1), F (F_RI), 0 }
1653 };
1654
1655 static const CGEN_IFMT fmt_mov2ps = {
1656 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1657 };
1658
1659 static const CGEN_IFMT fmt_jmp = {
1660 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1661 };
1662
1663 static const CGEN_IFMT fmt_callr = {
1664 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1665 };
1666
1667 static const CGEN_IFMT fmt_call = {
1668 16, 16, 0xf800, { F (F_OP1), F (F_OP5), F (F_REL12), 0 }
1669 };
1670
1671 static const CGEN_IFMT fmt_ret = {
1672 16, 16, 0xffff, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_OP4), 0 }
1673 };
1674
1675 static const CGEN_IFMT fmt_int = {
1676 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_U8), 0 }
1677 };
1678
1679 static const CGEN_IFMT fmt_inte = {
1680 16, 16, 0xffff, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_OP4), 0 }
1681 };
1682
1683 static const CGEN_IFMT fmt_reti = {
1684 16, 16, 0xffff, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_OP4), 0 }
1685 };
1686
1687 static const CGEN_IFMT fmt_bra = {
1688 16, 16, 0xff00, { F (F_OP1), F (F_CC), F (F_REL9), 0 }
1689 };
1690
1691 static const CGEN_IFMT fmt_beq = {
1692 16, 16, 0xff00, { F (F_OP1), F (F_CC), F (F_REL9), 0 }
1693 };
1694
1695 static const CGEN_IFMT fmt_bc = {
1696 16, 16, 0xff00, { F (F_OP1), F (F_CC), F (F_REL9), 0 }
1697 };
1698
1699 static const CGEN_IFMT fmt_bn = {
1700 16, 16, 0xff00, { F (F_OP1), F (F_CC), F (F_REL9), 0 }
1701 };
1702
1703 static const CGEN_IFMT fmt_bv = {
1704 16, 16, 0xff00, { F (F_OP1), F (F_CC), F (F_REL9), 0 }
1705 };
1706
1707 static const CGEN_IFMT fmt_blt = {
1708 16, 16, 0xff00, { F (F_OP1), F (F_CC), F (F_REL9), 0 }
1709 };
1710
1711 static const CGEN_IFMT fmt_ble = {
1712 16, 16, 0xff00, { F (F_OP1), F (F_CC), F (F_REL9), 0 }
1713 };
1714
1715 static const CGEN_IFMT fmt_bls = {
1716 16, 16, 0xff00, { F (F_OP1), F (F_CC), F (F_REL9), 0 }
1717 };
1718
1719 static const CGEN_IFMT fmt_dmovr13 = {
1720 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR10), 0 }
1721 };
1722
1723 static const CGEN_IFMT fmt_dmovr13h = {
1724 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR9), 0 }
1725 };
1726
1727 static const CGEN_IFMT fmt_dmovr13b = {
1728 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR8), 0 }
1729 };
1730
1731 static const CGEN_IFMT fmt_dmovr13pi = {
1732 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR10), 0 }
1733 };
1734
1735 static const CGEN_IFMT fmt_dmovr13pih = {
1736 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR9), 0 }
1737 };
1738
1739 static const CGEN_IFMT fmt_dmovr13pib = {
1740 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR8), 0 }
1741 };
1742
1743 static const CGEN_IFMT fmt_dmovr15pi = {
1744 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR10), 0 }
1745 };
1746
1747 static const CGEN_IFMT fmt_dmov2r13 = {
1748 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR10), 0 }
1749 };
1750
1751 static const CGEN_IFMT fmt_dmov2r13h = {
1752 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR9), 0 }
1753 };
1754
1755 static const CGEN_IFMT fmt_dmov2r13b = {
1756 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR8), 0 }
1757 };
1758
1759 static const CGEN_IFMT fmt_dmov2r13pi = {
1760 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR10), 0 }
1761 };
1762
1763 static const CGEN_IFMT fmt_dmov2r13pih = {
1764 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR9), 0 }
1765 };
1766
1767 static const CGEN_IFMT fmt_dmov2r13pib = {
1768 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR8), 0 }
1769 };
1770
1771 static const CGEN_IFMT fmt_dmov2r15pd = {
1772 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_DIR10), 0 }
1773 };
1774
1775 static const CGEN_IFMT fmt_ldres = {
1776 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_U4), F (F_RI), 0 }
1777 };
1778
1779 static const CGEN_IFMT fmt_copop = {
1780 16, 32, 0xfff0, { F (F_OP1), F (F_CCC), F (F_OP2), F (F_OP3), F (F_CRJ), F (F_U4C), F (F_CRI), 0 }
1781 };
1782
1783 static const CGEN_IFMT fmt_copld = {
1784 16, 32, 0xfff0, { F (F_OP1), F (F_CCC), F (F_OP2), F (F_OP3), F (F_RJC), F (F_U4C), F (F_CRI), 0 }
1785 };
1786
1787 static const CGEN_IFMT fmt_copst = {
1788 16, 32, 0xfff0, { F (F_OP1), F (F_CCC), F (F_OP2), F (F_OP3), F (F_CRJ), F (F_U4C), F (F_RIC), 0 }
1789 };
1790
1791 static const CGEN_IFMT fmt_andccr = {
1792 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_U8), 0 }
1793 };
1794
1795 static const CGEN_IFMT fmt_stilm = {
1796 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_U8), 0 }
1797 };
1798
1799 static const CGEN_IFMT fmt_addsp = {
1800 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_S10), 0 }
1801 };
1802
1803 static const CGEN_IFMT fmt_extsb = {
1804 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1805 };
1806
1807 static const CGEN_IFMT fmt_extub = {
1808 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1809 };
1810
1811 static const CGEN_IFMT fmt_extsh = {
1812 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1813 };
1814
1815 static const CGEN_IFMT fmt_extuh = {
1816 16, 16, 0xfff0, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_RI), 0 }
1817 };
1818
1819 static const CGEN_IFMT fmt_ldm0 = {
1820 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_REGLIST_LOW_LD), 0 }
1821 };
1822
1823 static const CGEN_IFMT fmt_ldm1 = {
1824 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_REGLIST_HI_LD), 0 }
1825 };
1826
1827 static const CGEN_IFMT fmt_stm0 = {
1828 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_REGLIST_LOW_ST), 0 }
1829 };
1830
1831 static const CGEN_IFMT fmt_stm1 = {
1832 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_REGLIST_HI_ST), 0 }
1833 };
1834
1835 static const CGEN_IFMT fmt_enter = {
1836 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_U10), 0 }
1837 };
1838
1839 static const CGEN_IFMT fmt_leave = {
1840 16, 16, 0xffff, { F (F_OP1), F (F_OP2), F (F_OP3), F (F_OP4), 0 }
1841 };
1842
1843 static const CGEN_IFMT fmt_xchb = {
1844 16, 16, 0xff00, { F (F_OP1), F (F_OP2), F (F_RJ), F (F_RI), 0 }
1845 };
1846
1847 #undef F
1848
1849 #define A(a) (1 << CONCAT2 (CGEN_INSN_,a))
1850 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
1851 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
1852
1853 /* The instruction table.
1854 This is currently non-static because the simulator accesses it
1855 directly. */
1856
1857 const CGEN_INSN fr30_cgen_insn_table_entries[MAX_INSNS] =
1858 {
1859 /* Special null first entry.
1860 A `num' value of zero is thus invalid.
1861 Also, the special `invalid' insn resides here. */
1862 { { 0 }, 0 },
1863 /* add $Rj,$Ri */
1864 {
1865 { 1, 1, 1, 1 },
1866 FR30_INSN_ADD, "add", "add",
1867 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
1868 & fmt_add, { 0xa600 },
1869 (PTR) & fmt_add_ops[0],
1870 { 0, 0, { 0 } }
1871 },
1872 /* add $u4,$Ri */
1873 {
1874 { 1, 1, 1, 1 },
1875 FR30_INSN_ADDI, "addi", "add",
1876 { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },
1877 & fmt_addi, { 0xa400 },
1878 (PTR) & fmt_addi_ops[0],
1879 { 0, 0, { 0 } }
1880 },
1881 /* add2 $m4,$Ri */
1882 {
1883 { 1, 1, 1, 1 },
1884 FR30_INSN_ADD2, "add2", "add2",
1885 { { MNEM, ' ', OP (M4), ',', OP (RI), 0 } },
1886 & fmt_add2, { 0xa500 },
1887 (PTR) & fmt_add2_ops[0],
1888 { 0, 0, { 0 } }
1889 },
1890 /* addc $Rj,$Ri */
1891 {
1892 { 1, 1, 1, 1 },
1893 FR30_INSN_ADDC, "addc", "addc",
1894 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
1895 & fmt_addc, { 0xa700 },
1896 (PTR) & fmt_addc_ops[0],
1897 { 0, 0, { 0 } }
1898 },
1899 /* addn $Rj,$Ri */
1900 {
1901 { 1, 1, 1, 1 },
1902 FR30_INSN_ADDN, "addn", "addn",
1903 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
1904 & fmt_addn, { 0xa200 },
1905 (PTR) & fmt_addn_ops[0],
1906 { 0, 0, { 0 } }
1907 },
1908 /* addn $u4,$Ri */
1909 {
1910 { 1, 1, 1, 1 },
1911 FR30_INSN_ADDNI, "addni", "addn",
1912 { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },
1913 & fmt_addni, { 0xa000 },
1914 (PTR) & fmt_addni_ops[0],
1915 { 0, 0, { 0 } }
1916 },
1917 /* addn2 $m4,$Ri */
1918 {
1919 { 1, 1, 1, 1 },
1920 FR30_INSN_ADDN2, "addn2", "addn2",
1921 { { MNEM, ' ', OP (M4), ',', OP (RI), 0 } },
1922 & fmt_addn2, { 0xa100 },
1923 (PTR) & fmt_addn2_ops[0],
1924 { 0, 0, { 0 } }
1925 },
1926 /* sub $Rj,$Ri */
1927 {
1928 { 1, 1, 1, 1 },
1929 FR30_INSN_SUB, "sub", "sub",
1930 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
1931 & fmt_add, { 0xac00 },
1932 (PTR) & fmt_add_ops[0],
1933 { 0, 0, { 0 } }
1934 },
1935 /* subc $Rj,$Ri */
1936 {
1937 { 1, 1, 1, 1 },
1938 FR30_INSN_SUBC, "subc", "subc",
1939 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
1940 & fmt_addc, { 0xad00 },
1941 (PTR) & fmt_addc_ops[0],
1942 { 0, 0, { 0 } }
1943 },
1944 /* subn $Rj,$Ri */
1945 {
1946 { 1, 1, 1, 1 },
1947 FR30_INSN_SUBN, "subn", "subn",
1948 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
1949 & fmt_addn, { 0xae00 },
1950 (PTR) & fmt_addn_ops[0],
1951 { 0, 0, { 0 } }
1952 },
1953 /* cmp $Rj,$Ri */
1954 {
1955 { 1, 1, 1, 1 },
1956 FR30_INSN_CMP, "cmp", "cmp",
1957 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
1958 & fmt_cmp, { 0xaa00 },
1959 (PTR) & fmt_cmp_ops[0],
1960 { 0, 0, { 0 } }
1961 },
1962 /* cmp $u4,$Ri */
1963 {
1964 { 1, 1, 1, 1 },
1965 FR30_INSN_CMPI, "cmpi", "cmp",
1966 { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },
1967 & fmt_cmpi, { 0xa800 },
1968 (PTR) & fmt_cmpi_ops[0],
1969 { 0, 0, { 0 } }
1970 },
1971 /* cmp2 $m4,$Ri */
1972 {
1973 { 1, 1, 1, 1 },
1974 FR30_INSN_CMP2, "cmp2", "cmp2",
1975 { { MNEM, ' ', OP (M4), ',', OP (RI), 0 } },
1976 & fmt_cmp2, { 0xa900 },
1977 (PTR) & fmt_cmp2_ops[0],
1978 { 0, 0, { 0 } }
1979 },
1980 /* and $Rj,$Ri */
1981 {
1982 { 1, 1, 1, 1 },
1983 FR30_INSN_AND, "and", "and",
1984 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
1985 & fmt_and, { 0x8200 },
1986 (PTR) & fmt_and_ops[0],
1987 { 0, 0, { 0 } }
1988 },
1989 /* or $Rj,$Ri */
1990 {
1991 { 1, 1, 1, 1 },
1992 FR30_INSN_OR, "or", "or",
1993 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
1994 & fmt_and, { 0x9200 },
1995 (PTR) & fmt_and_ops[0],
1996 { 0, 0, { 0 } }
1997 },
1998 /* eor $Rj,$Ri */
1999 {
2000 { 1, 1, 1, 1 },
2001 FR30_INSN_EOR, "eor", "eor",
2002 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
2003 & fmt_and, { 0x9a00 },
2004 (PTR) & fmt_and_ops[0],
2005 { 0, 0, { 0 } }
2006 },
2007 /* and $Rj,@$Ri */
2008 {
2009 { 1, 1, 1, 1 },
2010 FR30_INSN_ANDM, "andm", "and",
2011 { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
2012 & fmt_andm, { 0x8400 },
2013 (PTR) & fmt_andm_ops[0],
2014 { 0, 0, { 0 } }
2015 },
2016 /* andh $Rj,@$Ri */
2017 {
2018 { 1, 1, 1, 1 },
2019 FR30_INSN_ANDH, "andh", "andh",
2020 { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
2021 & fmt_andh, { 0x8500 },
2022 (PTR) & fmt_andh_ops[0],
2023 { 0, 0, { 0 } }
2024 },
2025 /* andb $Rj,@$Ri */
2026 {
2027 { 1, 1, 1, 1 },
2028 FR30_INSN_ANDB, "andb", "andb",
2029 { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
2030 & fmt_andb, { 0x8600 },
2031 (PTR) & fmt_andb_ops[0],
2032 { 0, 0, { 0 } }
2033 },
2034 /* or $Rj,@$Ri */
2035 {
2036 { 1, 1, 1, 1 },
2037 FR30_INSN_ORM, "orm", "or",
2038 { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
2039 & fmt_andm, { 0x9400 },
2040 (PTR) & fmt_andm_ops[0],
2041 { 0, 0, { 0 } }
2042 },
2043 /* orh $Rj,@$Ri */
2044 {
2045 { 1, 1, 1, 1 },
2046 FR30_INSN_ORH, "orh", "orh",
2047 { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
2048 & fmt_andh, { 0x9500 },
2049 (PTR) & fmt_andh_ops[0],
2050 { 0, 0, { 0 } }
2051 },
2052 /* orb $Rj,@$Ri */
2053 {
2054 { 1, 1, 1, 1 },
2055 FR30_INSN_ORB, "orb", "orb",
2056 { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
2057 & fmt_andb, { 0x9600 },
2058 (PTR) & fmt_andb_ops[0],
2059 { 0, 0, { 0 } }
2060 },
2061 /* eor $Rj,@$Ri */
2062 {
2063 { 1, 1, 1, 1 },
2064 FR30_INSN_EORM, "eorm", "eor",
2065 { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
2066 & fmt_andm, { 0x9c00 },
2067 (PTR) & fmt_andm_ops[0],
2068 { 0, 0, { 0 } }
2069 },
2070 /* eorh $Rj,@$Ri */
2071 {
2072 { 1, 1, 1, 1 },
2073 FR30_INSN_EORH, "eorh", "eorh",
2074 { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
2075 & fmt_andh, { 0x9d00 },
2076 (PTR) & fmt_andh_ops[0],
2077 { 0, 0, { 0 } }
2078 },
2079 /* eorb $Rj,@$Ri */
2080 {
2081 { 1, 1, 1, 1 },
2082 FR30_INSN_EORB, "eorb", "eorb",
2083 { { MNEM, ' ', OP (RJ), ',', '@', OP (RI), 0 } },
2084 & fmt_andb, { 0x9e00 },
2085 (PTR) & fmt_andb_ops[0],
2086 { 0, 0, { 0 } }
2087 },
2088 /* bandl $u4,@$Ri */
2089 {
2090 { 1, 1, 1, 1 },
2091 FR30_INSN_BANDL, "bandl", "bandl",
2092 { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
2093 & fmt_bandl, { 0x8000 },
2094 (PTR) & fmt_bandl_ops[0],
2095 { 0, 0, { 0 } }
2096 },
2097 /* borl $u4,@$Ri */
2098 {
2099 { 1, 1, 1, 1 },
2100 FR30_INSN_BORL, "borl", "borl",
2101 { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
2102 & fmt_bandl, { 0x9000 },
2103 (PTR) & fmt_bandl_ops[0],
2104 { 0, 0, { 0 } }
2105 },
2106 /* beorl $u4,@$Ri */
2107 {
2108 { 1, 1, 1, 1 },
2109 FR30_INSN_BEORL, "beorl", "beorl",
2110 { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
2111 & fmt_bandl, { 0x9800 },
2112 (PTR) & fmt_bandl_ops[0],
2113 { 0, 0, { 0 } }
2114 },
2115 /* bandh $u4,@$Ri */
2116 {
2117 { 1, 1, 1, 1 },
2118 FR30_INSN_BANDH, "bandh", "bandh",
2119 { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
2120 & fmt_bandl, { 0x8100 },
2121 (PTR) & fmt_bandl_ops[0],
2122 { 0, 0, { 0 } }
2123 },
2124 /* borh $u4,@$Ri */
2125 {
2126 { 1, 1, 1, 1 },
2127 FR30_INSN_BORH, "borh", "borh",
2128 { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
2129 & fmt_bandl, { 0x9100 },
2130 (PTR) & fmt_bandl_ops[0],
2131 { 0, 0, { 0 } }
2132 },
2133 /* beorh $u4,@$Ri */
2134 {
2135 { 1, 1, 1, 1 },
2136 FR30_INSN_BEORH, "beorh", "beorh",
2137 { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
2138 & fmt_bandl, { 0x9900 },
2139 (PTR) & fmt_bandl_ops[0],
2140 { 0, 0, { 0 } }
2141 },
2142 /* btstl $u4,@$Ri */
2143 {
2144 { 1, 1, 1, 1 },
2145 FR30_INSN_BTSTL, "btstl", "btstl",
2146 { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
2147 & fmt_btstl, { 0x8800 },
2148 (PTR) & fmt_btstl_ops[0],
2149 { 0, 0, { 0 } }
2150 },
2151 /* btsth $u4,@$Ri */
2152 {
2153 { 1, 1, 1, 1 },
2154 FR30_INSN_BTSTH, "btsth", "btsth",
2155 { { MNEM, ' ', OP (U4), ',', '@', OP (RI), 0 } },
2156 & fmt_btstl, { 0x8900 },
2157 (PTR) & fmt_btstl_ops[0],
2158 { 0, 0, { 0 } }
2159 },
2160 /* mul $Rj,$Ri */
2161 {
2162 { 1, 1, 1, 1 },
2163 FR30_INSN_MUL, "mul", "mul",
2164 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
2165 & fmt_mul, { 0xaf00 },
2166 (PTR) & fmt_mul_ops[0],
2167 { 0, 0, { 0 } }
2168 },
2169 /* mulu $Rj,$Ri */
2170 {
2171 { 1, 1, 1, 1 },
2172 FR30_INSN_MULU, "mulu", "mulu",
2173 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
2174 & fmt_mulu, { 0xab00 },
2175 (PTR) & fmt_mulu_ops[0],
2176 { 0, 0, { 0 } }
2177 },
2178 /* mulh $Rj,$Ri */
2179 {
2180 { 1, 1, 1, 1 },
2181 FR30_INSN_MULH, "mulh", "mulh",
2182 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
2183 & fmt_mulh, { 0xbf00 },
2184 (PTR) & fmt_mulh_ops[0],
2185 { 0, 0, { 0 } }
2186 },
2187 /* muluh $Rj,$Ri */
2188 {
2189 { 1, 1, 1, 1 },
2190 FR30_INSN_MULUH, "muluh", "muluh",
2191 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
2192 & fmt_mulh, { 0xbb00 },
2193 (PTR) & fmt_mulh_ops[0],
2194 { 0, 0, { 0 } }
2195 },
2196 /* div0s $Ri */
2197 {
2198 { 1, 1, 1, 1 },
2199 FR30_INSN_DIV0S, "div0s", "div0s",
2200 { { MNEM, ' ', OP (RI), 0 } },
2201 & fmt_div0s, { 0x9740 },
2202 (PTR) 0,
2203 { 0, 0, { 0 } }
2204 },
2205 /* div0u $Ri */
2206 {
2207 { 1, 1, 1, 1 },
2208 FR30_INSN_DIV0U, "div0u", "div0u",
2209 { { MNEM, ' ', OP (RI), 0 } },
2210 & fmt_div0s, { 0x9750 },
2211 (PTR) 0,
2212 { 0, 0, { 0 } }
2213 },
2214 /* div1 $Ri */
2215 {
2216 { 1, 1, 1, 1 },
2217 FR30_INSN_DIV1, "div1", "div1",
2218 { { MNEM, ' ', OP (RI), 0 } },
2219 & fmt_div0s, { 0x9760 },
2220 (PTR) 0,
2221 { 0, 0, { 0 } }
2222 },
2223 /* div2 $Ri */
2224 {
2225 { 1, 1, 1, 1 },
2226 FR30_INSN_DIV2, "div2", "div2",
2227 { { MNEM, ' ', OP (RI), 0 } },
2228 & fmt_div0s, { 0x9770 },
2229 (PTR) 0,
2230 { 0, 0, { 0 } }
2231 },
2232 /* div3 */
2233 {
2234 { 1, 1, 1, 1 },
2235 FR30_INSN_DIV3, "div3", "div3",
2236 { { MNEM, 0 } },
2237 & fmt_div3, { 0x9f60 },
2238 (PTR) 0,
2239 { 0, 0, { 0 } }
2240 },
2241 /* div4s */
2242 {
2243 { 1, 1, 1, 1 },
2244 FR30_INSN_DIV4S, "div4s", "div4s",
2245 { { MNEM, 0 } },
2246 & fmt_div3, { 0x9f70 },
2247 (PTR) 0,
2248 { 0, 0, { 0 } }
2249 },
2250 /* lsl $Rj,$Ri */
2251 {
2252 { 1, 1, 1, 1 },
2253 FR30_INSN_LSL, "lsl", "lsl",
2254 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
2255 & fmt_lsl, { 0xb600 },
2256 (PTR) & fmt_lsl_ops[0],
2257 { 0, 0, { 0 } }
2258 },
2259 /* lsl $u4,$Ri */
2260 {
2261 { 1, 1, 1, 1 },
2262 FR30_INSN_LSLI, "lsli", "lsl",
2263 { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },
2264 & fmt_lsli, { 0xb400 },
2265 (PTR) & fmt_lsli_ops[0],
2266 { 0, 0, { 0 } }
2267 },
2268 /* lsl2 $u4,$Ri */
2269 {
2270 { 1, 1, 1, 1 },
2271 FR30_INSN_LSL2, "lsl2", "lsl2",
2272 { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },
2273 & fmt_lsli, { 0xb500 },
2274 (PTR) & fmt_lsli_ops[0],
2275 { 0, 0, { 0 } }
2276 },
2277 /* lsr $Rj,$Ri */
2278 {
2279 { 1, 1, 1, 1 },
2280 FR30_INSN_LSR, "lsr", "lsr",
2281 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
2282 & fmt_lsl, { 0xb200 },
2283 (PTR) & fmt_lsl_ops[0],
2284 { 0, 0, { 0 } }
2285 },
2286 /* lsr $u4,$Ri */
2287 {
2288 { 1, 1, 1, 1 },
2289 FR30_INSN_LSRI, "lsri", "lsr",
2290 { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },
2291 & fmt_lsli, { 0xb000 },
2292 (PTR) & fmt_lsli_ops[0],
2293 { 0, 0, { 0 } }
2294 },
2295 /* lsr2 $u4,$Ri */
2296 {
2297 { 1, 1, 1, 1 },
2298 FR30_INSN_LSR2, "lsr2", "lsr2",
2299 { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },
2300 & fmt_lsli, { 0xb100 },
2301 (PTR) & fmt_lsli_ops[0],
2302 { 0, 0, { 0 } }
2303 },
2304 /* asr $Rj,$Ri */
2305 {
2306 { 1, 1, 1, 1 },
2307 FR30_INSN_ASR, "asr", "asr",
2308 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
2309 & fmt_lsl, { 0xba00 },
2310 (PTR) & fmt_lsl_ops[0],
2311 { 0, 0, { 0 } }
2312 },
2313 /* asr $u4,$Ri */
2314 {
2315 { 1, 1, 1, 1 },
2316 FR30_INSN_ASRI, "asri", "asr",
2317 { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },
2318 & fmt_lsli, { 0xb800 },
2319 (PTR) & fmt_lsli_ops[0],
2320 { 0, 0, { 0 } }
2321 },
2322 /* asr2 $u4,$Ri */
2323 {
2324 { 1, 1, 1, 1 },
2325 FR30_INSN_ASR2, "asr2", "asr2",
2326 { { MNEM, ' ', OP (U4), ',', OP (RI), 0 } },
2327 & fmt_lsli, { 0xb900 },
2328 (PTR) & fmt_lsli_ops[0],
2329 { 0, 0, { 0 } }
2330 },
2331 /* ldi:8 $i8,$Ri */
2332 {
2333 { 1, 1, 1, 1 },
2334 FR30_INSN_LDI8, "ldi8", "ldi:8",
2335 { { MNEM, ' ', OP (I8), ',', OP (RI), 0 } },
2336 & fmt_ldi8, { 0xc000 },
2337 (PTR) & fmt_ldi8_ops[0],
2338 { 0, 0, { 0 } }
2339 },
2340 /* ldi:20 $i20,$Ri */
2341 {
2342 { 1, 1, 1, 1 },
2343 FR30_INSN_LDI20, "ldi20", "ldi:20",
2344 { { MNEM, ' ', OP (I20), ',', OP (RI), 0 } },
2345 & fmt_ldi20, { 0x9b00 },
2346 (PTR) & fmt_ldi20_ops[0],
2347 { 0, 0|A(NOT_IN_DELAY_SLOT), { 0 } }
2348 },
2349 /* ldi:32 $i32,$Ri */
2350 {
2351 { 1, 1, 1, 1 },
2352 FR30_INSN_LDI32, "ldi32", "ldi:32",
2353 { { MNEM, ' ', OP (I32), ',', OP (RI), 0 } },
2354 & fmt_ldi32, { 0x9f80 },
2355 (PTR) & fmt_ldi32_ops[0],
2356 { 0, 0, { 0 } }
2357 },
2358 /* ld @$Rj,$Ri */
2359 {
2360 { 1, 1, 1, 1 },
2361 FR30_INSN_LD, "ld", "ld",
2362 { { MNEM, ' ', '@', OP (RJ), ',', OP (RI), 0 } },
2363 & fmt_ld, { 0x400 },
2364 (PTR) & fmt_ld_ops[0],
2365 { 0, 0, { 0 } }
2366 },
2367 /* lduh @$Rj,$Ri */
2368 {
2369 { 1, 1, 1, 1 },
2370 FR30_INSN_LDUH, "lduh", "lduh",
2371 { { MNEM, ' ', '@', OP (RJ), ',', OP (RI), 0 } },
2372 & fmt_lduh, { 0x500 },
2373 (PTR) & fmt_lduh_ops[0],
2374 { 0, 0, { 0 } }
2375 },
2376 /* ldub @$Rj,$Ri */
2377 {
2378 { 1, 1, 1, 1 },
2379 FR30_INSN_LDUB, "ldub", "ldub",
2380 { { MNEM, ' ', '@', OP (RJ), ',', OP (RI), 0 } },
2381 & fmt_ldub, { 0x600 },
2382 (PTR) & fmt_ldub_ops[0],
2383 { 0, 0, { 0 } }
2384 },
2385 /* ld @($R13,$Rj),$Ri */
2386 {
2387 { 1, 1, 1, 1 },
2388 FR30_INSN_LDR13, "ldr13", "ld",
2389 { { MNEM, ' ', '@', '(', OP (R13), ',', OP (RJ), ')', ',', OP (RI), 0 } },
2390 & fmt_ldr13, { 0x0 },
2391 (PTR) & fmt_ldr13_ops[0],
2392 { 0, 0, { 0 } }
2393 },
2394 /* lduh @($R13,$Rj),$Ri */
2395 {
2396 { 1, 1, 1, 1 },
2397 FR30_INSN_LDR13UH, "ldr13uh", "lduh",
2398 { { MNEM, ' ', '@', '(', OP (R13), ',', OP (RJ), ')', ',', OP (RI), 0 } },
2399 & fmt_ldr13uh, { 0x100 },
2400 (PTR) & fmt_ldr13uh_ops[0],
2401 { 0, 0, { 0 } }
2402 },
2403 /* ldub @($R13,$Rj),$Ri */
2404 {
2405 { 1, 1, 1, 1 },
2406 FR30_INSN_LDR13UB, "ldr13ub", "ldub",
2407 { { MNEM, ' ', '@', '(', OP (R13), ',', OP (RJ), ')', ',', OP (RI), 0 } },
2408 & fmt_ldr13ub, { 0x200 },
2409 (PTR) & fmt_ldr13ub_ops[0],
2410 { 0, 0, { 0 } }
2411 },
2412 /* ld @($R14,$disp10),$Ri */
2413 {
2414 { 1, 1, 1, 1 },
2415 FR30_INSN_LDR14, "ldr14", "ld",
2416 { { MNEM, ' ', '@', '(', OP (R14), ',', OP (DISP10), ')', ',', OP (RI), 0 } },
2417 & fmt_ldr14, { 0x2000 },
2418 (PTR) & fmt_ldr14_ops[0],
2419 { 0, 0, { 0 } }
2420 },
2421 /* lduh @($R14,$disp9),$Ri */
2422 {
2423 { 1, 1, 1, 1 },
2424 FR30_INSN_LDR14UH, "ldr14uh", "lduh",
2425 { { MNEM, ' ', '@', '(', OP (R14), ',', OP (DISP9), ')', ',', OP (RI), 0 } },
2426 & fmt_ldr14uh, { 0x4000 },
2427 (PTR) & fmt_ldr14uh_ops[0],
2428 { 0, 0, { 0 } }
2429 },
2430 /* ldub @($R14,$disp8),$Ri */
2431 {
2432 { 1, 1, 1, 1 },
2433 FR30_INSN_LDR14UB, "ldr14ub", "ldub",
2434 { { MNEM, ' ', '@', '(', OP (R14), ',', OP (DISP8), ')', ',', OP (RI), 0 } },
2435 & fmt_ldr14ub, { 0x6000 },
2436 (PTR) & fmt_ldr14ub_ops[0],
2437 { 0, 0, { 0 } }
2438 },
2439 /* ld @($R15,$udisp6),$Ri */
2440 {
2441 { 1, 1, 1, 1 },
2442 FR30_INSN_LDR15, "ldr15", "ld",
2443 { { MNEM, ' ', '@', '(', OP (R15), ',', OP (UDISP6), ')', ',', OP (RI), 0 } },
2444 & fmt_ldr15, { 0x300 },
2445 (PTR) & fmt_ldr15_ops[0],
2446 { 0, 0, { 0 } }
2447 },
2448 /* ld @$R15+,$Ri */
2449 {
2450 { 1, 1, 1, 1 },
2451 FR30_INSN_LDR15GR, "ldr15gr", "ld",
2452 { { MNEM, ' ', '@', OP (R15), '+', ',', OP (RI), 0 } },
2453 & fmt_ldr15gr, { 0x700 },
2454 (PTR) & fmt_ldr15gr_ops[0],
2455 { 0, 0, { 0 } }
2456 },
2457 /* ld @$R15+,$Rs2 */
2458 {
2459 { 1, 1, 1, 1 },
2460 FR30_INSN_LDR15DR, "ldr15dr", "ld",
2461 { { MNEM, ' ', '@', OP (R15), '+', ',', OP (RS2), 0 } },
2462 & fmt_ldr15dr, { 0x780 },
2463 (PTR) & fmt_ldr15dr_ops[0],
2464 { 0, 0, { 0 } }
2465 },
2466 /* ld @$R15+,$ps */
2467 {
2468 { 1, 1, 1, 1 },
2469 FR30_INSN_LDR15PS, "ldr15ps", "ld",
2470 { { MNEM, ' ', '@', OP (R15), '+', ',', OP (PS), 0 } },
2471 & fmt_ldr15ps, { 0x790 },
2472 (PTR) & fmt_ldr15ps_ops[0],
2473 { 0, 0, { 0 } }
2474 },
2475 /* st $Ri,@$Rj */
2476 {
2477 { 1, 1, 1, 1 },
2478 FR30_INSN_ST, "st", "st",
2479 { { MNEM, ' ', OP (RI), ',', '@', OP (RJ), 0 } },
2480 & fmt_st, { 0x1400 },
2481 (PTR) & fmt_st_ops[0],
2482 { 0, 0, { 0 } }
2483 },
2484 /* sth $Ri,@$Rj */
2485 {
2486 { 1, 1, 1, 1 },
2487 FR30_INSN_STH, "sth", "sth",
2488 { { MNEM, ' ', OP (RI), ',', '@', OP (RJ), 0 } },
2489 & fmt_sth, { 0x1500 },
2490 (PTR) & fmt_sth_ops[0],
2491 { 0, 0, { 0 } }
2492 },
2493 /* stb $Ri,@$Rj */
2494 {
2495 { 1, 1, 1, 1 },
2496 FR30_INSN_STB, "stb", "stb",
2497 { { MNEM, ' ', OP (RI), ',', '@', OP (RJ), 0 } },
2498 & fmt_stb, { 0x1600 },
2499 (PTR) & fmt_stb_ops[0],
2500 { 0, 0, { 0 } }
2501 },
2502 /* st $Ri,@($R13,$Rj) */
2503 {
2504 { 1, 1, 1, 1 },
2505 FR30_INSN_STR13, "str13", "st",
2506 { { MNEM, ' ', OP (RI), ',', '@', '(', OP (R13), ',', OP (RJ), ')', 0 } },
2507 & fmt_str13, { 0x1000 },
2508 (PTR) & fmt_str13_ops[0],
2509 { 0, 0, { 0 } }
2510 },
2511 /* sth $Ri,@($R13,$Rj) */
2512 {
2513 { 1, 1, 1, 1 },
2514 FR30_INSN_STR13H, "str13h", "sth",
2515 { { MNEM, ' ', OP (RI), ',', '@', '(', OP (R13), ',', OP (RJ), ')', 0 } },
2516 & fmt_str13h, { 0x1100 },
2517 (PTR) & fmt_str13h_ops[0],
2518 { 0, 0, { 0 } }
2519 },
2520 /* stb $Ri,@($R13,$Rj) */
2521 {
2522 { 1, 1, 1, 1 },
2523 FR30_INSN_STR13B, "str13b", "stb",
2524 { { MNEM, ' ', OP (RI), ',', '@', '(', OP (R13), ',', OP (RJ), ')', 0 } },
2525 & fmt_str13b, { 0x1200 },
2526 (PTR) & fmt_str13b_ops[0],
2527 { 0, 0, { 0 } }
2528 },
2529 /* st $Ri,@($R14,$disp10) */
2530 {
2531 { 1, 1, 1, 1 },
2532 FR30_INSN_STR14, "str14", "st",
2533 { { MNEM, ' ', OP (RI), ',', '@', '(', OP (R14), ',', OP (DISP10), ')', 0 } },
2534 & fmt_str14, { 0x3000 },
2535 (PTR) & fmt_str14_ops[0],
2536 { 0, 0, { 0 } }
2537 },
2538 /* sth $Ri,@($R14,$disp9) */
2539 {
2540 { 1, 1, 1, 1 },
2541 FR30_INSN_STR14H, "str14h", "sth",
2542 { { MNEM, ' ', OP (RI), ',', '@', '(', OP (R14), ',', OP (DISP9), ')', 0 } },
2543 & fmt_str14h, { 0x5000 },
2544 (PTR) & fmt_str14h_ops[0],
2545 { 0, 0, { 0 } }
2546 },
2547 /* stb $Ri,@($R14,$disp8) */
2548 {
2549 { 1, 1, 1, 1 },
2550 FR30_INSN_STR14B, "str14b", "stb",
2551 { { MNEM, ' ', OP (RI), ',', '@', '(', OP (R14), ',', OP (DISP8), ')', 0 } },
2552 & fmt_str14b, { 0x7000 },
2553 (PTR) & fmt_str14b_ops[0],
2554 { 0, 0, { 0 } }
2555 },
2556 /* st $Ri,@($R15,$udisp6) */
2557 {
2558 { 1, 1, 1, 1 },
2559 FR30_INSN_STR15, "str15", "st",
2560 { { MNEM, ' ', OP (RI), ',', '@', '(', OP (R15), ',', OP (UDISP6), ')', 0 } },
2561 & fmt_str15, { 0x1300 },
2562 (PTR) & fmt_str15_ops[0],
2563 { 0, 0, { 0 } }
2564 },
2565 /* st $Ri,@-$R15 */
2566 {
2567 { 1, 1, 1, 1 },
2568 FR30_INSN_STR15GR, "str15gr", "st",
2569 { { MNEM, ' ', OP (RI), ',', '@', '-', OP (R15), 0 } },
2570 & fmt_str15gr, { 0x1700 },
2571 (PTR) & fmt_str15gr_ops[0],
2572 { 0, 0, { 0 } }
2573 },
2574 /* st $Rs2,@-$R15 */
2575 {
2576 { 1, 1, 1, 1 },
2577 FR30_INSN_STR15DR, "str15dr", "st",
2578 { { MNEM, ' ', OP (RS2), ',', '@', '-', OP (R15), 0 } },
2579 & fmt_str15dr, { 0x1780 },
2580 (PTR) & fmt_str15dr_ops[0],
2581 { 0, 0, { 0 } }
2582 },
2583 /* st $ps,@-$R15 */
2584 {
2585 { 1, 1, 1, 1 },
2586 FR30_INSN_STR15PS, "str15ps", "st",
2587 { { MNEM, ' ', OP (PS), ',', '@', '-', OP (R15), 0 } },
2588 & fmt_str15ps, { 0x1790 },
2589 (PTR) & fmt_str15ps_ops[0],
2590 { 0, 0, { 0 } }
2591 },
2592 /* mov $Rj,$Ri */
2593 {
2594 { 1, 1, 1, 1 },
2595 FR30_INSN_MOV, "mov", "mov",
2596 { { MNEM, ' ', OP (RJ), ',', OP (RI), 0 } },
2597 & fmt_mov, { 0x8b00 },
2598 (PTR) & fmt_mov_ops[0],
2599 { 0, 0, { 0 } }
2600 },
2601 /* mov $Rs1,$Ri */
2602 {
2603 { 1, 1, 1, 1 },
2604 FR30_INSN_MOVDR, "movdr", "mov",
2605 { { MNEM, ' ', OP (RS1), ',', OP (RI), 0 } },
2606 & fmt_movdr, { 0xb700 },
2607 (PTR) & fmt_movdr_ops[0],
2608 { 0, 0, { 0 } }
2609 },
2610 /* mov $ps,$Ri */
2611 {
2612 { 1, 1, 1, 1 },
2613 FR30_INSN_MOVPS, "movps", "mov",
2614 { { MNEM, ' ', OP (PS), ',', OP (RI), 0 } },
2615 & fmt_movps, { 0x1710 },
2616 (PTR) & fmt_movps_ops[0],
2617 { 0, 0, { 0 } }
2618 },
2619 /* mov $Ri,$Rs1 */
2620 {
2621 { 1, 1, 1, 1 },
2622 FR30_INSN_MOV2DR, "mov2dr", "mov",
2623 { { MNEM, ' ', OP (RI), ',', OP (RS1), 0 } },
2624 & fmt_mov2dr, { 0xb300 },
2625 (PTR) & fmt_mov2dr_ops[0],
2626 { 0, 0, { 0 } }
2627 },
2628 /* mov $Ri,$ps */
2629 {
2630 { 1, 1, 1, 1 },
2631 FR30_INSN_MOV2PS, "mov2ps", "mov",
2632 { { MNEM, ' ', OP (RI), ',', OP (PS), 0 } },
2633 & fmt_mov2ps, { 0x710 },
2634 (PTR) & fmt_mov2ps_ops[0],
2635 { 0, 0, { 0 } }
2636 },
2637 /* jmp @$Ri */
2638 {
2639 { 1, 1, 1, 1 },
2640 FR30_INSN_JMP, "jmp", "jmp",
2641 { { MNEM, ' ', '@', OP (RI), 0 } },
2642 & fmt_jmp, { 0x9700 },
2643 (PTR) & fmt_jmp_ops[0],
2644 { 0, 0|A(UNCOND_CTI), { 0 } }
2645 },
2646 /* jmp:d @$Ri */
2647 {
2648 { 1, 1, 1, 1 },
2649 FR30_INSN_JMPD, "jmpd", "jmp:d",
2650 { { MNEM, ' ', '@', OP (RI), 0 } },
2651 & fmt_jmp, { 0x9f00 },
2652 (PTR) & fmt_jmp_ops[0],
2653 { 0, 0|A(NOT_IN_DELAY_SLOT)|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
2654 },
2655 /* call @$Ri */
2656 {
2657 { 1, 1, 1, 1 },
2658 FR30_INSN_CALLR, "callr", "call",
2659 { { MNEM, ' ', '@', OP (RI), 0 } },
2660 & fmt_callr, { 0x9710 },
2661 (PTR) & fmt_callr_ops[0],
2662 { 0, 0|A(UNCOND_CTI), { 0 } }
2663 },
2664 /* call:d @$Ri */
2665 {
2666 { 1, 1, 1, 1 },
2667 FR30_INSN_CALLRD, "callrd", "call:d",
2668 { { MNEM, ' ', '@', OP (RI), 0 } },
2669 & fmt_callr, { 0x9f10 },
2670 (PTR) & fmt_callr_ops[0],
2671 { 0, 0|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
2672 },
2673 /* call $label12 */
2674 {
2675 { 1, 1, 1, 1 },
2676 FR30_INSN_CALL, "call", "call",
2677 { { MNEM, ' ', OP (LABEL12), 0 } },
2678 & fmt_call, { 0xd000 },
2679 (PTR) & fmt_call_ops[0],
2680 { 0, 0|A(UNCOND_CTI), { 0 } }
2681 },
2682 /* call:d $label12 */
2683 {
2684 { 1, 1, 1, 1 },
2685 FR30_INSN_CALLD, "calld", "call:d",
2686 { { MNEM, ' ', OP (LABEL12), 0 } },
2687 & fmt_call, { 0xd800 },
2688 (PTR) & fmt_call_ops[0],
2689 { 0, 0|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
2690 },
2691 /* ret */
2692 {
2693 { 1, 1, 1, 1 },
2694 FR30_INSN_RET, "ret", "ret",
2695 { { MNEM, 0 } },
2696 & fmt_ret, { 0x9720 },
2697 (PTR) & fmt_ret_ops[0],
2698 { 0, 0|A(UNCOND_CTI), { 0 } }
2699 },
2700 /* ret:d */
2701 {
2702 { 1, 1, 1, 1 },
2703 FR30_INSN_RET_D, "ret:d", "ret:d",
2704 { { MNEM, 0 } },
2705 & fmt_ret, { 0x9f20 },
2706 (PTR) & fmt_ret_ops[0],
2707 { 0, 0|A(DELAY_SLOT)|A(UNCOND_CTI), { 0 } }
2708 },
2709 /* int $u8 */
2710 {
2711 { 1, 1, 1, 1 },
2712 FR30_INSN_INT, "int", "int",
2713 { { MNEM, ' ', OP (U8), 0 } },
2714 & fmt_int, { 0x1f00 },
2715 (PTR) & fmt_int_ops[0],
2716 { 0, 0|A(UNCOND_CTI), { 0 } }
2717 },
2718 /* inte */
2719 {
2720 { 1, 1, 1, 1 },
2721 FR30_INSN_INTE, "inte", "inte",
2722 { { MNEM, 0 } },
2723 & fmt_inte, { 0x9f30 },
2724 (PTR) & fmt_inte_ops[0],
2725 { 0, 0|A(UNCOND_CTI), { 0 } }
2726 },
2727 /* reti */
2728 {
2729 { 1, 1, 1, 1 },
2730 FR30_INSN_RETI, "reti", "reti",
2731 { { MNEM, 0 } },
2732 & fmt_reti, { 0x9730 },
2733 (PTR) & fmt_reti_ops[0],
2734 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2735 },
2736 /* bra $label9 */
2737 {
2738 { 1, 1, 1, 1 },
2739 FR30_INSN_BRA, "bra", "bra",
2740 { { MNEM, ' ', OP (LABEL9), 0 } },
2741 & fmt_bra, { 0xe000 },
2742 (PTR) & fmt_bra_ops[0],
2743 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2744 },
2745 /* bra:d $label9 */
2746 {
2747 { 1, 1, 1, 1 },
2748 FR30_INSN_BRAD, "brad", "bra:d",
2749 { { MNEM, ' ', OP (LABEL9), 0 } },
2750 & fmt_bra, { 0xf000 },
2751 (PTR) & fmt_bra_ops[0],
2752 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2753 },
2754 /* bno $label9 */
2755 {
2756 { 1, 1, 1, 1 },
2757 FR30_INSN_BNO, "bno", "bno",
2758 { { MNEM, ' ', OP (LABEL9), 0 } },
2759 & fmt_bra, { 0xe100 },
2760 (PTR) & fmt_bra_ops[0],
2761 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2762 },
2763 /* bno:d $label9 */
2764 {
2765 { 1, 1, 1, 1 },
2766 FR30_INSN_BNOD, "bnod", "bno:d",
2767 { { MNEM, ' ', OP (LABEL9), 0 } },
2768 & fmt_bra, { 0xf100 },
2769 (PTR) & fmt_bra_ops[0],
2770 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2771 },
2772 /* beq $label9 */
2773 {
2774 { 1, 1, 1, 1 },
2775 FR30_INSN_BEQ, "beq", "beq",
2776 { { MNEM, ' ', OP (LABEL9), 0 } },
2777 & fmt_beq, { 0xe200 },
2778 (PTR) & fmt_beq_ops[0],
2779 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2780 },
2781 /* beq:d $label9 */
2782 {
2783 { 1, 1, 1, 1 },
2784 FR30_INSN_BEQD, "beqd", "beq:d",
2785 { { MNEM, ' ', OP (LABEL9), 0 } },
2786 & fmt_beq, { 0xf200 },
2787 (PTR) & fmt_beq_ops[0],
2788 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2789 },
2790 /* bne $label9 */
2791 {
2792 { 1, 1, 1, 1 },
2793 FR30_INSN_BNE, "bne", "bne",
2794 { { MNEM, ' ', OP (LABEL9), 0 } },
2795 & fmt_beq, { 0xe300 },
2796 (PTR) & fmt_beq_ops[0],
2797 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2798 },
2799 /* bne:d $label9 */
2800 {
2801 { 1, 1, 1, 1 },
2802 FR30_INSN_BNED, "bned", "bne:d",
2803 { { MNEM, ' ', OP (LABEL9), 0 } },
2804 & fmt_beq, { 0xf300 },
2805 (PTR) & fmt_beq_ops[0],
2806 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2807 },
2808 /* bc $label9 */
2809 {
2810 { 1, 1, 1, 1 },
2811 FR30_INSN_BC, "bc", "bc",
2812 { { MNEM, ' ', OP (LABEL9), 0 } },
2813 & fmt_bc, { 0xe400 },
2814 (PTR) & fmt_bc_ops[0],
2815 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2816 },
2817 /* bc:d $label9 */
2818 {
2819 { 1, 1, 1, 1 },
2820 FR30_INSN_BCD, "bcd", "bc:d",
2821 { { MNEM, ' ', OP (LABEL9), 0 } },
2822 & fmt_bc, { 0xf400 },
2823 (PTR) & fmt_bc_ops[0],
2824 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2825 },
2826 /* bnc $label9 */
2827 {
2828 { 1, 1, 1, 1 },
2829 FR30_INSN_BNC, "bnc", "bnc",
2830 { { MNEM, ' ', OP (LABEL9), 0 } },
2831 & fmt_bc, { 0xe500 },
2832 (PTR) & fmt_bc_ops[0],
2833 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2834 },
2835 /* bnc:d $label9 */
2836 {
2837 { 1, 1, 1, 1 },
2838 FR30_INSN_BNCD, "bncd", "bnc:d",
2839 { { MNEM, ' ', OP (LABEL9), 0 } },
2840 & fmt_bc, { 0xf500 },
2841 (PTR) & fmt_bc_ops[0],
2842 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2843 },
2844 /* bn $label9 */
2845 {
2846 { 1, 1, 1, 1 },
2847 FR30_INSN_BN, "bn", "bn",
2848 { { MNEM, ' ', OP (LABEL9), 0 } },
2849 & fmt_bn, { 0xe600 },
2850 (PTR) & fmt_bn_ops[0],
2851 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2852 },
2853 /* bn:d $label9 */
2854 {
2855 { 1, 1, 1, 1 },
2856 FR30_INSN_BND, "bnd", "bn:d",
2857 { { MNEM, ' ', OP (LABEL9), 0 } },
2858 & fmt_bn, { 0xf600 },
2859 (PTR) & fmt_bn_ops[0],
2860 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2861 },
2862 /* bp $label9 */
2863 {
2864 { 1, 1, 1, 1 },
2865 FR30_INSN_BP, "bp", "bp",
2866 { { MNEM, ' ', OP (LABEL9), 0 } },
2867 & fmt_bn, { 0xe700 },
2868 (PTR) & fmt_bn_ops[0],
2869 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2870 },
2871 /* bp:d $label9 */
2872 {
2873 { 1, 1, 1, 1 },
2874 FR30_INSN_BPD, "bpd", "bp:d",
2875 { { MNEM, ' ', OP (LABEL9), 0 } },
2876 & fmt_bn, { 0xf700 },
2877 (PTR) & fmt_bn_ops[0],
2878 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2879 },
2880 /* bv $label9 */
2881 {
2882 { 1, 1, 1, 1 },
2883 FR30_INSN_BV, "bv", "bv",
2884 { { MNEM, ' ', OP (LABEL9), 0 } },
2885 & fmt_bv, { 0xe800 },
2886 (PTR) & fmt_bv_ops[0],
2887 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2888 },
2889 /* bv:d $label9 */
2890 {
2891 { 1, 1, 1, 1 },
2892 FR30_INSN_BVD, "bvd", "bv:d",
2893 { { MNEM, ' ', OP (LABEL9), 0 } },
2894 & fmt_bv, { 0xf800 },
2895 (PTR) & fmt_bv_ops[0],
2896 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2897 },
2898 /* bnv $label9 */
2899 {
2900 { 1, 1, 1, 1 },
2901 FR30_INSN_BNV, "bnv", "bnv",
2902 { { MNEM, ' ', OP (LABEL9), 0 } },
2903 & fmt_bv, { 0xe900 },
2904 (PTR) & fmt_bv_ops[0],
2905 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2906 },
2907 /* bnv:d $label9 */
2908 {
2909 { 1, 1, 1, 1 },
2910 FR30_INSN_BNVD, "bnvd", "bnv:d",
2911 { { MNEM, ' ', OP (LABEL9), 0 } },
2912 & fmt_bv, { 0xf900 },
2913 (PTR) & fmt_bv_ops[0],
2914 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2915 },
2916 /* blt $label9 */
2917 {
2918 { 1, 1, 1, 1 },
2919 FR30_INSN_BLT, "blt", "blt",
2920 { { MNEM, ' ', OP (LABEL9), 0 } },
2921 & fmt_blt, { 0xea00 },
2922 (PTR) & fmt_blt_ops[0],
2923 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2924 },
2925 /* blt:d $label9 */
2926 {
2927 { 1, 1, 1, 1 },
2928 FR30_INSN_BLTD, "bltd", "blt:d",
2929 { { MNEM, ' ', OP (LABEL9), 0 } },
2930 & fmt_blt, { 0xfa00 },
2931 (PTR) & fmt_blt_ops[0],
2932 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2933 },
2934 /* bge $label9 */
2935 {
2936 { 1, 1, 1, 1 },
2937 FR30_INSN_BGE, "bge", "bge",
2938 { { MNEM, ' ', OP (LABEL9), 0 } },
2939 & fmt_blt, { 0xeb00 },
2940 (PTR) & fmt_blt_ops[0],
2941 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2942 },
2943 /* bge:d $label9 */
2944 {
2945 { 1, 1, 1, 1 },
2946 FR30_INSN_BGED, "bged", "bge:d",
2947 { { MNEM, ' ', OP (LABEL9), 0 } },
2948 & fmt_blt, { 0xfb00 },
2949 (PTR) & fmt_blt_ops[0],
2950 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2951 },
2952 /* ble $label9 */
2953 {
2954 { 1, 1, 1, 1 },
2955 FR30_INSN_BLE, "ble", "ble",
2956 { { MNEM, ' ', OP (LABEL9), 0 } },
2957 & fmt_ble, { 0xec00 },
2958 (PTR) & fmt_ble_ops[0],
2959 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2960 },
2961 /* ble:d $label9 */
2962 {
2963 { 1, 1, 1, 1 },
2964 FR30_INSN_BLED, "bled", "ble:d",
2965 { { MNEM, ' ', OP (LABEL9), 0 } },
2966 & fmt_ble, { 0xfc00 },
2967 (PTR) & fmt_ble_ops[0],
2968 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2969 },
2970 /* bgt $label9 */
2971 {
2972 { 1, 1, 1, 1 },
2973 FR30_INSN_BGT, "bgt", "bgt",
2974 { { MNEM, ' ', OP (LABEL9), 0 } },
2975 & fmt_ble, { 0xed00 },
2976 (PTR) & fmt_ble_ops[0],
2977 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2978 },
2979 /* bgt:d $label9 */
2980 {
2981 { 1, 1, 1, 1 },
2982 FR30_INSN_BGTD, "bgtd", "bgt:d",
2983 { { MNEM, ' ', OP (LABEL9), 0 } },
2984 & fmt_ble, { 0xfd00 },
2985 (PTR) & fmt_ble_ops[0],
2986 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
2987 },
2988 /* bls $label9 */
2989 {
2990 { 1, 1, 1, 1 },
2991 FR30_INSN_BLS, "bls", "bls",
2992 { { MNEM, ' ', OP (LABEL9), 0 } },
2993 & fmt_bls, { 0xee00 },
2994 (PTR) & fmt_bls_ops[0],
2995 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
2996 },
2997 /* bls:d $label9 */
2998 {
2999 { 1, 1, 1, 1 },
3000 FR30_INSN_BLSD, "blsd", "bls:d",
3001 { { MNEM, ' ', OP (LABEL9), 0 } },
3002 & fmt_bls, { 0xfe00 },
3003 (PTR) & fmt_bls_ops[0],
3004 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
3005 },
3006 /* bhi $label9 */
3007 {
3008 { 1, 1, 1, 1 },
3009 FR30_INSN_BHI, "bhi", "bhi",
3010 { { MNEM, ' ', OP (LABEL9), 0 } },
3011 & fmt_bls, { 0xef00 },
3012 (PTR) & fmt_bls_ops[0],
3013 { 0, 0|A(COND_CTI)|A(COND_CTI), { 0 } }
3014 },
3015 /* bhi:d $label9 */
3016 {
3017 { 1, 1, 1, 1 },
3018 FR30_INSN_BHID, "bhid", "bhi:d",
3019 { { MNEM, ' ', OP (LABEL9), 0 } },
3020 & fmt_bls, { 0xff00 },
3021 (PTR) & fmt_bls_ops[0],
3022 { 0, 0|A(COND_CTI)|A(DELAY_SLOT)|A(COND_CTI), { 0 } }
3023 },
3024 /* dmov $R13,@$dir10 */
3025 {
3026 { 1, 1, 1, 1 },
3027 FR30_INSN_DMOVR13, "dmovr13", "dmov",
3028 { { MNEM, ' ', OP (R13), ',', '@', OP (DIR10), 0 } },
3029 & fmt_dmovr13, { 0x1800 },
3030 (PTR) & fmt_dmovr13_ops[0],
3031 { 0, 0, { 0 } }
3032 },
3033 /* dmovh $R13,@$dir9 */
3034 {
3035 { 1, 1, 1, 1 },
3036 FR30_INSN_DMOVR13H, "dmovr13h", "dmovh",
3037 { { MNEM, ' ', OP (R13), ',', '@', OP (DIR9), 0 } },
3038 & fmt_dmovr13h, { 0x1900 },
3039 (PTR) & fmt_dmovr13h_ops[0],
3040 { 0, 0, { 0 } }
3041 },
3042 /* dmovb $R13,@$dir8 */
3043 {
3044 { 1, 1, 1, 1 },
3045 FR30_INSN_DMOVR13B, "dmovr13b", "dmovb",
3046 { { MNEM, ' ', OP (R13), ',', '@', OP (DIR8), 0 } },
3047 & fmt_dmovr13b, { 0x1a00 },
3048 (PTR) & fmt_dmovr13b_ops[0],
3049 { 0, 0, { 0 } }
3050 },
3051 /* dmov @$R13+,@$dir10 */
3052 {
3053 { 1, 1, 1, 1 },
3054 FR30_INSN_DMOVR13PI, "dmovr13pi", "dmov",
3055 { { MNEM, ' ', '@', OP (R13), '+', ',', '@', OP (DIR10), 0 } },
3056 & fmt_dmovr13pi, { 0x1c00 },
3057 (PTR) & fmt_dmovr13pi_ops[0],
3058 { 0, 0, { 0 } }
3059 },
3060 /* dmovh @$R13+,@$dir9 */
3061 {
3062 { 1, 1, 1, 1 },
3063 FR30_INSN_DMOVR13PIH, "dmovr13pih", "dmovh",
3064 { { MNEM, ' ', '@', OP (R13), '+', ',', '@', OP (DIR9), 0 } },
3065 & fmt_dmovr13pih, { 0x1d00 },
3066 (PTR) & fmt_dmovr13pih_ops[0],
3067 { 0, 0, { 0 } }
3068 },
3069 /* dmovb @$R13+,@$dir8 */
3070 {
3071 { 1, 1, 1, 1 },
3072 FR30_INSN_DMOVR13PIB, "dmovr13pib", "dmovb",
3073 { { MNEM, ' ', '@', OP (R13), '+', ',', '@', OP (DIR8), 0 } },
3074 & fmt_dmovr13pib, { 0x1e00 },
3075 (PTR) & fmt_dmovr13pib_ops[0],
3076 { 0, 0, { 0 } }
3077 },
3078 /* dmov @$R15+,@$dir10 */
3079 {
3080 { 1, 1, 1, 1 },
3081 FR30_INSN_DMOVR15PI, "dmovr15pi", "dmov",
3082 { { MNEM, ' ', '@', OP (R15), '+', ',', '@', OP (DIR10), 0 } },
3083 & fmt_dmovr15pi, { 0x1b00 },
3084 (PTR) & fmt_dmovr15pi_ops[0],
3085 { 0, 0, { 0 } }
3086 },
3087 /* dmov @$dir10,$R13 */
3088 {
3089 { 1, 1, 1, 1 },
3090 FR30_INSN_DMOV2R13, "dmov2r13", "dmov",
3091 { { MNEM, ' ', '@', OP (DIR10), ',', OP (R13), 0 } },
3092 & fmt_dmov2r13, { 0x800 },
3093 (PTR) & fmt_dmov2r13_ops[0],
3094 { 0, 0, { 0 } }
3095 },
3096 /* dmovh @$dir9,$R13 */
3097 {
3098 { 1, 1, 1, 1 },
3099 FR30_INSN_DMOV2R13H, "dmov2r13h", "dmovh",
3100 { { MNEM, ' ', '@', OP (DIR9), ',', OP (R13), 0 } },
3101 & fmt_dmov2r13h, { 0x900 },
3102 (PTR) & fmt_dmov2r13h_ops[0],
3103 { 0, 0, { 0 } }
3104 },
3105 /* dmovb @$dir8,$R13 */
3106 {
3107 { 1, 1, 1, 1 },
3108 FR30_INSN_DMOV2R13B, "dmov2r13b", "dmovb",
3109 { { MNEM, ' ', '@', OP (DIR8), ',', OP (R13), 0 } },
3110 & fmt_dmov2r13b, { 0xa00 },
3111 (PTR) & fmt_dmov2r13b_ops[0],
3112 { 0, 0, { 0 } }
3113 },
3114 /* dmov @$dir10,@$R13+ */
3115 {
3116 { 1, 1, 1, 1 },
3117 FR30_INSN_DMOV2R13PI, "dmov2r13pi", "dmov",
3118 { { MNEM, ' ', '@', OP (DIR10), ',', '@', OP (R13), '+', 0 } },
3119 & fmt_dmov2r13pi, { 0xc00 },
3120 (PTR) & fmt_dmov2r13pi_ops[0],
3121 { 0, 0, { 0 } }
3122 },
3123 /* dmovh @$dir9,@$R13+ */
3124 {
3125 { 1, 1, 1, 1 },
3126 FR30_INSN_DMOV2R13PIH, "dmov2r13pih", "dmovh",
3127 { { MNEM, ' ', '@', OP (DIR9), ',', '@', OP (R13), '+', 0 } },
3128 & fmt_dmov2r13pih, { 0xd00 },
3129 (PTR) & fmt_dmov2r13pih_ops[0],
3130 { 0, 0, { 0 } }
3131 },
3132 /* dmovb @$dir8,@$R13+ */
3133 {
3134 { 1, 1, 1, 1 },
3135 FR30_INSN_DMOV2R13PIB, "dmov2r13pib", "dmovb",
3136 { { MNEM, ' ', '@', OP (DIR8), ',', '@', OP (R13), '+', 0 } },
3137 & fmt_dmov2r13pib, { 0xe00 },
3138 (PTR) & fmt_dmov2r13pib_ops[0],
3139 { 0, 0, { 0 } }
3140 },
3141 /* dmov @$dir10,@-$R15 */
3142 {
3143 { 1, 1, 1, 1 },
3144 FR30_INSN_DMOV2R15PD, "dmov2r15pd", "dmov",
3145 { { MNEM, ' ', '@', OP (DIR10), ',', '@', '-', OP (R15), 0 } },
3146 & fmt_dmov2r15pd, { 0xb00 },
3147 (PTR) & fmt_dmov2r15pd_ops[0],
3148 { 0, 0, { 0 } }
3149 },
3150 /* ldres @$Ri+,$u4 */
3151 {
3152 { 1, 1, 1, 1 },
3153 FR30_INSN_LDRES, "ldres", "ldres",
3154 { { MNEM, ' ', '@', OP (RI), '+', ',', OP (U4), 0 } },
3155 & fmt_ldres, { 0xbc00 },
3156 (PTR) 0,
3157 { 0, 0, { 0 } }
3158 },
3159 /* stres $u4,@$Ri+ */
3160 {
3161 { 1, 1, 1, 1 },
3162 FR30_INSN_STRES, "stres", "stres",
3163 { { MNEM, ' ', OP (U4), ',', '@', OP (RI), '+', 0 } },
3164 & fmt_ldres, { 0xbd00 },
3165 (PTR) 0,
3166 { 0, 0, { 0 } }
3167 },
3168 /* copop $u4c,$ccc,$CRj,$CRi */
3169 {
3170 { 1, 1, 1, 1 },
3171 FR30_INSN_COPOP, "copop", "copop",
3172 { { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (CRJ), ',', OP (CRI), 0 } },
3173 & fmt_copop, { 0x9fc0 },
3174 (PTR) 0,
3175 { 0, 0, { 0 } }
3176 },
3177 /* copld $u4c,$ccc,$Rjc,$CRi */
3178 {
3179 { 1, 1, 1, 1 },
3180 FR30_INSN_COPLD, "copld", "copld",
3181 { { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (RJC), ',', OP (CRI), 0 } },
3182 & fmt_copld, { 0x9fd0 },
3183 (PTR) 0,
3184 { 0, 0, { 0 } }
3185 },
3186 /* copst $u4c,$ccc,$CRj,$Ric */
3187 {
3188 { 1, 1, 1, 1 },
3189 FR30_INSN_COPST, "copst", "copst",
3190 { { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (CRJ), ',', OP (RIC), 0 } },
3191 & fmt_copst, { 0x9fe0 },
3192 (PTR) 0,
3193 { 0, 0, { 0 } }
3194 },
3195 /* copsv $u4c,$ccc,$CRj,$Ric */
3196 {
3197 { 1, 1, 1, 1 },
3198 FR30_INSN_COPSV, "copsv", "copsv",
3199 { { MNEM, ' ', OP (U4C), ',', OP (CCC), ',', OP (CRJ), ',', OP (RIC), 0 } },
3200 & fmt_copst, { 0x9ff0 },
3201 (PTR) 0,
3202 { 0, 0, { 0 } }
3203 },
3204 /* nop */
3205 {
3206 { 1, 1, 1, 1 },
3207 FR30_INSN_NOP, "nop", "nop",
3208 { { MNEM, 0 } },
3209 & fmt_div3, { 0x9fa0 },
3210 (PTR) 0,
3211 { 0, 0, { 0 } }
3212 },
3213 /* andccr $u8 */
3214 {
3215 { 1, 1, 1, 1 },
3216 FR30_INSN_ANDCCR, "andccr", "andccr",
3217 { { MNEM, ' ', OP (U8), 0 } },
3218 & fmt_andccr, { 0x8300 },
3219 (PTR) & fmt_andccr_ops[0],
3220 { 0, 0, { 0 } }
3221 },
3222 /* orccr $u8 */
3223 {
3224 { 1, 1, 1, 1 },
3225 FR30_INSN_ORCCR, "orccr", "orccr",
3226 { { MNEM, ' ', OP (U8), 0 } },
3227 & fmt_andccr, { 0x9300 },
3228 (PTR) & fmt_andccr_ops[0],
3229 { 0, 0, { 0 } }
3230 },
3231 /* stilm $u8 */
3232 {
3233 { 1, 1, 1, 1 },
3234 FR30_INSN_STILM, "stilm", "stilm",
3235 { { MNEM, ' ', OP (U8), 0 } },
3236 & fmt_stilm, { 0x8700 },
3237 (PTR) & fmt_stilm_ops[0],
3238 { 0, 0, { 0 } }
3239 },
3240 /* addsp $s10 */
3241 {
3242 { 1, 1, 1, 1 },
3243 FR30_INSN_ADDSP, "addsp", "addsp",
3244 { { MNEM, ' ', OP (S10), 0 } },
3245 & fmt_addsp, { 0xa300 },
3246 (PTR) & fmt_addsp_ops[0],
3247 { 0, 0, { 0 } }
3248 },
3249 /* extsb $Ri */
3250 {
3251 { 1, 1, 1, 1 },
3252 FR30_INSN_EXTSB, "extsb", "extsb",
3253 { { MNEM, ' ', OP (RI), 0 } },
3254 & fmt_extsb, { 0x9780 },
3255 (PTR) & fmt_extsb_ops[0],
3256 { 0, 0, { 0 } }
3257 },
3258 /* extub $Ri */
3259 {
3260 { 1, 1, 1, 1 },
3261 FR30_INSN_EXTUB, "extub", "extub",
3262 { { MNEM, ' ', OP (RI), 0 } },
3263 & fmt_extub, { 0x9790 },
3264 (PTR) & fmt_extub_ops[0],
3265 { 0, 0, { 0 } }
3266 },
3267 /* extsh $Ri */
3268 {
3269 { 1, 1, 1, 1 },
3270 FR30_INSN_EXTSH, "extsh", "extsh",
3271 { { MNEM, ' ', OP (RI), 0 } },
3272 & fmt_extsh, { 0x97a0 },
3273 (PTR) & fmt_extsh_ops[0],
3274 { 0, 0, { 0 } }
3275 },
3276 /* extuh $Ri */
3277 {
3278 { 1, 1, 1, 1 },
3279 FR30_INSN_EXTUH, "extuh", "extuh",
3280 { { MNEM, ' ', OP (RI), 0 } },
3281 & fmt_extuh, { 0x97b0 },
3282 (PTR) & fmt_extuh_ops[0],
3283 { 0, 0, { 0 } }
3284 },
3285 /* ldm0 ($reglist_low_ld) */
3286 {
3287 { 1, 1, 1, 1 },
3288 FR30_INSN_LDM0, "ldm0", "ldm0",
3289 { { MNEM, ' ', '(', OP (REGLIST_LOW_LD), ')', 0 } },
3290 & fmt_ldm0, { 0x8c00 },
3291 (PTR) & fmt_ldm0_ops[0],
3292 { 0, 0, { 0 } }
3293 },
3294 /* ldm1 ($reglist_hi_ld) */
3295 {
3296 { 1, 1, 1, 1 },
3297 FR30_INSN_LDM1, "ldm1", "ldm1",
3298 { { MNEM, ' ', '(', OP (REGLIST_HI_LD), ')', 0 } },
3299 & fmt_ldm1, { 0x8d00 },
3300 (PTR) & fmt_ldm1_ops[0],
3301 { 0, 0, { 0 } }
3302 },
3303 /* stm0 ($reglist_low_st) */
3304 {
3305 { 1, 1, 1, 1 },
3306 FR30_INSN_STM0, "stm0", "stm0",
3307 { { MNEM, ' ', '(', OP (REGLIST_LOW_ST), ')', 0 } },
3308 & fmt_stm0, { 0x8e00 },
3309 (PTR) & fmt_stm0_ops[0],
3310 { 0, 0, { 0 } }
3311 },
3312 /* stm1 ($reglist_hi_st) */
3313 {
3314 { 1, 1, 1, 1 },
3315 FR30_INSN_STM1, "stm1", "stm1",
3316 { { MNEM, ' ', '(', OP (REGLIST_HI_ST), ')', 0 } },
3317 & fmt_stm1, { 0x8f00 },
3318 (PTR) & fmt_stm1_ops[0],
3319 { 0, 0, { 0 } }
3320 },
3321 /* enter $u10 */
3322 {
3323 { 1, 1, 1, 1 },
3324 FR30_INSN_ENTER, "enter", "enter",
3325 { { MNEM, ' ', OP (U10), 0 } },
3326 & fmt_enter, { 0xf00 },
3327 (PTR) & fmt_enter_ops[0],
3328 { 0, 0, { 0 } }
3329 },
3330 /* leave */
3331 {
3332 { 1, 1, 1, 1 },
3333 FR30_INSN_LEAVE, "leave", "leave",
3334 { { MNEM, 0 } },
3335 & fmt_leave, { 0x9f90 },
3336 (PTR) & fmt_leave_ops[0],
3337 { 0, 0, { 0 } }
3338 },
3339 /* xchb @$Rj,$Ri */
3340 {
3341 { 1, 1, 1, 1 },
3342 FR30_INSN_XCHB, "xchb", "xchb",
3343 { { MNEM, ' ', '@', OP (RJ), ',', OP (RI), 0 } },
3344 & fmt_xchb, { 0x8a00 },
3345 (PTR) & fmt_xchb_ops[0],
3346 { 0, 0, { 0 } }
3347 },
3348 };
3349
3350 #undef A
3351 #undef MNEM
3352 #undef OP
3353
3354 static const CGEN_INSN_TABLE insn_table =
3355 {
3356 & fr30_cgen_insn_table_entries[0],
3357 sizeof (CGEN_INSN),
3358 MAX_INSNS,
3359 NULL
3360 };
3361
3362 /* Formats for ALIAS macro-insns. */
3363
3364 #define F(f) & fr30_cgen_ifld_table[CONCAT2 (FR30_,f)]
3365
3366 static const CGEN_IFMT fmt_ldi8m = {
3367 16, 16, 0xf000, { F (F_OP1), F (F_I8), F (F_RI), 0 }
3368 };
3369
3370 static const CGEN_IFMT fmt_ldi20m = {
3371 16, 32, 0xff00, { F (F_OP1), F (F_I20), F (F_OP2), F (F_RI), 0 }
3372 };
3373
3374 static const CGEN_IFMT fmt_ldi32m = {
3375 16, 48, 0xfff0, { F (F_OP1), F (F_I32), F (F_OP2), F (F_OP3), F (F_RI), 0 }
3376 };
3377
3378 #undef F
3379
3380 /* Each non-simple macro entry points to an array of expansion possibilities. */
3381
3382 #define A(a) (1 << CONCAT2 (CGEN_INSN_,a))
3383 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
3384 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
3385
3386 /* The macro instruction table. */
3387
3388 static const CGEN_INSN macro_insn_table_entries[] =
3389 {
3390 /* ldi8 $i8,$Ri */
3391 {
3392 { 1, 1, 1, 1 },
3393 -1, "ldi8m", "ldi8",
3394 { { MNEM, ' ', OP (I8), ',', OP (RI), 0 } },
3395 & fmt_ldi8m, { 0xc000 },
3396 (PTR) 0,
3397 { 0, 0|A(NO_DIS)|A(ALIAS), { 0 } }
3398 },
3399 /* ldi20 $i20,$Ri */
3400 {
3401 { 1, 1, 1, 1 },
3402 -1, "ldi20m", "ldi20",
3403 { { MNEM, ' ', OP (I20), ',', OP (RI), 0 } },
3404 & fmt_ldi20m, { 0x9b00 },
3405 (PTR) 0,
3406 { 0, 0|A(NO_DIS)|A(ALIAS), { 0 } }
3407 },
3408 /* ldi32 $i32,$Ri */
3409 {
3410 { 1, 1, 1, 1 },
3411 -1, "ldi32m", "ldi32",
3412 { { MNEM, ' ', OP (I32), ',', OP (RI), 0 } },
3413 & fmt_ldi32m, { 0x9f80 },
3414 (PTR) 0,
3415 { 0, 0|A(NO_DIS)|A(ALIAS), { 0 } }
3416 },
3417 };
3418
3419 #undef A
3420 #undef MNEM
3421 #undef OP
3422
3423 static const CGEN_INSN_TABLE macro_insn_table =
3424 {
3425 & macro_insn_table_entries[0],
3426 sizeof (CGEN_INSN),
3427 (sizeof (macro_insn_table_entries) /
3428 sizeof (macro_insn_table_entries[0])),
3429 NULL
3430 };
3431
3432 static void
3433 init_tables ()
3434 {
3435 }
3436
3437 /* Return non-zero if INSN is to be added to the hash table.
3438 Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file. */
3439
3440 static int
3441 asm_hash_insn_p (insn)
3442 const CGEN_INSN * insn;
3443 {
3444 return CGEN_ASM_HASH_P (insn);
3445 }
3446
3447 static int
3448 dis_hash_insn_p (insn)
3449 const CGEN_INSN * insn;
3450 {
3451 /* If building the hash table and the NO-DIS attribute is present,
3452 ignore. */
3453 if (CGEN_INSN_ATTR (insn, CGEN_INSN_NO_DIS))
3454 return 0;
3455 return CGEN_DIS_HASH_P (insn);
3456 }
3457
3458 /* The result is the hash value of the insn.
3459 Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file. */
3460
3461 static unsigned int
3462 asm_hash_insn (mnem)
3463 const char * mnem;
3464 {
3465 return CGEN_ASM_HASH (mnem);
3466 }
3467
3468 /* BUF is a pointer to the insn's bytes in target order.
3469 VALUE is an integer of the first CGEN_BASE_INSN_BITSIZE bits,
3470 host order. */
3471
3472 static unsigned int
3473 dis_hash_insn (buf, value)
3474 const char * buf;
3475 CGEN_INSN_INT value;
3476 {
3477 return CGEN_DIS_HASH (buf, value);
3478 }
3479
3480 /* Initialize an opcode table and return a descriptor.
3481 It's much like opening a file, and must be the first function called. */
3482
3483 CGEN_OPCODE_DESC
3484 fr30_cgen_opcode_open (mach, endian)
3485 int mach;
3486 enum cgen_endian endian;
3487 {
3488 CGEN_OPCODE_TABLE * table = (CGEN_OPCODE_TABLE *) xmalloc (sizeof (CGEN_OPCODE_TABLE));
3489 static int init_p;
3490
3491 if (! init_p)
3492 {
3493 init_tables ();
3494 init_p = 1;
3495 }
3496
3497 memset (table, 0, sizeof (*table));
3498
3499 CGEN_OPCODE_MACH (table) = mach;
3500 CGEN_OPCODE_ENDIAN (table) = endian;
3501 /* FIXME: for the sparc case we can determine insn-endianness statically.
3502 The worry here is where both data and insn endian can be independently
3503 chosen, in which case this function will need another argument.
3504 Actually, will want to allow for more arguments in the future anyway. */
3505 CGEN_OPCODE_INSN_ENDIAN (table) = endian;
3506
3507 CGEN_OPCODE_HW_LIST (table) = & fr30_cgen_hw_entries[0];
3508
3509 CGEN_OPCODE_IFLD_TABLE (table) = & fr30_cgen_ifld_table[0];
3510
3511 CGEN_OPCODE_OPERAND_TABLE (table) = & fr30_cgen_operand_table[0];
3512
3513 * CGEN_OPCODE_INSN_TABLE (table) = insn_table;
3514
3515 * CGEN_OPCODE_MACRO_INSN_TABLE (table) = macro_insn_table;
3516
3517 CGEN_OPCODE_ASM_HASH_P (table) = asm_hash_insn_p;
3518 CGEN_OPCODE_ASM_HASH (table) = asm_hash_insn;
3519 CGEN_OPCODE_ASM_HASH_SIZE (table) = CGEN_ASM_HASH_SIZE;
3520
3521 CGEN_OPCODE_DIS_HASH_P (table) = dis_hash_insn_p;
3522 CGEN_OPCODE_DIS_HASH (table) = dis_hash_insn;
3523 CGEN_OPCODE_DIS_HASH_SIZE (table) = CGEN_DIS_HASH_SIZE;
3524
3525 return (CGEN_OPCODE_DESC) table;
3526 }
3527
3528 /* Close an opcode table. */
3529
3530 void
3531 fr30_cgen_opcode_close (desc)
3532 CGEN_OPCODE_DESC desc;
3533 {
3534 free (desc);
3535 }
3536
3537 /* Getting values from cgen_fields is handled by a collection of functions.
3538 They are distinguished by the type of the VALUE argument they return.
3539 TODO: floating point, inlining support, remove cases where result type
3540 not appropriate. */
3541
3542 int
3543 fr30_cgen_get_int_operand (opindex, fields)
3544 int opindex;
3545 const CGEN_FIELDS * fields;
3546 {
3547 int value;
3548
3549 switch (opindex)
3550 {
3551 case FR30_OPERAND_RI :
3552 value = fields->f_Ri;
3553 break;
3554 case FR30_OPERAND_RJ :
3555 value = fields->f_Rj;
3556 break;
3557 case FR30_OPERAND_RIC :
3558 value = fields->f_Ric;
3559 break;
3560 case FR30_OPERAND_RJC :
3561 value = fields->f_Rjc;
3562 break;
3563 case FR30_OPERAND_CRI :
3564 value = fields->f_CRi;
3565 break;
3566 case FR30_OPERAND_CRJ :
3567 value = fields->f_CRj;
3568 break;
3569 case FR30_OPERAND_RS1 :
3570 value = fields->f_Rs1;
3571 break;
3572 case FR30_OPERAND_RS2 :
3573 value = fields->f_Rs2;
3574 break;
3575 case FR30_OPERAND_R13 :
3576 value = fields->f_nil;
3577 break;
3578 case FR30_OPERAND_R14 :
3579 value = fields->f_nil;
3580 break;
3581 case FR30_OPERAND_R15 :
3582 value = fields->f_nil;
3583 break;
3584 case FR30_OPERAND_PS :
3585 value = fields->f_nil;
3586 break;
3587 case FR30_OPERAND_U4 :
3588 value = fields->f_u4;
3589 break;
3590 case FR30_OPERAND_U4C :
3591 value = fields->f_u4c;
3592 break;
3593 case FR30_OPERAND_U8 :
3594 value = fields->f_u8;
3595 break;
3596 case FR30_OPERAND_I8 :
3597 value = fields->f_i8;
3598 break;
3599 case FR30_OPERAND_UDISP6 :
3600 value = fields->f_udisp6;
3601 break;
3602 case FR30_OPERAND_DISP8 :
3603 value = fields->f_disp8;
3604 break;
3605 case FR30_OPERAND_DISP9 :
3606 value = fields->f_disp9;
3607 break;
3608 case FR30_OPERAND_DISP10 :
3609 value = fields->f_disp10;
3610 break;
3611 case FR30_OPERAND_S10 :
3612 value = fields->f_s10;
3613 break;
3614 case FR30_OPERAND_U10 :
3615 value = fields->f_u10;
3616 break;
3617 case FR30_OPERAND_I32 :
3618 value = fields->f_i32;
3619 break;
3620 case FR30_OPERAND_M4 :
3621 value = fields->f_m4;
3622 break;
3623 case FR30_OPERAND_I20 :
3624 value = fields->f_i20;
3625 break;
3626 case FR30_OPERAND_DIR8 :
3627 value = fields->f_dir8;
3628 break;
3629 case FR30_OPERAND_DIR9 :
3630 value = fields->f_dir9;
3631 break;
3632 case FR30_OPERAND_DIR10 :
3633 value = fields->f_dir10;
3634 break;
3635 case FR30_OPERAND_LABEL9 :
3636 value = fields->f_rel9;
3637 break;
3638 case FR30_OPERAND_LABEL12 :
3639 value = fields->f_rel12;
3640 break;
3641 case FR30_OPERAND_REGLIST_LOW_LD :
3642 value = fields->f_reglist_low_ld;
3643 break;
3644 case FR30_OPERAND_REGLIST_HI_LD :
3645 value = fields->f_reglist_hi_ld;
3646 break;
3647 case FR30_OPERAND_REGLIST_LOW_ST :
3648 value = fields->f_reglist_low_st;
3649 break;
3650 case FR30_OPERAND_REGLIST_HI_ST :
3651 value = fields->f_reglist_hi_st;
3652 break;
3653 case FR30_OPERAND_CC :
3654 value = fields->f_cc;
3655 break;
3656 case FR30_OPERAND_CCC :
3657 value = fields->f_ccc;
3658 break;
3659
3660 default :
3661 /* xgettext:c-format */
3662 fprintf (stderr, _("Unrecognized field %d while getting int operand.\n"),
3663 opindex);
3664 abort ();
3665 }
3666
3667 return value;
3668 }
3669
3670 bfd_vma
3671 fr30_cgen_get_vma_operand (opindex, fields)
3672 int opindex;
3673 const CGEN_FIELDS * fields;
3674 {
3675 bfd_vma value;
3676
3677 switch (opindex)
3678 {
3679 case FR30_OPERAND_RI :
3680 value = fields->f_Ri;
3681 break;
3682 case FR30_OPERAND_RJ :
3683 value = fields->f_Rj;
3684 break;
3685 case FR30_OPERAND_RIC :
3686 value = fields->f_Ric;
3687 break;
3688 case FR30_OPERAND_RJC :
3689 value = fields->f_Rjc;
3690 break;
3691 case FR30_OPERAND_CRI :
3692 value = fields->f_CRi;
3693 break;
3694 case FR30_OPERAND_CRJ :
3695 value = fields->f_CRj;
3696 break;
3697 case FR30_OPERAND_RS1 :
3698 value = fields->f_Rs1;
3699 break;
3700 case FR30_OPERAND_RS2 :
3701 value = fields->f_Rs2;
3702 break;
3703 case FR30_OPERAND_R13 :
3704 value = fields->f_nil;
3705 break;
3706 case FR30_OPERAND_R14 :
3707 value = fields->f_nil;
3708 break;
3709 case FR30_OPERAND_R15 :
3710 value = fields->f_nil;
3711 break;
3712 case FR30_OPERAND_PS :
3713 value = fields->f_nil;
3714 break;
3715 case FR30_OPERAND_U4 :
3716 value = fields->f_u4;
3717 break;
3718 case FR30_OPERAND_U4C :
3719 value = fields->f_u4c;
3720 break;
3721 case FR30_OPERAND_U8 :
3722 value = fields->f_u8;
3723 break;
3724 case FR30_OPERAND_I8 :
3725 value = fields->f_i8;
3726 break;
3727 case FR30_OPERAND_UDISP6 :
3728 value = fields->f_udisp6;
3729 break;
3730 case FR30_OPERAND_DISP8 :
3731 value = fields->f_disp8;
3732 break;
3733 case FR30_OPERAND_DISP9 :
3734 value = fields->f_disp9;
3735 break;
3736 case FR30_OPERAND_DISP10 :
3737 value = fields->f_disp10;
3738 break;
3739 case FR30_OPERAND_S10 :
3740 value = fields->f_s10;
3741 break;
3742 case FR30_OPERAND_U10 :
3743 value = fields->f_u10;
3744 break;
3745 case FR30_OPERAND_I32 :
3746 value = fields->f_i32;
3747 break;
3748 case FR30_OPERAND_M4 :
3749 value = fields->f_m4;
3750 break;
3751 case FR30_OPERAND_I20 :
3752 value = fields->f_i20;
3753 break;
3754 case FR30_OPERAND_DIR8 :
3755 value = fields->f_dir8;
3756 break;
3757 case FR30_OPERAND_DIR9 :
3758 value = fields->f_dir9;
3759 break;
3760 case FR30_OPERAND_DIR10 :
3761 value = fields->f_dir10;
3762 break;
3763 case FR30_OPERAND_LABEL9 :
3764 value = fields->f_rel9;
3765 break;
3766 case FR30_OPERAND_LABEL12 :
3767 value = fields->f_rel12;
3768 break;
3769 case FR30_OPERAND_REGLIST_LOW_LD :
3770 value = fields->f_reglist_low_ld;
3771 break;
3772 case FR30_OPERAND_REGLIST_HI_LD :
3773 value = fields->f_reglist_hi_ld;
3774 break;
3775 case FR30_OPERAND_REGLIST_LOW_ST :
3776 value = fields->f_reglist_low_st;
3777 break;
3778 case FR30_OPERAND_REGLIST_HI_ST :
3779 value = fields->f_reglist_hi_st;
3780 break;
3781 case FR30_OPERAND_CC :
3782 value = fields->f_cc;
3783 break;
3784 case FR30_OPERAND_CCC :
3785 value = fields->f_ccc;
3786 break;
3787
3788 default :
3789 /* xgettext:c-format */
3790 fprintf (stderr, _("Unrecognized field %d while getting vma operand.\n"),
3791 opindex);
3792 abort ();
3793 }
3794
3795 return value;
3796 }
3797
3798 /* Stuffing values in cgen_fields is handled by a collection of functions.
3799 They are distinguished by the type of the VALUE argument they accept.
3800 TODO: floating point, inlining support, remove cases where argument type
3801 not appropriate. */
3802
3803 void
3804 fr30_cgen_set_int_operand (opindex, fields, value)
3805 int opindex;
3806 CGEN_FIELDS * fields;
3807 int value;
3808 {
3809 switch (opindex)
3810 {
3811 case FR30_OPERAND_RI :
3812 fields->f_Ri = value;
3813 break;
3814 case FR30_OPERAND_RJ :
3815 fields->f_Rj = value;
3816 break;
3817 case FR30_OPERAND_RIC :
3818 fields->f_Ric = value;
3819 break;
3820 case FR30_OPERAND_RJC :
3821 fields->f_Rjc = value;
3822 break;
3823 case FR30_OPERAND_CRI :
3824 fields->f_CRi = value;
3825 break;
3826 case FR30_OPERAND_CRJ :
3827 fields->f_CRj = value;
3828 break;
3829 case FR30_OPERAND_RS1 :
3830 fields->f_Rs1 = value;
3831 break;
3832 case FR30_OPERAND_RS2 :
3833 fields->f_Rs2 = value;
3834 break;
3835 case FR30_OPERAND_R13 :
3836 fields->f_nil = value;
3837 break;
3838 case FR30_OPERAND_R14 :
3839 fields->f_nil = value;
3840 break;
3841 case FR30_OPERAND_R15 :
3842 fields->f_nil = value;
3843 break;
3844 case FR30_OPERAND_PS :
3845 fields->f_nil = value;
3846 break;
3847 case FR30_OPERAND_U4 :
3848 fields->f_u4 = value;
3849 break;
3850 case FR30_OPERAND_U4C :
3851 fields->f_u4c = value;
3852 break;
3853 case FR30_OPERAND_U8 :
3854 fields->f_u8 = value;
3855 break;
3856 case FR30_OPERAND_I8 :
3857 fields->f_i8 = value;
3858 break;
3859 case FR30_OPERAND_UDISP6 :
3860 fields->f_udisp6 = value;
3861 break;
3862 case FR30_OPERAND_DISP8 :
3863 fields->f_disp8 = value;
3864 break;
3865 case FR30_OPERAND_DISP9 :
3866 fields->f_disp9 = value;
3867 break;
3868 case FR30_OPERAND_DISP10 :
3869 fields->f_disp10 = value;
3870 break;
3871 case FR30_OPERAND_S10 :
3872 fields->f_s10 = value;
3873 break;
3874 case FR30_OPERAND_U10 :
3875 fields->f_u10 = value;
3876 break;
3877 case FR30_OPERAND_I32 :
3878 fields->f_i32 = value;
3879 break;
3880 case FR30_OPERAND_M4 :
3881 fields->f_m4 = value;
3882 break;
3883 case FR30_OPERAND_I20 :
3884 fields->f_i20 = value;
3885 break;
3886 case FR30_OPERAND_DIR8 :
3887 fields->f_dir8 = value;
3888 break;
3889 case FR30_OPERAND_DIR9 :
3890 fields->f_dir9 = value;
3891 break;
3892 case FR30_OPERAND_DIR10 :
3893 fields->f_dir10 = value;
3894 break;
3895 case FR30_OPERAND_LABEL9 :
3896 fields->f_rel9 = value;
3897 break;
3898 case FR30_OPERAND_LABEL12 :
3899 fields->f_rel12 = value;
3900 break;
3901 case FR30_OPERAND_REGLIST_LOW_LD :
3902 fields->f_reglist_low_ld = value;
3903 break;
3904 case FR30_OPERAND_REGLIST_HI_LD :
3905 fields->f_reglist_hi_ld = value;
3906 break;
3907 case FR30_OPERAND_REGLIST_LOW_ST :
3908 fields->f_reglist_low_st = value;
3909 break;
3910 case FR30_OPERAND_REGLIST_HI_ST :
3911 fields->f_reglist_hi_st = value;
3912 break;
3913 case FR30_OPERAND_CC :
3914 fields->f_cc = value;
3915 break;
3916 case FR30_OPERAND_CCC :
3917 fields->f_ccc = value;
3918 break;
3919
3920 default :
3921 /* xgettext:c-format */
3922 fprintf (stderr, _("Unrecognized field %d while setting int operand.\n"),
3923 opindex);
3924 abort ();
3925 }
3926 }
3927
3928 void
3929 fr30_cgen_set_vma_operand (opindex, fields, value)
3930 int opindex;
3931 CGEN_FIELDS * fields;
3932 bfd_vma value;
3933 {
3934 switch (opindex)
3935 {
3936 case FR30_OPERAND_RI :
3937 fields->f_Ri = value;
3938 break;
3939 case FR30_OPERAND_RJ :
3940 fields->f_Rj = value;
3941 break;
3942 case FR30_OPERAND_RIC :
3943 fields->f_Ric = value;
3944 break;
3945 case FR30_OPERAND_RJC :
3946 fields->f_Rjc = value;
3947 break;
3948 case FR30_OPERAND_CRI :
3949 fields->f_CRi = value;
3950 break;
3951 case FR30_OPERAND_CRJ :
3952 fields->f_CRj = value;
3953 break;
3954 case FR30_OPERAND_RS1 :
3955 fields->f_Rs1 = value;
3956 break;
3957 case FR30_OPERAND_RS2 :
3958 fields->f_Rs2 = value;
3959 break;
3960 case FR30_OPERAND_R13 :
3961 fields->f_nil = value;
3962 break;
3963 case FR30_OPERAND_R14 :
3964 fields->f_nil = value;
3965 break;
3966 case FR30_OPERAND_R15 :
3967 fields->f_nil = value;
3968 break;
3969 case FR30_OPERAND_PS :
3970 fields->f_nil = value;
3971 break;
3972 case FR30_OPERAND_U4 :
3973 fields->f_u4 = value;
3974 break;
3975 case FR30_OPERAND_U4C :
3976 fields->f_u4c = value;
3977 break;
3978 case FR30_OPERAND_U8 :
3979 fields->f_u8 = value;
3980 break;
3981 case FR30_OPERAND_I8 :
3982 fields->f_i8 = value;
3983 break;
3984 case FR30_OPERAND_UDISP6 :
3985 fields->f_udisp6 = value;
3986 break;
3987 case FR30_OPERAND_DISP8 :
3988 fields->f_disp8 = value;
3989 break;
3990 case FR30_OPERAND_DISP9 :
3991 fields->f_disp9 = value;
3992 break;
3993 case FR30_OPERAND_DISP10 :
3994 fields->f_disp10 = value;
3995 break;
3996 case FR30_OPERAND_S10 :
3997 fields->f_s10 = value;
3998 break;
3999 case FR30_OPERAND_U10 :
4000 fields->f_u10 = value;
4001 break;
4002 case FR30_OPERAND_I32 :
4003 fields->f_i32 = value;
4004 break;
4005 case FR30_OPERAND_M4 :
4006 fields->f_m4 = value;
4007 break;
4008 case FR30_OPERAND_I20 :
4009 fields->f_i20 = value;
4010 break;
4011 case FR30_OPERAND_DIR8 :
4012 fields->f_dir8 = value;
4013 break;
4014 case FR30_OPERAND_DIR9 :
4015 fields->f_dir9 = value;
4016 break;
4017 case FR30_OPERAND_DIR10 :
4018 fields->f_dir10 = value;
4019 break;
4020 case FR30_OPERAND_LABEL9 :
4021 fields->f_rel9 = value;
4022 break;
4023 case FR30_OPERAND_LABEL12 :
4024 fields->f_rel12 = value;
4025 break;
4026 case FR30_OPERAND_REGLIST_LOW_LD :
4027 fields->f_reglist_low_ld = value;
4028 break;
4029 case FR30_OPERAND_REGLIST_HI_LD :
4030 fields->f_reglist_hi_ld = value;
4031 break;
4032 case FR30_OPERAND_REGLIST_LOW_ST :
4033 fields->f_reglist_low_st = value;
4034 break;
4035 case FR30_OPERAND_REGLIST_HI_ST :
4036 fields->f_reglist_hi_st = value;
4037 break;
4038 case FR30_OPERAND_CC :
4039 fields->f_cc = value;
4040 break;
4041 case FR30_OPERAND_CCC :
4042 fields->f_ccc = value;
4043 break;
4044
4045 default :
4046 /* xgettext:c-format */
4047 fprintf (stderr, _("Unrecognized field %d while setting vma operand.\n"),
4048 opindex);
4049 abort ();
4050 }
4051 }
4052
This page took 0.153711 seconds and 5 git commands to generate.