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 The result a pointer to the insn table entry, or NULL if the instruction
40 m32r_cgen_lookup_insn (insn
, insn_value
, length
, fields
)
41 const CGEN_INSN
*insn
;
42 cgen_insn_t insn_value
;
50 const CGEN_INSN_LIST
*insn_list
;
59 if (cgen_current_endian
== CGEN_ENDIAN_BIG
)
60 bfd_putb16 (insn_value
, buf
);
62 bfd_putl16 (insn_value
, buf
);
65 if (cgen_current_endian
== CGEN_ENDIAN_BIG
)
66 bfd_putb32 (insn_value
, buf
);
68 bfd_putl32 (insn_value
, buf
);
74 abort (); /* FIXME: unfinished */
77 /* The instructions are stored in hash lists.
78 Pick the first one and keep trying until we find the right one. */
80 insn_list
= CGEN_DIS_LOOKUP_INSN (buf
, insn_value
);
81 while (insn_list
!= NULL
)
83 insn
= insn_list
->insn
;
85 /* Basic bit mask must be correct. */
86 /* ??? May wish to allow target to defer this check until the extract
88 if ((insn_value
& CGEN_INSN_MASK (insn
)) == CGEN_INSN_VALUE (insn
))
90 length
= (*CGEN_EXTRACT_FN (insn
)) (insn
, NULL
, insn_value
, fields
);
95 insn_list
= CGEN_DIS_NEXT_INSN (insn_list
);
100 length
= (*CGEN_EXTRACT_FN (insn
)) (insn
, NULL
, insn_value
, fields
);
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. */
117 m32r_cgen_get_insn_operands (insn
, insn_value
, length
, indices
)
118 const CGEN_INSN
*insn
;
119 cgen_insn_t insn_value
;
124 const CGEN_OPERAND_INSTANCE
*opinst
;
127 insn
= m32r_cgen_lookup_insn (insn
, insn_value
, length
, &fields
);
131 for (i
= 0, opinst
= CGEN_INSN_OPERANDS (insn
);
132 CGEN_OPERAND_INSTANCE_TYPE (opinst
) != CGEN_OPERAND_INSTANCE_END
;
135 const CGEN_OPERAND
*op
= CGEN_OPERAND_INSTANCE_OPERAND (opinst
);
137 indices
[i
] = CGEN_OPERAND_INSTANCE_INDEX (opinst
);
139 indices
[i
] = m32r_cgen_get_operand (CGEN_OPERAND_INDEX (op
), &fields
);
146 static const CGEN_ATTR_ENTRY MACH_attr
[] =
148 { "m32r", MACH_M32R
},
149 /* start-sanitize-m32rx */
150 { "m32rx", MACH_M32RX
},
151 /* end-sanitize-m32rx */
156 static const CGEN_ATTR_ENTRY WRITE_LR_attr
[] =
158 { "NO", WRITE_LR_NO
},
159 { "YES", WRITE_LR_YES
},
163 static const CGEN_ATTR_ENTRY WRITE_SRC_attr
[] =
165 { "NO", WRITE_SRC_NO
},
166 { "YES", WRITE_SRC_YES
},
170 /* start-sanitize-m32rx */
171 static const CGEN_ATTR_ENTRY PIPE_attr
[] =
173 { "NONE", PIPE_NONE
},
180 /* end-sanitize-m32rx */
181 const CGEN_ATTR_TABLE m32r_cgen_operand_attr_table
[] =
183 { "ABS-ADDR", NULL
},
185 { "NEGATIVE", NULL
},
187 { "PCREL-ADDR", NULL
},
190 { "SIGN-OPT", NULL
},
191 { "UNSIGNED", NULL
},
195 const CGEN_ATTR_TABLE m32r_cgen_insn_attr_table
[] =
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] },
204 { "COND-CTI", NULL
},
205 { "FILL-SLOT", NULL
},
206 { "PARALLEL", NULL
},
208 { "RELAXABLE", NULL
},
209 { "UNCOND-CTI", NULL
},
213 CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_gr_entries
[] =
236 CGEN_KEYWORD m32r_cgen_opval_h_gr
=
238 & m32r_cgen_opval_h_gr_entries
[0],
242 CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_cr_entries
[] =
258 CGEN_KEYWORD m32r_cgen_opval_h_cr
=
260 & m32r_cgen_opval_h_cr_entries
[0],
264 /* start-sanitize-m32rx */
265 CGEN_KEYWORD_ENTRY m32r_cgen_opval_h_accums_entries
[] =
271 CGEN_KEYWORD m32r_cgen_opval_h_accums
=
273 & m32r_cgen_opval_h_accums_entries
[0],
277 /* end-sanitize-m32rx */
279 /* The hardware table. */
281 #define HW_ENT(n) m32r_cgen_hw_entries[n]
282 static const CGEN_HW_ENTRY m32r_cgen_hw_entries
[] =
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 },
312 /* The operand table. */
314 #define OP_ENT(op) m32r_cgen_operand_table[CONCAT2 (M32R_OPERAND_,op)]
315 const CGEN_OPERAND m32r_cgen_operand_table
[MAX_OPERANDS
] =
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,
341 /* simm16: 16 bit signed immediate */
342 { "simm16", & HW_ENT (HW_H_SINT
), 16, 16,
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,
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 */
407 /* Operand references. */
409 #define INPUT CGEN_OPERAND_INSTANCE_INPUT
410 #define OUTPUT CGEN_OPERAND_INSTANCE_OUTPUT
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
519 static const CGEN_OPERAND_INSTANCE fmt_17_bra8_ops
[] = {
520 { INPUT
, & HW_ENT (HW_H_IADDR
), CGEN_MODE_VM
, & OP_ENT (DISP8
), 0 },
524 static const CGEN_OPERAND_INSTANCE fmt_18_bra24_ops
[] = {
525 { INPUT
, & HW_ENT (HW_H_IADDR
), CGEN_MODE_VM
, & OP_ENT (DISP24
), 0 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
576 static const CGEN_OPERAND_INSTANCE fmt_26_jmp_ops
[] = {
577 { INPUT
, & HW_ENT (HW_H_GR
), CGEN_MODE_SI
, & OP_ENT (SR
), 0 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
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 },
769 static const CGEN_OPERAND_INSTANCE fmt_59_trap_ops
[] = {
770 { INPUT
, & HW_ENT (HW_H_UINT
), CGEN_MODE_USI
, & OP_ENT (UIMM4
), 0 },
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 },
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 },
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 },
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 },
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 },
811 #define OP 1 /* syntax value for mnemonic */
813 static const CGEN_SYNTAX syntax_table
[] =
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 },
838 /* 11 */ { OP
, ' ', 148, 0 },
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 },
856 /* 20 */ { OP
, ' ', 132, 0 },
858 /* 21 */ { OP
, ' ', 129, 0 },
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 },
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 },
878 /* 31 */ { OP
, ' ', 130, 0 },
880 /* 32 */ { OP
, ' ', 130, ',', 142, 0 },
882 /* 33 */ { OP
, ' ', 130, ',', 133, 0 },
884 /* 34 */ { OP
, ' ', 131, 0 },
885 /* <op> $src1,$accs */
886 /* 35 */ { OP
, ' ', 131, ',', 142, 0 },
888 /* 36 */ { OP
, ' ', 129, ',', 134, 0 },
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 },
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 },
918 /* 51 */ { OP
, ' ', '#', 137, 0 },
920 /* 52 */ { OP
, ' ', 137, 0 },
922 /* 53 */ { OP
, ' ', 130, ',', 132, 0 },
927 static const CGEN_FORMAT format_table
[] =
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 },
1065 #define A(a) (1 << CGEN_CAT3 (CGEN_INSN,_,a))
1066 #define SYN(n) (& syntax_table[n])
1067 #define FMT(n) (& format_table[n])
1069 /* The instruction table. */
1071 const CGEN_INSN m32r_cgen_insn_table_entries
[MAX_INSNS
] =
1073 /* null first entry, end of all hash chains */
1078 "add", "add", SYN (0), FMT (0), 0xa0,
1080 { 4, 0|A(PARALLEL
), { (1<<MACH_M32R
), PIPE_OS
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1082 /* add3 $dr,$sr,#$slo16 */
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
} }
1089 /* add3 $dr,$sr,$slo16 */
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
} }
1099 "and", "and", SYN (0), FMT (0), 0xc0,
1101 { 4, 0|A(PARALLEL
), { (1<<MACH_M32R
), PIPE_OS
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1103 /* and3 $dr,$sr,#$uimm16 */
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
} }
1110 /* and3 $dr,$sr,$uimm16 */
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
} }
1120 "or", "or", SYN (0), FMT (0), 0xe0,
1122 { 4, 0|A(PARALLEL
), { (1<<MACH_M32R
), PIPE_OS
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1124 /* or3 $dr,$sr,#$ulo16 */
1127 "or3", "or3", SYN (5), FMT (3), 0x80e00000,
1129 { 4, 0, { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1131 /* or3 $dr,$sr,$ulo16 */
1134 "or3.a", "or3", SYN (6), FMT (3), 0x80e00000,
1136 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1141 "xor", "xor", SYN (0), FMT (0), 0xd0,
1143 { 4, 0|A(PARALLEL
), { (1<<MACH_M32R
), PIPE_OS
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1145 /* xor3 $dr,$sr,#$uimm16 */
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
} }
1152 /* xor3 $dr,$sr,$uimm16 */
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
} }
1159 /* addi $dr,#$simm8 */
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
} }
1166 /* addi $dr,$simm8 */
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
} }
1176 "addv", "addv", SYN (0), FMT (0), 0x80,
1178 { 4, 0, { (1<<MACH_M32R
), PIPE_OS
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1180 /* addv3 $dr,$sr,#$simm16 */
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
} }
1187 /* addv3 $dr,$sr,$simm16 */
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
} }
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
} }
1204 "bc8", "bc", SYN (11), FMT (7), 0x7c00,
1206 { 4, 0|A(RELAXABLE
)|A(COND_CTI
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1211 "bc8.s", "bc.s", SYN (11), FMT (8), 0x7c00,
1213 { 4, 0|A(ALIAS
)|A(COND_CTI
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
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
} }
1225 "bc24.l", "bc.l", SYN (12), FMT (10), 0xfc000000,
1227 { 4, 0|A(ALIAS
)|A(COND_CTI
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1229 /* beq $src1,$src2,$disp16 */
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
} }
1236 /* beqz $src2,$disp16 */
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
} }
1243 /* bgez $src2,$disp16 */
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
} }
1250 /* bgtz $src2,$disp16 */
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
} }
1257 /* blez $src2,$disp16 */
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
} }
1264 /* bltz $src2,$disp16 */
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
} }
1271 /* bnez $src2,$disp16 */
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
} }
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
} }
1288 "bl8.s", "bl.s", SYN (11), FMT (8), 0x7e00,
1290 { 4, 0|A(FILL_SLOT
)|A(ALIAS
)|A(UNCOND_CTI
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_YES
, WRITE_SRC_NO
} }
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
} }
1302 "bl24.l", "bl.l", SYN (12), FMT (10), 0xfe000000,
1304 { 4, 0|A(ALIAS
)|A(UNCOND_CTI
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_YES
, WRITE_SRC_NO
} }
1306 /* start-sanitize-m32rx */
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
} }
1314 /* end-sanitize-m32rx */
1315 /* start-sanitize-m32rx */
1319 "bcl8.s", "bcl.s", SYN (11), FMT (8), 0x7800,
1321 { 4, 0|A(ALIAS
)|A(COND_CTI
), { (1<<MACH_M32RX
), PIPE_O
, WRITE_LR_YES
, WRITE_SRC_NO
} }
1323 /* end-sanitize-m32rx */
1324 /* start-sanitize-m32rx */
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
} }
1332 /* end-sanitize-m32rx */
1333 /* start-sanitize-m32rx */
1337 "bcl24.l", "bcl.l", SYN (12), FMT (10), 0xf8000000,
1339 { 4, 0|A(ALIAS
)|A(COND_CTI
), { (1<<MACH_M32RX
), PIPE_NONE
, WRITE_LR_YES
, WRITE_SRC_NO
} }
1341 /* end-sanitize-m32rx */
1345 "bnc8", "bnc", SYN (11), FMT (7), 0x7d00,
1347 { 4, 0|A(RELAXABLE
)|A(COND_CTI
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1352 "bnc8.s", "bnc.s", SYN (11), FMT (8), 0x7d00,
1354 { 4, 0|A(ALIAS
)|A(COND_CTI
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
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
} }
1366 "bnc24.l", "bnc.l", SYN (12), FMT (10), 0xfd000000,
1368 { 4, 0|A(ALIAS
)|A(COND_CTI
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1370 /* bne $src1,$src2,$disp16 */
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
} }
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
} }
1387 "bra8.s", "bra.s", SYN (11), FMT (8), 0x7f00,
1389 { 4, 0|A(ALIAS
)|A(UNCOND_CTI
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
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
} }
1401 "bra24.l", "bra.l", SYN (12), FMT (10), 0xff000000,
1403 { 4, 0|A(ALIAS
)|A(UNCOND_CTI
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1405 /* start-sanitize-m32rx */
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
} }
1413 /* end-sanitize-m32rx */
1414 /* start-sanitize-m32rx */
1418 "bncl8.s", "bncl.s", SYN (11), FMT (8), 0x7900,
1420 { 4, 0|A(ALIAS
)|A(COND_CTI
), { (1<<MACH_M32RX
), PIPE_O
, WRITE_LR_YES
, WRITE_SRC_NO
} }
1422 /* end-sanitize-m32rx */
1423 /* start-sanitize-m32rx */
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
} }
1431 /* end-sanitize-m32rx */
1432 /* start-sanitize-m32rx */
1433 /* bncl.l $disp24 */
1436 "bncl24.l", "bncl.l", SYN (12), FMT (10), 0xf9000000,
1438 { 4, 0|A(ALIAS
)|A(COND_CTI
), { (1<<MACH_M32RX
), PIPE_NONE
, WRITE_LR_YES
, WRITE_SRC_NO
} }
1440 /* end-sanitize-m32rx */
1441 /* cmp $src1,$src2 */
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
} }
1448 /* cmpi $src2,#$simm16 */
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
} }
1455 /* cmpi $src2,$simm16 */
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
} }
1462 /* cmpu $src1,$src2 */
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
} }
1469 /* cmpui $src2,#$uimm16 */
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
} }
1476 /* cmpui $src2,$uimm16 */
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
} }
1483 /* start-sanitize-m32rx */
1484 /* cmpeq $src1,$src2 */
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
} }
1491 /* end-sanitize-m32rx */
1492 /* start-sanitize-m32rx */
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
} }
1500 /* end-sanitize-m32rx */
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
} }
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
} }
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
} }
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
} }
1529 /* start-sanitize-m32rx */
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
} }
1537 /* end-sanitize-m32rx */
1538 /* start-sanitize-m32rx */
1542 "jc", "jc", SYN (21), FMT (24), 0x1cc0,
1544 { 4, 0|A(COND_CTI
), { (1<<MACH_M32RX
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1546 /* end-sanitize-m32rx */
1547 /* start-sanitize-m32rx */
1551 "jnc", "jnc", SYN (21), FMT (24), 0x1dc0,
1553 { 4, 0|A(COND_CTI
), { (1<<MACH_M32RX
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1555 /* end-sanitize-m32rx */
1559 "jl", "jl", SYN (21), FMT (25), 0x1ec0,
1561 { 4, 0|A(FILL_SLOT
)|A(UNCOND_CTI
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_YES
, WRITE_SRC_NO
} }
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
} }
1573 "ld", "ld", SYN (22), FMT (27), 0x20c0,
1575 { 4, 0, { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1580 "ld-2", "ld", SYN (23), FMT (28), 0x20c0,
1582 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1584 /* ld $dr,@($slo16,$sr) */
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
} }
1591 /* ld $dr,@($sr,$slo16) */
1594 "ld-d2", "ld", SYN (25), FMT (30), 0xa0c00000,
1596 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
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
} }
1605 /* ldb $dr,@($sr) */
1608 "ldb-2", "ldb", SYN (23), FMT (28), 0x2080,
1610 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1612 /* ldb $dr,@($slo16,$sr) */
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
} }
1619 /* ldb $dr,@($sr,$slo16) */
1622 "ldb-d2", "ldb", SYN (25), FMT (30), 0xa0800000,
1624 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
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
} }
1633 /* ldh $dr,@($sr) */
1636 "ldh-2", "ldh", SYN (23), FMT (28), 0x20a0,
1638 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1640 /* ldh $dr,@($slo16,$sr) */
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
} }
1647 /* ldh $dr,@($sr,$slo16) */
1650 "ldh-d2", "ldh", SYN (25), FMT (30), 0xa0a00000,
1652 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
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
} }
1661 /* ldub $dr,@($sr) */
1664 "ldub-2", "ldub", SYN (23), FMT (28), 0x2090,
1666 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1668 /* ldub $dr,@($slo16,$sr) */
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
} }
1675 /* ldub $dr,@($sr,$slo16) */
1678 "ldub-d2", "ldub", SYN (25), FMT (30), 0xa0900000,
1680 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
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
} }
1689 /* lduh $dr,@($sr) */
1692 "lduh-2", "lduh", SYN (23), FMT (28), 0x20b0,
1694 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1696 /* lduh $dr,@($slo16,$sr) */
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
} }
1703 /* lduh $dr,@($sr,$slo16) */
1706 "lduh-d2", "lduh", SYN (25), FMT (30), 0xa0b00000,
1708 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1713 "ld-plus", "ld", SYN (26), FMT (27), 0x20e0,
1715 { 4, 0, { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_YES
} }
1717 /* ld24 $dr,#$uimm24 */
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
} }
1724 /* ld24 $dr,$uimm24 */
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
} }
1731 /* ldi $dr,#$simm8 */
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
} }
1738 /* ldi $dr,$simm8 */
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
} }
1745 /* ldi8 $dr,#$simm8 */
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
} }
1752 /* ldi8 $dr,$simm8 */
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
} }
1759 /* ldi $dr,$slo16 */
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
} }
1766 /* ldi16 $dr,$slo16 */
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
} }
1776 "lock", "lock", SYN (22), FMT (0), 0x20d0,
1778 { 4, 0, { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1780 /* machi $src1,$src2 */
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
} }
1787 /* start-sanitize-m32rx */
1788 /* machi $src1,$src2,$acc */
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
} }
1795 /* end-sanitize-m32rx */
1796 /* maclo $src1,$src2 */
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
} }
1803 /* start-sanitize-m32rx */
1804 /* maclo $src1,$src2,$acc */
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
} }
1811 /* end-sanitize-m32rx */
1812 /* macwhi $src1,$src2 */
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
} }
1819 /* macwlo $src1,$src2 */
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
} }
1829 "mul", "mul", SYN (0), FMT (0), 0x1060,
1831 { 4, 0, { (1<<MACH_M32R
), PIPE_S
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1833 /* mulhi $src1,$src2 */
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
} }
1840 /* start-sanitize-m32rx */
1841 /* mulhi $src1,$src2,$acc */
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
} }
1848 /* end-sanitize-m32rx */
1849 /* mullo $src1,$src2 */
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
} }
1856 /* start-sanitize-m32rx */
1857 /* mullo $src1,$src2,$acc */
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
} }
1864 /* end-sanitize-m32rx */
1865 /* mulwhi $src1,$src2 */
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
} }
1872 /* mulwlo $src1,$src2 */
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
} }
1882 "mv", "mv", SYN (0), FMT (41), 0x1080,
1884 { 4, 0, { (1<<MACH_M32R
), PIPE_OS
, WRITE_LR_NO
, WRITE_SRC_NO
} }
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
} }
1893 /* start-sanitize-m32rx */
1894 /* mvfachi $dr,$accs */
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
} }
1901 /* end-sanitize-m32rx */
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
} }
1909 /* start-sanitize-m32rx */
1910 /* mvfaclo $dr,$accs */
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
} }
1917 /* end-sanitize-m32rx */
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
} }
1925 /* start-sanitize-m32rx */
1926 /* mvfacmi $dr,$accs */
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
} }
1933 /* end-sanitize-m32rx */
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
} }
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
} }
1948 /* start-sanitize-m32rx */
1949 /* mvtachi $src1,$accs */
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
} }
1956 /* end-sanitize-m32rx */
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
} }
1964 /* start-sanitize-m32rx */
1965 /* mvtaclo $src1,$accs */
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
} }
1972 /* end-sanitize-m32rx */
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
} }
1983 "neg", "neg", SYN (0), FMT (41), 0x30,
1985 { 4, 0, { (1<<MACH_M32R
), PIPE_OS
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1990 "nop", "nop", SYN (37), FMT (48), 0x7000,
1992 { 4, 0, { (1<<MACH_M32R
), PIPE_OS
, WRITE_LR_NO
, WRITE_SRC_NO
} }
1997 "not", "not", SYN (0), FMT (41), 0xb0,
1999 { 4, 0, { (1<<MACH_M32R
), PIPE_OS
, WRITE_LR_NO
, WRITE_SRC_NO
} }
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
} }
2008 /* start-sanitize-m32rx */
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
} }
2016 /* end-sanitize-m32rx */
2017 /* start-sanitize-m32rx */
2018 /* rac $accd,$accs */
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
} }
2025 /* end-sanitize-m32rx */
2026 /* start-sanitize-m32rx */
2027 /* rac $accd,$accs,#$imm1 */
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
} }
2034 /* end-sanitize-m32rx */
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
} }
2042 /* start-sanitize-m32rx */
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
} }
2050 /* end-sanitize-m32rx */
2051 /* start-sanitize-m32rx */
2052 /* rach $accd,$accs */
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
} }
2059 /* end-sanitize-m32rx */
2060 /* start-sanitize-m32rx */
2061 /* rach $accd,$accs,#$imm1 */
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
} }
2068 /* end-sanitize-m32rx */
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
} }
2076 /* seth $dr,#$hi16 */
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
} }
2083 /* seth $dr,$hi16 */
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
} }
2093 "sll", "sll", SYN (0), FMT (0), 0x1040,
2095 { 4, 0, { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2097 /* sll3 $dr,$sr,#$simm16 */
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
} }
2104 /* sll3 $dr,$sr,$simm16 */
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
} }
2111 /* slli $dr,#$uimm5 */
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
} }
2118 /* slli $dr,$uimm5 */
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
} }
2128 "sra", "sra", SYN (0), FMT (0), 0x1020,
2130 { 4, 0, { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2132 /* sra3 $dr,$sr,#$simm16 */
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
} }
2139 /* sra3 $dr,$sr,$simm16 */
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
} }
2146 /* srai $dr,#$uimm5 */
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
} }
2153 /* srai $dr,$uimm5 */
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
} }
2163 "srl", "srl", SYN (0), FMT (0), 0x1000,
2165 { 4, 0, { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2167 /* srl3 $dr,$sr,#$simm16 */
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
} }
2174 /* srl3 $dr,$sr,$simm16 */
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
} }
2181 /* srli $dr,#$uimm5 */
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
} }
2188 /* srli $dr,$uimm5 */
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
} }
2195 /* st $src1,@$src2 */
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
} }
2202 /* st $src1,@($src2) */
2205 "st-2", "st", SYN (46), FMT (56), 0x2040,
2207 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2209 /* st $src1,@($slo16,$src2) */
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
} }
2216 /* st $src1,@($src2,$slo16) */
2219 "st-d2", "st", SYN (48), FMT (58), 0xa0400000,
2221 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2223 /* stb $src1,@$src2 */
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
} }
2230 /* stb $src1,@($src2) */
2233 "stb-2", "stb", SYN (46), FMT (56), 0x2000,
2235 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2237 /* stb $src1,@($slo16,$src2) */
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
} }
2244 /* stb $src1,@($src2,$slo16) */
2247 "stb-d2", "stb", SYN (48), FMT (58), 0xa0000000,
2249 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2251 /* sth $src1,@$src2 */
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
} }
2258 /* sth $src1,@($src2) */
2261 "sth-2", "sth", SYN (46), FMT (56), 0x2020,
2263 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2265 /* sth $src1,@($slo16,$src2) */
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
} }
2272 /* sth $src1,@($src2,$slo16) */
2275 "sth-d2", "sth", SYN (48), FMT (58), 0xa0200000,
2277 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2279 /* st $src1,@+$src2 */
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
} }
2286 /* st $src1,@-$src2 */
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
} }
2296 "sub", "sub", SYN (0), FMT (0), 0x20,
2298 { 4, 0, { (1<<MACH_M32R
), PIPE_OS
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2303 "subv", "subv", SYN (0), FMT (0), 0x0,
2305 { 4, 0, { (1<<MACH_M32R
), PIPE_OS
, WRITE_LR_NO
, WRITE_SRC_NO
} }
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
} }
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
} }
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
} }
2328 /* unlock $src1,@$src2 */
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
} }
2338 "push", "push", SYN (34), FMT (60), 0x207f,
2340 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2345 "pop", "pop", SYN (31), FMT (61), 0x20ef,
2347 { 4, 0|A(ALIAS
), { (1<<MACH_M32R
), PIPE_NONE
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2349 /* start-sanitize-m32rx */
2350 /* satb $dr,$src2 */
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
} }
2357 /* end-sanitize-m32rx */
2358 /* start-sanitize-m32rx */
2359 /* sath $dr,$src2 */
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
} }
2366 /* end-sanitize-m32rx */
2367 /* start-sanitize-m32rx */
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
} }
2375 /* end-sanitize-m32rx */
2376 /* start-sanitize-m32rx */
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
} }
2384 /* end-sanitize-m32rx */
2385 /* start-sanitize-m32rx */
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
} }
2393 /* end-sanitize-m32rx */
2394 /* start-sanitize-m32rx */
2395 /* macwu1 $src1,$src2 */
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
} }
2402 /* end-sanitize-m32rx */
2403 /* start-sanitize-m32rx */
2404 /* msblo $src1,$src2 */
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
} }
2411 /* end-sanitize-m32rx */
2412 /* start-sanitize-m32rx */
2413 /* mulwu1 $src1,$src2 */
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
} }
2420 /* end-sanitize-m32rx */
2421 /* start-sanitize-m32rx */
2422 /* maclh1 $src1,$src2 */
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
} }
2429 /* end-sanitize-m32rx */
2430 /* start-sanitize-m32rx */
2434 "sc", "sc", SYN (37), FMT (66), 0x7401,
2436 { 4, 0, { (1<<MACH_M32RX
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2438 /* end-sanitize-m32rx */
2439 /* start-sanitize-m32rx */
2443 "snc", "snc", SYN (37), FMT (66), 0x7501,
2445 { 4, 0, { (1<<MACH_M32RX
), PIPE_O
, WRITE_LR_NO
, WRITE_SRC_NO
} }
2447 /* end-sanitize-m32rx */
2454 CGEN_INSN_TABLE m32r_cgen_insn_table
=
2456 & m32r_cgen_insn_table_entries
[0],
2460 m32r_cgen_asm_hash_insn
, CGEN_ASM_HASH_SIZE
,
2461 m32r_cgen_dis_hash_insn
, CGEN_DIS_HASH_SIZE
2464 /* The hash functions are recorded here to help keep assembler code out of
2465 the disassembler and vice versa. */
2468 m32r_cgen_asm_hash_insn (insn
)
2471 return CGEN_ASM_HASH (insn
);
2475 m32r_cgen_dis_hash_insn (buf
, value
)
2477 unsigned long value
;
2479 return CGEN_DIS_HASH (buf
, value
);
2482 CGEN_OPCODE_DATA m32r_cgen_opcode_data
=
2484 & m32r_cgen_hw_entries
[0],
2485 & m32r_cgen_insn_table
,
2489 m32r_cgen_init_tables (mach
)
2494 /* Main entry point for stuffing values in cgen_fields. */
2497 m32r_cgen_set_operand (opindex
, valuep
, fields
)
2499 const long * valuep
;
2500 CGEN_FIELDS
* fields
;
2504 case M32R_OPERAND_SR
:
2505 fields
->f_r2
= * valuep
;
2507 case M32R_OPERAND_DR
:
2508 fields
->f_r1
= * valuep
;
2510 case M32R_OPERAND_SRC1
:
2511 fields
->f_r1
= * valuep
;
2513 case M32R_OPERAND_SRC2
:
2514 fields
->f_r2
= * valuep
;
2516 case M32R_OPERAND_SCR
:
2517 fields
->f_r2
= * valuep
;
2519 case M32R_OPERAND_DCR
:
2520 fields
->f_r1
= * valuep
;
2522 case M32R_OPERAND_SIMM8
:
2523 fields
->f_simm8
= * valuep
;
2525 case M32R_OPERAND_SIMM16
:
2526 fields
->f_simm16
= * valuep
;
2528 case M32R_OPERAND_UIMM4
:
2529 fields
->f_uimm4
= * valuep
;
2531 case M32R_OPERAND_UIMM5
:
2532 fields
->f_uimm5
= * valuep
;
2534 case M32R_OPERAND_UIMM16
:
2535 fields
->f_uimm16
= * valuep
;
2537 /* start-sanitize-m32rx */
2538 case M32R_OPERAND_IMM1
:
2539 fields
->f_imm1
= * valuep
;
2541 /* end-sanitize-m32rx */
2542 /* start-sanitize-m32rx */
2543 case M32R_OPERAND_ACCD
:
2544 fields
->f_accd
= * valuep
;
2546 /* end-sanitize-m32rx */
2547 /* start-sanitize-m32rx */
2548 case M32R_OPERAND_ACCS
:
2549 fields
->f_accs
= * valuep
;
2551 /* end-sanitize-m32rx */
2552 /* start-sanitize-m32rx */
2553 case M32R_OPERAND_ACC
:
2554 fields
->f_acc
= * valuep
;
2556 /* end-sanitize-m32rx */
2557 case M32R_OPERAND_HI16
:
2558 fields
->f_hi16
= * valuep
;
2560 case M32R_OPERAND_SLO16
:
2561 fields
->f_simm16
= * valuep
;
2563 case M32R_OPERAND_ULO16
:
2564 fields
->f_uimm16
= * valuep
;
2566 case M32R_OPERAND_UIMM24
:
2567 fields
->f_uimm24
= * valuep
;
2569 case M32R_OPERAND_DISP8
:
2570 fields
->f_disp8
= * valuep
;
2572 case M32R_OPERAND_DISP16
:
2573 fields
->f_disp16
= * valuep
;
2575 case M32R_OPERAND_DISP24
:
2576 fields
->f_disp24
= * valuep
;
2580 fprintf (stderr
, "Unrecognized field %d while setting operand.\n",
2586 /* Main entry point for getting values from cgen_fields. */
2589 m32r_cgen_get_operand (opindex
, fields
)
2591 const CGEN_FIELDS
* fields
;
2597 case M32R_OPERAND_SR
:
2598 value
= fields
->f_r2
;
2600 case M32R_OPERAND_DR
:
2601 value
= fields
->f_r1
;
2603 case M32R_OPERAND_SRC1
:
2604 value
= fields
->f_r1
;
2606 case M32R_OPERAND_SRC2
:
2607 value
= fields
->f_r2
;
2609 case M32R_OPERAND_SCR
:
2610 value
= fields
->f_r2
;
2612 case M32R_OPERAND_DCR
:
2613 value
= fields
->f_r1
;
2615 case M32R_OPERAND_SIMM8
:
2616 value
= fields
->f_simm8
;
2618 case M32R_OPERAND_SIMM16
:
2619 value
= fields
->f_simm16
;
2621 case M32R_OPERAND_UIMM4
:
2622 value
= fields
->f_uimm4
;
2624 case M32R_OPERAND_UIMM5
:
2625 value
= fields
->f_uimm5
;
2627 case M32R_OPERAND_UIMM16
:
2628 value
= fields
->f_uimm16
;
2630 /* start-sanitize-m32rx */
2631 case M32R_OPERAND_IMM1
:
2632 value
= fields
->f_imm1
;
2634 /* end-sanitize-m32rx */
2635 /* start-sanitize-m32rx */
2636 case M32R_OPERAND_ACCD
:
2637 value
= fields
->f_accd
;
2639 /* end-sanitize-m32rx */
2640 /* start-sanitize-m32rx */
2641 case M32R_OPERAND_ACCS
:
2642 value
= fields
->f_accs
;
2644 /* end-sanitize-m32rx */
2645 /* start-sanitize-m32rx */
2646 case M32R_OPERAND_ACC
:
2647 value
= fields
->f_acc
;
2649 /* end-sanitize-m32rx */
2650 case M32R_OPERAND_HI16
:
2651 value
= fields
->f_hi16
;
2653 case M32R_OPERAND_SLO16
:
2654 value
= fields
->f_simm16
;
2656 case M32R_OPERAND_ULO16
:
2657 value
= fields
->f_uimm16
;
2659 case M32R_OPERAND_UIMM24
:
2660 value
= fields
->f_uimm24
;
2662 case M32R_OPERAND_DISP8
:
2663 value
= fields
->f_disp8
;
2665 case M32R_OPERAND_DISP16
:
2666 value
= fields
->f_disp16
;
2668 case M32R_OPERAND_DISP24
:
2669 value
= fields
->f_disp24
;
2673 fprintf (stderr
, "Unrecognized field %d while getting operand.\n",