1 /* Generic opcode table support for targets using CGEN. -*- C -*-
2 CGEN: Cpu tools GENerator
4 This file is used to generate m32r-opc.c.
6 Copyright (C) 1998 Free Software Foundation, Inc.
8 This file is part of the GNU Binutils and GDB, the GNU debugger.
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)
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.
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. */
27 #include "libiberty.h"
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 ALIAS_P is non-zero if alias insns are to be included in the search.
37 The result a pointer to the insn table entry, or NULL if the instruction
41 m32r_cgen_lookup_insn (insn, insn_value, length, fields, alias_p)
42 const CGEN_INSN *insn;
43 cgen_insn_t insn_value;
51 const CGEN_INSN_LIST *insn_list;
60 if (cgen_current_endian == CGEN_ENDIAN_BIG)
61 bfd_putb16 (insn_value, buf);
63 bfd_putl16 (insn_value, buf);
66 if (cgen_current_endian == CGEN_ENDIAN_BIG)
67 bfd_putb32 (insn_value, buf);
69 bfd_putl32 (insn_value, buf);
75 abort (); /* FIXME: unfinished */
78 /* The instructions are stored in hash lists.
79 Pick the first one and keep trying until we find the right one. */
81 insn_list = CGEN_DIS_LOOKUP_INSN (buf, insn_value);
82 while (insn_list != NULL)
84 insn = insn_list->insn;
87 || ! CGEN_INSN_ATTR (insn, CGEN_INSN_ALIAS))
89 /* Basic bit mask must be correct. */
90 /* ??? May wish to allow target to defer this check until the
92 if ((insn_value & CGEN_INSN_MASK (insn)) == CGEN_INSN_VALUE (insn))
94 length = (*CGEN_EXTRACT_FN (insn)) (insn, NULL, insn_value, fields);
100 insn_list = CGEN_DIS_NEXT_INSN (insn_list);
105 /* Sanity check: can't pass an alias insn if ! alias_p. */
107 && CGEN_INSN_ATTR (insn, CGEN_INSN_ALIAS))
110 length = (*CGEN_EXTRACT_FN (insn)) (insn, NULL, insn_value, fields);
118 /* Fill in the operand instances used by insn INSN_VALUE.
119 If non-null INS is the insn table entry.
120 Otherwise INSN_VALUE is examined to compute it.
121 LENGTH is the number of bits in INSN_VALUE if known, otherwise 0.
122 INDICES is a pointer to a buffer of MAX_OPERAND_INSTANCES ints to be filled
124 The result a pointer to the insn table entry, or NULL if the instruction
125 wasn't recognized. */
128 m32r_cgen_get_insn_operands (insn, insn_value, length, indices)
129 const CGEN_INSN *insn;
130 cgen_insn_t insn_value;
135 const CGEN_OPERAND_INSTANCE *opinst;
138 /* FIXME: ALIAS insns are in transition from being record in the insn table
139 to being recorded separately as macros. They don't have semantic code
140 so they can't be used here. Thus we currently always ignore the INSN
142 insn = m32r_cgen_lookup_insn (NULL, insn_value, length, &fields, 0);
146 for (i = 0, opinst = CGEN_INSN_OPERANDS (insn);
148 && CGEN_OPERAND_INSTANCE_TYPE (opinst) != CGEN_OPERAND_INSTANCE_END;
151 const CGEN_OPERAND *op = CGEN_OPERAND_INSTANCE_OPERAND (opinst);
153 indices[i] = CGEN_OPERAND_INSTANCE_INDEX (opinst);
155 indices[i] = m32r_cgen_get_operand (CGEN_OPERAND_INDEX (op), &fields);
162 static const CGEN_ATTR_ENTRY MACH_attr[] =
164 { "m32r", MACH_M32R },
165 /* start-sanitize-m32rx */
166 { "m32rx", MACH_M32RX },
167 /* end-sanitize-m32rx */
172 /* start-sanitize-m32rx */
173 static const CGEN_ATTR_ENTRY PIPE_attr[] =
175 { "NONE", PIPE_NONE },
182 /* end-sanitize-m32rx */
183 const CGEN_ATTR_TABLE m32r_cgen_operand_attr_table[] =
185 { "ABS-ADDR", NULL },
187 { "HASH-PREFIX", NULL },
188 { "NEGATIVE", NULL },
190 { "PCREL-ADDR", NULL },
193 { "SIGN-OPT", NULL },
194 { "UNSIGNED", NULL },
198 const CGEN_ATTR_TABLE m32r_cgen_insn_attr_table[] =
200 { "MACH", & MACH_attr[0] },
201 /* start-sanitize-m32rx */
202 { "PIPE", & PIPE_attr[0] },
203 /* end-sanitize-m32rx */
205 { "COND-CTI", NULL },
206 { "FILL-SLOT", NULL },
207 { "PARALLEL", NULL },
209 { "RELAXABLE", NULL },
210 { "UNCOND-CTI", NULL },
214 CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_gr_entries[] =
237 CGEN_KEYWORD m32r_cgen_opval_h_gr =
239 & m32r_cgen_opval_h_gr_entries[0],
243 CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_cr_entries[] =
268 CGEN_KEYWORD m32r_cgen_opval_h_cr =
270 & m32r_cgen_opval_h_cr_entries[0],
274 /* start-sanitize-m32rx */
275 CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_accums_entries[] =
281 CGEN_KEYWORD m32r_cgen_opval_h_accums =
283 & m32r_cgen_opval_h_accums_entries[0],
287 /* end-sanitize-m32rx */
289 /* The hardware table. */
291 #define HW_ENT(n) m32r_cgen_hw_entries[n]
292 static const CGEN_HW_ENTRY m32r_cgen_hw_entries[] =
294 { HW_H_PC, & HW_ENT (HW_H_PC + 1), "h-pc", CGEN_ASM_KEYWORD, (PTR) 0 },
295 { HW_H_MEMORY, & HW_ENT (HW_H_MEMORY + 1), "h-memory", CGEN_ASM_KEYWORD, (PTR) 0 },
296 { HW_H_SINT, & HW_ENT (HW_H_SINT + 1), "h-sint", CGEN_ASM_KEYWORD, (PTR) 0 },
297 { HW_H_UINT, & HW_ENT (HW_H_UINT + 1), "h-uint", CGEN_ASM_KEYWORD, (PTR) 0 },
298 { HW_H_ADDR, & HW_ENT (HW_H_ADDR + 1), "h-addr", CGEN_ASM_KEYWORD, (PTR) 0 },
299 { HW_H_IADDR, & HW_ENT (HW_H_IADDR + 1), "h-iaddr", CGEN_ASM_KEYWORD, (PTR) 0 },
300 { HW_H_HI16, & HW_ENT (HW_H_HI16 + 1), "h-hi16", CGEN_ASM_KEYWORD, (PTR) 0 },
301 { HW_H_SLO16, & HW_ENT (HW_H_SLO16 + 1), "h-slo16", CGEN_ASM_KEYWORD, (PTR) 0 },
302 { HW_H_ULO16, & HW_ENT (HW_H_ULO16 + 1), "h-ulo16", CGEN_ASM_KEYWORD, (PTR) 0 },
303 { HW_H_GR, & HW_ENT (HW_H_GR + 1), "h-gr", CGEN_ASM_KEYWORD, (PTR) & m32r_cgen_opval_h_gr },
304 { HW_H_CR, & HW_ENT (HW_H_CR + 1), "h-cr", CGEN_ASM_KEYWORD, (PTR) & m32r_cgen_opval_h_cr },
305 { HW_H_ACCUM, & HW_ENT (HW_H_ACCUM + 1), "h-accum", CGEN_ASM_KEYWORD, (PTR) 0 },
306 /* start-sanitize-m32rx */
307 { HW_H_ACCUMS, & HW_ENT (HW_H_ACCUMS + 1), "h-accums", CGEN_ASM_KEYWORD, (PTR) & m32r_cgen_opval_h_accums },
308 /* end-sanitize-m32rx */
309 /* start-sanitize-m32rx */
310 { HW_H_ABORT, & HW_ENT (HW_H_ABORT + 1), "h-abort", CGEN_ASM_KEYWORD, (PTR) 0 },
311 /* end-sanitize-m32rx */
312 { HW_H_COND, & HW_ENT (HW_H_COND + 1), "h-cond", CGEN_ASM_KEYWORD, (PTR) 0 },
313 { HW_H_SM, & HW_ENT (HW_H_SM + 1), "h-sm", CGEN_ASM_KEYWORD, (PTR) 0 },
314 { HW_H_BSM, & HW_ENT (HW_H_BSM + 1), "h-bsm", CGEN_ASM_KEYWORD, (PTR) 0 },
315 { HW_H_IE, & HW_ENT (HW_H_IE + 1), "h-ie", CGEN_ASM_KEYWORD, (PTR) 0 },
316 { HW_H_BIE, & HW_ENT (HW_H_BIE + 1), "h-bie", CGEN_ASM_KEYWORD, (PTR) 0 },
317 { HW_H_BCOND, & HW_ENT (HW_H_BCOND + 1), "h-bcond", CGEN_ASM_KEYWORD, (PTR) 0 },
318 { HW_H_BPC, & HW_ENT (HW_H_BPC + 1), "h-bpc", CGEN_ASM_KEYWORD, (PTR) 0 },
319 { HW_H_LOCK, & HW_ENT (HW_H_LOCK + 1), "h-lock", CGEN_ASM_KEYWORD, (PTR) 0 },
323 /* The operand table. */
325 #define OPERAND(op) CONCAT2 (M32R_OPERAND_,op)
326 #define OP_ENT(op) m32r_cgen_operand_table[OPERAND (op)]
328 const CGEN_OPERAND m32r_cgen_operand_table[MAX_OPERANDS] =
330 /* pc: program counter */
331 { "pc", & HW_ENT (HW_H_PC), 0, 0,
332 { 0, 0|(1<<CGEN_OPERAND_FAKE)|(1<<CGEN_OPERAND_PC), { 0 } } },
333 /* sr: source register */
334 { "sr", & HW_ENT (HW_H_GR), 12, 4,
335 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
336 /* dr: destination register */
337 { "dr", & HW_ENT (HW_H_GR), 4, 4,
338 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
339 /* src1: source register 1 */
340 { "src1", & HW_ENT (HW_H_GR), 4, 4,
341 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
342 /* src2: source register 2 */
343 { "src2", & HW_ENT (HW_H_GR), 12, 4,
344 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
345 /* scr: source control register */
346 { "scr", & HW_ENT (HW_H_CR), 12, 4,
347 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
348 /* dcr: destination control register */
349 { "dcr", & HW_ENT (HW_H_CR), 4, 4,
350 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
351 /* simm8: 8 bit signed immediate */
352 { "simm8", & HW_ENT (HW_H_SINT), 8, 8,
353 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX), { 0 } } },
354 /* simm16: 16 bit signed immediate */
355 { "simm16", & HW_ENT (HW_H_SINT), 16, 16,
356 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX), { 0 } } },
357 /* uimm4: 4 bit trap number */
358 { "uimm4", & HW_ENT (HW_H_UINT), 12, 4,
359 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
360 /* uimm5: 5 bit shift count */
361 { "uimm5", & HW_ENT (HW_H_UINT), 11, 5,
362 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
363 /* uimm16: 16 bit unsigned immediate */
364 { "uimm16", & HW_ENT (HW_H_UINT), 16, 16,
365 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
366 /* start-sanitize-m32rx */
367 /* imm1: 1 bit immediate */
368 { "imm1", & HW_ENT (HW_H_UINT), 15, 1,
369 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
370 /* end-sanitize-m32rx */
371 /* start-sanitize-m32rx */
372 /* accd: accumulator destination register */
373 { "accd", & HW_ENT (HW_H_ACCUMS), 4, 2,
374 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
375 /* end-sanitize-m32rx */
376 /* start-sanitize-m32rx */
377 /* accs: accumulator source register */
378 { "accs", & HW_ENT (HW_H_ACCUMS), 12, 2,
379 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
380 /* end-sanitize-m32rx */
381 /* start-sanitize-m32rx */
382 /* acc: accumulator reg (d) */
383 { "acc", & HW_ENT (HW_H_ACCUMS), 8, 1,
384 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
385 /* end-sanitize-m32rx */
387 { "hash", & HW_ENT (HW_H_SINT), 0, 0,
389 /* hi16: high 16 bit immediate, sign optional */
390 { "hi16", & HW_ENT (HW_H_HI16), 16, 16,
391 { 0, 0|(1<<CGEN_OPERAND_SIGN_OPT)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
392 /* slo16: 16 bit signed immediate, for low() */
393 { "slo16", & HW_ENT (HW_H_SLO16), 16, 16,
395 /* ulo16: 16 bit unsigned immediate, for low() */
396 { "ulo16", & HW_ENT (HW_H_ULO16), 16, 16,
397 { 0, 0|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
398 /* uimm24: 24 bit address */
399 { "uimm24", & HW_ENT (HW_H_ADDR), 8, 24,
400 { 0, 0|(1<<CGEN_OPERAND_HASH_PREFIX)|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_ABS_ADDR)|(1<<CGEN_OPERAND_UNSIGNED), { 0 } } },
401 /* disp8: 8 bit displacement */
402 { "disp8", & HW_ENT (HW_H_IADDR), 8, 8,
403 { 0, 0|(1<<CGEN_OPERAND_RELAX)|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_PCREL_ADDR), { 0 } } },
404 /* disp16: 16 bit displacement */
405 { "disp16", & HW_ENT (HW_H_IADDR), 16, 16,
406 { 0, 0|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_PCREL_ADDR), { 0 } } },
407 /* disp24: 24 bit displacement */
408 { "disp24", & HW_ENT (HW_H_IADDR), 8, 24,
409 { 0, 0|(1<<CGEN_OPERAND_RELAX)|(1<<CGEN_OPERAND_RELOC)|(1<<CGEN_OPERAND_PCREL_ADDR), { 0 } } },
410 /* condbit: condition bit */
411 { "condbit", & HW_ENT (HW_H_COND), 0, 0,
412 { 0, 0|(1<<CGEN_OPERAND_FAKE), { 0 } } },
413 /* accum: accumulator */
414 { "accum", & HW_ENT (HW_H_ACCUM), 0, 0,
415 { 0, 0|(1<<CGEN_OPERAND_FAKE), { 0 } } },
418 /* Operand references. */
420 #define INPUT CGEN_OPERAND_INSTANCE_INPUT
421 #define OUTPUT CGEN_OPERAND_INSTANCE_OUTPUT
423 static const CGEN_OPERAND_INSTANCE fmt_0_add_ops[] = {
424 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
425 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
426 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
430 static const CGEN_OPERAND_INSTANCE fmt_1_add3_ops[] = {
431 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
432 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
433 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
437 static const CGEN_OPERAND_INSTANCE fmt_2_and3_ops[] = {
438 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
439 { INPUT, & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (UIMM16), 0 },
440 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
444 static const CGEN_OPERAND_INSTANCE fmt_3_or3_ops[] = {
445 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
446 { INPUT, & HW_ENT (HW_H_ULO16), CGEN_MODE_UHI, & OP_ENT (ULO16), 0 },
447 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
451 static const CGEN_OPERAND_INSTANCE fmt_4_addi_ops[] = {
452 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
453 { INPUT, & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (SIMM8), 0 },
454 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
458 static const CGEN_OPERAND_INSTANCE fmt_5_addv_ops[] = {
459 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
460 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
461 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
462 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
466 static const CGEN_OPERAND_INSTANCE fmt_6_addv3_ops[] = {
467 { INPUT, & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (SIMM16), 0 },
468 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
469 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
470 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
474 static const CGEN_OPERAND_INSTANCE fmt_7_addx_ops[] = {
475 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
476 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
477 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
478 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
479 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
483 static const CGEN_OPERAND_INSTANCE fmt_8_bc8_ops[] = {
484 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
485 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP8), 0 },
486 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
490 static const CGEN_OPERAND_INSTANCE fmt_10_bc24_ops[] = {
491 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
492 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP24), 0 },
493 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
497 static const CGEN_OPERAND_INSTANCE fmt_12_beq_ops[] = {
498 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP16), 0 },
499 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
500 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
501 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
505 static const CGEN_OPERAND_INSTANCE fmt_13_beqz_ops[] = {
506 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP16), 0 },
507 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
508 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
512 static const CGEN_OPERAND_INSTANCE fmt_14_bl8_ops[] = {
513 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP8), 0 },
514 { INPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
515 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
516 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14 },
520 static const CGEN_OPERAND_INSTANCE fmt_15_bl24_ops[] = {
521 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP24), 0 },
522 { INPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
523 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
524 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14 },
528 /* start-sanitize-m32rx */
529 static const CGEN_OPERAND_INSTANCE fmt_16_bcl8_ops[] = {
530 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
531 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP8), 0 },
532 { INPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
533 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
534 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14 },
538 /* end-sanitize-m32rx */
539 /* start-sanitize-m32rx */
540 static const CGEN_OPERAND_INSTANCE fmt_17_bcl24_ops[] = {
541 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
542 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP24), 0 },
543 { INPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
544 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
545 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14 },
549 /* end-sanitize-m32rx */
550 static const CGEN_OPERAND_INSTANCE fmt_18_bra8_ops[] = {
551 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP8), 0 },
552 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
556 static const CGEN_OPERAND_INSTANCE fmt_19_bra24_ops[] = {
557 { INPUT, & HW_ENT (HW_H_IADDR), CGEN_MODE_VM, & OP_ENT (DISP24), 0 },
558 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
562 static const CGEN_OPERAND_INSTANCE fmt_20_cmp_ops[] = {
563 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
564 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
565 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
569 static const CGEN_OPERAND_INSTANCE fmt_21_cmpi_ops[] = {
570 { INPUT, & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (SIMM16), 0 },
571 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
572 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
576 static const CGEN_OPERAND_INSTANCE fmt_22_cmpui_ops[] = {
577 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
578 { INPUT, & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (UIMM16), 0 },
579 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
583 /* start-sanitize-m32rx */
584 static const CGEN_OPERAND_INSTANCE fmt_23_cmpz_ops[] = {
585 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
586 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
590 /* end-sanitize-m32rx */
591 static const CGEN_OPERAND_INSTANCE fmt_24_div_ops[] = {
592 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
593 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
594 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
598 /* start-sanitize-m32rx */
599 static const CGEN_OPERAND_INSTANCE fmt_25_jc_ops[] = {
600 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
601 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
602 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
606 /* end-sanitize-m32rx */
607 static const CGEN_OPERAND_INSTANCE fmt_26_jl_ops[] = {
608 { INPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
609 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
610 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
611 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, 0, 14 },
615 static const CGEN_OPERAND_INSTANCE fmt_27_jmp_ops[] = {
616 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
617 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
621 static const CGEN_OPERAND_INSTANCE fmt_28_ld_ops[] = {
622 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0 },
623 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
624 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
628 static const CGEN_OPERAND_INSTANCE fmt_30_ld_d_ops[] = {
629 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0 },
630 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
631 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
632 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
636 static const CGEN_OPERAND_INSTANCE fmt_32_ldb_ops[] = {
637 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0 },
638 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
639 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
643 static const CGEN_OPERAND_INSTANCE fmt_33_ldb_d_ops[] = {
644 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0 },
645 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
646 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
647 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
651 static const CGEN_OPERAND_INSTANCE fmt_34_ldh_ops[] = {
652 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0 },
653 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
654 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
658 static const CGEN_OPERAND_INSTANCE fmt_35_ldh_d_ops[] = {
659 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0 },
660 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
661 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
662 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
666 static const CGEN_OPERAND_INSTANCE fmt_36_ld_plus_ops[] = {
667 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0 },
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 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
674 static const CGEN_OPERAND_INSTANCE fmt_37_ld24_ops[] = {
675 { INPUT, & HW_ENT (HW_H_ADDR), CGEN_MODE_VM, & OP_ENT (UIMM24), 0 },
676 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
680 static const CGEN_OPERAND_INSTANCE fmt_38_ldi8_ops[] = {
681 { INPUT, & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (SIMM8), 0 },
682 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
686 static const CGEN_OPERAND_INSTANCE fmt_39_ldi16_ops[] = {
687 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
688 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
692 static const CGEN_OPERAND_INSTANCE fmt_40_lock_ops[] = {
693 { INPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0 },
694 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
695 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
696 { OUTPUT, & HW_ENT (HW_H_LOCK), CGEN_MODE_UBI, 0, 0 },
700 static const CGEN_OPERAND_INSTANCE fmt_41_machi_ops[] = {
701 { INPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, 0, 0 },
702 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
703 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
704 { OUTPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, 0, 0 },
708 /* start-sanitize-m32rx */
709 static const CGEN_OPERAND_INSTANCE fmt_42_machi_a_ops[] = {
710 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACC), 0 },
711 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
712 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
713 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACC), 0 },
717 /* end-sanitize-m32rx */
718 static const CGEN_OPERAND_INSTANCE fmt_43_mulhi_ops[] = {
719 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
720 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
721 { OUTPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, 0, 0 },
725 /* start-sanitize-m32rx */
726 static const CGEN_OPERAND_INSTANCE fmt_44_mulhi_a_ops[] = {
727 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
728 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
729 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACC), 0 },
733 /* end-sanitize-m32rx */
734 static const CGEN_OPERAND_INSTANCE fmt_45_mv_ops[] = {
735 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
736 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
740 static const CGEN_OPERAND_INSTANCE fmt_46_mvfachi_ops[] = {
741 { INPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, 0, 0 },
742 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
746 /* start-sanitize-m32rx */
747 static const CGEN_OPERAND_INSTANCE fmt_47_mvfachi_a_ops[] = {
748 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCS), 0 },
749 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
753 /* end-sanitize-m32rx */
754 static const CGEN_OPERAND_INSTANCE fmt_48_mvfc_ops[] = {
755 { INPUT, & HW_ENT (HW_H_CR), CGEN_MODE_USI, & OP_ENT (SCR), 0 },
756 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
760 static const CGEN_OPERAND_INSTANCE fmt_49_mvtachi_ops[] = {
761 { INPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, 0, 0 },
762 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
763 { OUTPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, 0, 0 },
767 /* start-sanitize-m32rx */
768 static const CGEN_OPERAND_INSTANCE fmt_50_mvtachi_a_ops[] = {
769 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCS), 0 },
770 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
771 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCS), 0 },
775 /* end-sanitize-m32rx */
776 static const CGEN_OPERAND_INSTANCE fmt_51_mvtc_ops[] = {
777 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
778 { OUTPUT, & HW_ENT (HW_H_CR), CGEN_MODE_USI, & OP_ENT (DCR), 0 },
782 static const CGEN_OPERAND_INSTANCE fmt_53_rac_ops[] = {
783 { INPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, 0, 0 },
784 { OUTPUT, & HW_ENT (HW_H_ACCUM), CGEN_MODE_DI, 0, 0 },
788 /* start-sanitize-m32rx */
789 static const CGEN_OPERAND_INSTANCE fmt_56_rac_dsi_ops[] = {
790 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCS), 0 },
791 { INPUT, & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (IMM1), 0 },
792 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, & OP_ENT (ACCD), 0 },
796 /* end-sanitize-m32rx */
797 static const CGEN_OPERAND_INSTANCE fmt_57_rte_ops[] = {
798 { INPUT, & HW_ENT (HW_H_BCOND), CGEN_MODE_VM, 0, 0 },
799 { INPUT, & HW_ENT (HW_H_BIE), CGEN_MODE_VM, 0, 0 },
800 { INPUT, & HW_ENT (HW_H_BPC), CGEN_MODE_VM, 0, 0 },
801 { INPUT, & HW_ENT (HW_H_BSM), CGEN_MODE_VM, 0, 0 },
802 { OUTPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
803 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
804 { OUTPUT, & HW_ENT (HW_H_IE), CGEN_MODE_VM, 0, 0 },
805 { OUTPUT, & HW_ENT (HW_H_SM), CGEN_MODE_VM, 0, 0 },
809 static const CGEN_OPERAND_INSTANCE fmt_58_seth_ops[] = {
810 { INPUT, & HW_ENT (HW_H_HI16), CGEN_MODE_UHI, & OP_ENT (HI16), 0 },
811 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
815 static const CGEN_OPERAND_INSTANCE fmt_59_sll3_ops[] = {
816 { INPUT, & HW_ENT (HW_H_SINT), CGEN_MODE_SI, & OP_ENT (SIMM16), 0 },
817 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
818 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
822 static const CGEN_OPERAND_INSTANCE fmt_60_slli_ops[] = {
823 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
824 { INPUT, & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (UIMM5), 0 },
825 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
829 static const CGEN_OPERAND_INSTANCE fmt_61_st_ops[] = {
830 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
831 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
832 { OUTPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0 },
836 static const CGEN_OPERAND_INSTANCE fmt_63_st_d_ops[] = {
837 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
838 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
839 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
840 { OUTPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0 },
844 static const CGEN_OPERAND_INSTANCE fmt_65_stb_ops[] = {
845 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
846 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
847 { OUTPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0 },
851 static const CGEN_OPERAND_INSTANCE fmt_66_stb_d_ops[] = {
852 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
853 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
854 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
855 { OUTPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_QI, 0, 0 },
859 static const CGEN_OPERAND_INSTANCE fmt_67_sth_ops[] = {
860 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
861 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
862 { OUTPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0 },
866 static const CGEN_OPERAND_INSTANCE fmt_68_sth_d_ops[] = {
867 { INPUT, & HW_ENT (HW_H_SLO16), CGEN_MODE_HI, & OP_ENT (SLO16), 0 },
868 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
869 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
870 { OUTPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_HI, 0, 0 },
874 static const CGEN_OPERAND_INSTANCE fmt_69_st_plus_ops[] = {
875 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
876 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
877 { OUTPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0 },
878 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
882 static const CGEN_OPERAND_INSTANCE fmt_70_trap_ops[] = {
883 { INPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
884 { INPUT, & HW_ENT (HW_H_CR), CGEN_MODE_SI, 0, 0 },
885 { INPUT, & HW_ENT (HW_H_UINT), CGEN_MODE_USI, & OP_ENT (UIMM4), 0 },
886 { OUTPUT, & HW_ENT (HW_H_PC), CGEN_MODE_USI, 0, 0 },
887 { OUTPUT, & HW_ENT (HW_H_CR), CGEN_MODE_SI, 0, 0 },
888 { OUTPUT, & HW_ENT (HW_H_CR), CGEN_MODE_SI, 0, 6 },
892 static const CGEN_OPERAND_INSTANCE fmt_71_unlock_ops[] = {
893 { INPUT, & HW_ENT (HW_H_LOCK), CGEN_MODE_UBI, 0, 0 },
894 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
895 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
896 { OUTPUT, & HW_ENT (HW_H_MEMORY), CGEN_MODE_SI, 0, 0 },
897 { OUTPUT, & HW_ENT (HW_H_LOCK), CGEN_MODE_UBI, 0, 0 },
901 /* start-sanitize-m32rx */
902 static const CGEN_OPERAND_INSTANCE fmt_74_satb_ops[] = {
903 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
904 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
908 /* end-sanitize-m32rx */
909 /* start-sanitize-m32rx */
910 static const CGEN_OPERAND_INSTANCE fmt_75_sat_ops[] = {
911 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
912 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SR), 0 },
913 { OUTPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (DR), 0 },
917 /* end-sanitize-m32rx */
918 /* start-sanitize-m32rx */
919 static const CGEN_OPERAND_INSTANCE fmt_76_sadd_ops[] = {
920 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, 0, 0 },
921 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, 0, 1 },
922 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, 0, 0 },
926 /* end-sanitize-m32rx */
927 /* start-sanitize-m32rx */
928 static const CGEN_OPERAND_INSTANCE fmt_77_macwu1_ops[] = {
929 { INPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, 0, 1 },
930 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
931 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
932 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, 0, 1 },
936 /* end-sanitize-m32rx */
937 /* start-sanitize-m32rx */
938 static const CGEN_OPERAND_INSTANCE fmt_78_mulwu1_ops[] = {
939 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC1), 0 },
940 { INPUT, & HW_ENT (HW_H_GR), CGEN_MODE_SI, & OP_ENT (SRC2), 0 },
941 { OUTPUT, & HW_ENT (HW_H_ACCUMS), CGEN_MODE_DI, 0, 1 },
945 /* end-sanitize-m32rx */
946 /* start-sanitize-m32rx */
947 static const CGEN_OPERAND_INSTANCE fmt_79_sc_ops[] = {
948 { INPUT, & HW_ENT (HW_H_COND), CGEN_MODE_UBI, 0, 0 },
952 /* end-sanitize-m32rx */
956 #define A(a) (1 << CONCAT2 (CGEN_INSN_,a))
957 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
958 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
960 /* The instruction table. */
962 const CGEN_INSN m32r_cgen_insn_table_entries[MAX_INSNS] =
964 /* null first entry, end of all hash chains */
970 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
971 { 16, 16, 0xf0f0 }, 0xa0,
973 { CGEN_INSN_NBOOL_ATTRS, 0|A(PARALLEL), { (1<<MACH_M32R), PIPE_OS } }
975 /* add3 $dr,$sr,$hash$slo16 */
979 { MNEM, ' ', OP (DR), ',', OP (SR), ',', OP (HASH), OP (SLO16), 0 },
980 { 32, 32, 0xf0f00000 }, 0x80a00000,
982 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
988 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
989 { 16, 16, 0xf0f0 }, 0xc0,
991 { CGEN_INSN_NBOOL_ATTRS, 0|A(PARALLEL), { (1<<MACH_M32R), PIPE_OS } }
993 /* and3 $dr,$sr,$uimm16 */
997 { MNEM, ' ', OP (DR), ',', OP (SR), ',', OP (UIMM16), 0 },
998 { 32, 32, 0xf0f00000 }, 0x80c00000,
1000 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1006 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
1007 { 16, 16, 0xf0f0 }, 0xe0,
1009 { CGEN_INSN_NBOOL_ATTRS, 0|A(PARALLEL), { (1<<MACH_M32R), PIPE_OS } }
1011 /* or3 $dr,$sr,$hash$ulo16 */
1015 { MNEM, ' ', OP (DR), ',', OP (SR), ',', OP (HASH), OP (ULO16), 0 },
1016 { 32, 32, 0xf0f00000 }, 0x80e00000,
1018 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1024 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
1025 { 16, 16, 0xf0f0 }, 0xd0,
1027 { CGEN_INSN_NBOOL_ATTRS, 0|A(PARALLEL), { (1<<MACH_M32R), PIPE_OS } }
1029 /* xor3 $dr,$sr,$uimm16 */
1033 { MNEM, ' ', OP (DR), ',', OP (SR), ',', OP (UIMM16), 0 },
1034 { 32, 32, 0xf0f00000 }, 0x80d00000,
1035 & fmt_2_and3_ops[0],
1036 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1038 /* addi $dr,$simm8 */
1042 { MNEM, ' ', OP (DR), ',', OP (SIMM8), 0 },
1043 { 16, 16, 0xf000 }, 0x4000,
1044 & fmt_4_addi_ops[0],
1045 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
1051 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
1052 { 16, 16, 0xf0f0 }, 0x80,
1053 & fmt_5_addv_ops[0],
1054 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
1056 /* addv3 $dr,$sr,$simm16 */
1060 { MNEM, ' ', OP (DR), ',', OP (SR), ',', OP (SIMM16), 0 },
1061 { 32, 32, 0xf0f00000 }, 0x80800000,
1062 & fmt_6_addv3_ops[0],
1063 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1069 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
1070 { 16, 16, 0xf0f0 }, 0x90,
1071 & fmt_7_addx_ops[0],
1072 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
1078 { MNEM, ' ', OP (DISP8), 0 },
1079 { 16, 16, 0xff00 }, 0x7c00,
1081 { CGEN_INSN_NBOOL_ATTRS, 0|A(RELAXABLE)|A(COND_CTI), { (1<<MACH_M32R), PIPE_O } }
1087 { MNEM, ' ', OP (DISP8), 0 },
1088 { 16, 16, 0xff00 }, 0x7c00,
1090 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32R), PIPE_O } }
1096 { MNEM, ' ', OP (DISP24), 0 },
1097 { 32, 32, 0xff000000 }, 0xfc000000,
1098 & fmt_10_bc24_ops[0],
1099 { CGEN_INSN_NBOOL_ATTRS, 0|A(RELAX)|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1105 { MNEM, ' ', OP (DISP24), 0 },
1106 { 32, 32, 0xff000000 }, 0xfc000000,
1108 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1110 /* beq $src1,$src2,$disp16 */
1114 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (DISP16), 0 },
1115 { 32, 32, 0xf0f00000 }, 0xb0000000,
1116 & fmt_12_beq_ops[0],
1117 { CGEN_INSN_NBOOL_ATTRS, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1119 /* beqz $src2,$disp16 */
1123 { MNEM, ' ', OP (SRC2), ',', OP (DISP16), 0 },
1124 { 32, 32, 0xfff00000 }, 0xb0800000,
1125 & fmt_13_beqz_ops[0],
1126 { CGEN_INSN_NBOOL_ATTRS, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1128 /* bgez $src2,$disp16 */
1132 { MNEM, ' ', OP (SRC2), ',', OP (DISP16), 0 },
1133 { 32, 32, 0xfff00000 }, 0xb0b00000,
1134 & fmt_13_beqz_ops[0],
1135 { CGEN_INSN_NBOOL_ATTRS, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1137 /* bgtz $src2,$disp16 */
1141 { MNEM, ' ', OP (SRC2), ',', OP (DISP16), 0 },
1142 { 32, 32, 0xfff00000 }, 0xb0d00000,
1143 & fmt_13_beqz_ops[0],
1144 { CGEN_INSN_NBOOL_ATTRS, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1146 /* blez $src2,$disp16 */
1150 { MNEM, ' ', OP (SRC2), ',', OP (DISP16), 0 },
1151 { 32, 32, 0xfff00000 }, 0xb0c00000,
1152 & fmt_13_beqz_ops[0],
1153 { CGEN_INSN_NBOOL_ATTRS, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1155 /* bltz $src2,$disp16 */
1159 { MNEM, ' ', OP (SRC2), ',', OP (DISP16), 0 },
1160 { 32, 32, 0xfff00000 }, 0xb0a00000,
1161 & fmt_13_beqz_ops[0],
1162 { CGEN_INSN_NBOOL_ATTRS, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1164 /* bnez $src2,$disp16 */
1168 { MNEM, ' ', OP (SRC2), ',', OP (DISP16), 0 },
1169 { 32, 32, 0xfff00000 }, 0xb0900000,
1170 & fmt_13_beqz_ops[0],
1171 { CGEN_INSN_NBOOL_ATTRS, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1177 { MNEM, ' ', OP (DISP8), 0 },
1178 { 16, 16, 0xff00 }, 0x7e00,
1179 & fmt_14_bl8_ops[0],
1180 { CGEN_INSN_NBOOL_ATTRS, 0|A(FILL_SLOT)|A(RELAXABLE)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O } }
1186 { MNEM, ' ', OP (DISP8), 0 },
1187 { 16, 16, 0xff00 }, 0x7e00,
1189 { CGEN_INSN_NBOOL_ATTRS, 0|A(FILL_SLOT)|A(ALIAS)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O } }
1195 { MNEM, ' ', OP (DISP24), 0 },
1196 { 32, 32, 0xff000000 }, 0xfe000000,
1197 & fmt_15_bl24_ops[0],
1198 { CGEN_INSN_NBOOL_ATTRS, 0|A(RELAX)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1204 { MNEM, ' ', OP (DISP24), 0 },
1205 { 32, 32, 0xff000000 }, 0xfe000000,
1207 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1209 /* start-sanitize-m32rx */
1214 { MNEM, ' ', OP (DISP8), 0 },
1215 { 16, 16, 0xff00 }, 0x7800,
1216 & fmt_16_bcl8_ops[0],
1217 { CGEN_INSN_NBOOL_ATTRS, 0|A(RELAXABLE)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O } }
1219 /* end-sanitize-m32rx */
1220 /* start-sanitize-m32rx */
1225 { MNEM, ' ', OP (DISP8), 0 },
1226 { 16, 16, 0xff00 }, 0x7800,
1228 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O } }
1230 /* end-sanitize-m32rx */
1231 /* start-sanitize-m32rx */
1236 { MNEM, ' ', OP (DISP24), 0 },
1237 { 32, 32, 0xff000000 }, 0xf8000000,
1238 & fmt_17_bcl24_ops[0],
1239 { CGEN_INSN_NBOOL_ATTRS, 0|A(RELAX)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_NONE } }
1241 /* end-sanitize-m32rx */
1242 /* start-sanitize-m32rx */
1247 { MNEM, ' ', OP (DISP24), 0 },
1248 { 32, 32, 0xff000000 }, 0xf8000000,
1250 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_NONE } }
1252 /* end-sanitize-m32rx */
1257 { MNEM, ' ', OP (DISP8), 0 },
1258 { 16, 16, 0xff00 }, 0x7d00,
1260 { CGEN_INSN_NBOOL_ATTRS, 0|A(RELAXABLE)|A(COND_CTI), { (1<<MACH_M32R), PIPE_O } }
1266 { MNEM, ' ', OP (DISP8), 0 },
1267 { 16, 16, 0xff00 }, 0x7d00,
1269 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32R), PIPE_O } }
1275 { MNEM, ' ', OP (DISP24), 0 },
1276 { 32, 32, 0xff000000 }, 0xfd000000,
1277 & fmt_10_bc24_ops[0],
1278 { CGEN_INSN_NBOOL_ATTRS, 0|A(RELAX)|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1284 { MNEM, ' ', OP (DISP24), 0 },
1285 { 32, 32, 0xff000000 }, 0xfd000000,
1287 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1289 /* bne $src1,$src2,$disp16 */
1293 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (DISP16), 0 },
1294 { 32, 32, 0xf0f00000 }, 0xb0100000,
1295 & fmt_12_beq_ops[0],
1296 { CGEN_INSN_NBOOL_ATTRS, 0|A(COND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1302 { MNEM, ' ', OP (DISP8), 0 },
1303 { 16, 16, 0xff00 }, 0x7f00,
1304 & fmt_18_bra8_ops[0],
1305 { CGEN_INSN_NBOOL_ATTRS, 0|A(FILL_SLOT)|A(RELAXABLE)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O } }
1311 { MNEM, ' ', OP (DISP8), 0 },
1312 { 16, 16, 0xff00 }, 0x7f00,
1314 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O } }
1320 { MNEM, ' ', OP (DISP24), 0 },
1321 { 32, 32, 0xff000000 }, 0xff000000,
1322 & fmt_19_bra24_ops[0],
1323 { CGEN_INSN_NBOOL_ATTRS, 0|A(RELAX)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1329 { MNEM, ' ', OP (DISP24), 0 },
1330 { 32, 32, 0xff000000 }, 0xff000000,
1332 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_NONE } }
1334 /* start-sanitize-m32rx */
1339 { MNEM, ' ', OP (DISP8), 0 },
1340 { 16, 16, 0xff00 }, 0x7900,
1341 & fmt_16_bcl8_ops[0],
1342 { CGEN_INSN_NBOOL_ATTRS, 0|A(RELAXABLE)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O } }
1344 /* end-sanitize-m32rx */
1345 /* start-sanitize-m32rx */
1349 "bncl8.s", "bncl.s",
1350 { MNEM, ' ', OP (DISP8), 0 },
1351 { 16, 16, 0xff00 }, 0x7900,
1353 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O } }
1355 /* end-sanitize-m32rx */
1356 /* start-sanitize-m32rx */
1361 { MNEM, ' ', OP (DISP24), 0 },
1362 { 32, 32, 0xff000000 }, 0xf9000000,
1363 & fmt_17_bcl24_ops[0],
1364 { CGEN_INSN_NBOOL_ATTRS, 0|A(RELAX)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_NONE } }
1366 /* end-sanitize-m32rx */
1367 /* start-sanitize-m32rx */
1368 /* bncl.l $disp24 */
1371 "bncl24.l", "bncl.l",
1372 { MNEM, ' ', OP (DISP24), 0 },
1373 { 32, 32, 0xff000000 }, 0xf9000000,
1375 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS)|A(COND_CTI), { (1<<MACH_M32RX), PIPE_NONE } }
1377 /* end-sanitize-m32rx */
1378 /* cmp $src1,$src2 */
1382 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
1383 { 16, 16, 0xf0f0 }, 0x40,
1384 & fmt_20_cmp_ops[0],
1385 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
1387 /* cmpi $src2,$simm16 */
1391 { MNEM, ' ', OP (SRC2), ',', OP (SIMM16), 0 },
1392 { 32, 32, 0xfff00000 }, 0x80400000,
1393 & fmt_21_cmpi_ops[0],
1394 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1396 /* cmpu $src1,$src2 */
1400 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
1401 { 16, 16, 0xf0f0 }, 0x50,
1402 & fmt_20_cmp_ops[0],
1403 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
1405 /* cmpui $src2,$uimm16 */
1409 { MNEM, ' ', OP (SRC2), ',', OP (UIMM16), 0 },
1410 { 32, 32, 0xfff00000 }, 0x80500000,
1411 & fmt_22_cmpui_ops[0],
1412 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1414 /* start-sanitize-m32rx */
1415 /* cmpeq $src1,$src2 */
1419 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
1420 { 16, 16, 0xf0f0 }, 0x60,
1421 & fmt_20_cmp_ops[0],
1422 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_OS } }
1424 /* end-sanitize-m32rx */
1425 /* start-sanitize-m32rx */
1430 { MNEM, ' ', OP (SRC2), 0 },
1431 { 16, 16, 0xfff0 }, 0x70,
1432 & fmt_23_cmpz_ops[0],
1433 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_OS } }
1435 /* end-sanitize-m32rx */
1440 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
1441 { 32, 32, 0xf0f0ffff }, 0x90000000,
1442 & fmt_24_div_ops[0],
1443 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1449 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
1450 { 32, 32, 0xf0f0ffff }, 0x90100000,
1451 & fmt_24_div_ops[0],
1452 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1458 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
1459 { 32, 32, 0xf0f0ffff }, 0x90200000,
1460 & fmt_24_div_ops[0],
1461 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1467 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
1468 { 32, 32, 0xf0f0ffff }, 0x90300000,
1469 & fmt_24_div_ops[0],
1470 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1472 /* start-sanitize-m32rx */
1477 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
1478 { 32, 32, 0xf0f0ffff }, 0x90000010,
1479 & fmt_24_div_ops[0],
1480 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_NONE } }
1482 /* end-sanitize-m32rx */
1483 /* start-sanitize-m32rx */
1488 { MNEM, ' ', OP (SR), 0 },
1489 { 16, 16, 0xfff0 }, 0x1cc0,
1491 { CGEN_INSN_NBOOL_ATTRS, 0|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O } }
1493 /* end-sanitize-m32rx */
1494 /* start-sanitize-m32rx */
1499 { MNEM, ' ', OP (SR), 0 },
1500 { 16, 16, 0xfff0 }, 0x1dc0,
1502 { CGEN_INSN_NBOOL_ATTRS, 0|A(COND_CTI), { (1<<MACH_M32RX), PIPE_O } }
1504 /* end-sanitize-m32rx */
1509 { MNEM, ' ', OP (SR), 0 },
1510 { 16, 16, 0xfff0 }, 0x1ec0,
1512 { CGEN_INSN_NBOOL_ATTRS, 0|A(FILL_SLOT)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O } }
1518 { MNEM, ' ', OP (SR), 0 },
1519 { 16, 16, 0xfff0 }, 0x1fc0,
1520 & fmt_27_jmp_ops[0],
1521 { CGEN_INSN_NBOOL_ATTRS, 0|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O } }
1527 { MNEM, ' ', OP (DR), ',', '@', OP (SR), 0 },
1528 { 16, 16, 0xf0f0 }, 0x20c0,
1530 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
1536 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SR), ')', 0 },
1537 { 16, 16, 0xf0f0 }, 0x20c0,
1539 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O } }
1541 /* ld $dr,@($slo16,$sr) */
1545 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SLO16), ',', OP (SR), ')', 0 },
1546 { 32, 32, 0xf0f00000 }, 0xa0c00000,
1547 & fmt_30_ld_d_ops[0],
1548 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1550 /* ld $dr,@($sr,$slo16) */
1554 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SR), ',', OP (SLO16), ')', 0 },
1555 { 32, 32, 0xf0f00000 }, 0xa0c00000,
1557 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
1563 { MNEM, ' ', OP (DR), ',', '@', OP (SR), 0 },
1564 { 16, 16, 0xf0f0 }, 0x2080,
1565 & fmt_32_ldb_ops[0],
1566 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
1568 /* ldb $dr,@($sr) */
1572 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SR), ')', 0 },
1573 { 16, 16, 0xf0f0 }, 0x2080,
1575 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O } }
1577 /* ldb $dr,@($slo16,$sr) */
1581 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SLO16), ',', OP (SR), ')', 0 },
1582 { 32, 32, 0xf0f00000 }, 0xa0800000,
1583 & fmt_33_ldb_d_ops[0],
1584 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1586 /* ldb $dr,@($sr,$slo16) */
1590 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SR), ',', OP (SLO16), ')', 0 },
1591 { 32, 32, 0xf0f00000 }, 0xa0800000,
1593 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
1599 { MNEM, ' ', OP (DR), ',', '@', OP (SR), 0 },
1600 { 16, 16, 0xf0f0 }, 0x20a0,
1601 & fmt_34_ldh_ops[0],
1602 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
1604 /* ldh $dr,@($sr) */
1608 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SR), ')', 0 },
1609 { 16, 16, 0xf0f0 }, 0x20a0,
1611 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O } }
1613 /* ldh $dr,@($slo16,$sr) */
1617 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SLO16), ',', OP (SR), ')', 0 },
1618 { 32, 32, 0xf0f00000 }, 0xa0a00000,
1619 & fmt_35_ldh_d_ops[0],
1620 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1622 /* ldh $dr,@($sr,$slo16) */
1626 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SR), ',', OP (SLO16), ')', 0 },
1627 { 32, 32, 0xf0f00000 }, 0xa0a00000,
1629 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
1635 { MNEM, ' ', OP (DR), ',', '@', OP (SR), 0 },
1636 { 16, 16, 0xf0f0 }, 0x2090,
1637 & fmt_32_ldb_ops[0],
1638 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
1640 /* ldub $dr,@($sr) */
1644 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SR), ')', 0 },
1645 { 16, 16, 0xf0f0 }, 0x2090,
1647 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O } }
1649 /* ldub $dr,@($slo16,$sr) */
1653 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SLO16), ',', OP (SR), ')', 0 },
1654 { 32, 32, 0xf0f00000 }, 0xa0900000,
1655 & fmt_33_ldb_d_ops[0],
1656 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1658 /* ldub $dr,@($sr,$slo16) */
1662 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SR), ',', OP (SLO16), ')', 0 },
1663 { 32, 32, 0xf0f00000 }, 0xa0900000,
1665 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
1671 { MNEM, ' ', OP (DR), ',', '@', OP (SR), 0 },
1672 { 16, 16, 0xf0f0 }, 0x20b0,
1673 & fmt_34_ldh_ops[0],
1674 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
1676 /* lduh $dr,@($sr) */
1680 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SR), ')', 0 },
1681 { 16, 16, 0xf0f0 }, 0x20b0,
1683 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O } }
1685 /* lduh $dr,@($slo16,$sr) */
1689 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SLO16), ',', OP (SR), ')', 0 },
1690 { 32, 32, 0xf0f00000 }, 0xa0b00000,
1691 & fmt_35_ldh_d_ops[0],
1692 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1694 /* lduh $dr,@($sr,$slo16) */
1698 { MNEM, ' ', OP (DR), ',', '@', '(', OP (SR), ',', OP (SLO16), ')', 0 },
1699 { 32, 32, 0xf0f00000 }, 0xa0b00000,
1701 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
1707 { MNEM, ' ', OP (DR), ',', '@', OP (SR), '+', 0 },
1708 { 16, 16, 0xf0f0 }, 0x20e0,
1709 & fmt_36_ld_plus_ops[0],
1710 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
1712 /* ld24 $dr,$uimm24 */
1716 { MNEM, ' ', OP (DR), ',', OP (UIMM24), 0 },
1717 { 32, 32, 0xf0000000 }, 0xe0000000,
1718 & fmt_37_ld24_ops[0],
1719 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1721 /* ldi $dr,$simm8 */
1725 { MNEM, ' ', OP (DR), ',', OP (SIMM8), 0 },
1726 { 16, 16, 0xf000 }, 0x6000,
1727 & fmt_38_ldi8_ops[0],
1728 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
1730 /* ldi8 $dr,$simm8 */
1734 { MNEM, ' ', OP (DR), ',', OP (SIMM8), 0 },
1735 { 16, 16, 0xf000 }, 0x6000,
1736 & fmt_38_ldi8_ops[0],
1737 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_OS } }
1739 /* ldi $dr,$hash$slo16 */
1743 { MNEM, ' ', OP (DR), ',', OP (HASH), OP (SLO16), 0 },
1744 { 32, 32, 0xf0ff0000 }, 0x90f00000,
1745 & fmt_39_ldi16_ops[0],
1746 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
1748 /* ldi16 $dr,$hash$slo16 */
1752 { MNEM, ' ', OP (DR), ',', OP (HASH), OP (SLO16), 0 },
1753 { 32, 32, 0xf0ff0000 }, 0x90f00000,
1754 & fmt_39_ldi16_ops[0],
1755 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
1761 { MNEM, ' ', OP (DR), ',', '@', OP (SR), 0 },
1762 { 16, 16, 0xf0f0 }, 0x20d0,
1763 & fmt_40_lock_ops[0],
1764 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
1766 /* machi $src1,$src2 */
1770 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
1771 { 16, 16, 0xf0f0 }, 0x3040,
1772 & fmt_41_machi_ops[0],
1773 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1775 /* start-sanitize-m32rx */
1776 /* machi $src1,$src2,$acc */
1780 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 },
1781 { 16, 16, 0xf070 }, 0x3040,
1782 & fmt_42_machi_a_ops[0],
1783 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
1785 /* end-sanitize-m32rx */
1786 /* maclo $src1,$src2 */
1790 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
1791 { 16, 16, 0xf0f0 }, 0x3050,
1792 & fmt_41_machi_ops[0],
1793 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1795 /* start-sanitize-m32rx */
1796 /* maclo $src1,$src2,$acc */
1800 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 },
1801 { 16, 16, 0xf070 }, 0x3050,
1802 & fmt_42_machi_a_ops[0],
1803 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
1805 /* end-sanitize-m32rx */
1806 /* macwhi $src1,$src2 */
1810 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
1811 { 16, 16, 0xf0f0 }, 0x3060,
1812 & fmt_41_machi_ops[0],
1813 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1815 /* macwlo $src1,$src2 */
1819 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
1820 { 16, 16, 0xf0f0 }, 0x3070,
1821 & fmt_41_machi_ops[0],
1822 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1828 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
1829 { 16, 16, 0xf0f0 }, 0x1060,
1831 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1833 /* mulhi $src1,$src2 */
1837 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
1838 { 16, 16, 0xf0f0 }, 0x3000,
1839 & fmt_43_mulhi_ops[0],
1840 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1842 /* start-sanitize-m32rx */
1843 /* mulhi $src1,$src2,$acc */
1847 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 },
1848 { 16, 16, 0xf070 }, 0x3000,
1849 & fmt_44_mulhi_a_ops[0],
1850 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
1852 /* end-sanitize-m32rx */
1853 /* mullo $src1,$src2 */
1857 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
1858 { 16, 16, 0xf0f0 }, 0x3010,
1859 & fmt_43_mulhi_ops[0],
1860 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1862 /* start-sanitize-m32rx */
1863 /* mullo $src1,$src2,$acc */
1867 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), ',', OP (ACC), 0 },
1868 { 16, 16, 0xf070 }, 0x3010,
1869 & fmt_44_mulhi_a_ops[0],
1870 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
1872 /* end-sanitize-m32rx */
1873 /* mulwhi $src1,$src2 */
1877 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
1878 { 16, 16, 0xf0f0 }, 0x3020,
1879 & fmt_43_mulhi_ops[0],
1880 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1882 /* mulwlo $src1,$src2 */
1886 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
1887 { 16, 16, 0xf0f0 }, 0x3030,
1888 & fmt_43_mulhi_ops[0],
1889 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1895 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
1896 { 16, 16, 0xf0f0 }, 0x1080,
1898 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
1903 "mvfachi", "mvfachi",
1904 { MNEM, ' ', OP (DR), 0 },
1905 { 16, 16, 0xf0ff }, 0x50f0,
1906 & fmt_46_mvfachi_ops[0],
1907 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1909 /* start-sanitize-m32rx */
1910 /* mvfachi $dr,$accs */
1913 "mvfachi-a", "mvfachi",
1914 { MNEM, ' ', OP (DR), ',', OP (ACCS), 0 },
1915 { 16, 16, 0xf0f3 }, 0x50f0,
1916 & fmt_47_mvfachi_a_ops[0],
1917 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
1919 /* end-sanitize-m32rx */
1923 "mvfaclo", "mvfaclo",
1924 { MNEM, ' ', OP (DR), 0 },
1925 { 16, 16, 0xf0ff }, 0x50f1,
1926 & fmt_46_mvfachi_ops[0],
1927 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1929 /* start-sanitize-m32rx */
1930 /* mvfaclo $dr,$accs */
1933 "mvfaclo-a", "mvfaclo",
1934 { MNEM, ' ', OP (DR), ',', OP (ACCS), 0 },
1935 { 16, 16, 0xf0f3 }, 0x50f1,
1936 & fmt_47_mvfachi_a_ops[0],
1937 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
1939 /* end-sanitize-m32rx */
1943 "mvfacmi", "mvfacmi",
1944 { MNEM, ' ', OP (DR), 0 },
1945 { 16, 16, 0xf0ff }, 0x50f2,
1946 & fmt_46_mvfachi_ops[0],
1947 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1949 /* start-sanitize-m32rx */
1950 /* mvfacmi $dr,$accs */
1953 "mvfacmi-a", "mvfacmi",
1954 { MNEM, ' ', OP (DR), ',', OP (ACCS), 0 },
1955 { 16, 16, 0xf0f3 }, 0x50f2,
1956 & fmt_47_mvfachi_a_ops[0],
1957 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
1959 /* end-sanitize-m32rx */
1964 { MNEM, ' ', OP (DR), ',', OP (SCR), 0 },
1965 { 16, 16, 0xf0f0 }, 0x1090,
1966 & fmt_48_mvfc_ops[0],
1967 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
1972 "mvtachi", "mvtachi",
1973 { MNEM, ' ', OP (SRC1), 0 },
1974 { 16, 16, 0xf0ff }, 0x5070,
1975 & fmt_49_mvtachi_ops[0],
1976 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1978 /* start-sanitize-m32rx */
1979 /* mvtachi $src1,$accs */
1982 "mvtachi-a", "mvtachi",
1983 { MNEM, ' ', OP (SRC1), ',', OP (ACCS), 0 },
1984 { 16, 16, 0xf0f3 }, 0x5070,
1985 & fmt_50_mvtachi_a_ops[0],
1986 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
1988 /* end-sanitize-m32rx */
1992 "mvtaclo", "mvtaclo",
1993 { MNEM, ' ', OP (SRC1), 0 },
1994 { 16, 16, 0xf0ff }, 0x5071,
1995 & fmt_49_mvtachi_ops[0],
1996 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
1998 /* start-sanitize-m32rx */
1999 /* mvtaclo $src1,$accs */
2002 "mvtaclo-a", "mvtaclo",
2003 { MNEM, ' ', OP (SRC1), ',', OP (ACCS), 0 },
2004 { 16, 16, 0xf0f3 }, 0x5071,
2005 & fmt_50_mvtachi_a_ops[0],
2006 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
2008 /* end-sanitize-m32rx */
2013 { MNEM, ' ', OP (SR), ',', OP (DCR), 0 },
2014 { 16, 16, 0xf0f0 }, 0x10a0,
2015 & fmt_51_mvtc_ops[0],
2016 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2022 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
2023 { 16, 16, 0xf0f0 }, 0x30,
2025 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
2032 { 16, 16, 0xffff }, 0x7000,
2034 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
2040 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
2041 { 16, 16, 0xf0f0 }, 0xb0,
2043 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
2050 { 16, 16, 0xffff }, 0x5090,
2051 & fmt_53_rac_ops[0],
2052 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
2054 /* start-sanitize-m32rx */
2059 { MNEM, ' ', OP (ACCD), 0 },
2060 { 16, 16, 0xf3ff }, 0x5090,
2062 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
2064 /* end-sanitize-m32rx */
2065 /* start-sanitize-m32rx */
2066 /* rac $accd,$accs */
2070 { MNEM, ' ', OP (ACCD), ',', OP (ACCS), 0 },
2071 { 16, 16, 0xf3f3 }, 0x5090,
2073 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
2075 /* end-sanitize-m32rx */
2076 /* start-sanitize-m32rx */
2077 /* rac $accd,$accs,$imm1 */
2081 { MNEM, ' ', OP (ACCD), ',', OP (ACCS), ',', OP (IMM1), 0 },
2082 { 16, 16, 0xf3f2 }, 0x5090,
2083 & fmt_56_rac_dsi_ops[0],
2084 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
2086 /* end-sanitize-m32rx */
2092 { 16, 16, 0xffff }, 0x5080,
2093 & fmt_53_rac_ops[0],
2094 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_S } }
2096 /* start-sanitize-m32rx */
2101 { MNEM, ' ', OP (ACCD), 0 },
2102 { 16, 16, 0xf3ff }, 0x5080,
2104 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
2106 /* end-sanitize-m32rx */
2107 /* start-sanitize-m32rx */
2108 /* rach $accd,$accs */
2112 { MNEM, ' ', OP (ACCD), ',', OP (ACCS), 0 },
2113 { 16, 16, 0xf3f3 }, 0x5080,
2115 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
2117 /* end-sanitize-m32rx */
2118 /* start-sanitize-m32rx */
2119 /* rach $accd,$accs,$imm1 */
2123 { MNEM, ' ', OP (ACCD), ',', OP (ACCS), ',', OP (IMM1), 0 },
2124 { 16, 16, 0xf3f2 }, 0x5080,
2125 & fmt_56_rac_dsi_ops[0],
2126 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
2128 /* end-sanitize-m32rx */
2134 { 16, 16, 0xffff }, 0x10d6,
2135 & fmt_57_rte_ops[0],
2136 { CGEN_INSN_NBOOL_ATTRS, 0|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O } }
2138 /* seth $dr,$hash$hi16 */
2142 { MNEM, ' ', OP (DR), ',', OP (HASH), OP (HI16), 0 },
2143 { 32, 32, 0xf0ff0000 }, 0xd0c00000,
2144 & fmt_58_seth_ops[0],
2145 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
2151 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
2152 { 16, 16, 0xf0f0 }, 0x1040,
2154 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2156 /* sll3 $dr,$sr,$simm16 */
2160 { MNEM, ' ', OP (DR), ',', OP (SR), ',', OP (SIMM16), 0 },
2161 { 32, 32, 0xf0f00000 }, 0x90c00000,
2162 & fmt_59_sll3_ops[0],
2163 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
2165 /* slli $dr,$uimm5 */
2169 { MNEM, ' ', OP (DR), ',', OP (UIMM5), 0 },
2170 { 16, 16, 0xf0e0 }, 0x5040,
2171 & fmt_60_slli_ops[0],
2172 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2178 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
2179 { 16, 16, 0xf0f0 }, 0x1020,
2181 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2183 /* sra3 $dr,$sr,$simm16 */
2187 { MNEM, ' ', OP (DR), ',', OP (SR), ',', OP (SIMM16), 0 },
2188 { 32, 32, 0xf0f00000 }, 0x90a00000,
2189 & fmt_59_sll3_ops[0],
2190 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
2192 /* srai $dr,$uimm5 */
2196 { MNEM, ' ', OP (DR), ',', OP (UIMM5), 0 },
2197 { 16, 16, 0xf0e0 }, 0x5020,
2198 & fmt_60_slli_ops[0],
2199 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2205 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
2206 { 16, 16, 0xf0f0 }, 0x1000,
2208 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2210 /* srl3 $dr,$sr,$simm16 */
2214 { MNEM, ' ', OP (DR), ',', OP (SR), ',', OP (SIMM16), 0 },
2215 { 32, 32, 0xf0f00000 }, 0x90800000,
2216 & fmt_59_sll3_ops[0],
2217 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
2219 /* srli $dr,$uimm5 */
2223 { MNEM, ' ', OP (DR), ',', OP (UIMM5), 0 },
2224 { 16, 16, 0xf0e0 }, 0x5000,
2225 & fmt_60_slli_ops[0],
2226 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2228 /* st $src1,@$src2 */
2232 { MNEM, ' ', OP (SRC1), ',', '@', OP (SRC2), 0 },
2233 { 16, 16, 0xf0f0 }, 0x2040,
2235 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2237 /* st $src1,@($src2) */
2241 { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SRC2), ')', 0 },
2242 { 16, 16, 0xf0f0 }, 0x2040,
2244 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O } }
2246 /* st $src1,@($slo16,$src2) */
2250 { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SLO16), ',', OP (SRC2), ')', 0 },
2251 { 32, 32, 0xf0f00000 }, 0xa0400000,
2252 & fmt_63_st_d_ops[0],
2253 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
2255 /* st $src1,@($src2,$slo16) */
2259 { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SRC2), ',', OP (SLO16), ')', 0 },
2260 { 32, 32, 0xf0f00000 }, 0xa0400000,
2262 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
2264 /* stb $src1,@$src2 */
2268 { MNEM, ' ', OP (SRC1), ',', '@', OP (SRC2), 0 },
2269 { 16, 16, 0xf0f0 }, 0x2000,
2270 & fmt_65_stb_ops[0],
2271 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2273 /* stb $src1,@($src2) */
2277 { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SRC2), ')', 0 },
2278 { 16, 16, 0xf0f0 }, 0x2000,
2280 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O } }
2282 /* stb $src1,@($slo16,$src2) */
2286 { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SLO16), ',', OP (SRC2), ')', 0 },
2287 { 32, 32, 0xf0f00000 }, 0xa0000000,
2288 & fmt_66_stb_d_ops[0],
2289 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
2291 /* stb $src1,@($src2,$slo16) */
2295 { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SRC2), ',', OP (SLO16), ')', 0 },
2296 { 32, 32, 0xf0f00000 }, 0xa0000000,
2298 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
2300 /* sth $src1,@$src2 */
2304 { MNEM, ' ', OP (SRC1), ',', '@', OP (SRC2), 0 },
2305 { 16, 16, 0xf0f0 }, 0x2020,
2306 & fmt_67_sth_ops[0],
2307 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2309 /* sth $src1,@($src2) */
2313 { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SRC2), ')', 0 },
2314 { 16, 16, 0xf0f0 }, 0x2020,
2316 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_O } }
2318 /* sth $src1,@($slo16,$src2) */
2322 { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SLO16), ',', OP (SRC2), ')', 0 },
2323 { 32, 32, 0xf0f00000 }, 0xa0200000,
2324 & fmt_68_sth_d_ops[0],
2325 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_NONE } }
2327 /* sth $src1,@($src2,$slo16) */
2331 { MNEM, ' ', OP (SRC1), ',', '@', '(', OP (SRC2), ',', OP (SLO16), ')', 0 },
2332 { 32, 32, 0xf0f00000 }, 0xa0200000,
2334 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
2336 /* st $src1,@+$src2 */
2340 { MNEM, ' ', OP (SRC1), ',', '@', '+', OP (SRC2), 0 },
2341 { 16, 16, 0xf0f0 }, 0x2060,
2342 & fmt_69_st_plus_ops[0],
2343 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2345 /* st $src1,@-$src2 */
2349 { MNEM, ' ', OP (SRC1), ',', '@', '-', OP (SRC2), 0 },
2350 { 16, 16, 0xf0f0 }, 0x2070,
2351 & fmt_69_st_plus_ops[0],
2352 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2358 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
2359 { 16, 16, 0xf0f0 }, 0x20,
2361 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
2367 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
2368 { 16, 16, 0xf0f0 }, 0x0,
2369 & fmt_5_addv_ops[0],
2370 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
2376 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
2377 { 16, 16, 0xf0f0 }, 0x10,
2378 & fmt_7_addx_ops[0],
2379 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_OS } }
2385 { MNEM, ' ', OP (UIMM4), 0 },
2386 { 16, 16, 0xfff0 }, 0x10f0,
2387 & fmt_70_trap_ops[0],
2388 { CGEN_INSN_NBOOL_ATTRS, 0|A(FILL_SLOT)|A(UNCOND_CTI), { (1<<MACH_M32R), PIPE_O } }
2390 /* unlock $src1,@$src2 */
2394 { MNEM, ' ', OP (SRC1), ',', '@', OP (SRC2), 0 },
2395 { 16, 16, 0xf0f0 }, 0x2050,
2396 & fmt_71_unlock_ops[0],
2397 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32R), PIPE_O } }
2403 { MNEM, ' ', OP (SRC1), 0 },
2404 { 16, 16, 0xf0ff }, 0x207f,
2406 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
2412 { MNEM, ' ', OP (DR), 0 },
2413 { 16, 16, 0xf0ff }, 0x20ef,
2415 { CGEN_INSN_NBOOL_ATTRS, 0|A(ALIAS), { (1<<MACH_M32R), PIPE_NONE } }
2417 /* start-sanitize-m32rx */
2422 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
2423 { 32, 32, 0xf0f0ffff }, 0x80600300,
2424 & fmt_74_satb_ops[0],
2425 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_NONE } }
2427 /* end-sanitize-m32rx */
2428 /* start-sanitize-m32rx */
2433 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
2434 { 32, 32, 0xf0f0ffff }, 0x80600200,
2435 & fmt_74_satb_ops[0],
2436 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_NONE } }
2438 /* end-sanitize-m32rx */
2439 /* start-sanitize-m32rx */
2444 { MNEM, ' ', OP (DR), ',', OP (SR), 0 },
2445 { 32, 32, 0xf0f0ffff }, 0x80600000,
2446 & fmt_75_sat_ops[0],
2447 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_NONE } }
2449 /* end-sanitize-m32rx */
2450 /* start-sanitize-m32rx */
2455 { MNEM, ' ', OP (SRC2), 0 },
2456 { 16, 16, 0xfff0 }, 0x370,
2457 & fmt_23_cmpz_ops[0],
2458 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_OS } }
2460 /* end-sanitize-m32rx */
2461 /* start-sanitize-m32rx */
2467 { 16, 16, 0xffff }, 0x50e4,
2468 & fmt_76_sadd_ops[0],
2469 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
2471 /* end-sanitize-m32rx */
2472 /* start-sanitize-m32rx */
2473 /* macwu1 $src1,$src2 */
2477 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
2478 { 16, 16, 0xf0f0 }, 0x50b0,
2479 & fmt_77_macwu1_ops[0],
2480 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
2482 /* end-sanitize-m32rx */
2483 /* start-sanitize-m32rx */
2484 /* msblo $src1,$src2 */
2488 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
2489 { 16, 16, 0xf0f0 }, 0x50d0,
2490 & fmt_41_machi_ops[0],
2491 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
2493 /* end-sanitize-m32rx */
2494 /* start-sanitize-m32rx */
2495 /* mulwu1 $src1,$src2 */
2499 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
2500 { 16, 16, 0xf0f0 }, 0x50a0,
2501 & fmt_78_mulwu1_ops[0],
2502 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
2504 /* end-sanitize-m32rx */
2505 /* start-sanitize-m32rx */
2506 /* maclh1 $src1,$src2 */
2510 { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 },
2511 { 16, 16, 0xf0f0 }, 0x50c0,
2512 & fmt_77_macwu1_ops[0],
2513 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_S } }
2515 /* end-sanitize-m32rx */
2516 /* start-sanitize-m32rx */
2522 { 16, 16, 0xffff }, 0x7401,
2524 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_O } }
2526 /* end-sanitize-m32rx */
2527 /* start-sanitize-m32rx */
2533 { 16, 16, 0xffff }, 0x7501,
2535 { CGEN_INSN_NBOOL_ATTRS, 0, { (1<<MACH_M32RX), PIPE_O } }
2537 /* end-sanitize-m32rx */
2544 CGEN_INSN_TABLE m32r_cgen_insn_table =
2546 & m32r_cgen_insn_table_entries[0],
2550 m32r_cgen_asm_hash_insn, CGEN_ASM_HASH_SIZE,
2551 m32r_cgen_dis_hash_insn, CGEN_DIS_HASH_SIZE
2554 /* The hash functions are recorded here to help keep assembler code out of
2555 the disassembler and vice versa. */
2558 m32r_cgen_asm_hash_insn (insn)
2561 return CGEN_ASM_HASH (insn);
2565 m32r_cgen_dis_hash_insn (buf, value)
2567 unsigned long value;
2569 return CGEN_DIS_HASH (buf, value);
2572 CGEN_OPCODE_DATA m32r_cgen_opcode_data =
2574 & m32r_cgen_hw_entries[0],
2575 & m32r_cgen_insn_table,
2579 m32r_cgen_init_tables (mach)
2584 /* Main entry point for stuffing values in cgen_fields. */
2587 m32r_cgen_set_operand (opindex, valuep, fields)
2589 const long * valuep;
2590 CGEN_FIELDS * fields;
2594 case M32R_OPERAND_SR :
2595 fields->f_r2 = * valuep;
2597 case M32R_OPERAND_DR :
2598 fields->f_r1 = * valuep;
2600 case M32R_OPERAND_SRC1 :
2601 fields->f_r1 = * valuep;
2603 case M32R_OPERAND_SRC2 :
2604 fields->f_r2 = * valuep;
2606 case M32R_OPERAND_SCR :
2607 fields->f_r2 = * valuep;
2609 case M32R_OPERAND_DCR :
2610 fields->f_r1 = * valuep;
2612 case M32R_OPERAND_SIMM8 :
2613 fields->f_simm8 = * valuep;
2615 case M32R_OPERAND_SIMM16 :
2616 fields->f_simm16 = * valuep;
2618 case M32R_OPERAND_UIMM4 :
2619 fields->f_uimm4 = * valuep;
2621 case M32R_OPERAND_UIMM5 :
2622 fields->f_uimm5 = * valuep;
2624 case M32R_OPERAND_UIMM16 :
2625 fields->f_uimm16 = * valuep;
2627 /* start-sanitize-m32rx */
2628 case M32R_OPERAND_IMM1 :
2629 fields->f_imm1 = * valuep;
2631 /* end-sanitize-m32rx */
2632 /* start-sanitize-m32rx */
2633 case M32R_OPERAND_ACCD :
2634 fields->f_accd = * valuep;
2636 /* end-sanitize-m32rx */
2637 /* start-sanitize-m32rx */
2638 case M32R_OPERAND_ACCS :
2639 fields->f_accs = * valuep;
2641 /* end-sanitize-m32rx */
2642 /* start-sanitize-m32rx */
2643 case M32R_OPERAND_ACC :
2644 fields->f_acc = * valuep;
2646 /* end-sanitize-m32rx */
2647 case M32R_OPERAND_HASH :
2648 fields->f_nil = * valuep;
2650 case M32R_OPERAND_HI16 :
2651 fields->f_hi16 = * valuep;
2653 case M32R_OPERAND_SLO16 :
2654 fields->f_simm16 = * valuep;
2656 case M32R_OPERAND_ULO16 :
2657 fields->f_uimm16 = * valuep;
2659 case M32R_OPERAND_UIMM24 :
2660 fields->f_uimm24 = * valuep;
2662 case M32R_OPERAND_DISP8 :
2663 fields->f_disp8 = * valuep;
2665 case M32R_OPERAND_DISP16 :
2666 fields->f_disp16 = * valuep;
2668 case M32R_OPERAND_DISP24 :
2669 fields->f_disp24 = * valuep;
2673 fprintf (stderr, "Unrecognized field %d while setting operand.\n",
2679 /* Main entry point for getting values from cgen_fields. */
2682 m32r_cgen_get_operand (opindex, fields)
2684 const CGEN_FIELDS * fields;
2690 case M32R_OPERAND_SR :
2691 value = fields->f_r2;
2693 case M32R_OPERAND_DR :
2694 value = fields->f_r1;
2696 case M32R_OPERAND_SRC1 :
2697 value = fields->f_r1;
2699 case M32R_OPERAND_SRC2 :
2700 value = fields->f_r2;
2702 case M32R_OPERAND_SCR :
2703 value = fields->f_r2;
2705 case M32R_OPERAND_DCR :
2706 value = fields->f_r1;
2708 case M32R_OPERAND_SIMM8 :
2709 value = fields->f_simm8;
2711 case M32R_OPERAND_SIMM16 :
2712 value = fields->f_simm16;
2714 case M32R_OPERAND_UIMM4 :
2715 value = fields->f_uimm4;
2717 case M32R_OPERAND_UIMM5 :
2718 value = fields->f_uimm5;
2720 case M32R_OPERAND_UIMM16 :
2721 value = fields->f_uimm16;
2723 /* start-sanitize-m32rx */
2724 case M32R_OPERAND_IMM1 :
2725 value = fields->f_imm1;
2727 /* end-sanitize-m32rx */
2728 /* start-sanitize-m32rx */
2729 case M32R_OPERAND_ACCD :
2730 value = fields->f_accd;
2732 /* end-sanitize-m32rx */
2733 /* start-sanitize-m32rx */
2734 case M32R_OPERAND_ACCS :
2735 value = fields->f_accs;
2737 /* end-sanitize-m32rx */
2738 /* start-sanitize-m32rx */
2739 case M32R_OPERAND_ACC :
2740 value = fields->f_acc;
2742 /* end-sanitize-m32rx */
2743 case M32R_OPERAND_HASH :
2744 value = fields->f_nil;
2746 case M32R_OPERAND_HI16 :
2747 value = fields->f_hi16;
2749 case M32R_OPERAND_SLO16 :
2750 value = fields->f_simm16;
2752 case M32R_OPERAND_ULO16 :
2753 value = fields->f_uimm16;
2755 case M32R_OPERAND_UIMM24 :
2756 value = fields->f_uimm24;
2758 case M32R_OPERAND_DISP8 :
2759 value = fields->f_disp8;
2761 case M32R_OPERAND_DISP16 :
2762 value = fields->f_disp16;
2764 case M32R_OPERAND_DISP24 :
2765 value = fields->f_disp24;
2769 fprintf (stderr, "Unrecognized field %d while getting operand.\n",