Regenerate with less verbose operand instance tables.
[deliverable/binutils-gdb.git] / opcodes / m32r-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 m32r-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
22 Foundation, Inc., 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 "m32r-opc.h"
31
32 /* Look up instruction INSN_VALUE and extract its fields.
33 If non-null INSN is the insn table entry.
34 Otherwise INSN_VALUE is examined to compute it.
35 LENGTH is the bit length of INSN_VALUE if known, otherwise 0.
36 The result a pointer to the insn table entry, or NULL if the instruction
37 wasn't recognized. */
38
39 const CGEN_INSN *
40 m32r_cgen_lookup_insn (insn, insn_value, length, fields)
41 const CGEN_INSN *insn;
42 cgen_insn_t insn_value;
43 int length;
44 CGEN_FIELDS *fields;
45 {
46 char buf[4];
47
48 if (!insn)
49 {
50 const CGEN_INSN_LIST *insn_list;
51
52 #ifdef CGEN_INT_INSN
53 switch (length)
54 {
55 case 8:
56 buf[0] = insn_value;
57 break;
58 case 16:
59 if (cgen_current_endian == CGEN_ENDIAN_BIG)
60 bfd_putb16 (insn_value, buf);
61 else
62 bfd_putl16 (insn_value, buf);
63 break;
64 case 32:
65 if (cgen_current_endian == CGEN_ENDIAN_BIG)
66 bfd_putb32 (insn_value, buf);
67 else
68 bfd_putl32 (insn_value, buf);
69 break;
70 default:
71 abort ();
72 }
73 #else
74 abort (); /* FIXME: unfinished */
75 #endif
76
77 /* The instructions are stored in hash lists.
78 Pick the first one and keep trying until we find the right one. */
79
80 insn_list = CGEN_DIS_LOOKUP_INSN (buf, insn_value);
81 while (insn_list != NULL)
82 {
83 insn = insn_list->insn;
84
85 /* Basic bit mask must be correct. */
86 /* ??? May wish to allow target to defer this check until the extract
87 handler. */
88 if ((insn_value & CGEN_INSN_MASK (insn)) == CGEN_INSN_VALUE (insn))
89 {
90 length = (*CGEN_EXTRACT_FN (insn)) (insn, NULL, insn_value, fields);
91 if (length > 0)
92 return insn;
93 }
94
95 insn_list = CGEN_DIS_NEXT_INSN (insn_list);
96 }
97 }
98 else
99 {
100 length = (*CGEN_EXTRACT_FN (insn)) (insn, NULL, insn_value, fields);
101 if (length > 0)
102 return insn;
103 }
104
105 return NULL;
106 }
107
108 /* Fill in the operand instances used by insn INSN_VALUE.
109 If non-null INS is the insn table entry.
110 Otherwise INSN_VALUE is examined to compute it.
111 LENGTH is the number of bits in INSN_VALUE if known, otherwise 0.
112 INDICES is a pointer to a buffer of MAX_OPERANDS ints to be filled in.
113 The result a pointer to the insn table entry, or NULL if the instruction
114 wasn't recognized. */
115
116 const CGEN_INSN *
117 m32r_cgen_get_insn_operands (insn, insn_value, length, indices)
118 const CGEN_INSN *insn;
119 cgen_insn_t insn_value;
120 int length;
121 int *indices;
122 {
123 CGEN_FIELDS fields;
124 const CGEN_OPERAND_INSTANCE *opinst;
125 int i;
126
127 insn = m32r_cgen_lookup_insn (insn, insn_value, length, &fields);
128 if (! insn)
129 return NULL;
130
131 for (i = 0, opinst = CGEN_INSN_OPERANDS (insn);
132 CGEN_OPERAND_INSTANCE_TYPE (opinst) != CGEN_OPERAND_INSTANCE_END;
133 ++i, ++opinst)
134 {
135 const CGEN_OPERAND *op = CGEN_OPERAND_INSTANCE_OPERAND (opinst);
136 if (op == NULL)
137 indices[i] = CGEN_OPERAND_INSTANCE_INDEX (opinst);
138 else
139 indices[i] = m32r_cgen_get_operand (CGEN_OPERAND_INDEX (op), &fields);
140 }
141
142 return insn;
143 }
144 /* Attributes. */
145
146 static const CGEN_ATTR_ENTRY MACH_attr[] =
147 {
148 { "m32r", MACH_M32R },
149 /* start-sanitize-m32rx */
150 { "m32rx", MACH_M32RX },
151 /* end-sanitize-m32rx */
152 { "max", MACH_MAX },
153 { 0, 0 }
154 };
155
156 static const CGEN_ATTR_ENTRY WRITE_LR_attr[] =
157 {
158 { "NO", WRITE_LR_NO },
159 { "YES", WRITE_LR_YES },
160 { 0, 0 }
161 };
162
163 static const CGEN_ATTR_ENTRY WRITE_SRC_attr[] =
164 {
165 { "NO", WRITE_SRC_NO },
166 { "YES", WRITE_SRC_YES },
167 { 0, 0 }
168 };
169
170 /* start-sanitize-m32rx */
171 static const CGEN_ATTR_ENTRY PIPE_attr[] =
172 {
173 { "NONE", PIPE_NONE },
174 { "O", PIPE_O },
175 { "S", PIPE_S },
176 { "OS", PIPE_OS },
177 { 0, 0 }
178 };
179
180 /* end-sanitize-m32rx */
181 const CGEN_ATTR_TABLE m32r_cgen_operand_attr_table[] =
182 {
183 { "ABS-ADDR", NULL },
184 { "FAKE", NULL },
185 { "NEGATIVE", NULL },
186 { "PC", NULL },
187 { "PCREL-ADDR", NULL },
188 { "RELAX", NULL },
189 { "RELOC", NULL },
190 { "SIGN-OPT", NULL },
191 { "UNSIGNED", NULL },
192 { 0, 0 }
193 };
194
195 const CGEN_ATTR_TABLE m32r_cgen_insn_attr_table[] =
196 {
197 { "MACH", & MACH_attr[0] },
198 /* start-sanitize-m32rx */
199 { "PIPE", & PIPE_attr[0] },
200 /* end-sanitize-m32rx */
201 { "WRITE_LR", & WRITE_LR_attr[0] },
202 { "WRITE_SRC", & WRITE_SRC_attr[0] },
203 { "ALIAS", NULL },
204 { "COND-CTI", NULL },
205 { "FILL-SLOT", NULL },
206 { "PARALLEL", NULL },
207 { "RELAX", NULL },
208 { "RELAXABLE", NULL },
209 { "UNCOND-CTI", NULL },
210 { 0, 0 }
211 };
212
213 CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_gr_entries[] =
214 {
215 { "fp", 13 },
216 { "lr", 14 },
217 { "sp", 15 },
218 { "r0", 0 },
219 { "r1", 1 },
220 { "r2", 2 },
221 { "r3", 3 },
222 { "r4", 4 },
223 { "r5", 5 },
224 { "r6", 6 },
225 { "r7", 7 },
226 { "r8", 8 },
227 { "r9", 9 },
228 { "r10", 10 },
229 { "r11", 11 },
230 { "r12", 12 },
231 { "r13", 13 },
232 { "r14", 14 },
233 { "r15", 15 }
234 };
235
236 CGEN_KEYWORD m32r_cgen_opval_h_gr =
237 {
238 & m32r_cgen_opval_h_gr_entries[0],
239 19
240 };
241
242 CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_cr_entries[] =
243 {
244 { "psw", 0 },
245 { "cbr", 1 },
246 { "spi", 2 },
247 { "spu", 3 },
248 { "bpc", 6 },
249 { "cr0", 0 },
250 { "cr1", 1 },
251 { "cr2", 2 },
252 { "cr3", 3 },
253 { "cr4", 4 },
254 { "cr5", 5 },
255 { "cr6", 6 }
256 };
257
258 CGEN_KEYWORD m32r_cgen_opval_h_cr =
259 {
260 & m32r_cgen_opval_h_cr_entries[0],
261 12
262 };
263
264 /* start-sanitize-m32rx */
265 CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_accums_entries[] =
266 {
267 { "a0", 0 },
268 { "a1", 1 }
269 };
270
271 CGEN_KEYWORD m32r_cgen_opval_h_accums =
272 {
273 & m32r_cgen_opval_h_accums_entries[0],
274 2
275 };
276
277 /* end-sanitize-m32rx */
278
279 /* The hardware table. */
280
281 #define HW_ENT(n) m32r_cgen_hw_entries[n]
282 static const CGEN_HW_ENTRY m32r_cgen_hw_entries[] =
283 {
284 { HW_H_PC, & HW_ENT (HW_H_PC + 1), "h-pc", CGEN_ASM_KEYWORD, (PTR) 0 },
285 { HW_H_MEMORY, & HW_ENT (HW_H_MEMORY + 1), "h-memory", CGEN_ASM_KEYWORD, (PTR) 0 },
286 { HW_H_SINT, & HW_ENT (HW_H_SINT + 1), "h-sint", CGEN_ASM_KEYWORD, (PTR) 0 },
287 { HW_H_UINT, & HW_ENT (HW_H_UINT + 1), "h-uint", CGEN_ASM_KEYWORD, (PTR) 0 },
288 { HW_H_ADDR, & HW_ENT (HW_H_ADDR + 1), "h-addr", CGEN_ASM_KEYWORD, (PTR) 0 },
289 { HW_H_IADDR, & HW_ENT (HW_H_IADDR + 1), "h-iaddr", CGEN_ASM_KEYWORD, (PTR) 0 },
290 { HW_H_HI16, & HW_ENT (HW_H_HI16 + 1), "h-hi16", CGEN_ASM_KEYWORD, (PTR) 0 },
291 { HW_H_SLO16, & HW_ENT (HW_H_SLO16 + 1), "h-slo16", CGEN_ASM_KEYWORD, (PTR) 0 },
292 { HW_H_ULO16, & HW_ENT (HW_H_ULO16 + 1), "h-ulo16", CGEN_ASM_KEYWORD, (PTR) 0 },
293 { HW_H_GR, & HW_ENT (HW_H_GR + 1), "h-gr", CGEN_ASM_KEYWORD, (PTR) & m32r_cgen_opval_h_gr },
294 { HW_H_CR, & HW_ENT (HW_H_CR + 1), "h-cr", CGEN_ASM_KEYWORD, (PTR) & m32r_cgen_opval_h_cr },
295 { HW_H_ACCUM, & HW_ENT (HW_H_ACCUM + 1), "h-accum", CGEN_ASM_KEYWORD, (PTR) 0 },
296 /* start-sanitize-m32rx */
297 { HW_H_ACCUMS, & HW_ENT (HW_H_ACCUMS + 1), "h-accums", CGEN_ASM_KEYWORD, (PTR) & m32r_cgen_opval_h_accums },
298 /* end-sanitize-m32rx */
299 /* start-sanitize-m32rx */
300 { HW_H_ABORT, & HW_ENT (HW_H_ABORT + 1), "h-abort", CGEN_ASM_KEYWORD, (PTR) 0 },
301 /* end-sanitize-m32rx */
302 { HW_H_COND, & HW_ENT (HW_H_COND + 1), "h-cond", CGEN_ASM_KEYWORD, (PTR) 0 },
303 { HW_H_SM, & HW_ENT (HW_H_SM + 1), "h-sm", CGEN_ASM_KEYWORD, (PTR) 0 },
304 { HW_H_BSM, & HW_ENT (HW_H_BSM + 1), "h-bsm", CGEN_ASM_KEYWORD, (PTR) 0 },
305 { HW_H_IE, & HW_ENT (HW_H_IE + 1), "h-ie", CGEN_ASM_KEYWORD, (PTR) 0 },
306 { HW_H_BIE, & HW_ENT (HW_H_BIE + 1), "h-bie", CGEN_ASM_KEYWORD, (PTR) 0 },
307 { HW_H_BCOND, & HW_ENT (HW_H_BCOND + 1), "h-bcond", CGEN_ASM_KEYWORD, (PTR) 0 },
308 { HW_H_BPC, & HW_ENT (HW_H_BPC + 1), "h-bpc", CGEN_ASM_KEYWORD, (PTR) 0 },
309 { 0 }
310 };
311
312 /* The operand table. */
313
314 #define OP_ENT(op) m32r_cgen_operand_table[CONCAT2 (M32R_OPERAND_,op)]
315 const CGEN_OPERAND m32r_cgen_operand_table[MAX_OPERANDS] =
316 {
317 /* pc: program counter */
318 { "pc", & HW_ENT (HW_H_PC), 0, 0,
319 { 0, 0|(1<<CGEN_OPERAND_FAKE)|(1<<CGEN_OPERAND_PC), { 0 } } },
320 /* sr: source register */
321 { "sr", & HW_ENT (HW_H_GR), 12, 4,
322 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
323 /* dr: destination register */
324 { "dr", & HW_ENT (HW_H_GR), 4, 4,
325 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
326 /* src1: source register 1 */
327 { "src1", & HW_ENT (HW_H_GR), 4, 4,
328 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
329 /* src2: source register 2 */
330 { "src2", & HW_ENT (HW_H_GR), 12, 4,
331 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
332 /* scr: source control register */
333 { "scr", & HW_ENT (HW_H_CR), 12, 4,
334 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
335 /* dcr: destination control register */
336 { "dcr", & HW_ENT (HW_H_CR), 4, 4,
337 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
338 /* simm8: 8 bit signed immediate */
339 { "simm8", & HW_ENT (HW_H_SINT), 8, 8,
340 { 0, 0, { 0 } } },
341 /* simm16: 16 bit signed immediate */
342 { "simm16", & HW_ENT (HW_H_SINT), 16, 16,
343 { 0, 0, { 0 } } },
344 /* uimm4: 4 bit trap number */
345 { "uimm4", & HW_ENT (HW_H_UINT), 12, 4,
346 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
347 /* uimm5: 5 bit shift count */
348 { "uimm5", & HW_ENT (HW_H_UINT), 11, 5,
349 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
350 /* uimm16: 16 bit unsigned immediate */
351 { "uimm16", & HW_ENT (HW_H_UINT), 16, 16,
352 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
353 /* start-sanitize-m32rx */
354 /* imm1: 1 bit immediate */
355 { "imm1", & HW_ENT (HW_H_UINT), 15, 1,
356 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
357 /* end-sanitize-m32rx */
358 /* start-sanitize-m32rx */
359 /* accd: accumulator destination register */
360 { "accd", & HW_ENT (HW_H_ACCUMS), 4, 2,
361 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
362 /* end-sanitize-m32rx */
363 /* start-sanitize-m32rx */
364 /* accs: accumulator source register */
365 { "accs", & HW_ENT (HW_H_ACCUMS), 12, 2,
366 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
367 /* end-sanitize-m32rx */
368 /* start-sanitize-m32rx */
369 /* acc: accumulator reg (d) */
370 { "acc", & HW_ENT (HW_H_ACCUMS), 8, 1,
371 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
372 /* end-sanitize-m32rx */
373 /* hi16: high 16 bit immediate, sign optional */
374 { "hi16", & HW_ENT (HW_H_HI16), 16, 16,
375 { 0, 0|(1<<CGEN_OPERAND_SIGN_OPT)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
376 /* slo16: 16 bit signed immediate, for low() */
377 { "slo16", & HW_ENT (HW_H_SLO16), 16, 16,
378 { 0, 0, { 0 } } },
379 /* ulo16: 16 bit unsigned immediate, for low() */
380 { "ulo16", & HW_ENT (HW_H_ULO16), 16, 16,
381 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
382 /* uimm24: 24 bit address */
383 { "uimm24", & HW_ENT (HW_H_ADDR), 8, 24,
384 { 0, 0|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_ABS_ADDR)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
385 /* disp8: 8 bit displacement */
386 { "disp8", & HW_ENT (HW_H_IADDR), 8, 8,
387 { 0, 0|(1<<CGEN_OPERAND_RELAX)|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_PCREL_ADDR), { 0 } } },
388 /* disp16: 16 bit displacement */
389 { "disp16", & HW_ENT (HW_H_IADDR), 16, 16,
390 { 0, 0|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_PCREL_ADDR), { 0 } } },
391 /* disp24: 24 bit displacement */
392 { "disp24", & HW_ENT (HW_H_IADDR), 8, 24,
393 { 0, 0|(1<<CGEN_OPERAND_RELAX)|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_PCREL_ADDR), { 0 } } },
394 /* condbit: condition bit */
395 { "condbit", & HW_ENT (HW_H_COND), 0, 0,
396 { 0, 0|(1<<CGEN_OPERAND_FAKE), { 0 } } },
397 /* accum: accumulator */
398 { "accum", & HW_ENT (HW_H_ACCUM), 0, 0,
399 { 0, 0|(1<<CGEN_OPERAND_FAKE), { 0 } } },
400 /* start-sanitize-m32rx */
401 /* abort-parallel-execution: abort parallel execution */
402 { "abort-parallel-execution", & HW_ENT (HW_H_ABORT), 0, 0,
403 { 0, 0|(1<<CGEN_OPERAND_FAKE), { 0 } } },
404 /* end-sanitize-m32rx */
405 };
406
407 /* Operand references. */
408
409 #define INPUT CGEN_OPERAND_INSTANCE_INPUT
410 #define OUTPUT CGEN_OPERAND_INSTANCE_OUTPUT
411
412 static const CGEN_OPERAND_INSTANCE fmt_0_add_ops[] = {
413 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
414 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
415 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
416 { 0 }
417 };
418
419 static const CGEN_OPERAND_INSTANCE fmt_1_add3_ops[] = {
420 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
421 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
422 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
423 { 0 }
424 };
425
426 static const CGEN_OPERAND_INSTANCE fmt_2_and3_ops[] = {
427 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
428 { INPUT, & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (UIMM16), 0 },
429 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
430 { 0 }
431 };
432
433 static const CGEN_OPERAND_INSTANCE fmt_3_or3_ops[] = {
434 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
435 { INPUT, & HW_ENT (HW_H_ULO16), CGEN_MODE_UHI, & OP_ENT (ULO16), 0 },
436 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
437 { 0 }
438 };
439
440 static const CGEN_OPERAND_INSTANCE fmt_4_addi_ops[] = {
441 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
442 { INPUT, & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (SIMM8), 0 },
443 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
444 { 0 }
445 };
446
447 static const CGEN_OPERAND_INSTANCE fmt_5_addv3_ops[] = {
448 { INPUT, & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (SIMM16), 0 },
449 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
450 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
451 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
452 { 0 }
453 };
454
455 static const CGEN_OPERAND_INSTANCE fmt_6_addx_ops[] = {
456 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
457 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
458 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
459 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
460 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
461 { 0 }
462 };
463
464 static const CGEN_OPERAND_INSTANCE fmt_7_bc8_ops[] = {
465 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
466 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP8), 0 },
467 { 0 }
468 };
469
470 static const CGEN_OPERAND_INSTANCE fmt_9_bc24_ops[] = {
471 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
472 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP24), 0 },
473 { 0 }
474 };
475
476 static const CGEN_OPERAND_INSTANCE fmt_11_beq_ops[] = {
477 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP16), 0 },
478 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
479 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
480 { 0 }
481 };
482
483 static const CGEN_OPERAND_INSTANCE fmt_12_beqz_ops[] = {
484 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP16), 0 },
485 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
486 { 0 }
487 };
488
489 static const CGEN_OPERAND_INSTANCE fmt_13_bl8_ops[] = {
490 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP8), 0 },
491 { INPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, & OP_ENT (PC), 0 },
492 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14 },
493 { 0 }
494 };
495
496 static const CGEN_OPERAND_INSTANCE fmt_14_bl24_ops[] = {
497 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP24), 0 },
498 { INPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, & OP_ENT (PC), 0 },
499 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14 },
500 { 0 }
501 };
502
503 static const CGEN_OPERAND_INSTANCE fmt_15_bcl8_ops[] = {
504 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
505 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP8), 0 },
506 { INPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, & OP_ENT (PC), 0 },
507 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14 },
508 { 0 }
509 };
510
511 static const CGEN_OPERAND_INSTANCE fmt_16_bcl24_ops[] = {
512 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
513 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP24), 0 },
514 { INPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, & OP_ENT (PC), 0 },
515 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14 },
516 { 0 }
517 };
518
519 static const CGEN_OPERAND_INSTANCE fmt_17_bra8_ops[] = {
520 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP8), 0 },
521 { 0 }
522 };
523
524 static const CGEN_OPERAND_INSTANCE fmt_18_bra24_ops[] = {
525 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP24), 0 },
526 { 0 }
527 };
528
529 static const CGEN_OPERAND_INSTANCE fmt_19_cmp_ops[] = {
530 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
531 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
532 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
533 { 0 }
534 };
535
536 static const CGEN_OPERAND_INSTANCE fmt_20_cmpi_ops[] = {
537 { INPUT, & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (SIMM16), 0 },
538 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
539 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
540 { 0 }
541 };
542
543 static const CGEN_OPERAND_INSTANCE fmt_21_cmpui_ops[] = {
544 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
545 { INPUT, & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (UIMM16), 0 },
546 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
547 { 0 }
548 };
549
550 static const CGEN_OPERAND_INSTANCE fmt_22_cmpz_ops[] = {
551 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
552 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
553 { 0 }
554 };
555
556 static const CGEN_OPERAND_INSTANCE fmt_23_div_ops[] = {
557 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
558 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
559 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
560 { 0 }
561 };
562
563 static const CGEN_OPERAND_INSTANCE fmt_24_jc_ops[] = {
564 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
565 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
566 { 0 }
567 };
568
569 static const CGEN_OPERAND_INSTANCE fmt_25_jl_ops[] = {
570 { INPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, & OP_ENT (PC), 0 },
571 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
572 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14 },
573 { 0 }
574 };
575
576 static const CGEN_OPERAND_INSTANCE fmt_26_jmp_ops[] = {
577 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
578 { 0 }
579 };
580
581 static const CGEN_OPERAND_INSTANCE fmt_27_ld_ops[] = {
582 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0 },
583 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
584 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
585 { 0 }
586 };
587
588 static const CGEN_OPERAND_INSTANCE fmt_29_ld_d_ops[] = {
589 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0 },
590 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
591 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
592 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
593 { 0 }
594 };
595
596 static const CGEN_OPERAND_INSTANCE fmt_31_ldb_ops[] = {
597 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0 },
598 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
599 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
600 { 0 }
601 };
602
603 static const CGEN_OPERAND_INSTANCE fmt_32_ldb_d_ops[] = {
604 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0 },
605 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
606 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
607 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
608 { 0 }
609 };
610
611 static const CGEN_OPERAND_INSTANCE fmt_33_ldh_ops[] = {
612 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0 },
613 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
614 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
615 { 0 }
616 };
617
618 static const CGEN_OPERAND_INSTANCE fmt_34_ldh_d_ops[] = {
619 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0 },
620 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
621 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
622 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
623 { 0 }
624 };
625
626 static const CGEN_OPERAND_INSTANCE fmt_35_ld24_ops[] = {
627 { INPUT, & HW_ENT (HW_H_ADDR), CGEN_MODE_VM, & OP_ENT (UIMM24), 0 },
628 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
629 { 0 }
630 };
631
632 static const CGEN_OPERAND_INSTANCE fmt_36_ldi8_ops[] = {
633 { INPUT, & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (SIMM8), 0 },
634 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
635 { 0 }
636 };
637
638 static const CGEN_OPERAND_INSTANCE fmt_37_ldi16_ops[] = {
639 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
640 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
641 { 0 }
642 };
643
644 static const CGEN_OPERAND_INSTANCE fmt_38_machi_ops[] = {
645 { INPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, & OP_ENT (ACCUM), 0 },
646 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
647 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
648 { OUTPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, & OP_ENT (ACCUM), 0 },
649 { 0 }
650 };
651
652 static const CGEN_OPERAND_INSTANCE fmt_39_machi_a_ops[] = {
653 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACC), 0 },
654 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
655 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
656 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACC), 0 },
657 { 0 }
658 };
659
660 static const CGEN_OPERAND_INSTANCE fmt_40_mulhi_a_ops[] = {
661 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
662 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
663 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACC), 0 },
664 { 0 }
665 };
666
667 static const CGEN_OPERAND_INSTANCE fmt_41_mv_ops[] = {
668 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
669 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
670 { 0 }
671 };
672
673 static const CGEN_OPERAND_INSTANCE fmt_42_mvfachi_ops[] = {
674 { INPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, & OP_ENT (ACCUM), 0 },
675 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
676 { 0 }
677 };
678
679 static const CGEN_OPERAND_INSTANCE fmt_43_mvfachi_a_ops[] = {
680 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCS), 0 },
681 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
682 { 0 }
683 };
684
685 static const CGEN_OPERAND_INSTANCE fmt_44_mvfc_ops[] = {
686 { INPUT, & HW_ENT (HW_H_CR), CGEN_MODE_SI, & OP_ENT (SCR), 0 },
687 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
688 { 0 }
689 };
690
691 static const CGEN_OPERAND_INSTANCE fmt_45_mvtachi_ops[] = {
692 { INPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, & OP_ENT (ACCUM), 0 },
693 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
694 { OUTPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, & OP_ENT (ACCUM), 0 },
695 { 0 }
696 };
697
698 static const CGEN_OPERAND_INSTANCE fmt_46_mvtachi_a_ops[] = {
699 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCS), 0 },
700 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
701 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCS), 0 },
702 { 0 }
703 };
704
705 static const CGEN_OPERAND_INSTANCE fmt_47_mvtc_ops[] = {
706 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
707 { OUTPUT, & HW_ENT (HW_H_CR), CGEN_MODE_SI, & OP_ENT (DCR), 0 },
708 { 0 }
709 };
710
711 static const CGEN_OPERAND_INSTANCE fmt_49_rac_ops[] = {
712 { INPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, & OP_ENT (ACCUM), 0 },
713 { OUTPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, & OP_ENT (ACCUM), 0 },
714 { 0 }
715 };
716
717 static const CGEN_OPERAND_INSTANCE fmt_50_rac_d_ops[] = {
718 { INPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, & OP_ENT (ACCUM), 0 },
719 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCD), 0 },
720 { 0 }
721 };
722
723 static const CGEN_OPERAND_INSTANCE fmt_51_rac_ds_ops[] = {
724 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCS), 0 },
725 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCD), 0 },
726 { 0 }
727 };
728
729 static const CGEN_OPERAND_INSTANCE fmt_52_rac_dsi_ops[] = {
730 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCS), 0 },
731 { INPUT, & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (IMM1), 0 },
732 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCD), 0 },
733 { 0 }
734 };
735
736 static const CGEN_OPERAND_INSTANCE fmt_53_rte_ops[] = {
737 { INPUT, & HW_ENT (HW_H_BCOND), CGEN_MODE_VM, 0, 0 },
738 { INPUT, & HW_ENT (HW_H_BIE), CGEN_MODE_VM, 0, 0 },
739 { INPUT, & HW_ENT (HW_H_BPC), CGEN_MODE_VM, 0, 0 },
740 { INPUT, & HW_ENT (HW_H_BSM), CGEN_MODE_VM, 0, 0 },
741 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
742 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, & OP_ENT (PC), 0 },
743 { OUTPUT, & HW_ENT (HW_H_IE), CGEN_MODE_VM, 0, 0 },
744 { OUTPUT, & HW_ENT (HW_H_SM), CGEN_MODE_VM, 0, 0 },
745 { 0 }
746 };
747
748 static const CGEN_OPERAND_INSTANCE fmt_54_seth_ops[] = {
749 { INPUT, & HW_ENT (HW_H_HI16), CGEN_MODE_UHI, & OP_ENT (HI16), 0 },
750 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
751 { 0 }
752 };
753
754 static const CGEN_OPERAND_INSTANCE fmt_55_slli_ops[] = {
755 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
756 { INPUT, & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (UIMM5), 0 },
757 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
758 { 0 }
759 };
760
761 static const CGEN_OPERAND_INSTANCE fmt_57_st_d_ops[] = {
762 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
763 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
764 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
765 { OUTPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0 },
766 { 0 }
767 };
768
769 static const CGEN_OPERAND_INSTANCE fmt_59_trap_ops[] = {
770 { INPUT, & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (UIMM4), 0 },
771 { 0 }
772 };
773
774 static const CGEN_OPERAND_INSTANCE fmt_62_satb_ops[] = {
775 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
776 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
777 { 0 }
778 };
779
780 static const CGEN_OPERAND_INSTANCE fmt_63_sat_ops[] = {
781 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
782 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
783 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
784 { 0 }
785 };
786
787 static const CGEN_OPERAND_INSTANCE fmt_64_sadd_ops[] = {
788 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, 0, 0 },
789 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, 0, 1 },
790 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, 0, 0 },
791 { 0 }
792 };
793
794 static const CGEN_OPERAND_INSTANCE fmt_65_macwu1_ops[] = {
795 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, 0, 1 },
796 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
797 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
798 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, 0, 1 },
799 { 0 }
800 };
801
802 static const CGEN_OPERAND_INSTANCE fmt_66_sc_ops[] = {
803 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, & OP_ENT (CONDBIT), 0 },
804 { OUTPUT, & HW_ENT (HW_H_ABORT), CGEN_MODE_UBI, & OP_ENT (ABORT_PARALLEL_EXECUTION), 0 },
805 { 0 }
806 };
807
808 #undef INPUT
809 #undef OUTPUT
810
811 #define OP 1 /* syntax value for mnemonic */
812
813 static const CGEN_SYNTAX syntax_table[] =
814 {
815 /* <op> $dr,$sr */
816 /* 0 */ { OP, ' ', 130, ',', 129, 0 },
817 /* <op> $dr,$sr,#$slo16 */
818 /* 1 */ { OP, ' ', 130, ',', 129, ',', '#', 145, 0 },
819 /* <op> $dr,$sr,$slo16 */
820 /* 2 */ { OP, ' ', 130, ',', 129, ',', 145, 0 },
821 /* <op> $dr,$sr,#$uimm16 */
822 /* 3 */ { OP, ' ', 130, ',', 129, ',', '#', 139, 0 },
823 /* <op> $dr,$sr,$uimm16 */
824 /* 4 */ { OP, ' ', 130, ',', 129, ',', 139, 0 },
825 /* <op> $dr,$sr,#$ulo16 */
826 /* 5 */ { OP, ' ', 130, ',', 129, ',', '#', 146, 0 },
827 /* <op> $dr,$sr,$ulo16 */
828 /* 6 */ { OP, ' ', 130, ',', 129, ',', 146, 0 },
829 /* <op> $dr,#$simm8 */
830 /* 7 */ { OP, ' ', 130, ',', '#', 135, 0 },
831 /* <op> $dr,$simm8 */
832 /* 8 */ { OP, ' ', 130, ',', 135, 0 },
833 /* <op> $dr,$sr,#$simm16 */
834 /* 9 */ { OP, ' ', 130, ',', 129, ',', '#', 136, 0 },
835 /* <op> $dr,$sr,$simm16 */
836 /* 10 */ { OP, ' ', 130, ',', 129, ',', 136, 0 },
837 /* <op> $disp8 */
838 /* 11 */ { OP, ' ', 148, 0 },
839 /* <op> $disp24 */
840 /* 12 */ { OP, ' ', 150, 0 },
841 /* <op> $src1,$src2,$disp16 */
842 /* 13 */ { OP, ' ', 131, ',', 132, ',', 149, 0 },
843 /* <op> $src2,$disp16 */
844 /* 14 */ { OP, ' ', 132, ',', 149, 0 },
845 /* <op> $src1,$src2 */
846 /* 15 */ { OP, ' ', 131, ',', 132, 0 },
847 /* <op> $src2,#$simm16 */
848 /* 16 */ { OP, ' ', 132, ',', '#', 136, 0 },
849 /* <op> $src2,$simm16 */
850 /* 17 */ { OP, ' ', 132, ',', 136, 0 },
851 /* <op> $src2,#$uimm16 */
852 /* 18 */ { OP, ' ', 132, ',', '#', 139, 0 },
853 /* <op> $src2,$uimm16 */
854 /* 19 */ { OP, ' ', 132, ',', 139, 0 },
855 /* <op> $src2 */
856 /* 20 */ { OP, ' ', 132, 0 },
857 /* <op> $sr */
858 /* 21 */ { OP, ' ', 129, 0 },
859 /* <op> $dr,@$sr */
860 /* 22 */ { OP, ' ', 130, ',', '@', 129, 0 },
861 /* <op> $dr,@($sr) */
862 /* 23 */ { OP, ' ', 130, ',', '@', '(', 129, ')', 0 },
863 /* <op> $dr,@($slo16,$sr) */
864 /* 24 */ { OP, ' ', 130, ',', '@', '(', 145, ',', 129, ')', 0 },
865 /* <op> $dr,@($sr,$slo16) */
866 /* 25 */ { OP, ' ', 130, ',', '@', '(', 129, ',', 145, ')', 0 },
867 /* <op> $dr,@$sr+ */
868 /* 26 */ { OP, ' ', 130, ',', '@', 129, '+', 0 },
869 /* <op> $dr,#$uimm24 */
870 /* 27 */ { OP, ' ', 130, ',', '#', 147, 0 },
871 /* <op> $dr,$uimm24 */
872 /* 28 */ { OP, ' ', 130, ',', 147, 0 },
873 /* <op> $dr,$slo16 */
874 /* 29 */ { OP, ' ', 130, ',', 145, 0 },
875 /* <op> $src1,$src2,$acc */
876 /* 30 */ { OP, ' ', 131, ',', 132, ',', 143, 0 },
877 /* <op> $dr */
878 /* 31 */ { OP, ' ', 130, 0 },
879 /* <op> $dr,$accs */
880 /* 32 */ { OP, ' ', 130, ',', 142, 0 },
881 /* <op> $dr,$scr */
882 /* 33 */ { OP, ' ', 130, ',', 133, 0 },
883 /* <op> $src1 */
884 /* 34 */ { OP, ' ', 131, 0 },
885 /* <op> $src1,$accs */
886 /* 35 */ { OP, ' ', 131, ',', 142, 0 },
887 /* <op> $sr,$dcr */
888 /* 36 */ { OP, ' ', 129, ',', 134, 0 },
889 /* <op> */
890 /* 37 */ { OP, 0 },
891 /* <op> $accd */
892 /* 38 */ { OP, ' ', 141, 0 },
893 /* <op> $accd,$accs */
894 /* 39 */ { OP, ' ', 141, ',', 142, 0 },
895 /* <op> $accd,$accs,#$imm1 */
896 /* 40 */ { OP, ' ', 141, ',', 142, ',', '#', 140, 0 },
897 /* <op> $dr,#$hi16 */
898 /* 41 */ { OP, ' ', 130, ',', '#', 144, 0 },
899 /* <op> $dr,$hi16 */
900 /* 42 */ { OP, ' ', 130, ',', 144, 0 },
901 /* <op> $dr,#$uimm5 */
902 /* 43 */ { OP, ' ', 130, ',', '#', 138, 0 },
903 /* <op> $dr,$uimm5 */
904 /* 44 */ { OP, ' ', 130, ',', 138, 0 },
905 /* <op> $src1,@$src2 */
906 /* 45 */ { OP, ' ', 131, ',', '@', 132, 0 },
907 /* <op> $src1,@($src2) */
908 /* 46 */ { OP, ' ', 131, ',', '@', '(', 132, ')', 0 },
909 /* <op> $src1,@($slo16,$src2) */
910 /* 47 */ { OP, ' ', 131, ',', '@', '(', 145, ',', 132, ')', 0 },
911 /* <op> $src1,@($src2,$slo16) */
912 /* 48 */ { OP, ' ', 131, ',', '@', '(', 132, ',', 145, ')', 0 },
913 /* <op> $src1,@+$src2 */
914 /* 49 */ { OP, ' ', 131, ',', '@', '+', 132, 0 },
915 /* <op> $src1,@-$src2 */
916 /* 50 */ { OP, ' ', 131, ',', '@', '-', 132, 0 },
917 /* <op> #$uimm4 */
918 /* 51 */ { OP, ' ', '#', 137, 0 },
919 /* <op> $uimm4 */
920 /* 52 */ { OP, ' ', 137, 0 },
921 /* <op> $dr,$src2 */
922 /* 53 */ { OP, ' ', 130, ',', 132, 0 },
923 };
924
925 #undef OP
926
927 static const CGEN_FORMAT format_table[] =
928 {
929 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.dr.SI.sr.SI. */
930 /* 0 */ { 16, 16, 0xf0f0 },
931 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-simm16.slo16.slo16.HI.sr.SI. */
932 /* 1 */ { 32, 32, 0xf0f00000 },
933 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-uimm16.uimm16.sr.SI.uimm16.USI. */
934 /* 2 */ { 32, 32, 0xf0f00000 },
935 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-uimm16.ulo16.sr.SI.ulo16.UHI. */
936 /* 3 */ { 32, 32, 0xf0f00000 },
937 /* f-op1.number.f-r1.dr.f-simm8.simm8.dr.SI.simm8.SI. */
938 /* 4 */ { 16, 16, 0xf000 },
939 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-simm16.simm16.simm16.SI.sr.SI. */
940 /* 5 */ { 32, 32, 0xf0f00000 },
941 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.condbit.UBI.dr.SI.sr.SI. */
942 /* 6 */ { 16, 16, 0xf0f0 },
943 /* f-op1.number.f-r1.number.f-disp8.disp8.condbit.UBI.disp8.VM. */
944 /* 7 */ { 16, 16, 0xff00 },
945 /* f-op1.number.f-r1.number.f-disp8.disp8. */
946 /* 8 */ { 16, 16, 0xff00 },
947 /* f-op1.number.f-r1.number.f-disp24.disp24.condbit.UBI.disp24.VM. */
948 /* 9 */ { 32, 32, 0xff000000 },
949 /* f-op1.number.f-r1.number.f-disp24.disp24. */
950 /* 10 */ { 32, 32, 0xff000000 },
951 /* f-op1.number.f-r1.src1.f-op2.number.f-r2.src2.f-disp16.disp16.disp16.VM.src1.SI.src2.SI. */
952 /* 11 */ { 32, 32, 0xf0f00000 },
953 /* f-op1.number.f-r1.number.f-op2.number.f-r2.src2.f-disp16.disp16.disp16.VM.src2.SI. */
954 /* 12 */ { 32, 32, 0xfff00000 },
955 /* f-op1.number.f-r1.number.f-disp8.disp8.disp8.VM.pc.USI. */
956 /* 13 */ { 16, 16, 0xff00 },
957 /* f-op1.number.f-r1.number.f-disp24.disp24.disp24.VM.pc.USI. */
958 /* 14 */ { 32, 32, 0xff000000 },
959 /* f-op1.number.f-r1.number.f-disp8.disp8.condbit.UBI.disp8.VM.pc.USI. */
960 /* 15 */ { 16, 16, 0xff00 },
961 /* f-op1.number.f-r1.number.f-disp24.disp24.condbit.UBI.disp24.VM.pc.USI. */
962 /* 16 */ { 32, 32, 0xff000000 },
963 /* f-op1.number.f-r1.number.f-disp8.disp8.disp8.VM. */
964 /* 17 */ { 16, 16, 0xff00 },
965 /* f-op1.number.f-r1.number.f-disp24.disp24.disp24.VM. */
966 /* 18 */ { 32, 32, 0xff000000 },
967 /* f-op1.number.f-r1.src1.f-op2.number.f-r2.src2.src1.SI.src2.SI. */
968 /* 19 */ { 16, 16, 0xf0f0 },
969 /* f-op1.number.f-r1.number.f-op2.number.f-r2.src2.f-simm16.simm16.simm16.SI.src2.SI. */
970 /* 20 */ { 32, 32, 0xfff00000 },
971 /* f-op1.number.f-r1.number.f-op2.number.f-r2.src2.f-uimm16.uimm16.src2.SI.uimm16.USI. */
972 /* 21 */ { 32, 32, 0xfff00000 },
973 /* f-op1.number.f-r1.number.f-op2.number.f-r2.src2.src2.SI. */
974 /* 22 */ { 16, 16, 0xfff0 },
975 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-simm16.number.dr.SI.sr.SI. */
976 /* 23 */ { 32, 32, 0xf0f0ffff },
977 /* f-op1.number.f-r1.number.f-op2.number.f-r2.sr.condbit.UBI.sr.SI. */
978 /* 24 */ { 16, 16, 0xfff0 },
979 /* f-op1.number.f-r1.number.f-op2.number.f-r2.sr.pc.USI.sr.SI. */
980 /* 25 */ { 16, 16, 0xfff0 },
981 /* f-op1.number.f-r1.number.f-op2.number.f-r2.sr.sr.SI. */
982 /* 26 */ { 16, 16, 0xfff0 },
983 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.h-memory-sr.SI.sr.SI. */
984 /* 27 */ { 16, 16, 0xf0f0 },
985 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr. */
986 /* 28 */ { 16, 16, 0xf0f0 },
987 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-simm16.slo16.h-memory-add-WI-sr-slo16.SI.slo16.HI.sr.SI. */
988 /* 29 */ { 32, 32, 0xf0f00000 },
989 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-simm16.slo16. */
990 /* 30 */ { 32, 32, 0xf0f00000 },
991 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.h-memory-sr.QI.sr.SI. */
992 /* 31 */ { 16, 16, 0xf0f0 },
993 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-simm16.slo16.h-memory-add-WI-sr-slo16.QI.slo16.HI.sr.SI. */
994 /* 32 */ { 32, 32, 0xf0f00000 },
995 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.h-memory-sr.HI.sr.SI. */
996 /* 33 */ { 16, 16, 0xf0f0 },
997 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.f-simm16.slo16.h-memory-add-WI-sr-slo16.HI.slo16.HI.sr.SI. */
998 /* 34 */ { 32, 32, 0xf0f00000 },
999 /* f-op1.number.f-r1.dr.f-uimm24.uimm24.uimm24.VM. */
1000 /* 35 */ { 32, 32, 0xf0000000 },
1001 /* f-op1.number.f-r1.dr.f-simm8.simm8.simm8.SI. */
1002 /* 36 */ { 16, 16, 0xf000 },
1003 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.number.f-simm16.slo16.slo16.HI. */
1004 /* 37 */ { 32, 32, 0xf0ff0000 },
1005 /* f-op1.number.f-r1.src1.f-op2.number.f-r2.src2.accum.DI.src1.SI.src2.SI. */
1006 /* 38 */ { 16, 16, 0xf0f0 },
1007 /* f-op1.number.f-r1.src1.f-acc.acc.f-op23.number.f-r2.src2.acc.DI.src1.SI.src2.SI. */
1008 /* 39 */ { 16, 16, 0xf070 },
1009 /* f-op1.number.f-r1.src1.f-acc.acc.f-op23.number.f-r2.src2.src1.SI.src2.SI. */
1010 /* 40 */ { 16, 16, 0xf070 },
1011 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.sr.sr.SI. */
1012 /* 41 */ { 16, 16, 0xf0f0 },
1013 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.number.accum.DI. */
1014 /* 42 */ { 16, 16, 0xf0ff },
1015 /* f-op1.number.f-r1.dr.f-op2.number.f-accs.accs.f-op3.number.accs.DI. */
1016 /* 43 */ { 16, 16, 0xf0f3 },
1017 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.scr.scr.SI. */
1018 /* 44 */ { 16, 16, 0xf0f0 },
1019 /* f-op1.number.f-r1.src1.f-op2.number.f-r2.number.accum.DI.src1.SI. */
1020 /* 45 */ { 16, 16, 0xf0ff },
1021 /* f-op1.number.f-r1.src1.f-op2.number.f-accs.accs.f-op3.number.accs.DI.src1.SI. */
1022 /* 46 */ { 16, 16, 0xf0f3 },
1023 /* f-op1.number.f-r1.dcr.f-op2.number.f-r2.sr.sr.SI. */
1024 /* 47 */ { 16, 16, 0xf0f0 },
1025 /* f-op1.number.f-r1.number.f-op2.number.f-r2.number. */
1026 /* 48 */ { 16, 16, 0xffff },
1027 /* f-op1.number.f-r1.number.f-op2.number.f-r2.number.accum.DI. */
1028 /* 49 */ { 16, 16, 0xffff },
1029 /* f-op1.number.f-accd.accd.f-bits67.number.f-op2.number.f-accs.number.f-bit14.number.f-imm1.number.accum.DI. */
1030 /* 50 */ { 16, 16, 0xf3ff },
1031 /* f-op1.number.f-accd.accd.f-bits67.number.f-op2.number.f-accs.accs.f-bit14.number.f-imm1.number.accs.DI. */
1032 /* 51 */ { 16, 16, 0xf3f3 },
1033 /* f-op1.number.f-accd.accd.f-bits67.number.f-op2.number.f-accs.accs.f-bit14.number.f-imm1.imm1.accs.DI.imm1.USI. */
1034 /* 52 */ { 16, 16, 0xf3f2 },
1035 /* f-op1.number.f-r1.number.f-op2.number.f-r2.number.h-bcond-0.VM.h-bie-0.VM.h-bpc-0.VM.h-bsm-0.VM. */
1036 /* 53 */ { 16, 16, 0xffff },
1037 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.number.f-hi16.hi16.hi16.UHI. */
1038 /* 54 */ { 32, 32, 0xf0ff0000 },
1039 /* f-op1.number.f-r1.dr.f-shift-op2.number.f-uimm5.uimm5.dr.SI.uimm5.USI. */
1040 /* 55 */ { 16, 16, 0xf0e0 },
1041 /* f-op1.number.f-r1.src1.f-op2.number.f-r2.src2. */
1042 /* 56 */ { 16, 16, 0xf0f0 },
1043 /* f-op1.number.f-r1.src1.f-op2.number.f-r2.src2.f-simm16.slo16.slo16.HI.src1.SI.src2.SI. */
1044 /* 57 */ { 32, 32, 0xf0f00000 },
1045 /* f-op1.number.f-r1.src1.f-op2.number.f-r2.src2.f-simm16.slo16. */
1046 /* 58 */ { 32, 32, 0xf0f00000 },
1047 /* f-op1.number.f-r1.number.f-op2.number.f-uimm4.uimm4.uimm4.USI. */
1048 /* 59 */ { 16, 16, 0xfff0 },
1049 /* f-op1.number.f-r1.src1.f-op2.number.f-r2.number. */
1050 /* 60 */ { 16, 16, 0xf0ff },
1051 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.number. */
1052 /* 61 */ { 16, 16, 0xf0ff },
1053 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.src2.f-uimm16.number.src2.SI. */
1054 /* 62 */ { 32, 32, 0xf0f0ffff },
1055 /* f-op1.number.f-r1.dr.f-op2.number.f-r2.src2.f-uimm16.number.condbit.UBI.src2.SI. */
1056 /* 63 */ { 32, 32, 0xf0f0ffff },
1057 /* f-op1.number.f-r1.number.f-op2.number.f-r2.number.h-accums-0.DI.h-accums-1.DI. */
1058 /* 64 */ { 16, 16, 0xffff },
1059 /* f-op1.number.f-r1.src1.f-op2.number.f-r2.src2.h-accums-1.DI.src1.SI.src2.SI. */
1060 /* 65 */ { 16, 16, 0xf0f0 },
1061 /* f-op1.number.f-r1.number.f-op2.number.f-r2.number.condbit.UBI. */
1062 /* 66 */ { 16, 16, 0xffff },
1063 };
1064
1065 #define A(a) (1 << CGEN_CAT3 (CGEN_INSN,_,a))
1066 #define SYN(n) (& syntax_table[n])
1067 #define FMT(n) (& format_table[n])
1068
1069 /* The instruction table. */
1070
1071 const CGEN_INSN m32r_cgen_insn_table_entries[MAX_INSNS] =
1072 {
1073 /* null first entry, end of all hash chains */
1074 { { 0 }, 0 },
1075 /* add $dr,$sr */
1076 {
1077 { 1, 1, 1, 1 },
1078 "add", "add", SYN (0), FMT (0), 0xa0,
1079 & fmt_0_add_ops[0],
1080 { 4, 0|A(PARALLEL), { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1081 },
1082 /* add3 $dr,$sr,#$slo16 */
1083 {
1084 { 1, 1, 1, 1 },
1085 "add3", "add3", SYN (1), FMT (1), 0x80a00000,
1086 & fmt_1_add3_ops[0],
1087 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1088 },
1089 /* add3 $dr,$sr,$slo16 */
1090 {
1091 { 1, 1, 1, 1 },
1092 "add3.a", "add3", SYN (2), FMT (1), 0x80a00000,
1093 & fmt_1_add3_ops[0],
1094 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1095 },
1096 /* and $dr,$sr */
1097 {
1098 { 1, 1, 1, 1 },
1099 "and", "and", SYN (0), FMT (0), 0xc0,
1100 & fmt_0_add_ops[0],
1101 { 4, 0|A(PARALLEL), { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1102 },
1103 /* and3 $dr,$sr,#$uimm16 */
1104 {
1105 { 1, 1, 1, 1 },
1106 "and3", "and3", SYN (3), FMT (2), 0x80c00000,
1107 & fmt_2_and3_ops[0],
1108 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1109 },
1110 /* and3 $dr,$sr,$uimm16 */
1111 {
1112 { 1, 1, 1, 1 },
1113 "and3.a", "and3", SYN (4), FMT (2), 0x80c00000,
1114 & fmt_2_and3_ops[0],
1115 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1116 },
1117 /* or $dr,$sr */
1118 {
1119 { 1, 1, 1, 1 },
1120 "or", "or", SYN (0), FMT (0), 0xe0,
1121 & fmt_0_add_ops[0],
1122 { 4, 0|A(PARALLEL), { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1123 },
1124 /* or3 $dr,$sr,#$ulo16 */
1125 {
1126 { 1, 1, 1, 1 },
1127 "or3", "or3", SYN (5), FMT (3), 0x80e00000,
1128 & fmt_3_or3_ops[0],
1129 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1130 },
1131 /* or3 $dr,$sr,$ulo16 */
1132 {
1133 { 1, 1, 1, 1 },
1134 "or3.a", "or3", SYN (6), FMT (3), 0x80e00000,
1135 & fmt_3_or3_ops[0],
1136 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1137 },
1138 /* xor $dr,$sr */
1139 {
1140 { 1, 1, 1, 1 },
1141 "xor", "xor", SYN (0), FMT (0), 0xd0,
1142 & fmt_0_add_ops[0],
1143 { 4, 0|A(PARALLEL), { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1144 },
1145 /* xor3 $dr,$sr,#$uimm16 */
1146 {
1147 { 1, 1, 1, 1 },
1148 "xor3", "xor3", SYN (3), FMT (2), 0x80d00000,
1149 & fmt_2_and3_ops[0],
1150 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1151 },
1152 /* xor3 $dr,$sr,$uimm16 */
1153 {
1154 { 1, 1, 1, 1 },
1155 "xor3.a", "xor3", SYN (4), FMT (2), 0x80d00000,
1156 & fmt_2_and3_ops[0],
1157 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1158 },
1159 /* addi $dr,#$simm8 */
1160 {
1161 { 1, 1, 1, 1 },
1162 "addi", "addi", SYN (7), FMT (4), 0x4000,
1163 & fmt_4_addi_ops[0],
1164 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1165 },
1166 /* addi $dr,$simm8 */
1167 {
1168 { 1, 1, 1, 1 },
1169 "addi.a", "addi", SYN (8), FMT (4), 0x4000,
1170 & fmt_4_addi_ops[0],
1171 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1172 },
1173 /* addv $dr,$sr */
1174 {
1175 { 1, 1, 1, 1 },
1176 "addv", "addv", SYN (0), FMT (0), 0x80,
1177 & fmt_0_add_ops[0],
1178 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1179 },
1180 /* addv3 $dr,$sr,#$simm16 */
1181 {
1182 { 1, 1, 1, 1 },
1183 "addv3", "addv3", SYN (9), FMT (5), 0x80800000,
1184 & fmt_5_addv3_ops[0],
1185 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1186 },
1187 /* addv3 $dr,$sr,$simm16 */
1188 {
1189 { 1, 1, 1, 1 },
1190 "addv3.a", "addv3", SYN (10), FMT (5), 0x80800000,
1191 & fmt_5_addv3_ops[0],
1192 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1193 },
1194 /* addx $dr,$sr */
1195 {
1196 { 1, 1, 1, 1 },
1197 "addx", "addx", SYN (0), FMT (6), 0x90,
1198 & fmt_6_addx_ops[0],
1199 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1200 },
1201 /* bc $disp8 */
1202 {
1203 { 1, 1, 1, 1 },
1204 "bc8", "bc", SYN (11), FMT (7), 0x7c00,
1205 & fmt_7_bc8_ops[0],
1206 { 4, 0|A(RELAXABLE)|A(COND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1207 },
1208 /* bc.s $disp8 */
1209 {
1210 { 1, 1, 1, 1 },
1211 "bc8.s", "bc.s", SYN (11), FMT (8), 0x7c00,
1212 0,
1213 { 4, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1214 },
1215 /* bc $disp24 */
1216 {
1217 { 1, 1, 1, 1 },
1218 "bc24", "bc", SYN (12), FMT (9), 0xfc000000,
1219 & fmt_9_bc24_ops[0],
1220 { 4, 0|A(RELAX)|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1221 },
1222 /* bc.l $disp24 */
1223 {
1224 { 1, 1, 1, 1 },
1225 "bc24.l", "bc.l", SYN (12), FMT (10), 0xfc000000,
1226 0,
1227 { 4, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1228 },
1229 /* beq $src1,$src2,$disp16 */
1230 {
1231 { 1, 1, 1, 1 },
1232 "beq", "beq", SYN (13), FMT (11), 0xb0000000,
1233 & fmt_11_beq_ops[0],
1234 { 4, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1235 },
1236 /* beqz $src2,$disp16 */
1237 {
1238 { 1, 1, 1, 1 },
1239 "beqz", "beqz", SYN (14), FMT (12), 0xb0800000,
1240 & fmt_12_beqz_ops[0],
1241 { 4, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1242 },
1243 /* bgez $src2,$disp16 */
1244 {
1245 { 1, 1, 1, 1 },
1246 "bgez", "bgez", SYN (14), FMT (12), 0xb0b00000,
1247 & fmt_12_beqz_ops[0],
1248 { 4, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1249 },
1250 /* bgtz $src2,$disp16 */
1251 {
1252 { 1, 1, 1, 1 },
1253 "bgtz", "bgtz", SYN (14), FMT (12), 0xb0d00000,
1254 & fmt_12_beqz_ops[0],
1255 { 4, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1256 },
1257 /* blez $src2,$disp16 */
1258 {
1259 { 1, 1, 1, 1 },
1260 "blez", "blez", SYN (14), FMT (12), 0xb0c00000,
1261 & fmt_12_beqz_ops[0],
1262 { 4, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1263 },
1264 /* bltz $src2,$disp16 */
1265 {
1266 { 1, 1, 1, 1 },
1267 "bltz", "bltz", SYN (14), FMT (12), 0xb0a00000,
1268 & fmt_12_beqz_ops[0],
1269 { 4, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1270 },
1271 /* bnez $src2,$disp16 */
1272 {
1273 { 1, 1, 1, 1 },
1274 "bnez", "bnez", SYN (14), FMT (12), 0xb0900000,
1275 & fmt_12_beqz_ops[0],
1276 { 4, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1277 },
1278 /* bl $disp8 */
1279 {
1280 { 1, 1, 1, 1 },
1281 "bl8", "bl", SYN (11), FMT (13), 0x7e00,
1282 & fmt_13_bl8_ops[0],
1283 { 4, 0|A(FILL_SLOT)|A(RELAXABLE)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_YES, WRITE_SRC_NO } }
1284 },
1285 /* bl.s $disp8 */
1286 {
1287 { 1, 1, 1, 1 },
1288 "bl8.s", "bl.s", SYN (11), FMT (8), 0x7e00,
1289 0,
1290 { 4, 0|A(FILL_SLOT)|A(ALIAS)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_YES, WRITE_SRC_NO } }
1291 },
1292 /* bl $disp24 */
1293 {
1294 { 1, 1, 1, 1 },
1295 "bl24", "bl", SYN (12), FMT (14), 0xfe000000,
1296 & fmt_14_bl24_ops[0],
1297 { 4, 0|A(RELAX)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_YES, WRITE_SRC_NO } }
1298 },
1299 /* bl.l $disp24 */
1300 {
1301 { 1, 1, 1, 1 },
1302 "bl24.l", "bl.l", SYN (12), FMT (10), 0xfe000000,
1303 0,
1304 { 4, 0|A(ALIAS)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_YES, WRITE_SRC_NO } }
1305 },
1306 /* start-sanitize-m32rx */
1307 /* bcl $disp8 */
1308 {
1309 { 1, 1, 1, 1 },
1310 "bcl8", "bcl", SYN (11), FMT (15), 0x7800,
1311 & fmt_15_bcl8_ops[0],
1312 { 4, 0|A(RELAXABLE)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O, WRITE_LR_YES, WRITE_SRC_NO } }
1313 },
1314 /* end-sanitize-m32rx */
1315 /* start-sanitize-m32rx */
1316 /* bcl.s $disp8 */
1317 {
1318 { 1, 1, 1, 1 },
1319 "bcl8.s", "bcl.s", SYN (11), FMT (8), 0x7800,
1320 0,
1321 { 4, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O, WRITE_LR_YES, WRITE_SRC_NO } }
1322 },
1323 /* end-sanitize-m32rx */
1324 /* start-sanitize-m32rx */
1325 /* bcl $disp24 */
1326 {
1327 { 1, 1, 1, 1 },
1328 "bcl24", "bcl", SYN (12), FMT (16), 0xf8000000,
1329 & fmt_16_bcl24_ops[0],
1330 { 4, 0|A(RELAX)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_NONE, WRITE_LR_YES, WRITE_SRC_NO } }
1331 },
1332 /* end-sanitize-m32rx */
1333 /* start-sanitize-m32rx */
1334 /* bcl.l $disp24 */
1335 {
1336 { 1, 1, 1, 1 },
1337 "bcl24.l", "bcl.l", SYN (12), FMT (10), 0xf8000000,
1338 0,
1339 { 4, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_NONE, WRITE_LR_YES, WRITE_SRC_NO } }
1340 },
1341 /* end-sanitize-m32rx */
1342 /* bnc $disp8 */
1343 {
1344 { 1, 1, 1, 1 },
1345 "bnc8", "bnc", SYN (11), FMT (7), 0x7d00,
1346 & fmt_7_bc8_ops[0],
1347 { 4, 0|A(RELAXABLE)|A(COND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1348 },
1349 /* bnc.s $disp8 */
1350 {
1351 { 1, 1, 1, 1 },
1352 "bnc8.s", "bnc.s", SYN (11), FMT (8), 0x7d00,
1353 0,
1354 { 4, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1355 },
1356 /* bnc $disp24 */
1357 {
1358 { 1, 1, 1, 1 },
1359 "bnc24", "bnc", SYN (12), FMT (9), 0xfd000000,
1360 & fmt_9_bc24_ops[0],
1361 { 4, 0|A(RELAX)|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1362 },
1363 /* bnc.l $disp24 */
1364 {
1365 { 1, 1, 1, 1 },
1366 "bnc24.l", "bnc.l", SYN (12), FMT (10), 0xfd000000,
1367 0,
1368 { 4, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1369 },
1370 /* bne $src1,$src2,$disp16 */
1371 {
1372 { 1, 1, 1, 1 },
1373 "bne", "bne", SYN (13), FMT (11), 0xb0100000,
1374 & fmt_11_beq_ops[0],
1375 { 4, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1376 },
1377 /* bra $disp8 */
1378 {
1379 { 1, 1, 1, 1 },
1380 "bra8", "bra", SYN (11), FMT (17), 0x7f00,
1381 & fmt_17_bra8_ops[0],
1382 { 4, 0|A(FILL_SLOT)|A(RELAXABLE)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1383 },
1384 /* bra.s $disp8 */
1385 {
1386 { 1, 1, 1, 1 },
1387 "bra8.s", "bra.s", SYN (11), FMT (8), 0x7f00,
1388 0,
1389 { 4, 0|A(ALIAS)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1390 },
1391 /* bra $disp24 */
1392 {
1393 { 1, 1, 1, 1 },
1394 "bra24", "bra", SYN (12), FMT (18), 0xff000000,
1395 & fmt_18_bra24_ops[0],
1396 { 4, 0|A(RELAX)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1397 },
1398 /* bra.l $disp24 */
1399 {
1400 { 1, 1, 1, 1 },
1401 "bra24.l", "bra.l", SYN (12), FMT (10), 0xff000000,
1402 0,
1403 { 4, 0|A(ALIAS)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1404 },
1405 /* start-sanitize-m32rx */
1406 /* bncl $disp8 */
1407 {
1408 { 1, 1, 1, 1 },
1409 "bncl8", "bncl", SYN (11), FMT (15), 0x7900,
1410 & fmt_15_bcl8_ops[0],
1411 { 4, 0|A(RELAXABLE)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O, WRITE_LR_YES, WRITE_SRC_NO } }
1412 },
1413 /* end-sanitize-m32rx */
1414 /* start-sanitize-m32rx */
1415 /* bncl.s $disp8 */
1416 {
1417 { 1, 1, 1, 1 },
1418 "bncl8.s", "bncl.s", SYN (11), FMT (8), 0x7900,
1419 0,
1420 { 4, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O, WRITE_LR_YES, WRITE_SRC_NO } }
1421 },
1422 /* end-sanitize-m32rx */
1423 /* start-sanitize-m32rx */
1424 /* bncl $disp24 */
1425 {
1426 { 1, 1, 1, 1 },
1427 "bncl24", "bncl", SYN (12), FMT (16), 0xf9000000,
1428 & fmt_16_bcl24_ops[0],
1429 { 4, 0|A(RELAX)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_NONE, WRITE_LR_YES, WRITE_SRC_NO } }
1430 },
1431 /* end-sanitize-m32rx */
1432 /* start-sanitize-m32rx */
1433 /* bncl.l $disp24 */
1434 {
1435 { 1, 1, 1, 1 },
1436 "bncl24.l", "bncl.l", SYN (12), FMT (10), 0xf9000000,
1437 0,
1438 { 4, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_NONE, WRITE_LR_YES, WRITE_SRC_NO } }
1439 },
1440 /* end-sanitize-m32rx */
1441 /* cmp $src1,$src2 */
1442 {
1443 { 1, 1, 1, 1 },
1444 "cmp", "cmp", SYN (15), FMT (19), 0x40,
1445 & fmt_19_cmp_ops[0],
1446 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1447 },
1448 /* cmpi $src2,#$simm16 */
1449 {
1450 { 1, 1, 1, 1 },
1451 "cmpi", "cmpi", SYN (16), FMT (20), 0x80400000,
1452 & fmt_20_cmpi_ops[0],
1453 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1454 },
1455 /* cmpi $src2,$simm16 */
1456 {
1457 { 1, 1, 1, 1 },
1458 "cmpi.a", "cmpi", SYN (17), FMT (20), 0x80400000,
1459 & fmt_20_cmpi_ops[0],
1460 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1461 },
1462 /* cmpu $src1,$src2 */
1463 {
1464 { 1, 1, 1, 1 },
1465 "cmpu", "cmpu", SYN (15), FMT (19), 0x50,
1466 & fmt_19_cmp_ops[0],
1467 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1468 },
1469 /* cmpui $src2,#$uimm16 */
1470 {
1471 { 1, 1, 1, 1 },
1472 "cmpui", "cmpui", SYN (18), FMT (21), 0x80500000,
1473 & fmt_21_cmpui_ops[0],
1474 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1475 },
1476 /* cmpui $src2,$uimm16 */
1477 {
1478 { 1, 1, 1, 1 },
1479 "cmpui.a", "cmpui", SYN (19), FMT (21), 0x80500000,
1480 & fmt_21_cmpui_ops[0],
1481 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1482 },
1483 /* start-sanitize-m32rx */
1484 /* cmpeq $src1,$src2 */
1485 {
1486 { 1, 1, 1, 1 },
1487 "cmpeq", "cmpeq", SYN (15), FMT (19), 0x60,
1488 & fmt_19_cmp_ops[0],
1489 { 4, 0, { (1<<MACH_M32RX), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1490 },
1491 /* end-sanitize-m32rx */
1492 /* start-sanitize-m32rx */
1493 /* cmpz $src2 */
1494 {
1495 { 1, 1, 1, 1 },
1496 "cmpz", "cmpz", SYN (20), FMT (22), 0x70,
1497 & fmt_22_cmpz_ops[0],
1498 { 4, 0, { (1<<MACH_M32RX), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1499 },
1500 /* end-sanitize-m32rx */
1501 /* div $dr,$sr */
1502 {
1503 { 1, 1, 1, 1 },
1504 "div", "div", SYN (0), FMT (23), 0x90000000,
1505 & fmt_23_div_ops[0],
1506 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1507 },
1508 /* divu $dr,$sr */
1509 {
1510 { 1, 1, 1, 1 },
1511 "divu", "divu", SYN (0), FMT (23), 0x90100000,
1512 & fmt_23_div_ops[0],
1513 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1514 },
1515 /* rem $dr,$sr */
1516 {
1517 { 1, 1, 1, 1 },
1518 "rem", "rem", SYN (0), FMT (23), 0x90200000,
1519 & fmt_23_div_ops[0],
1520 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1521 },
1522 /* remu $dr,$sr */
1523 {
1524 { 1, 1, 1, 1 },
1525 "remu", "remu", SYN (0), FMT (23), 0x90300000,
1526 & fmt_23_div_ops[0],
1527 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1528 },
1529 /* start-sanitize-m32rx */
1530 /* divh $dr,$sr */
1531 {
1532 { 1, 1, 1, 1 },
1533 "divh", "divh", SYN (0), FMT (23), 0x90000010,
1534 & fmt_23_div_ops[0],
1535 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1536 },
1537 /* end-sanitize-m32rx */
1538 /* start-sanitize-m32rx */
1539 /* jc $sr */
1540 {
1541 { 1, 1, 1, 1 },
1542 "jc", "jc", SYN (21), FMT (24), 0x1cc0,
1543 & fmt_24_jc_ops[0],
1544 { 4, 0|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1545 },
1546 /* end-sanitize-m32rx */
1547 /* start-sanitize-m32rx */
1548 /* jnc $sr */
1549 {
1550 { 1, 1, 1, 1 },
1551 "jnc", "jnc", SYN (21), FMT (24), 0x1dc0,
1552 & fmt_24_jc_ops[0],
1553 { 4, 0|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1554 },
1555 /* end-sanitize-m32rx */
1556 /* jl $sr */
1557 {
1558 { 1, 1, 1, 1 },
1559 "jl", "jl", SYN (21), FMT (25), 0x1ec0,
1560 & fmt_25_jl_ops[0],
1561 { 4, 0|A(FILL_SLOT)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_YES, WRITE_SRC_NO } }
1562 },
1563 /* jmp $sr */
1564 {
1565 { 1, 1, 1, 1 },
1566 "jmp", "jmp", SYN (21), FMT (26), 0x1fc0,
1567 & fmt_26_jmp_ops[0],
1568 { 4, 0|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1569 },
1570 /* ld $dr,@$sr */
1571 {
1572 { 1, 1, 1, 1 },
1573 "ld", "ld", SYN (22), FMT (27), 0x20c0,
1574 & fmt_27_ld_ops[0],
1575 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1576 },
1577 /* ld $dr,@($sr) */
1578 {
1579 { 1, 1, 1, 1 },
1580 "ld-2", "ld", SYN (23), FMT (28), 0x20c0,
1581 0,
1582 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1583 },
1584 /* ld $dr,@($slo16,$sr) */
1585 {
1586 { 1, 1, 1, 1 },
1587 "ld-d", "ld", SYN (24), FMT (29), 0xa0c00000,
1588 & fmt_29_ld_d_ops[0],
1589 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1590 },
1591 /* ld $dr,@($sr,$slo16) */
1592 {
1593 { 1, 1, 1, 1 },
1594 "ld-d2", "ld", SYN (25), FMT (30), 0xa0c00000,
1595 0,
1596 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1597 },
1598 /* ldb $dr,@$sr */
1599 {
1600 { 1, 1, 1, 1 },
1601 "ldb", "ldb", SYN (22), FMT (31), 0x2080,
1602 & fmt_31_ldb_ops[0],
1603 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1604 },
1605 /* ldb $dr,@($sr) */
1606 {
1607 { 1, 1, 1, 1 },
1608 "ldb-2", "ldb", SYN (23), FMT (28), 0x2080,
1609 0,
1610 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1611 },
1612 /* ldb $dr,@($slo16,$sr) */
1613 {
1614 { 1, 1, 1, 1 },
1615 "ldb-d", "ldb", SYN (24), FMT (32), 0xa0800000,
1616 & fmt_32_ldb_d_ops[0],
1617 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1618 },
1619 /* ldb $dr,@($sr,$slo16) */
1620 {
1621 { 1, 1, 1, 1 },
1622 "ldb-d2", "ldb", SYN (25), FMT (30), 0xa0800000,
1623 0,
1624 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1625 },
1626 /* ldh $dr,@$sr */
1627 {
1628 { 1, 1, 1, 1 },
1629 "ldh", "ldh", SYN (22), FMT (33), 0x20a0,
1630 & fmt_33_ldh_ops[0],
1631 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1632 },
1633 /* ldh $dr,@($sr) */
1634 {
1635 { 1, 1, 1, 1 },
1636 "ldh-2", "ldh", SYN (23), FMT (28), 0x20a0,
1637 0,
1638 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1639 },
1640 /* ldh $dr,@($slo16,$sr) */
1641 {
1642 { 1, 1, 1, 1 },
1643 "ldh-d", "ldh", SYN (24), FMT (34), 0xa0a00000,
1644 & fmt_34_ldh_d_ops[0],
1645 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1646 },
1647 /* ldh $dr,@($sr,$slo16) */
1648 {
1649 { 1, 1, 1, 1 },
1650 "ldh-d2", "ldh", SYN (25), FMT (30), 0xa0a00000,
1651 0,
1652 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1653 },
1654 /* ldub $dr,@$sr */
1655 {
1656 { 1, 1, 1, 1 },
1657 "ldub", "ldub", SYN (22), FMT (31), 0x2090,
1658 & fmt_31_ldb_ops[0],
1659 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1660 },
1661 /* ldub $dr,@($sr) */
1662 {
1663 { 1, 1, 1, 1 },
1664 "ldub-2", "ldub", SYN (23), FMT (28), 0x2090,
1665 0,
1666 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1667 },
1668 /* ldub $dr,@($slo16,$sr) */
1669 {
1670 { 1, 1, 1, 1 },
1671 "ldub-d", "ldub", SYN (24), FMT (32), 0xa0900000,
1672 & fmt_32_ldb_d_ops[0],
1673 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1674 },
1675 /* ldub $dr,@($sr,$slo16) */
1676 {
1677 { 1, 1, 1, 1 },
1678 "ldub-d2", "ldub", SYN (25), FMT (30), 0xa0900000,
1679 0,
1680 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1681 },
1682 /* lduh $dr,@$sr */
1683 {
1684 { 1, 1, 1, 1 },
1685 "lduh", "lduh", SYN (22), FMT (33), 0x20b0,
1686 & fmt_33_ldh_ops[0],
1687 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1688 },
1689 /* lduh $dr,@($sr) */
1690 {
1691 { 1, 1, 1, 1 },
1692 "lduh-2", "lduh", SYN (23), FMT (28), 0x20b0,
1693 0,
1694 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1695 },
1696 /* lduh $dr,@($slo16,$sr) */
1697 {
1698 { 1, 1, 1, 1 },
1699 "lduh-d", "lduh", SYN (24), FMT (34), 0xa0b00000,
1700 & fmt_34_ldh_d_ops[0],
1701 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1702 },
1703 /* lduh $dr,@($sr,$slo16) */
1704 {
1705 { 1, 1, 1, 1 },
1706 "lduh-d2", "lduh", SYN (25), FMT (30), 0xa0b00000,
1707 0,
1708 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1709 },
1710 /* ld $dr,@$sr+ */
1711 {
1712 { 1, 1, 1, 1 },
1713 "ld-plus", "ld", SYN (26), FMT (27), 0x20e0,
1714 & fmt_27_ld_ops[0],
1715 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_YES } }
1716 },
1717 /* ld24 $dr,#$uimm24 */
1718 {
1719 { 1, 1, 1, 1 },
1720 "ld24", "ld24", SYN (27), FMT (35), 0xe0000000,
1721 & fmt_35_ld24_ops[0],
1722 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1723 },
1724 /* ld24 $dr,$uimm24 */
1725 {
1726 { 1, 1, 1, 1 },
1727 "ld24.a", "ld24", SYN (28), FMT (35), 0xe0000000,
1728 & fmt_35_ld24_ops[0],
1729 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1730 },
1731 /* ldi $dr,#$simm8 */
1732 {
1733 { 1, 1, 1, 1 },
1734 "ldi8", "ldi", SYN (7), FMT (36), 0x6000,
1735 & fmt_36_ldi8_ops[0],
1736 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1737 },
1738 /* ldi $dr,$simm8 */
1739 {
1740 { 1, 1, 1, 1 },
1741 "ldi8.a", "ldi", SYN (8), FMT (36), 0x6000,
1742 & fmt_36_ldi8_ops[0],
1743 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1744 },
1745 /* ldi8 $dr,#$simm8 */
1746 {
1747 { 1, 1, 1, 1 },
1748 "ldi8a", "ldi8", SYN (7), FMT (36), 0x6000,
1749 & fmt_36_ldi8_ops[0],
1750 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1751 },
1752 /* ldi8 $dr,$simm8 */
1753 {
1754 { 1, 1, 1, 1 },
1755 "ldi8a.a", "ldi8", SYN (8), FMT (36), 0x6000,
1756 & fmt_36_ldi8_ops[0],
1757 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1758 },
1759 /* ldi $dr,$slo16 */
1760 {
1761 { 1, 1, 1, 1 },
1762 "ldi16", "ldi", SYN (29), FMT (37), 0x90f00000,
1763 & fmt_37_ldi16_ops[0],
1764 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1765 },
1766 /* ldi16 $dr,$slo16 */
1767 {
1768 { 1, 1, 1, 1 },
1769 "ldi16a", "ldi16", SYN (29), FMT (37), 0x90f00000,
1770 & fmt_37_ldi16_ops[0],
1771 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
1772 },
1773 /* lock $dr,@$sr */
1774 {
1775 { 1, 1, 1, 1 },
1776 "lock", "lock", SYN (22), FMT (0), 0x20d0,
1777 & fmt_0_add_ops[0],
1778 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1779 },
1780 /* machi $src1,$src2 */
1781 {
1782 { 1, 1, 1, 1 },
1783 "machi", "machi", SYN (15), FMT (38), 0x3040,
1784 & fmt_38_machi_ops[0],
1785 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1786 },
1787 /* start-sanitize-m32rx */
1788 /* machi $src1,$src2,$acc */
1789 {
1790 { 1, 1, 1, 1 },
1791 "machi-a", "machi", SYN (30), FMT (39), 0x3040,
1792 & fmt_39_machi_a_ops[0],
1793 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1794 },
1795 /* end-sanitize-m32rx */
1796 /* maclo $src1,$src2 */
1797 {
1798 { 1, 1, 1, 1 },
1799 "maclo", "maclo", SYN (15), FMT (38), 0x3050,
1800 & fmt_38_machi_ops[0],
1801 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1802 },
1803 /* start-sanitize-m32rx */
1804 /* maclo $src1,$src2,$acc */
1805 {
1806 { 1, 1, 1, 1 },
1807 "maclo-a", "maclo", SYN (30), FMT (39), 0x3050,
1808 & fmt_39_machi_a_ops[0],
1809 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1810 },
1811 /* end-sanitize-m32rx */
1812 /* macwhi $src1,$src2 */
1813 {
1814 { 1, 1, 1, 1 },
1815 "macwhi", "macwhi", SYN (15), FMT (38), 0x3060,
1816 & fmt_38_machi_ops[0],
1817 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1818 },
1819 /* macwlo $src1,$src2 */
1820 {
1821 { 1, 1, 1, 1 },
1822 "macwlo", "macwlo", SYN (15), FMT (38), 0x3070,
1823 & fmt_38_machi_ops[0],
1824 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1825 },
1826 /* mul $dr,$sr */
1827 {
1828 { 1, 1, 1, 1 },
1829 "mul", "mul", SYN (0), FMT (0), 0x1060,
1830 & fmt_0_add_ops[0],
1831 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1832 },
1833 /* mulhi $src1,$src2 */
1834 {
1835 { 1, 1, 1, 1 },
1836 "mulhi", "mulhi", SYN (15), FMT (19), 0x3000,
1837 & fmt_19_cmp_ops[0],
1838 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1839 },
1840 /* start-sanitize-m32rx */
1841 /* mulhi $src1,$src2,$acc */
1842 {
1843 { 1, 1, 1, 1 },
1844 "mulhi-a", "mulhi", SYN (30), FMT (40), 0x3000,
1845 & fmt_40_mulhi_a_ops[0],
1846 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1847 },
1848 /* end-sanitize-m32rx */
1849 /* mullo $src1,$src2 */
1850 {
1851 { 1, 1, 1, 1 },
1852 "mullo", "mullo", SYN (15), FMT (19), 0x3010,
1853 & fmt_19_cmp_ops[0],
1854 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1855 },
1856 /* start-sanitize-m32rx */
1857 /* mullo $src1,$src2,$acc */
1858 {
1859 { 1, 1, 1, 1 },
1860 "mullo-a", "mullo", SYN (30), FMT (40), 0x3010,
1861 & fmt_40_mulhi_a_ops[0],
1862 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1863 },
1864 /* end-sanitize-m32rx */
1865 /* mulwhi $src1,$src2 */
1866 {
1867 { 1, 1, 1, 1 },
1868 "mulwhi", "mulwhi", SYN (15), FMT (19), 0x3020,
1869 & fmt_19_cmp_ops[0],
1870 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1871 },
1872 /* mulwlo $src1,$src2 */
1873 {
1874 { 1, 1, 1, 1 },
1875 "mulwlo", "mulwlo", SYN (15), FMT (19), 0x3030,
1876 & fmt_19_cmp_ops[0],
1877 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1878 },
1879 /* mv $dr,$sr */
1880 {
1881 { 1, 1, 1, 1 },
1882 "mv", "mv", SYN (0), FMT (41), 0x1080,
1883 & fmt_41_mv_ops[0],
1884 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1885 },
1886 /* mvfachi $dr */
1887 {
1888 { 1, 1, 1, 1 },
1889 "mvfachi", "mvfachi", SYN (31), FMT (42), 0x50f0,
1890 & fmt_42_mvfachi_ops[0],
1891 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1892 },
1893 /* start-sanitize-m32rx */
1894 /* mvfachi $dr,$accs */
1895 {
1896 { 1, 1, 1, 1 },
1897 "mvfachi-a", "mvfachi", SYN (32), FMT (43), 0x50f0,
1898 & fmt_43_mvfachi_a_ops[0],
1899 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1900 },
1901 /* end-sanitize-m32rx */
1902 /* mvfaclo $dr */
1903 {
1904 { 1, 1, 1, 1 },
1905 "mvfaclo", "mvfaclo", SYN (31), FMT (42), 0x50f1,
1906 & fmt_42_mvfachi_ops[0],
1907 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1908 },
1909 /* start-sanitize-m32rx */
1910 /* mvfaclo $dr,$accs */
1911 {
1912 { 1, 1, 1, 1 },
1913 "mvfaclo-a", "mvfaclo", SYN (32), FMT (43), 0x50f1,
1914 & fmt_43_mvfachi_a_ops[0],
1915 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1916 },
1917 /* end-sanitize-m32rx */
1918 /* mvfacmi $dr */
1919 {
1920 { 1, 1, 1, 1 },
1921 "mvfacmi", "mvfacmi", SYN (31), FMT (42), 0x50f2,
1922 & fmt_42_mvfachi_ops[0],
1923 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1924 },
1925 /* start-sanitize-m32rx */
1926 /* mvfacmi $dr,$accs */
1927 {
1928 { 1, 1, 1, 1 },
1929 "mvfacmi-a", "mvfacmi", SYN (32), FMT (43), 0x50f2,
1930 & fmt_43_mvfachi_a_ops[0],
1931 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1932 },
1933 /* end-sanitize-m32rx */
1934 /* mvfc $dr,$scr */
1935 {
1936 { 1, 1, 1, 1 },
1937 "mvfc", "mvfc", SYN (33), FMT (44), 0x1090,
1938 & fmt_44_mvfc_ops[0],
1939 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1940 },
1941 /* mvtachi $src1 */
1942 {
1943 { 1, 1, 1, 1 },
1944 "mvtachi", "mvtachi", SYN (34), FMT (45), 0x5070,
1945 & fmt_45_mvtachi_ops[0],
1946 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1947 },
1948 /* start-sanitize-m32rx */
1949 /* mvtachi $src1,$accs */
1950 {
1951 { 1, 1, 1, 1 },
1952 "mvtachi-a", "mvtachi", SYN (35), FMT (46), 0x5070,
1953 & fmt_46_mvtachi_a_ops[0],
1954 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1955 },
1956 /* end-sanitize-m32rx */
1957 /* mvtaclo $src1 */
1958 {
1959 { 1, 1, 1, 1 },
1960 "mvtaclo", "mvtaclo", SYN (34), FMT (45), 0x5071,
1961 & fmt_45_mvtachi_ops[0],
1962 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1963 },
1964 /* start-sanitize-m32rx */
1965 /* mvtaclo $src1,$accs */
1966 {
1967 { 1, 1, 1, 1 },
1968 "mvtaclo-a", "mvtaclo", SYN (35), FMT (46), 0x5071,
1969 & fmt_46_mvtachi_a_ops[0],
1970 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
1971 },
1972 /* end-sanitize-m32rx */
1973 /* mvtc $sr,$dcr */
1974 {
1975 { 1, 1, 1, 1 },
1976 "mvtc", "mvtc", SYN (36), FMT (47), 0x10a0,
1977 & fmt_47_mvtc_ops[0],
1978 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
1979 },
1980 /* neg $dr,$sr */
1981 {
1982 { 1, 1, 1, 1 },
1983 "neg", "neg", SYN (0), FMT (41), 0x30,
1984 & fmt_41_mv_ops[0],
1985 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1986 },
1987 /* nop */
1988 {
1989 { 1, 1, 1, 1 },
1990 "nop", "nop", SYN (37), FMT (48), 0x7000,
1991 0,
1992 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
1993 },
1994 /* not $dr,$sr */
1995 {
1996 { 1, 1, 1, 1 },
1997 "not", "not", SYN (0), FMT (41), 0xb0,
1998 & fmt_41_mv_ops[0],
1999 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
2000 },
2001 /* rac */
2002 {
2003 { 1, 1, 1, 1 },
2004 "rac", "rac", SYN (37), FMT (49), 0x5090,
2005 & fmt_49_rac_ops[0],
2006 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2007 },
2008 /* start-sanitize-m32rx */
2009 /* rac $accd */
2010 {
2011 { 1, 1, 1, 1 },
2012 "rac-d", "rac", SYN (38), FMT (50), 0x5090,
2013 & fmt_50_rac_d_ops[0],
2014 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2015 },
2016 /* end-sanitize-m32rx */
2017 /* start-sanitize-m32rx */
2018 /* rac $accd,$accs */
2019 {
2020 { 1, 1, 1, 1 },
2021 "rac-ds", "rac", SYN (39), FMT (51), 0x5090,
2022 & fmt_51_rac_ds_ops[0],
2023 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2024 },
2025 /* end-sanitize-m32rx */
2026 /* start-sanitize-m32rx */
2027 /* rac $accd,$accs,#$imm1 */
2028 {
2029 { 1, 1, 1, 1 },
2030 "rac-dsi", "rac", SYN (40), FMT (52), 0x5090,
2031 & fmt_52_rac_dsi_ops[0],
2032 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2033 },
2034 /* end-sanitize-m32rx */
2035 /* rach */
2036 {
2037 { 1, 1, 1, 1 },
2038 "rach", "rach", SYN (37), FMT (49), 0x5080,
2039 & fmt_49_rac_ops[0],
2040 { 4, 0, { (1<<MACH_M32R), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2041 },
2042 /* start-sanitize-m32rx */
2043 /* rach $accd */
2044 {
2045 { 1, 1, 1, 1 },
2046 "rach-d", "rach", SYN (38), FMT (50), 0x5080,
2047 & fmt_50_rac_d_ops[0],
2048 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2049 },
2050 /* end-sanitize-m32rx */
2051 /* start-sanitize-m32rx */
2052 /* rach $accd,$accs */
2053 {
2054 { 1, 1, 1, 1 },
2055 "rach-ds", "rach", SYN (39), FMT (51), 0x5080,
2056 & fmt_51_rac_ds_ops[0],
2057 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2058 },
2059 /* end-sanitize-m32rx */
2060 /* start-sanitize-m32rx */
2061 /* rach $accd,$accs,#$imm1 */
2062 {
2063 { 1, 1, 1, 1 },
2064 "rach-dsi", "rach", SYN (40), FMT (52), 0x5080,
2065 & fmt_52_rac_dsi_ops[0],
2066 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2067 },
2068 /* end-sanitize-m32rx */
2069 /* rte */
2070 {
2071 { 1, 1, 1, 1 },
2072 "rte", "rte", SYN (37), FMT (53), 0x10d6,
2073 & fmt_53_rte_ops[0],
2074 { 4, 0|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2075 },
2076 /* seth $dr,#$hi16 */
2077 {
2078 { 1, 1, 1, 1 },
2079 "seth", "seth", SYN (41), FMT (54), 0xd0c00000,
2080 & fmt_54_seth_ops[0],
2081 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2082 },
2083 /* seth $dr,$hi16 */
2084 {
2085 { 1, 1, 1, 1 },
2086 "seth.a", "seth", SYN (42), FMT (54), 0xd0c00000,
2087 & fmt_54_seth_ops[0],
2088 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2089 },
2090 /* sll $dr,$sr */
2091 {
2092 { 1, 1, 1, 1 },
2093 "sll", "sll", SYN (0), FMT (0), 0x1040,
2094 & fmt_0_add_ops[0],
2095 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2096 },
2097 /* sll3 $dr,$sr,#$simm16 */
2098 {
2099 { 1, 1, 1, 1 },
2100 "sll3", "sll3", SYN (9), FMT (5), 0x90c00000,
2101 & fmt_5_addv3_ops[0],
2102 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2103 },
2104 /* sll3 $dr,$sr,$simm16 */
2105 {
2106 { 1, 1, 1, 1 },
2107 "sll3.a", "sll3", SYN (10), FMT (5), 0x90c00000,
2108 & fmt_5_addv3_ops[0],
2109 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2110 },
2111 /* slli $dr,#$uimm5 */
2112 {
2113 { 1, 1, 1, 1 },
2114 "slli", "slli", SYN (43), FMT (55), 0x5040,
2115 & fmt_55_slli_ops[0],
2116 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2117 },
2118 /* slli $dr,$uimm5 */
2119 {
2120 { 1, 1, 1, 1 },
2121 "slli.a", "slli", SYN (44), FMT (55), 0x5040,
2122 & fmt_55_slli_ops[0],
2123 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2124 },
2125 /* sra $dr,$sr */
2126 {
2127 { 1, 1, 1, 1 },
2128 "sra", "sra", SYN (0), FMT (0), 0x1020,
2129 & fmt_0_add_ops[0],
2130 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2131 },
2132 /* sra3 $dr,$sr,#$simm16 */
2133 {
2134 { 1, 1, 1, 1 },
2135 "sra3", "sra3", SYN (9), FMT (5), 0x90a00000,
2136 & fmt_5_addv3_ops[0],
2137 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2138 },
2139 /* sra3 $dr,$sr,$simm16 */
2140 {
2141 { 1, 1, 1, 1 },
2142 "sra3.a", "sra3", SYN (10), FMT (5), 0x90a00000,
2143 & fmt_5_addv3_ops[0],
2144 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2145 },
2146 /* srai $dr,#$uimm5 */
2147 {
2148 { 1, 1, 1, 1 },
2149 "srai", "srai", SYN (43), FMT (55), 0x5020,
2150 & fmt_55_slli_ops[0],
2151 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2152 },
2153 /* srai $dr,$uimm5 */
2154 {
2155 { 1, 1, 1, 1 },
2156 "srai.a", "srai", SYN (44), FMT (55), 0x5020,
2157 & fmt_55_slli_ops[0],
2158 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2159 },
2160 /* srl $dr,$sr */
2161 {
2162 { 1, 1, 1, 1 },
2163 "srl", "srl", SYN (0), FMT (0), 0x1000,
2164 & fmt_0_add_ops[0],
2165 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2166 },
2167 /* srl3 $dr,$sr,#$simm16 */
2168 {
2169 { 1, 1, 1, 1 },
2170 "srl3", "srl3", SYN (9), FMT (5), 0x90800000,
2171 & fmt_5_addv3_ops[0],
2172 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2173 },
2174 /* srl3 $dr,$sr,$simm16 */
2175 {
2176 { 1, 1, 1, 1 },
2177 "srl3.a", "srl3", SYN (10), FMT (5), 0x90800000,
2178 & fmt_5_addv3_ops[0],
2179 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2180 },
2181 /* srli $dr,#$uimm5 */
2182 {
2183 { 1, 1, 1, 1 },
2184 "srli", "srli", SYN (43), FMT (55), 0x5000,
2185 & fmt_55_slli_ops[0],
2186 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2187 },
2188 /* srli $dr,$uimm5 */
2189 {
2190 { 1, 1, 1, 1 },
2191 "srli.a", "srli", SYN (44), FMT (55), 0x5000,
2192 & fmt_55_slli_ops[0],
2193 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2194 },
2195 /* st $src1,@$src2 */
2196 {
2197 { 1, 1, 1, 1 },
2198 "st", "st", SYN (45), FMT (19), 0x2040,
2199 & fmt_19_cmp_ops[0],
2200 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2201 },
2202 /* st $src1,@($src2) */
2203 {
2204 { 1, 1, 1, 1 },
2205 "st-2", "st", SYN (46), FMT (56), 0x2040,
2206 0,
2207 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2208 },
2209 /* st $src1,@($slo16,$src2) */
2210 {
2211 { 1, 1, 1, 1 },
2212 "st-d", "st", SYN (47), FMT (57), 0xa0400000,
2213 & fmt_57_st_d_ops[0],
2214 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2215 },
2216 /* st $src1,@($src2,$slo16) */
2217 {
2218 { 1, 1, 1, 1 },
2219 "st-d2", "st", SYN (48), FMT (58), 0xa0400000,
2220 0,
2221 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2222 },
2223 /* stb $src1,@$src2 */
2224 {
2225 { 1, 1, 1, 1 },
2226 "stb", "stb", SYN (45), FMT (19), 0x2000,
2227 & fmt_19_cmp_ops[0],
2228 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2229 },
2230 /* stb $src1,@($src2) */
2231 {
2232 { 1, 1, 1, 1 },
2233 "stb-2", "stb", SYN (46), FMT (56), 0x2000,
2234 0,
2235 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2236 },
2237 /* stb $src1,@($slo16,$src2) */
2238 {
2239 { 1, 1, 1, 1 },
2240 "stb-d", "stb", SYN (47), FMT (57), 0xa0000000,
2241 & fmt_57_st_d_ops[0],
2242 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2243 },
2244 /* stb $src1,@($src2,$slo16) */
2245 {
2246 { 1, 1, 1, 1 },
2247 "stb-d2", "stb", SYN (48), FMT (58), 0xa0000000,
2248 0,
2249 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2250 },
2251 /* sth $src1,@$src2 */
2252 {
2253 { 1, 1, 1, 1 },
2254 "sth", "sth", SYN (45), FMT (19), 0x2020,
2255 & fmt_19_cmp_ops[0],
2256 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2257 },
2258 /* sth $src1,@($src2) */
2259 {
2260 { 1, 1, 1, 1 },
2261 "sth-2", "sth", SYN (46), FMT (56), 0x2020,
2262 0,
2263 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2264 },
2265 /* sth $src1,@($slo16,$src2) */
2266 {
2267 { 1, 1, 1, 1 },
2268 "sth-d", "sth", SYN (47), FMT (57), 0xa0200000,
2269 & fmt_57_st_d_ops[0],
2270 { 4, 0, { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2271 },
2272 /* sth $src1,@($src2,$slo16) */
2273 {
2274 { 1, 1, 1, 1 },
2275 "sth-d2", "sth", SYN (48), FMT (58), 0xa0200000,
2276 0,
2277 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2278 },
2279 /* st $src1,@+$src2 */
2280 {
2281 { 1, 1, 1, 1 },
2282 "st-plus", "st", SYN (49), FMT (19), 0x2060,
2283 & fmt_19_cmp_ops[0],
2284 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_YES } }
2285 },
2286 /* st $src1,@-$src2 */
2287 {
2288 { 1, 1, 1, 1 },
2289 "st-minus", "st", SYN (50), FMT (19), 0x2070,
2290 & fmt_19_cmp_ops[0],
2291 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_YES } }
2292 },
2293 /* sub $dr,$sr */
2294 {
2295 { 1, 1, 1, 1 },
2296 "sub", "sub", SYN (0), FMT (0), 0x20,
2297 & fmt_0_add_ops[0],
2298 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
2299 },
2300 /* subv $dr,$sr */
2301 {
2302 { 1, 1, 1, 1 },
2303 "subv", "subv", SYN (0), FMT (0), 0x0,
2304 & fmt_0_add_ops[0],
2305 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
2306 },
2307 /* subx $dr,$sr */
2308 {
2309 { 1, 1, 1, 1 },
2310 "subx", "subx", SYN (0), FMT (6), 0x10,
2311 & fmt_6_addx_ops[0],
2312 { 4, 0, { (1<<MACH_M32R), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
2313 },
2314 /* trap #$uimm4 */
2315 {
2316 { 1, 1, 1, 1 },
2317 "trap", "trap", SYN (51), FMT (59), 0x10f0,
2318 & fmt_59_trap_ops[0],
2319 { 4, 0|A(FILL_SLOT)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2320 },
2321 /* trap $uimm4 */
2322 {
2323 { 1, 1, 1, 1 },
2324 "trap.a", "trap", SYN (52), FMT (59), 0x10f0,
2325 & fmt_59_trap_ops[0],
2326 { 4, 0|A(ALIAS)|A(FILL_SLOT)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2327 },
2328 /* unlock $src1,@$src2 */
2329 {
2330 { 1, 1, 1, 1 },
2331 "unlock", "unlock", SYN (45), FMT (19), 0x2050,
2332 & fmt_19_cmp_ops[0],
2333 { 4, 0, { (1<<MACH_M32R), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2334 },
2335 /* push $src1 */
2336 {
2337 { 1, 1, 1, 1 },
2338 "push", "push", SYN (34), FMT (60), 0x207f,
2339 0,
2340 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2341 },
2342 /* pop $dr */
2343 {
2344 { 1, 1, 1, 1 },
2345 "pop", "pop", SYN (31), FMT (61), 0x20ef,
2346 0,
2347 { 4, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2348 },
2349 /* start-sanitize-m32rx */
2350 /* satb $dr,$src2 */
2351 {
2352 { 1, 1, 1, 1 },
2353 "satb", "satb", SYN (53), FMT (62), 0x80000100,
2354 & fmt_62_satb_ops[0],
2355 { 4, 0, { (1<<MACH_M32RX), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2356 },
2357 /* end-sanitize-m32rx */
2358 /* start-sanitize-m32rx */
2359 /* sath $dr,$src2 */
2360 {
2361 { 1, 1, 1, 1 },
2362 "sath", "sath", SYN (53), FMT (62), 0x80000200,
2363 & fmt_62_satb_ops[0],
2364 { 4, 0, { (1<<MACH_M32RX), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2365 },
2366 /* end-sanitize-m32rx */
2367 /* start-sanitize-m32rx */
2368 /* sat $dr,$src2 */
2369 {
2370 { 1, 1, 1, 1 },
2371 "sat", "sat", SYN (53), FMT (63), 0x80000000,
2372 & fmt_63_sat_ops[0],
2373 { 4, 0, { (1<<MACH_M32RX), PIPE_NONE, WRITE_LR_NO, WRITE_SRC_NO } }
2374 },
2375 /* end-sanitize-m32rx */
2376 /* start-sanitize-m32rx */
2377 /* pcmpbz $src2 */
2378 {
2379 { 1, 1, 1, 1 },
2380 "pcmpbz", "pcmpbz", SYN (20), FMT (22), 0x370,
2381 & fmt_22_cmpz_ops[0],
2382 { 4, 0, { (1<<MACH_M32RX), PIPE_OS, WRITE_LR_NO, WRITE_SRC_NO } }
2383 },
2384 /* end-sanitize-m32rx */
2385 /* start-sanitize-m32rx */
2386 /* sadd */
2387 {
2388 { 1, 1, 1, 1 },
2389 "sadd", "sadd", SYN (37), FMT (64), 0x50e4,
2390 & fmt_64_sadd_ops[0],
2391 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2392 },
2393 /* end-sanitize-m32rx */
2394 /* start-sanitize-m32rx */
2395 /* macwu1 $src1,$src2 */
2396 {
2397 { 1, 1, 1, 1 },
2398 "macwu1", "macwu1", SYN (15), FMT (65), 0x50b0,
2399 & fmt_65_macwu1_ops[0],
2400 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2401 },
2402 /* end-sanitize-m32rx */
2403 /* start-sanitize-m32rx */
2404 /* msblo $src1,$src2 */
2405 {
2406 { 1, 1, 1, 1 },
2407 "msblo", "msblo", SYN (15), FMT (38), 0x50d0,
2408 & fmt_38_machi_ops[0],
2409 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2410 },
2411 /* end-sanitize-m32rx */
2412 /* start-sanitize-m32rx */
2413 /* mulwu1 $src1,$src2 */
2414 {
2415 { 1, 1, 1, 1 },
2416 "mulwu1", "mulwu1", SYN (15), FMT (19), 0x50a0,
2417 & fmt_19_cmp_ops[0],
2418 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2419 },
2420 /* end-sanitize-m32rx */
2421 /* start-sanitize-m32rx */
2422 /* maclh1 $src1,$src2 */
2423 {
2424 { 1, 1, 1, 1 },
2425 "maclh1", "maclh1", SYN (15), FMT (65), 0x50c0,
2426 & fmt_65_macwu1_ops[0],
2427 { 4, 0, { (1<<MACH_M32RX), PIPE_S, WRITE_LR_NO, WRITE_SRC_NO } }
2428 },
2429 /* end-sanitize-m32rx */
2430 /* start-sanitize-m32rx */
2431 /* sc */
2432 {
2433 { 1, 1, 1, 1 },
2434 "sc", "sc", SYN (37), FMT (66), 0x7401,
2435 & fmt_66_sc_ops[0],
2436 { 4, 0, { (1<<MACH_M32RX), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2437 },
2438 /* end-sanitize-m32rx */
2439 /* start-sanitize-m32rx */
2440 /* snc */
2441 {
2442 { 1, 1, 1, 1 },
2443 "snc", "snc", SYN (37), FMT (66), 0x7501,
2444 & fmt_66_sc_ops[0],
2445 { 4, 0, { (1<<MACH_M32RX), PIPE_O, WRITE_LR_NO, WRITE_SRC_NO } }
2446 },
2447 /* end-sanitize-m32rx */
2448 };
2449
2450 #undef A
2451 #undef SYN
2452 #undef FMT
2453
2454 CGEN_INSN_TABLE m32r_cgen_insn_table =
2455 {
2456 & m32r_cgen_insn_table_entries[0],
2457 sizeof (CGEN_INSN),
2458 MAX_INSNS,
2459 NULL,
2460 m32r_cgen_asm_hash_insn, CGEN_ASM_HASH_SIZE,
2461 m32r_cgen_dis_hash_insn, CGEN_DIS_HASH_SIZE
2462 };
2463
2464 /* The hash functions are recorded here to help keep assembler code out of
2465 the disassembler and vice versa. */
2466
2467 unsigned int
2468 m32r_cgen_asm_hash_insn (insn)
2469 const char * insn;
2470 {
2471 return CGEN_ASM_HASH (insn);
2472 }
2473
2474 unsigned int
2475 m32r_cgen_dis_hash_insn (buf, value)
2476 const char * buf;
2477 unsigned long value;
2478 {
2479 return CGEN_DIS_HASH (buf, value);
2480 }
2481
2482 CGEN_OPCODE_DATA m32r_cgen_opcode_data =
2483 {
2484 & m32r_cgen_hw_entries[0],
2485 & m32r_cgen_insn_table,
2486 };
2487
2488 void
2489 m32r_cgen_init_tables (mach)
2490 int mach;
2491 {
2492 }
2493
2494 /* Main entry point for stuffing values in cgen_fields. */
2495
2496 CGEN_INLINE void
2497 m32r_cgen_set_operand (opindex, valuep, fields)
2498 int opindex;
2499 const long * valuep;
2500 CGEN_FIELDS * fields;
2501 {
2502 switch (opindex)
2503 {
2504 case M32R_OPERAND_SR :
2505 fields->f_r2 = * valuep;
2506 break;
2507 case M32R_OPERAND_DR :
2508 fields->f_r1 = * valuep;
2509 break;
2510 case M32R_OPERAND_SRC1 :
2511 fields->f_r1 = * valuep;
2512 break;
2513 case M32R_OPERAND_SRC2 :
2514 fields->f_r2 = * valuep;
2515 break;
2516 case M32R_OPERAND_SCR :
2517 fields->f_r2 = * valuep;
2518 break;
2519 case M32R_OPERAND_DCR :
2520 fields->f_r1 = * valuep;
2521 break;
2522 case M32R_OPERAND_SIMM8 :
2523 fields->f_simm8 = * valuep;
2524 break;
2525 case M32R_OPERAND_SIMM16 :
2526 fields->f_simm16 = * valuep;
2527 break;
2528 case M32R_OPERAND_UIMM4 :
2529 fields->f_uimm4 = * valuep;
2530 break;
2531 case M32R_OPERAND_UIMM5 :
2532 fields->f_uimm5 = * valuep;
2533 break;
2534 case M32R_OPERAND_UIMM16 :
2535 fields->f_uimm16 = * valuep;
2536 break;
2537 /* start-sanitize-m32rx */
2538 case M32R_OPERAND_IMM1 :
2539 fields->f_imm1 = * valuep;
2540 break;
2541 /* end-sanitize-m32rx */
2542 /* start-sanitize-m32rx */
2543 case M32R_OPERAND_ACCD :
2544 fields->f_accd = * valuep;
2545 break;
2546 /* end-sanitize-m32rx */
2547 /* start-sanitize-m32rx */
2548 case M32R_OPERAND_ACCS :
2549 fields->f_accs = * valuep;
2550 break;
2551 /* end-sanitize-m32rx */
2552 /* start-sanitize-m32rx */
2553 case M32R_OPERAND_ACC :
2554 fields->f_acc = * valuep;
2555 break;
2556 /* end-sanitize-m32rx */
2557 case M32R_OPERAND_HI16 :
2558 fields->f_hi16 = * valuep;
2559 break;
2560 case M32R_OPERAND_SLO16 :
2561 fields->f_simm16 = * valuep;
2562 break;
2563 case M32R_OPERAND_ULO16 :
2564 fields->f_uimm16 = * valuep;
2565 break;
2566 case M32R_OPERAND_UIMM24 :
2567 fields->f_uimm24 = * valuep;
2568 break;
2569 case M32R_OPERAND_DISP8 :
2570 fields->f_disp8 = * valuep;
2571 break;
2572 case M32R_OPERAND_DISP16 :
2573 fields->f_disp16 = * valuep;
2574 break;
2575 case M32R_OPERAND_DISP24 :
2576 fields->f_disp24 = * valuep;
2577 break;
2578
2579 default :
2580 fprintf (stderr, "Unrecognized field %d while setting operand.\n",
2581 opindex);
2582 abort ();
2583 }
2584 }
2585
2586 /* Main entry point for getting values from cgen_fields. */
2587
2588 CGEN_INLINE long
2589 m32r_cgen_get_operand (opindex, fields)
2590 int opindex;
2591 const CGEN_FIELDS * fields;
2592 {
2593 long value;
2594
2595 switch (opindex)
2596 {
2597 case M32R_OPERAND_SR :
2598 value = fields->f_r2;
2599 break;
2600 case M32R_OPERAND_DR :
2601 value = fields->f_r1;
2602 break;
2603 case M32R_OPERAND_SRC1 :
2604 value = fields->f_r1;
2605 break;
2606 case M32R_OPERAND_SRC2 :
2607 value = fields->f_r2;
2608 break;
2609 case M32R_OPERAND_SCR :
2610 value = fields->f_r2;
2611 break;
2612 case M32R_OPERAND_DCR :
2613 value = fields->f_r1;
2614 break;
2615 case M32R_OPERAND_SIMM8 :
2616 value = fields->f_simm8;
2617 break;
2618 case M32R_OPERAND_SIMM16 :
2619 value = fields->f_simm16;
2620 break;
2621 case M32R_OPERAND_UIMM4 :
2622 value = fields->f_uimm4;
2623 break;
2624 case M32R_OPERAND_UIMM5 :
2625 value = fields->f_uimm5;
2626 break;
2627 case M32R_OPERAND_UIMM16 :
2628 value = fields->f_uimm16;
2629 break;
2630 /* start-sanitize-m32rx */
2631 case M32R_OPERAND_IMM1 :
2632 value = fields->f_imm1;
2633 break;
2634 /* end-sanitize-m32rx */
2635 /* start-sanitize-m32rx */
2636 case M32R_OPERAND_ACCD :
2637 value = fields->f_accd;
2638 break;
2639 /* end-sanitize-m32rx */
2640 /* start-sanitize-m32rx */
2641 case M32R_OPERAND_ACCS :
2642 value = fields->f_accs;
2643 break;
2644 /* end-sanitize-m32rx */
2645 /* start-sanitize-m32rx */
2646 case M32R_OPERAND_ACC :
2647 value = fields->f_acc;
2648 break;
2649 /* end-sanitize-m32rx */
2650 case M32R_OPERAND_HI16 :
2651 value = fields->f_hi16;
2652 break;
2653 case M32R_OPERAND_SLO16 :
2654 value = fields->f_simm16;
2655 break;
2656 case M32R_OPERAND_ULO16 :
2657 value = fields->f_uimm16;
2658 break;
2659 case M32R_OPERAND_UIMM24 :
2660 value = fields->f_uimm24;
2661 break;
2662 case M32R_OPERAND_DISP8 :
2663 value = fields->f_disp8;
2664 break;
2665 case M32R_OPERAND_DISP16 :
2666 value = fields->f_disp16;
2667 break;
2668 case M32R_OPERAND_DISP24 :
2669 value = fields->f_disp24;
2670 break;
2671
2672 default :
2673 fprintf (stderr, "Unrecognized field %d while getting operand.\n",
2674 opindex);
2675 abort ();
2676 }
2677
2678 return value;
2679 }
2680
This page took 0.096798 seconds and 5 git commands to generate.