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