xref: /openbsd-src/gnu/usr.bin/binutils/opcodes/cris-opc.c (revision d2201f2f89f0be1a0be6f7568000ed297414a06d)
15f210c2aSfgsch /* cris-opc.c -- Table of opcodes for the CRIS processor.
25f210c2aSfgsch    Copyright 2000 Free Software Foundation, Inc.
35f210c2aSfgsch    Contributed by Axis Communications AB, Lund, Sweden.
45f210c2aSfgsch    Originally written for GAS 1.38.1 by Mikael Asker.
55f210c2aSfgsch    Reorganized by Hans-Peter Nilsson.
65f210c2aSfgsch 
75f210c2aSfgsch This file is part of GAS, GDB and the GNU binutils.
85f210c2aSfgsch 
95f210c2aSfgsch GAS, GDB, and GNU binutils is free software; you can redistribute it
105f210c2aSfgsch and/or modify it under the terms of the GNU General Public License as
115f210c2aSfgsch published by the Free Software Foundation; either version 2, or (at your
125f210c2aSfgsch option) any later version.
135f210c2aSfgsch 
145f210c2aSfgsch GAS, GDB, and GNU binutils are distributed in the hope that they will be
155f210c2aSfgsch useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
165f210c2aSfgsch MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
175f210c2aSfgsch GNU General Public License for more details.
185f210c2aSfgsch 
195f210c2aSfgsch You should have received a copy of the GNU General Public License
205f210c2aSfgsch along with this program; if not, write to the Free Software
215f210c2aSfgsch Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
225f210c2aSfgsch 
235f210c2aSfgsch #include "opcode/cris.h"
245f210c2aSfgsch 
255f210c2aSfgsch #ifndef NULL
265f210c2aSfgsch #define NULL (0)
275f210c2aSfgsch #endif
285f210c2aSfgsch 
295f210c2aSfgsch const struct cris_spec_reg
305f210c2aSfgsch cris_spec_regs[] =
315f210c2aSfgsch {
325f210c2aSfgsch   {"p0",  0,  1, 0,		   NULL},
335f210c2aSfgsch   {"vr",  1,  1, 0,		   NULL},
345f210c2aSfgsch   {"p1",  1,  1, 0,		   NULL},
355f210c2aSfgsch   {"p2",  2,  1, cris_ver_warning, NULL},
365f210c2aSfgsch   {"p3",  3,  1, cris_ver_warning, NULL},
375f210c2aSfgsch   {"p4",  4,  2, 0,		   NULL},
385f210c2aSfgsch   {"ccr", 5,  2, 0,		   NULL},
395f210c2aSfgsch   {"p5",  5,  2, 0,		   NULL},
405f210c2aSfgsch   {"dcr0",6,  2, cris_ver_v0_3,	   NULL},
415f210c2aSfgsch   {"p6",  6,  2, cris_ver_v0_3,	   NULL},
425f210c2aSfgsch   {"dcr1/mof", 7, 4, cris_ver_v10p,
435f210c2aSfgsch    "Register `dcr1/mof' with ambiguous size specified.  Guessing 4 bytes"},
445f210c2aSfgsch   {"dcr1/mof", 7, 2, cris_ver_v0_3,
455f210c2aSfgsch    "Register `dcr1/mof' with ambiguous size specified.  Guessing 2 bytes"},
465f210c2aSfgsch   {"mof", 7,  4, cris_ver_v10p,	   NULL},
475f210c2aSfgsch   {"dcr1",7,  2, cris_ver_v0_3,	   NULL},
485f210c2aSfgsch   {"p7",  7,  4, cris_ver_v10p,	   NULL},
495f210c2aSfgsch   {"p7",  7,  2, cris_ver_v0_3,	   NULL},
505f210c2aSfgsch   {"p8",  8,  4, 0,		   NULL},
515f210c2aSfgsch   {"ibr", 9,  4, 0,		   NULL},
525f210c2aSfgsch   {"p9",  9,  4, 0,		   NULL},
535f210c2aSfgsch   {"irp", 10, 4, 0,		   NULL},
545f210c2aSfgsch   {"p10", 10, 4, 0,		   NULL},
555f210c2aSfgsch   {"srp", 11, 4, 0,		   NULL},
565f210c2aSfgsch   {"p11", 11, 4, 0,		   NULL},
575f210c2aSfgsch   /* For disassembly use only.  Accept at assembly with a warning.  */
585f210c2aSfgsch   {"bar/dtp0", 12, 4, cris_ver_warning,
595f210c2aSfgsch    "Ambiguous register `bar/dtp0' specified"},
605f210c2aSfgsch   {"bar", 12, 4, cris_ver_v8p,	   NULL},
615f210c2aSfgsch   {"dtp0",12, 4, cris_ver_v0_3,	   NULL},
625f210c2aSfgsch   {"p12", 12, 4, 0,		   NULL},
635f210c2aSfgsch   /* For disassembly use only.  Accept at assembly with a warning.  */
645f210c2aSfgsch   {"dccr/dtp1",13, 4, cris_ver_warning,
655f210c2aSfgsch    "Ambiguous register `dccr/dtp1' specified"},
665f210c2aSfgsch   {"dccr",13, 4, cris_ver_v8p,	   NULL},
675f210c2aSfgsch   {"dtp1",13, 4, cris_ver_v0_3,	   NULL},
685f210c2aSfgsch   {"p13", 13, 4, 0,		   NULL},
695f210c2aSfgsch   {"brp", 14, 4, cris_ver_v3p,	   NULL},
705f210c2aSfgsch   {"p14", 14, 4, cris_ver_v3p,	   NULL},
715f210c2aSfgsch   {"usp", 15, 4, cris_ver_v10p,	   NULL},
725f210c2aSfgsch   {"p15", 15, 4, cris_ver_v10p,	   NULL},
73*d2201f2fSdrahn   {NULL, 0, 0, cris_ver_version_all, NULL}
745f210c2aSfgsch };
755f210c2aSfgsch 
765f210c2aSfgsch /* All CRIS opcodes are 16 bits.
775f210c2aSfgsch 
785f210c2aSfgsch    - The match component is a mask saying which bits must match a
795f210c2aSfgsch      particular opcode in order for an instruction to be an instance
805f210c2aSfgsch      of that opcode.
815f210c2aSfgsch 
825f210c2aSfgsch    - The args component is a string containing characters symbolically
835f210c2aSfgsch      matching the operands of an instruction.  Used for both assembly
845f210c2aSfgsch      and disassembly.
855f210c2aSfgsch 
865f210c2aSfgsch      Operand-matching characters:
875f210c2aSfgsch      B	Not really an operand.  It causes a "BDAP -size,SP" prefix to be
885f210c2aSfgsch 	output for the PUSH alias-instructions and recognizes a
895f210c2aSfgsch 	push-prefix at disassembly.  Must be followed by a R or P letter.
905f210c2aSfgsch      !	Non-match pattern, will not match if there's a prefix insn.
915f210c2aSfgsch      b	Non-matching operand, used for branches with 16-bit
925f210c2aSfgsch 	displacement. Only recognized by the disassembler.
935f210c2aSfgsch      c	5-bit unsigned immediate in bits <4:0>.
945f210c2aSfgsch      C	4-bit unsigned immediate in bits <3:0>.
955f210c2aSfgsch      D	General register in bits <15:12> and <3:0>.
965f210c2aSfgsch      f	List of flags in bits <15:12> and <3:0>.
975f210c2aSfgsch      i	6-bit signed immediate in bits <5:0>.
985f210c2aSfgsch      I	6-bit unsigned immediate in bits <5:0>.
995f210c2aSfgsch      M	Size modifier (B, W or D) for CLEAR instructions.
1005f210c2aSfgsch      m	Size modifier (B, W or D) in bits <5:4>
1015f210c2aSfgsch      o	[-128..127] word offset in bits <7:1> and <0>.  Used by 8-bit
1025f210c2aSfgsch 	branch instructions.
1035f210c2aSfgsch      O	[-128..127] offset in bits <7:0>.  Also matches a comma and a
1045f210c2aSfgsch 	general register after the expression.  Used only for the BDAP
1055f210c2aSfgsch 	prefix insn.
1065f210c2aSfgsch      P	Special register in bits <15:12>.
1075f210c2aSfgsch      p	Indicates that the insn is a prefix insn.  Must be first
1085f210c2aSfgsch 	character.
1095f210c2aSfgsch      R	General register in bits <15:12>.
1105f210c2aSfgsch      r	General register in bits <3:0>.
1115f210c2aSfgsch      S	Source operand in bit <10> and a prefix; a 3-operand prefix
1125f210c2aSfgsch 	without side-effect.
1135f210c2aSfgsch      s	Source operand in bits <10> and <3:0>, optionally with a
1145f210c2aSfgsch 	side-effect prefix.
1155f210c2aSfgsch      x	Register-dot-modifier, for example "r5.w" in bits <15:12> and <5:4>.
1165f210c2aSfgsch      y	Like 's' but do not allow an integer at assembly.
1175f210c2aSfgsch      z	Size modifier (B or W) in bit <4>.  */
1185f210c2aSfgsch 
1195f210c2aSfgsch 
1205f210c2aSfgsch /* Please note the order of the opcodes in this table is significant.
1215f210c2aSfgsch    The assembler requires that all instances of the same mnemonic must
1225f210c2aSfgsch    be consecutive.  If they aren't, the assembler might not recognize
1235f210c2aSfgsch    them, or may indicate and internal error.
1245f210c2aSfgsch 
1255f210c2aSfgsch    The disassembler should not normally care about the order of the
1265f210c2aSfgsch    opcodes, but will prefer an earlier alternative if the "match-score"
1275f210c2aSfgsch    (see cris-dis.c) is computed as equal.
1285f210c2aSfgsch 
1295f210c2aSfgsch    It should not be significant for proper execution that this table is
1305f210c2aSfgsch    in alphabetical order, but please follow that convention for an easy
1315f210c2aSfgsch    overview.  */
1325f210c2aSfgsch 
1335f210c2aSfgsch const struct cris_opcode
1345f210c2aSfgsch cris_opcodes[] =
1355f210c2aSfgsch {
1365f210c2aSfgsch   {"abs",     0x06B0, 0x0940,		  "r,R",     0, SIZE_NONE,     0,
1375f210c2aSfgsch    cris_abs_op},
1385f210c2aSfgsch 
1395f210c2aSfgsch   {"add",     0x0600, 0x09c0,		  "m r,R",   0, SIZE_NONE,     0,
1405f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
1415f210c2aSfgsch 
1425f210c2aSfgsch   {"add",     0x0A00, 0x01c0,		  "m s,R",   0, SIZE_FIELD,    0,
1435f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
1445f210c2aSfgsch 
1455f210c2aSfgsch   {"add",     0x0A00, 0x01c0,		  "m S,D",   0, SIZE_NONE,     0,
1465f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
1475f210c2aSfgsch 
1485f210c2aSfgsch   {"add",     0x0a00, 0x05c0,		  "m S,R,r", 0, SIZE_NONE,     0,
1495f210c2aSfgsch    cris_three_operand_add_sub_cmp_and_or_op},
1505f210c2aSfgsch 
1515f210c2aSfgsch   {"addi",    0x0500, 0x0Ac0,		  "x,r",     0, SIZE_NONE,     0,
1525f210c2aSfgsch    cris_addi_op},
1535f210c2aSfgsch 
1545f210c2aSfgsch   {"addq",    0x0200, 0x0Dc0,		  "I,R",     0, SIZE_NONE,     0,
1555f210c2aSfgsch    cris_quick_mode_add_sub_op},
1565f210c2aSfgsch 
1575f210c2aSfgsch   {"adds",    0x0420, 0x0Bc0,		  "z r,R",   0, SIZE_NONE,     0,
1585f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
1595f210c2aSfgsch 
1605f210c2aSfgsch   {"adds",    0x0820, 0x03c0,		  "z s,R",   0, SIZE_FIELD,    0,
1615f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
1625f210c2aSfgsch 
1635f210c2aSfgsch   {"adds",    0x0820, 0x03c0,		  "z S,D",   0, SIZE_NONE,     0,
1645f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
1655f210c2aSfgsch 
1665f210c2aSfgsch   {"adds",    0x0820, 0x07c0,		  "z S,R,r", 0, SIZE_NONE,     0,
1675f210c2aSfgsch    cris_three_operand_add_sub_cmp_and_or_op},
1685f210c2aSfgsch 
1695f210c2aSfgsch   {"addu",    0x0400, 0x0be0,		  "z r,R",   0, SIZE_NONE,     0,
1705f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
1715f210c2aSfgsch 
1725f210c2aSfgsch   {"addu",    0x0800, 0x03e0,		  "z s,R",   0, SIZE_FIELD,    0,
1735f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
1745f210c2aSfgsch 
1755f210c2aSfgsch   {"addu",    0x0800, 0x03e0,		  "z S,D",   0, SIZE_NONE,     0,
1765f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
1775f210c2aSfgsch 
1785f210c2aSfgsch   {"addu",    0x0800, 0x07e0,		  "z S,R,r", 0, SIZE_NONE,     0,
1795f210c2aSfgsch    cris_three_operand_add_sub_cmp_and_or_op},
1805f210c2aSfgsch 
1815f210c2aSfgsch   {"and",     0x0700, 0x08C0,		  "m r,R",   0, SIZE_NONE,     0,
1825f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
1835f210c2aSfgsch 
1845f210c2aSfgsch   {"and",     0x0B00, 0x00C0,		  "m s,R",   0, SIZE_FIELD,    0,
1855f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
1865f210c2aSfgsch 
1875f210c2aSfgsch   {"and",     0x0B00, 0x00C0,		  "m S,D",   0, SIZE_NONE,     0,
1885f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
1895f210c2aSfgsch 
1905f210c2aSfgsch   {"and",     0x0B00, 0x04C0,		  "m S,R,r", 0, SIZE_NONE,     0,
1915f210c2aSfgsch    cris_three_operand_add_sub_cmp_and_or_op},
1925f210c2aSfgsch 
1935f210c2aSfgsch   {"andq",    0x0300, 0x0CC0,		  "i,R",     0, SIZE_NONE,     0,
1945f210c2aSfgsch    cris_quick_mode_and_cmp_move_or_op},
1955f210c2aSfgsch 
1965f210c2aSfgsch   {"asr",     0x0780, 0x0840,		  "m r,R",   0, SIZE_NONE,     0,
1975f210c2aSfgsch    cris_asr_op},
1985f210c2aSfgsch 
1995f210c2aSfgsch   {"asrq",    0x03a0, 0x0c40,		  "c,R",     0, SIZE_NONE,     0,
2005f210c2aSfgsch    cris_asrq_op},
2015f210c2aSfgsch 
2025f210c2aSfgsch   {"ax",      0x15B0, 0xEA4F,		  "",	     0, SIZE_NONE,     0,
2035f210c2aSfgsch    cris_ax_ei_setf_op},
2045f210c2aSfgsch 
2055f210c2aSfgsch   /* FIXME: Should use branch #defines.  */
2065f210c2aSfgsch   {"b",	      0x0dff, 0x0200,		  "b",	     1, SIZE_NONE,     0,
2075f210c2aSfgsch    cris_sixteen_bit_offset_branch_op},
2085f210c2aSfgsch 
2095f210c2aSfgsch   {"ba",
2105f210c2aSfgsch    BA_QUICK_OPCODE,
2115f210c2aSfgsch    0x0F00+(0xF-CC_A)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2125f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2135f210c2aSfgsch 
2145f210c2aSfgsch   {"bcc",
2155f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_CC*0x1000,
2165f210c2aSfgsch    0x0f00+(0xF-CC_CC)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2175f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2185f210c2aSfgsch 
2195f210c2aSfgsch   {"bcs",
2205f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_CS*0x1000,
2215f210c2aSfgsch    0x0f00+(0xF-CC_CS)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2225f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2235f210c2aSfgsch 
2245f210c2aSfgsch   {"bdap",
2255f210c2aSfgsch    BDAP_INDIR_OPCODE, BDAP_INDIR_Z_BITS,  "pm s,R",  0, SIZE_FIELD,    0,
2265f210c2aSfgsch    cris_bdap_prefix},
2275f210c2aSfgsch 
2285f210c2aSfgsch   {"bdap",
2295f210c2aSfgsch    BDAP_QUICK_OPCODE, BDAP_QUICK_Z_BITS,  "pO",	     0, SIZE_NONE,     0,
2305f210c2aSfgsch    cris_quick_mode_bdap_prefix},
2315f210c2aSfgsch 
2325f210c2aSfgsch   {"beq",
2335f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_EQ*0x1000,
2345f210c2aSfgsch    0x0f00+(0xF-CC_EQ)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2355f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2365f210c2aSfgsch 
2375f210c2aSfgsch   /* This is deliberately put before "bext" to trump it, even though not
2385f210c2aSfgsch      in alphabetical order.  */
2395f210c2aSfgsch   {"bwf",
2405f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_EXT*0x1000,
2415f210c2aSfgsch    0x0f00+(0xF-CC_EXT)*0x1000,		  "o",	     1, SIZE_NONE,
2425f210c2aSfgsch    cris_ver_v10p,
2435f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2445f210c2aSfgsch 
2455f210c2aSfgsch   {"bext",
2465f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_EXT*0x1000,
2475f210c2aSfgsch    0x0f00+(0xF-CC_EXT)*0x1000,		  "o",	     1, SIZE_NONE,
2485f210c2aSfgsch    cris_ver_v0_3,
2495f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2505f210c2aSfgsch 
2515f210c2aSfgsch   {"bge",
2525f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_GE*0x1000,
2535f210c2aSfgsch    0x0f00+(0xF-CC_GE)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2545f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2555f210c2aSfgsch 
2565f210c2aSfgsch   {"bgt",
2575f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_GT*0x1000,
2585f210c2aSfgsch    0x0f00+(0xF-CC_GT)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2595f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2605f210c2aSfgsch 
2615f210c2aSfgsch   {"bhi",
2625f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_HI*0x1000,
2635f210c2aSfgsch    0x0f00+(0xF-CC_HI)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2645f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2655f210c2aSfgsch 
2665f210c2aSfgsch   {"bhs",
2675f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_HS*0x1000,
2685f210c2aSfgsch    0x0f00+(0xF-CC_HS)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2695f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2705f210c2aSfgsch 
2715f210c2aSfgsch   {"biap", BIAP_OPCODE, BIAP_Z_BITS,	  "pm r,R",  0, SIZE_NONE,     0,
2725f210c2aSfgsch    cris_biap_prefix},
2735f210c2aSfgsch 
2745f210c2aSfgsch   {"ble",
2755f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_LE*0x1000,
2765f210c2aSfgsch    0x0f00+(0xF-CC_LE)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2775f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2785f210c2aSfgsch 
2795f210c2aSfgsch   {"blo",
2805f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_LO*0x1000,
2815f210c2aSfgsch    0x0f00+(0xF-CC_LO)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2825f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2835f210c2aSfgsch 
2845f210c2aSfgsch   {"bls",
2855f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_LS*0x1000,
2865f210c2aSfgsch    0x0f00+(0xF-CC_LS)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2875f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2885f210c2aSfgsch 
2895f210c2aSfgsch   {"blt",
2905f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_LT*0x1000,
2915f210c2aSfgsch    0x0f00+(0xF-CC_LT)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2925f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2935f210c2aSfgsch 
2945f210c2aSfgsch   {"bmi",
2955f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_MI*0x1000,
2965f210c2aSfgsch    0x0f00+(0xF-CC_MI)*0x1000,		  "o",	     1, SIZE_NONE,     0,
2975f210c2aSfgsch    cris_eight_bit_offset_branch_op},
2985f210c2aSfgsch 
2995f210c2aSfgsch   {"bmod",    0x0ab0, 0x0140,		  "s,R",     0, SIZE_FIX_32,
3005f210c2aSfgsch    cris_ver_sim,
3015f210c2aSfgsch    cris_not_implemented_op},
3025f210c2aSfgsch 
3035f210c2aSfgsch   {"bmod",    0x0ab0, 0x0140,		  "S,D",     0, SIZE_NONE,
3045f210c2aSfgsch    cris_ver_sim,
3055f210c2aSfgsch    cris_not_implemented_op},
3065f210c2aSfgsch 
3075f210c2aSfgsch   {"bmod",    0x0ab0, 0x0540,		  "S,R,r",   0, SIZE_NONE,
3085f210c2aSfgsch    cris_ver_sim,
3095f210c2aSfgsch    cris_not_implemented_op},
3105f210c2aSfgsch 
3115f210c2aSfgsch   {"bne",
3125f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_NE*0x1000,
3135f210c2aSfgsch    0x0f00+(0xF-CC_NE)*0x1000,		  "o",	     1, SIZE_NONE,     0,
3145f210c2aSfgsch    cris_eight_bit_offset_branch_op},
3155f210c2aSfgsch 
3165f210c2aSfgsch   {"bound",   0x05c0, 0x0A00,		  "m r,R",   0, SIZE_NONE,     0,
3175f210c2aSfgsch    cris_two_operand_bound_op},
3185f210c2aSfgsch   {"bound",   0x09c0, 0x0200,		  "m s,R",   0, SIZE_FIELD,    0,
3195f210c2aSfgsch    cris_two_operand_bound_op},
3205f210c2aSfgsch   {"bound",   0x09c0, 0x0200,		  "m S,D",   0, SIZE_NONE,     0,
3215f210c2aSfgsch    cris_two_operand_bound_op},
3225f210c2aSfgsch   {"bound",   0x09c0, 0x0600,		  "m S,R,r", 0, SIZE_NONE,     0,
3235f210c2aSfgsch    cris_three_operand_bound_op},
3245f210c2aSfgsch   {"bpl",
3255f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_PL*0x1000,
3265f210c2aSfgsch    0x0f00+(0xF-CC_PL)*0x1000,		  "o",	     1, SIZE_NONE,     0,
3275f210c2aSfgsch    cris_eight_bit_offset_branch_op},
3285f210c2aSfgsch 
3295f210c2aSfgsch   {"break",   0xe930, 0x16c0,		  "C",	     0, SIZE_NONE,
3305f210c2aSfgsch    cris_ver_v3p,
3315f210c2aSfgsch    cris_break_op},
3325f210c2aSfgsch 
3335f210c2aSfgsch   {"bstore",  0x0af0, 0x0100,		  "s,R",     0, SIZE_FIX_32,
3345f210c2aSfgsch    cris_ver_warning,
3355f210c2aSfgsch    cris_not_implemented_op},
3365f210c2aSfgsch 
3375f210c2aSfgsch   {"bstore",  0x0af0, 0x0100,		  "S,D",     0, SIZE_NONE,
3385f210c2aSfgsch    cris_ver_warning,
3395f210c2aSfgsch    cris_not_implemented_op},
3405f210c2aSfgsch 
3415f210c2aSfgsch   {"bstore",  0x0af0, 0x0500,		  "S,R,r",   0, SIZE_NONE,
3425f210c2aSfgsch    cris_ver_warning,
3435f210c2aSfgsch    cris_not_implemented_op},
3445f210c2aSfgsch 
3455f210c2aSfgsch   {"btst",    0x04F0, 0x0B00,		  "r,R",     0, SIZE_NONE,     0,
3465f210c2aSfgsch    cris_btst_nop_op},
3475f210c2aSfgsch   {"btstq",   0x0380, 0x0C60,		  "c,R",     0, SIZE_NONE,     0,
3485f210c2aSfgsch    cris_btst_nop_op},
3495f210c2aSfgsch   {"bvc",
3505f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_VC*0x1000,
3515f210c2aSfgsch    0x0f00+(0xF-CC_VC)*0x1000,		  "o",	     1, SIZE_NONE,     0,
3525f210c2aSfgsch    cris_eight_bit_offset_branch_op},
3535f210c2aSfgsch 
3545f210c2aSfgsch   {"bvs",
3555f210c2aSfgsch    BRANCH_QUICK_OPCODE+CC_VS*0x1000,
3565f210c2aSfgsch    0x0f00+(0xF-CC_VS)*0x1000,		  "o",	     1, SIZE_NONE,     0,
3575f210c2aSfgsch    cris_eight_bit_offset_branch_op},
3585f210c2aSfgsch 
3595f210c2aSfgsch   {"clear",   0x0670, 0x3980,		  "M r",     0, SIZE_NONE,     0,
3605f210c2aSfgsch    cris_reg_mode_clear_op},
3615f210c2aSfgsch 
3625f210c2aSfgsch   {"clear",   0x0A70, 0x3180,		  "M y",     0, SIZE_NONE,     0,
3635f210c2aSfgsch    cris_none_reg_mode_clear_test_op},
3645f210c2aSfgsch 
3655f210c2aSfgsch   {"clear",   0x0A70, 0x3180,		  "M S",     0, SIZE_NONE,     0,
3665f210c2aSfgsch    cris_none_reg_mode_clear_test_op},
3675f210c2aSfgsch 
3685f210c2aSfgsch   {"clearf",  0x05F0, 0x0A00,		  "f",	     0, SIZE_NONE,     0,
3695f210c2aSfgsch    cris_clearf_di_op},
3705f210c2aSfgsch 
3715f210c2aSfgsch   {"cmp",     0x06C0, 0x0900,		  "m r,R",   0, SIZE_NONE,     0,
3725f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
3735f210c2aSfgsch 
3745f210c2aSfgsch   {"cmp",     0x0Ac0, 0x0100,		  "m s,R",   0, SIZE_FIELD,    0,
3755f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
3765f210c2aSfgsch 
3775f210c2aSfgsch   {"cmp",     0x0Ac0, 0x0100,		  "m S,D",   0, SIZE_NONE,     0,
3785f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
3795f210c2aSfgsch 
3805f210c2aSfgsch   {"cmpq",    0x02C0, 0x0D00,		  "i,R",     0, SIZE_NONE,     0,
3815f210c2aSfgsch    cris_quick_mode_and_cmp_move_or_op},
3825f210c2aSfgsch 
3835f210c2aSfgsch   {"cmps",    0x08e0, 0x0300,		  "z s,R",   0, SIZE_FIELD,    0,
3845f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
3855f210c2aSfgsch 
3865f210c2aSfgsch   {"cmps",    0x08e0, 0x0300,		  "z S,D",   0, SIZE_NONE,     0,
3875f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
3885f210c2aSfgsch 
3895f210c2aSfgsch   {"cmpu",    0x08c0, 0x0320,		  "z s,R" ,  0, SIZE_FIELD,    0,
3905f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
3915f210c2aSfgsch 
3925f210c2aSfgsch   {"cmpu",    0x08c0, 0x0320,		  "z S,D",   0, SIZE_NONE,     0,
3935f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
3945f210c2aSfgsch 
3955f210c2aSfgsch   {"di",      0x25F0, 0xDA0F,		  "",	     0, SIZE_NONE,     0,
3965f210c2aSfgsch    cris_clearf_di_op},
3975f210c2aSfgsch 
3985f210c2aSfgsch   {"dip",     DIP_OPCODE, DIP_Z_BITS,	  "ps",	     0, SIZE_FIX_32,   0,
3995f210c2aSfgsch    cris_dip_prefix},
4005f210c2aSfgsch 
4015f210c2aSfgsch   {"div",     0x0980, 0x0640,		  "m R,r",   0, SIZE_FIELD,    0,
4025f210c2aSfgsch    cris_not_implemented_op},
4035f210c2aSfgsch 
4045f210c2aSfgsch   {"dstep",   0x06f0, 0x0900,		  "r,R",     0, SIZE_NONE,     0,
4055f210c2aSfgsch    cris_dstep_logshift_mstep_neg_not_op},
4065f210c2aSfgsch 
4075f210c2aSfgsch   {"ei",      0x25B0, 0xDA4F,		  "",	     0, SIZE_NONE,     0,
4085f210c2aSfgsch    cris_ax_ei_setf_op},
4095f210c2aSfgsch 
4105f210c2aSfgsch   {"jbrc",    0x69b0, 0x9640,		  "r",	     0, SIZE_NONE,
4115f210c2aSfgsch    cris_ver_v8p,
4125f210c2aSfgsch    cris_reg_mode_jump_op},
4135f210c2aSfgsch 
4145f210c2aSfgsch   {"jbrc",    0x6930, 0x92c0,		  "s",	     0, SIZE_FIX_32,
4155f210c2aSfgsch    cris_ver_v8p,
4165f210c2aSfgsch    cris_none_reg_mode_jump_op},
4175f210c2aSfgsch 
4185f210c2aSfgsch   {"jbrc",    0x6930, 0x92c0,		  "S",	     0, SIZE_NONE,
4195f210c2aSfgsch    cris_ver_v8p,
4205f210c2aSfgsch    cris_none_reg_mode_jump_op},
4215f210c2aSfgsch 
4225f210c2aSfgsch   {"jir",     0xA9b0, 0x5640,		  "r",	     0, SIZE_NONE,     0,
4235f210c2aSfgsch    cris_reg_mode_jump_op},
4245f210c2aSfgsch 
4255f210c2aSfgsch   {"jir",     0xA930, 0x52c0,		  "s",	     0, SIZE_FIX_32,   0,
4265f210c2aSfgsch    cris_none_reg_mode_jump_op},
4275f210c2aSfgsch 
4285f210c2aSfgsch   {"jir",     0xA930, 0x52c0,		  "S",	     0, SIZE_NONE,     0,
4295f210c2aSfgsch    cris_none_reg_mode_jump_op},
4305f210c2aSfgsch 
4315f210c2aSfgsch   {"jirc",    0x29b0, 0xd640,		  "r",	     0, SIZE_NONE,
4325f210c2aSfgsch    cris_ver_v8p,
4335f210c2aSfgsch    cris_reg_mode_jump_op},
4345f210c2aSfgsch 
4355f210c2aSfgsch   {"jirc",    0x2930, 0xd2c0,		  "s",	     0, SIZE_FIX_32,
4365f210c2aSfgsch    cris_ver_v8p,
4375f210c2aSfgsch    cris_none_reg_mode_jump_op},
4385f210c2aSfgsch 
4395f210c2aSfgsch   {"jirc",    0x2930, 0xd2c0,		  "S",	     0, SIZE_NONE,
4405f210c2aSfgsch    cris_ver_v8p,
4415f210c2aSfgsch    cris_none_reg_mode_jump_op},
4425f210c2aSfgsch 
4435f210c2aSfgsch   {"jsr",     0xB9b0, 0x4640,		  "r",	     0, SIZE_NONE,     0,
4445f210c2aSfgsch    cris_reg_mode_jump_op},
4455f210c2aSfgsch 
4465f210c2aSfgsch   {"jsr",     0xB930, 0x42c0,		  "s",	     0, SIZE_FIX_32,   0,
4475f210c2aSfgsch    cris_none_reg_mode_jump_op},
4485f210c2aSfgsch 
4495f210c2aSfgsch   {"jsr",     0xB930, 0x42c0,		  "S",	     0, SIZE_NONE,     0,
4505f210c2aSfgsch    cris_none_reg_mode_jump_op},
4515f210c2aSfgsch 
4525f210c2aSfgsch   {"jsrc",    0x39b0, 0xc640,		  "r",	     0, SIZE_NONE,
4535f210c2aSfgsch    cris_ver_v8p,
4545f210c2aSfgsch    cris_reg_mode_jump_op},
4555f210c2aSfgsch 
4565f210c2aSfgsch   {"jsrc",    0x3930, 0xc2c0,		  "s",	     0, SIZE_FIX_32,
4575f210c2aSfgsch    cris_ver_v8p,
4585f210c2aSfgsch    cris_none_reg_mode_jump_op},
4595f210c2aSfgsch 
4605f210c2aSfgsch   {"jsrc",    0x3930, 0xc2c0,		  "S",	     0, SIZE_NONE,
4615f210c2aSfgsch    cris_ver_v8p,
4625f210c2aSfgsch    cris_none_reg_mode_jump_op},
4635f210c2aSfgsch 
4645f210c2aSfgsch   {"jump",    0x09b0, 0xF640,		  "r",	     0, SIZE_NONE,     0,
4655f210c2aSfgsch    cris_reg_mode_jump_op},
4665f210c2aSfgsch 
4675f210c2aSfgsch   {"jump",
4685f210c2aSfgsch    JUMP_INDIR_OPCODE, JUMP_INDIR_Z_BITS,  "s",	     0, SIZE_FIX_32,   0,
4695f210c2aSfgsch    cris_none_reg_mode_jump_op},
4705f210c2aSfgsch 
4715f210c2aSfgsch   {"jump",
4725f210c2aSfgsch    JUMP_INDIR_OPCODE, JUMP_INDIR_Z_BITS,  "S",	     0, SIZE_NONE,     0,
4735f210c2aSfgsch    cris_none_reg_mode_jump_op},
4745f210c2aSfgsch 
4755f210c2aSfgsch   {"jmpu",    0x8930, 0x72c0,		  "s",	     0, SIZE_FIX_32,
4765f210c2aSfgsch    cris_ver_v10p,
4775f210c2aSfgsch    cris_none_reg_mode_jump_op},
4785f210c2aSfgsch 
4795f210c2aSfgsch   {"jmpu",    0x8930, 0x72c0,		   "S",	     0, SIZE_NONE,
4805f210c2aSfgsch    cris_ver_v10p,
4815f210c2aSfgsch    cris_none_reg_mode_jump_op},
4825f210c2aSfgsch 
4835f210c2aSfgsch   {"lsl",     0x04C0, 0x0B00,		  "m r,R",   0, SIZE_NONE,     0,
4845f210c2aSfgsch    cris_dstep_logshift_mstep_neg_not_op},
4855f210c2aSfgsch 
4865f210c2aSfgsch   {"lslq",    0x03c0, 0x0C20,		  "c,R",     0, SIZE_NONE,     0,
4875f210c2aSfgsch    cris_dstep_logshift_mstep_neg_not_op},
4885f210c2aSfgsch 
4895f210c2aSfgsch   {"lsr",     0x07C0, 0x0800,		  "m r,R",   0, SIZE_NONE,     0,
4905f210c2aSfgsch    cris_dstep_logshift_mstep_neg_not_op},
4915f210c2aSfgsch 
4925f210c2aSfgsch   {"lsrq",    0x03e0, 0x0C00,		  "c,R",     0, SIZE_NONE,     0,
4935f210c2aSfgsch    cris_dstep_logshift_mstep_neg_not_op},
4945f210c2aSfgsch 
4955f210c2aSfgsch   {"lz",      0x0730, 0x08C0,		  "r,R",     0, SIZE_NONE,
4965f210c2aSfgsch    cris_ver_v3p,
4975f210c2aSfgsch    cris_not_implemented_op},
4985f210c2aSfgsch 
4995f210c2aSfgsch   {"move",    0x0640, 0x0980,		  "m r,R",   0, SIZE_NONE,     0,
5005f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
5015f210c2aSfgsch 
5025f210c2aSfgsch   {"move",    0x0630, 0x09c0,		  "r,P",     0, SIZE_NONE,     0,
5035f210c2aSfgsch    cris_move_to_preg_op},
5045f210c2aSfgsch 
5055f210c2aSfgsch   {"move",    0x0670, 0x0980,		  "P,r",     0, SIZE_NONE,     0,
5065f210c2aSfgsch    cris_reg_mode_move_from_preg_op},
5075f210c2aSfgsch 
5085f210c2aSfgsch   {"move",    0x0BC0, 0x0000,		  "m R,y",   0, SIZE_FIELD,    0,
5095f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
5105f210c2aSfgsch 
5115f210c2aSfgsch   {"move",    0x0BC0, 0x0000,		  "m D,S",   0, SIZE_NONE,     0,
5125f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
5135f210c2aSfgsch 
5145f210c2aSfgsch   {"move",    0x0A40, 0x0180,		  "m s,R",   0, SIZE_FIELD,    0,
5155f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
5165f210c2aSfgsch 
5175f210c2aSfgsch   {"move",    0x0A40, 0x0180,		  "m S,D",   0, SIZE_NONE,     0,
5185f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
5195f210c2aSfgsch 
5205f210c2aSfgsch   {"move",    0x0A30, 0x01c0,		  "s,P",     0, SIZE_SPEC_REG, 0,
5215f210c2aSfgsch    cris_move_to_preg_op},
5225f210c2aSfgsch 
5235f210c2aSfgsch   {"move",    0x0A30, 0x01c0,		  "S,P",     0, SIZE_NONE,     0,
5245f210c2aSfgsch    cris_move_to_preg_op},
5255f210c2aSfgsch 
5265f210c2aSfgsch   {"move",    0x0A70, 0x0180,		  "P,y",     0, SIZE_SPEC_REG, 0,
5275f210c2aSfgsch    cris_none_reg_mode_move_from_preg_op},
5285f210c2aSfgsch 
5295f210c2aSfgsch   {"move",    0x0A70, 0x0180,		  "P,S",     0, SIZE_NONE,     0,
5305f210c2aSfgsch    cris_none_reg_mode_move_from_preg_op},
5315f210c2aSfgsch 
5325f210c2aSfgsch   {"movem",   0x0BF0, 0x0000,		  "R,y",     0, SIZE_FIX_32,   0,
5335f210c2aSfgsch    cris_move_reg_to_mem_movem_op},
5345f210c2aSfgsch 
5355f210c2aSfgsch   {"movem",   0x0BF0, 0x0000,		  "D,S",     0, SIZE_NONE,     0,
5365f210c2aSfgsch    cris_move_reg_to_mem_movem_op},
5375f210c2aSfgsch 
5385f210c2aSfgsch   {"movem",   0x0BB0, 0x0040,		  "s,R",     0, SIZE_FIX_32,   0,
5395f210c2aSfgsch    cris_move_mem_to_reg_movem_op},
5405f210c2aSfgsch 
5415f210c2aSfgsch   {"movem",   0x0BB0, 0x0040,		  "S,D",     0, SIZE_NONE,     0,
5425f210c2aSfgsch    cris_move_mem_to_reg_movem_op},
5435f210c2aSfgsch 
5445f210c2aSfgsch   {"moveq",   0x0240, 0x0D80,		  "i,R",     0, SIZE_NONE,     0,
5455f210c2aSfgsch    cris_quick_mode_and_cmp_move_or_op},
5465f210c2aSfgsch 
5475f210c2aSfgsch   {"movs",    0x0460, 0x0B80,		  "z r,R",   0, SIZE_NONE,     0,
5485f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
5495f210c2aSfgsch 
5505f210c2aSfgsch   {"movs",    0x0860, 0x0380,		  "z s,R",   0, SIZE_FIELD,    0,
5515f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
5525f210c2aSfgsch 
5535f210c2aSfgsch   {"movs",    0x0860, 0x0380,		  "z S,D",   0, SIZE_NONE,     0,
5545f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
5555f210c2aSfgsch 
5565f210c2aSfgsch   {"movu",    0x0440, 0x0Ba0,		  "z r,R",   0, SIZE_NONE,     0,
5575f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
5585f210c2aSfgsch 
5595f210c2aSfgsch   {"movu",    0x0840, 0x03a0,		  "z s,R",   0, SIZE_FIELD,    0,
5605f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
5615f210c2aSfgsch 
5625f210c2aSfgsch   {"movu",    0x0840, 0x03a0,		  "z S,D",   0, SIZE_NONE,     0,
5635f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
5645f210c2aSfgsch 
5655f210c2aSfgsch   {"mstep",   0x07f0, 0x0800,		  "r,R",     0, SIZE_NONE,     0,
5665f210c2aSfgsch    cris_dstep_logshift_mstep_neg_not_op},
5675f210c2aSfgsch 
5685f210c2aSfgsch   {"muls",    0x0d00, 0x02c0,		  "m r,R",   0, SIZE_NONE,
5695f210c2aSfgsch    cris_ver_v10p,
5705f210c2aSfgsch    cris_muls_op},
5715f210c2aSfgsch 
5725f210c2aSfgsch   {"mulu",    0x0900, 0x06c0,		  "m r,R",   0, SIZE_NONE,
5735f210c2aSfgsch    cris_ver_v10p,
5745f210c2aSfgsch    cris_mulu_op},
5755f210c2aSfgsch 
5765f210c2aSfgsch   {"neg",     0x0580, 0x0A40,		  "m r,R",   0, SIZE_NONE,     0,
5775f210c2aSfgsch    cris_dstep_logshift_mstep_neg_not_op},
5785f210c2aSfgsch 
5795f210c2aSfgsch   {"nop",     NOP_OPCODE, NOP_Z_BITS,	  "",	     0, SIZE_NONE,     0,
5805f210c2aSfgsch    cris_btst_nop_op},
5815f210c2aSfgsch 
5825f210c2aSfgsch   {"not",     0x8770, 0x7880,		  "r",	     0, SIZE_NONE,     0,
5835f210c2aSfgsch    cris_dstep_logshift_mstep_neg_not_op},
5845f210c2aSfgsch 
5855f210c2aSfgsch   {"or",      0x0740, 0x0880,		  "m r,R",   0, SIZE_NONE,     0,
5865f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
5875f210c2aSfgsch 
5885f210c2aSfgsch   {"or",      0x0B40, 0x0080,		  "m s,R",   0, SIZE_FIELD,    0,
5895f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
5905f210c2aSfgsch 
5915f210c2aSfgsch   {"or",      0x0B40, 0x0080,		  "m S,D",   0, SIZE_NONE,     0,
5925f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
5935f210c2aSfgsch 
5945f210c2aSfgsch   {"or",      0x0B40, 0x0480,		  "m S,R,r", 0, SIZE_NONE,     0,
5955f210c2aSfgsch    cris_three_operand_add_sub_cmp_and_or_op},
5965f210c2aSfgsch 
5975f210c2aSfgsch   {"orq",     0x0340, 0x0C80,		  "i,R",     0, SIZE_NONE,     0,
5985f210c2aSfgsch    cris_quick_mode_and_cmp_move_or_op},
5995f210c2aSfgsch 
6005f210c2aSfgsch   {"pop",     0x0E6E, 0x0191,		  "!R",	     0, SIZE_NONE,     0,
6015f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
6025f210c2aSfgsch 
6035f210c2aSfgsch   {"pop",     0x0e3e, 0x01c1,		  "!P",	     0, SIZE_NONE,     0,
6045f210c2aSfgsch    cris_none_reg_mode_move_from_preg_op},
6055f210c2aSfgsch 
6065f210c2aSfgsch   {"push",    0x0FEE, 0x0011,		  "BR",	     0, SIZE_NONE,     0,
6075f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
6085f210c2aSfgsch 
6095f210c2aSfgsch   {"push",    0x0E7E, 0x0181,		  "BP",	     0, SIZE_NONE,     0,
6105f210c2aSfgsch    cris_move_to_preg_op},
6115f210c2aSfgsch 
6125f210c2aSfgsch   {"rbf",     0x3b30, 0xc0c0,		  "y",	     0, SIZE_NONE,
6135f210c2aSfgsch    cris_ver_v10p,
6145f210c2aSfgsch    cris_not_implemented_op},
6155f210c2aSfgsch 
6165f210c2aSfgsch   {"rbf",     0x3b30, 0xc0c0,		  "S",	     0, SIZE_NONE,
6175f210c2aSfgsch    cris_ver_v10p,
6185f210c2aSfgsch    cris_not_implemented_op},
6195f210c2aSfgsch 
6205f210c2aSfgsch   {"ret",     0xB67F, 0x4980,		  "",	     1, SIZE_NONE,     0,
6215f210c2aSfgsch    cris_reg_mode_move_from_preg_op},
6225f210c2aSfgsch 
6235f210c2aSfgsch   {"retb",    0xe67f, 0x1980,		  "",	     1, SIZE_NONE,     0,
6245f210c2aSfgsch    cris_reg_mode_move_from_preg_op},
6255f210c2aSfgsch 
6265f210c2aSfgsch   {"reti",    0xA67F, 0x5980,		  "",	     1, SIZE_NONE,     0,
6275f210c2aSfgsch    cris_reg_mode_move_from_preg_op},
6285f210c2aSfgsch 
6295f210c2aSfgsch   {"sbfs",    0x3b70, 0xc080,		  "y",	     0, SIZE_NONE,
6305f210c2aSfgsch    cris_ver_v10p,
6315f210c2aSfgsch    cris_not_implemented_op},
6325f210c2aSfgsch 
6335f210c2aSfgsch   {"sbfs",    0x3b70, 0xc080,		  "S",	     0, SIZE_NONE,
6345f210c2aSfgsch    cris_ver_v10p,
6355f210c2aSfgsch    cris_not_implemented_op},
6365f210c2aSfgsch 
6375f210c2aSfgsch   {"sa",
6385f210c2aSfgsch    0x0530+CC_A*0x1000,
6395f210c2aSfgsch    0x0AC0+(0xf-CC_A)*0x1000,		  "r",	     0, SIZE_NONE,     0,
6405f210c2aSfgsch    cris_scc_op},
6415f210c2aSfgsch 
6425f210c2aSfgsch   {"scc",
6435f210c2aSfgsch    0x0530+CC_CC*0x1000,
6445f210c2aSfgsch    0x0AC0+(0xf-CC_CC)*0x1000,		  "r",	     0, SIZE_NONE,     0,
6455f210c2aSfgsch    cris_scc_op},
6465f210c2aSfgsch 
6475f210c2aSfgsch   {"scs",
6485f210c2aSfgsch    0x0530+CC_CS*0x1000,
6495f210c2aSfgsch    0x0AC0+(0xf-CC_CS)*0x1000,		  "r",	     0, SIZE_NONE,     0,
6505f210c2aSfgsch    cris_scc_op},
6515f210c2aSfgsch 
6525f210c2aSfgsch   {"seq",
6535f210c2aSfgsch    0x0530+CC_EQ*0x1000,
6545f210c2aSfgsch    0x0AC0+(0xf-CC_EQ)*0x1000,		  "r",	     0, SIZE_NONE,     0,
6555f210c2aSfgsch    cris_scc_op},
6565f210c2aSfgsch 
6575f210c2aSfgsch   {"setf",    0x05b0, 0x0A40,		  "f",	     0, SIZE_NONE,     0,
6585f210c2aSfgsch    cris_ax_ei_setf_op},
6595f210c2aSfgsch 
6605f210c2aSfgsch   /* Need to have "swf" in front of "sext" so it is the one displayed in
6615f210c2aSfgsch      disassembly.  */
6625f210c2aSfgsch   {"swf",
6635f210c2aSfgsch    0x0530+CC_EXT*0x1000,
6645f210c2aSfgsch    0x0AC0+(0xf-CC_EXT)*0x1000,		  "r",	     0, SIZE_NONE,
6655f210c2aSfgsch    cris_ver_v10p,
6665f210c2aSfgsch    cris_scc_op},
6675f210c2aSfgsch 
6685f210c2aSfgsch   {"sext",
6695f210c2aSfgsch    0x0530+CC_EXT*0x1000,
6705f210c2aSfgsch    0x0AC0+(0xf-CC_EXT)*0x1000,		  "r",	     0, SIZE_NONE,
6715f210c2aSfgsch    cris_ver_v0_3,
6725f210c2aSfgsch    cris_scc_op},
6735f210c2aSfgsch 
6745f210c2aSfgsch   {"sge",
6755f210c2aSfgsch    0x0530+CC_GE*0x1000,
6765f210c2aSfgsch    0x0AC0+(0xf-CC_GE)*0x1000,		  "r",	     0, SIZE_NONE,     0,
6775f210c2aSfgsch    cris_scc_op},
6785f210c2aSfgsch 
6795f210c2aSfgsch   {"sgt",
6805f210c2aSfgsch    0x0530+CC_GT*0x1000,
6815f210c2aSfgsch    0x0AC0+(0xf-CC_GT)*0x1000,		  "r",	     0, SIZE_NONE,     0,
6825f210c2aSfgsch    cris_scc_op},
6835f210c2aSfgsch 
6845f210c2aSfgsch   {"shi",
6855f210c2aSfgsch    0x0530+CC_HI*0x1000,
6865f210c2aSfgsch    0x0AC0+(0xf-CC_HI)*0x1000,		  "r",	     0, SIZE_NONE,     0,
6875f210c2aSfgsch    cris_scc_op},
6885f210c2aSfgsch 
6895f210c2aSfgsch   {"shs",
6905f210c2aSfgsch    0x0530+CC_HS*0x1000,
6915f210c2aSfgsch    0x0AC0+(0xf-CC_HS)*0x1000,		  "r",	     0, SIZE_NONE,     0,
6925f210c2aSfgsch    cris_scc_op},
6935f210c2aSfgsch 
6945f210c2aSfgsch   {"sle",
6955f210c2aSfgsch    0x0530+CC_LE*0x1000,
6965f210c2aSfgsch    0x0AC0+(0xf-CC_LE)*0x1000,		  "r",	     0, SIZE_NONE,     0,
6975f210c2aSfgsch    cris_scc_op},
6985f210c2aSfgsch 
6995f210c2aSfgsch   {"slo",
7005f210c2aSfgsch    0x0530+CC_LO*0x1000,
7015f210c2aSfgsch    0x0AC0+(0xf-CC_LO)*0x1000,		  "r",	     0, SIZE_NONE,     0,
7025f210c2aSfgsch    cris_scc_op},
7035f210c2aSfgsch 
7045f210c2aSfgsch   {"sls",
7055f210c2aSfgsch    0x0530+CC_LS*0x1000,
7065f210c2aSfgsch    0x0AC0+(0xf-CC_LS)*0x1000,		  "r",	     0, SIZE_NONE,     0,
7075f210c2aSfgsch    cris_scc_op},
7085f210c2aSfgsch 
7095f210c2aSfgsch   {"slt",
7105f210c2aSfgsch    0x0530+CC_LT*0x1000,
7115f210c2aSfgsch    0x0AC0+(0xf-CC_LT)*0x1000,		  "r",	     0, SIZE_NONE,     0,
7125f210c2aSfgsch    cris_scc_op},
7135f210c2aSfgsch 
7145f210c2aSfgsch   {"smi",
7155f210c2aSfgsch    0x0530+CC_MI*0x1000,
7165f210c2aSfgsch    0x0AC0+(0xf-CC_MI)*0x1000,		  "r",	     0, SIZE_NONE,     0,
7175f210c2aSfgsch    cris_scc_op},
7185f210c2aSfgsch 
7195f210c2aSfgsch   {"sne",
7205f210c2aSfgsch    0x0530+CC_NE*0x1000,
7215f210c2aSfgsch    0x0AC0+(0xf-CC_NE)*0x1000,		  "r",	     0, SIZE_NONE,     0,
7225f210c2aSfgsch    cris_scc_op},
7235f210c2aSfgsch 
7245f210c2aSfgsch   {"spl",
7255f210c2aSfgsch    0x0530+CC_PL*0x1000,
7265f210c2aSfgsch    0x0AC0+(0xf-CC_PL)*0x1000,		  "r",	     0, SIZE_NONE,     0,
7275f210c2aSfgsch    cris_scc_op},
7285f210c2aSfgsch 
7295f210c2aSfgsch   {"sub",     0x0680, 0x0940,		  "m r,R",   0, SIZE_NONE,     0,
7305f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
7315f210c2aSfgsch 
7325f210c2aSfgsch   {"sub",     0x0a80, 0x0140,		  "m s,R",   0, SIZE_FIELD,    0,
7335f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
7345f210c2aSfgsch 
7355f210c2aSfgsch   {"sub",     0x0a80, 0x0140,		  "m S,D",   0, SIZE_NONE,     0,
7365f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
7375f210c2aSfgsch 
7385f210c2aSfgsch   {"sub",     0x0a80, 0x0540,		  "m S,R,r", 0, SIZE_NONE,     0,
7395f210c2aSfgsch    cris_three_operand_add_sub_cmp_and_or_op},
7405f210c2aSfgsch 
7415f210c2aSfgsch   {"subq",    0x0280, 0x0d40,		  "I,R",     0, SIZE_NONE,     0,
7425f210c2aSfgsch    cris_quick_mode_add_sub_op},
7435f210c2aSfgsch 
7445f210c2aSfgsch   {"subs",    0x04a0, 0x0b40,		  "z r,R",   0, SIZE_NONE,     0,
7455f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
7465f210c2aSfgsch 
7475f210c2aSfgsch   {"subs",    0x08a0, 0x0340,		  "z s,R",   0, SIZE_FIELD,    0,
7485f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
7495f210c2aSfgsch 
7505f210c2aSfgsch   {"subs",    0x08a0, 0x0340,		  "z S,D",   0, SIZE_NONE,     0,
7515f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
7525f210c2aSfgsch 
7535f210c2aSfgsch   {"subs",    0x08a0, 0x0740,		  "z S,R,r", 0, SIZE_NONE,     0,
7545f210c2aSfgsch    cris_three_operand_add_sub_cmp_and_or_op},
7555f210c2aSfgsch 
7565f210c2aSfgsch   {"subu",    0x0480, 0x0b60,		  "z r,R",   0, SIZE_NONE,     0,
7575f210c2aSfgsch    cris_reg_mode_add_sub_cmp_and_or_move_op},
7585f210c2aSfgsch 
7595f210c2aSfgsch   {"subu",    0x0880, 0x0360,		  "z s,R",   0, SIZE_FIELD,    0,
7605f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
7615f210c2aSfgsch 
7625f210c2aSfgsch   {"subu",    0x0880, 0x0360,		  "z S,D",   0, SIZE_NONE,     0,
7635f210c2aSfgsch    cris_none_reg_mode_add_sub_cmp_and_or_move_op},
7645f210c2aSfgsch 
7655f210c2aSfgsch   {"subu",    0x0880, 0x0760,		  "z S,R,r", 0, SIZE_NONE,     0,
7665f210c2aSfgsch    cris_three_operand_add_sub_cmp_and_or_op},
7675f210c2aSfgsch 
7685f210c2aSfgsch   {"svc",
7695f210c2aSfgsch    0x0530+CC_VC*0x1000,
7705f210c2aSfgsch    0x0AC0+(0xf-CC_VC)*0x1000,		  "r",	     0, SIZE_NONE,     0,
7715f210c2aSfgsch    cris_scc_op},
7725f210c2aSfgsch 
7735f210c2aSfgsch   {"svs",
7745f210c2aSfgsch    0x0530+CC_VS*0x1000,
7755f210c2aSfgsch    0x0AC0+(0xf-CC_VS)*0x1000,		  "r",	     0, SIZE_NONE,     0,
7765f210c2aSfgsch    cris_scc_op},
7775f210c2aSfgsch 
7785f210c2aSfgsch   /* The insn "swapn" is the same as "not" and will be disassembled as
7795f210c2aSfgsch      such, but the swap* family of mnmonics are generally v8-and-higher
7805f210c2aSfgsch      only, so count it in.  */
7815f210c2aSfgsch   {"swapn",   0x8770, 0x7880,		  "r",	     0, SIZE_NONE,
7825f210c2aSfgsch    cris_ver_v8p,
7835f210c2aSfgsch    cris_not_implemented_op},
7845f210c2aSfgsch 
7855f210c2aSfgsch   {"swapw",   0x4770, 0xb880,		  "r",	     0, SIZE_NONE,
7865f210c2aSfgsch    cris_ver_v8p,
7875f210c2aSfgsch    cris_not_implemented_op},
7885f210c2aSfgsch 
7895f210c2aSfgsch   {"swapnw",  0xc770, 0x3880,		  "r",	     0, SIZE_NONE,
7905f210c2aSfgsch    cris_ver_v8p,
7915f210c2aSfgsch    cris_not_implemented_op},
7925f210c2aSfgsch 
7935f210c2aSfgsch   {"swapb",   0x2770, 0xd880,		  "r",	     0, SIZE_NONE,
7945f210c2aSfgsch    cris_ver_v8p,
7955f210c2aSfgsch    cris_not_implemented_op},
7965f210c2aSfgsch 
7975f210c2aSfgsch   {"swapnb",  0xA770, 0x5880,		  "r",	     0, SIZE_NONE,
7985f210c2aSfgsch    cris_ver_v8p,
7995f210c2aSfgsch    cris_not_implemented_op},
8005f210c2aSfgsch 
8015f210c2aSfgsch   {"swapwb",  0x6770, 0x9880,		  "r",	     0, SIZE_NONE,
8025f210c2aSfgsch    cris_ver_v8p,
8035f210c2aSfgsch    cris_not_implemented_op},
8045f210c2aSfgsch 
8055f210c2aSfgsch   {"swapnwb", 0xE770, 0x1880,		  "r",	     0, SIZE_NONE,
8065f210c2aSfgsch    cris_ver_v8p,
8075f210c2aSfgsch    cris_not_implemented_op},
8085f210c2aSfgsch 
8095f210c2aSfgsch   {"swapr",   0x1770, 0xe880,		  "r",	     0, SIZE_NONE,
8105f210c2aSfgsch    cris_ver_v8p,
8115f210c2aSfgsch    cris_not_implemented_op},
8125f210c2aSfgsch 
8135f210c2aSfgsch   {"swapnr",  0x9770, 0x6880,		  "r",	     0, SIZE_NONE,
8145f210c2aSfgsch    cris_ver_v8p,
8155f210c2aSfgsch    cris_not_implemented_op},
8165f210c2aSfgsch 
8175f210c2aSfgsch   {"swapwr",  0x5770, 0xa880,		  "r",	     0, SIZE_NONE,
8185f210c2aSfgsch    cris_ver_v8p,
8195f210c2aSfgsch    cris_not_implemented_op},
8205f210c2aSfgsch 
8215f210c2aSfgsch   {"swapnwr", 0xd770, 0x2880,		  "r",	     0, SIZE_NONE,
8225f210c2aSfgsch    cris_ver_v8p,
8235f210c2aSfgsch    cris_not_implemented_op},
8245f210c2aSfgsch 
8255f210c2aSfgsch   {"swapbr",  0x3770, 0xc880,		  "r",	     0, SIZE_NONE,
8265f210c2aSfgsch    cris_ver_v8p,
8275f210c2aSfgsch    cris_not_implemented_op},
8285f210c2aSfgsch 
8295f210c2aSfgsch   {"swapnbr", 0xb770, 0x4880,		  "r",	     0, SIZE_NONE,
8305f210c2aSfgsch    cris_ver_v8p,
8315f210c2aSfgsch    cris_not_implemented_op},
8325f210c2aSfgsch 
8335f210c2aSfgsch   {"swapwbr", 0x7770, 0x8880,		  "r",	     0, SIZE_NONE,
8345f210c2aSfgsch    cris_ver_v8p,
8355f210c2aSfgsch    cris_not_implemented_op},
8365f210c2aSfgsch 
8375f210c2aSfgsch   {"swapnwbr", 0xf770, 0x0880,		  "r",	     0, SIZE_NONE,
8385f210c2aSfgsch    cris_ver_v8p,
8395f210c2aSfgsch    cris_not_implemented_op},
8405f210c2aSfgsch 
8415f210c2aSfgsch   {"test",    0x0640, 0x0980,		  "m D",     0, SIZE_NONE,     0,
8425f210c2aSfgsch    cris_reg_mode_test_op},
8435f210c2aSfgsch 
8445f210c2aSfgsch   {"test",    0x0b80, 0xf040,		  "m s",     0, SIZE_FIELD,    0,
8455f210c2aSfgsch    cris_none_reg_mode_clear_test_op},
8465f210c2aSfgsch 
8475f210c2aSfgsch   {"test",    0x0b80, 0xf040,		  "m S",     0, SIZE_NONE,     0,
8485f210c2aSfgsch    cris_none_reg_mode_clear_test_op},
8495f210c2aSfgsch 
8505f210c2aSfgsch   {"xor",     0x07B0, 0x0840,		  "r,R",     0, SIZE_NONE,     0,
8515f210c2aSfgsch    cris_xor_op},
8525f210c2aSfgsch 
8535f210c2aSfgsch   {NULL, 0, 0, NULL, 0, 0, 0, cris_not_implemented_op}
8545f210c2aSfgsch };
8555f210c2aSfgsch 
8565f210c2aSfgsch /* Condition-names, indexed by the CC_* numbers as found in cris.h. */
8575f210c2aSfgsch const char * const
8585f210c2aSfgsch cris_cc_strings[] =
8595f210c2aSfgsch {
8605f210c2aSfgsch   "hs",
8615f210c2aSfgsch   "lo",
8625f210c2aSfgsch   "ne",
8635f210c2aSfgsch   "eq",
8645f210c2aSfgsch   "vc",
8655f210c2aSfgsch   "vs",
8665f210c2aSfgsch   "pl",
8675f210c2aSfgsch   "mi",
8685f210c2aSfgsch   "ls",
8695f210c2aSfgsch   "hi",
8705f210c2aSfgsch   "ge",
8715f210c2aSfgsch   "lt",
8725f210c2aSfgsch   "gt",
8735f210c2aSfgsch   "le",
8745f210c2aSfgsch   "a",
8755f210c2aSfgsch   /* In v0, this would be "ext".  */
8765f210c2aSfgsch   "wf",
8775f210c2aSfgsch };
8785f210c2aSfgsch 
8795f210c2aSfgsch 
8805f210c2aSfgsch /*
8815f210c2aSfgsch  * Local variables:
8825f210c2aSfgsch  * eval: (c-set-style "gnu")
8835f210c2aSfgsch  * indent-tabs-mode: t
8845f210c2aSfgsch  * End:
8855f210c2aSfgsch  */
886