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