(root)/
binutils-2.41/
opcodes/
cris-opc.c
       1  /* cris-opc.c -- Table of opcodes for the CRIS processor.
       2     Copyright (C) 2000-2023 Free Software Foundation, Inc.
       3     Contributed by Axis Communications AB, Lund, Sweden.
       4     Originally written for GAS 1.38.1 by Mikael Asker.
       5     Reorganized by Hans-Peter Nilsson.
       6  
       7     This file is part of the GNU opcodes library.
       8  
       9     This library is free software; you can redistribute it and/or modify
      10     it under the terms of the GNU General Public License as published by
      11     the Free Software Foundation; either version 3, or (at your option)
      12     any later version.
      13  
      14     It is distributed in the hope that it will be useful, but WITHOUT
      15     ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
      16     or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
      17     License for more details.
      18  
      19     You should have received a copy of the GNU General Public License
      20     along with this program; if not, write to the Free Software
      21     Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
      22     MA 02110-1301, USA.  */
      23  
      24  #include "opcode/cris.h"
      25  
      26  #ifndef NULL
      27  #define NULL (0)
      28  #endif
      29  
      30  /* This table isn't used for CRISv32 and the size of immediate operands.  */
      31  const struct cris_spec_reg
      32  cris_spec_regs[] =
      33  {
      34    {"bz",  0,  1, cris_ver_v32p,	   NULL},
      35    {"p0",  0,  1, 0,		   NULL},
      36    {"vr",  1,  1, 0,		   NULL},
      37    {"p1",  1,  1, 0,		   NULL},
      38    {"pid", 2,  1, cris_ver_v32p,    NULL},
      39    {"p2",  2,  1, cris_ver_v32p,	   NULL},
      40    {"p2",  2,  1, cris_ver_warning, NULL},
      41    {"srs", 3,  1, cris_ver_v32p,    NULL},
      42    {"p3",  3,  1, cris_ver_v32p,	   NULL},
      43    {"p3",  3,  1, cris_ver_warning, NULL},
      44    {"wz",  4,  2, cris_ver_v32p,	   NULL},
      45    {"p4",  4,  2, 0,		   NULL},
      46    {"ccr", 5,  2, cris_ver_v0_10,   NULL},
      47    {"exs", 5,  4, cris_ver_v32p,	   NULL},
      48    {"p5",  5,  2, cris_ver_v0_10,   NULL},
      49    {"p5",  5,  4, cris_ver_v32p,	   NULL},
      50    {"dcr0",6,  2, cris_ver_v0_3,	   NULL},
      51    {"eda", 6,  4, cris_ver_v32p,	   NULL},
      52    {"p6",  6,  2, cris_ver_v0_3,	   NULL},
      53    {"p6",  6,  4, cris_ver_v32p,	   NULL},
      54    {"dcr1/mof", 7, 4, cris_ver_v10p,
      55     "Register `dcr1/mof' with ambiguous size specified.  Guessing 4 bytes"},
      56    {"dcr1/mof", 7, 2, cris_ver_v0_3,
      57     "Register `dcr1/mof' with ambiguous size specified.  Guessing 2 bytes"},
      58    {"mof", 7,  4, cris_ver_v10p,	   NULL},
      59    {"dcr1",7,  2, cris_ver_v0_3,	   NULL},
      60    {"p7",  7,  4, cris_ver_v10p,	   NULL},
      61    {"p7",  7,  2, cris_ver_v0_3,	   NULL},
      62    {"dz",  8,  4, cris_ver_v32p,	   NULL},
      63    {"p8",  8,  4, 0,		   NULL},
      64    {"ibr", 9,  4, cris_ver_v0_10,   NULL},
      65    {"ebp", 9,  4, cris_ver_v32p,	   NULL},
      66    {"p9",  9,  4, 0,		   NULL},
      67    {"irp", 10, 4, cris_ver_v0_10,   NULL},
      68    {"erp", 10, 4, cris_ver_v32p,	   NULL},
      69    {"p10", 10, 4, 0,		   NULL},
      70    {"srp", 11, 4, 0,		   NULL},
      71    {"p11", 11, 4, 0,		   NULL},
      72    /* For disassembly use only.  Accept at assembly with a warning.  */
      73    {"bar/dtp0", 12, 4, cris_ver_warning,
      74     "Ambiguous register `bar/dtp0' specified"},
      75    {"nrp", 12, 4, cris_ver_v32p,	   NULL},
      76    {"bar", 12, 4, cris_ver_v8_10,   NULL},
      77    {"dtp0",12, 4, cris_ver_v0_3,	   NULL},
      78    {"p12", 12, 4, 0,		   NULL},
      79    /* For disassembly use only.  Accept at assembly with a warning.  */
      80    {"dccr/dtp1",13, 4, cris_ver_warning,
      81     "Ambiguous register `dccr/dtp1' specified"},
      82    {"ccs", 13, 4, cris_ver_v32p,	   NULL},
      83    {"dccr",13, 4, cris_ver_v8_10,   NULL},
      84    {"dtp1",13, 4, cris_ver_v0_3,	   NULL},
      85    {"p13", 13, 4, 0,		   NULL},
      86    {"brp", 14, 4, cris_ver_v3_10,   NULL},
      87    {"usp", 14, 4, cris_ver_v32p,	   NULL},
      88    {"p14", 14, 4, cris_ver_v3p,	   NULL},
      89    {"usp", 15, 4, cris_ver_v10,	   NULL},
      90    {"spc", 15, 4, cris_ver_v32p,	   NULL},
      91    {"p15", 15, 4, cris_ver_v10p,	   NULL},
      92    {NULL, 0, 0, cris_ver_version_all, NULL}
      93  };
      94  
      95  /* Add version specifiers to this table when necessary.
      96     The (now) regular coding of register names suggests a simpler
      97     implementation.  */
      98  const struct cris_support_reg cris_support_regs[] =
      99  {
     100    {"s0", 0},
     101    {"s1", 1},
     102    {"s2", 2},
     103    {"s3", 3},
     104    {"s4", 4},
     105    {"s5", 5},
     106    {"s6", 6},
     107    {"s7", 7},
     108    {"s8", 8},
     109    {"s9", 9},
     110    {"s10", 10},
     111    {"s11", 11},
     112    {"s12", 12},
     113    {"s13", 13},
     114    {"s14", 14},
     115    {"s15", 15},
     116    {NULL, 0}
     117  };
     118  
     119  /* All CRIS opcodes are 16 bits.
     120  
     121     - The match component is a mask saying which bits must match a
     122       particular opcode in order for an instruction to be an instance
     123       of that opcode.
     124  
     125     - The args component is a string containing characters symbolically
     126       matching the operands of an instruction.  Used for both assembly
     127       and disassembly.
     128  
     129       Operand-matching characters:
     130       [ ] , space
     131          Verbatim.
     132       A	The string "ACR" (case-insensitive).
     133       B	Not really an operand.  It causes a "BDAP -size,SP" prefix to be
     134  	output for the PUSH alias-instructions and recognizes a push-
     135  	prefix at disassembly.  This letter isn't recognized for v32.
     136  	Must be followed by a R or P letter.
     137       !	Non-match pattern, will not match if there's a prefix insn.
     138       b	Non-matching operand, used for branches with 16-bit
     139  	displacement. Only recognized by the disassembler.
     140       c	5-bit unsigned immediate in bits <4:0>.
     141       C	4-bit unsigned immediate in bits <3:0>.
     142       d  At assembly, optionally (as in put other cases before this one)
     143  	".d" or ".D" at the start of the operands, followed by one space
     144  	character.  At disassembly, nothing.
     145       D	General register in bits <15:12> and <3:0>.
     146       f	List of flags in bits <15:12> and <3:0>.
     147       i	6-bit signed immediate in bits <5:0>.
     148       I	6-bit unsigned immediate in bits <5:0>.
     149       M	Size modifier (B, W or D) for CLEAR instructions.
     150       m	Size modifier (B, W or D) in bits <5:4>
     151       N  A 32-bit dword, like in the difference between s and y.
     152          This has no effect on bits in the opcode.  Can also be expressed
     153  	as "[pc+]" in input.
     154       n  As N, but PC-relative (to the start of the instruction).
     155       o	[-128..127] word offset in bits <7:1> and <0>.  Used by 8-bit
     156  	branch instructions.
     157       O	[-128..127] offset in bits <7:0>.  Also matches a comma and a
     158  	general register after the expression, in bits <15:12>.  Used
     159  	only for the BDAP prefix insn (in v32 the ADDOQ insn; same opcode).
     160       P	Special register in bits <15:12>.
     161       p	Indicates that the insn is a prefix insn.  Must be first
     162  	character.
     163       Q  As O, but don't relax; force an 8-bit offset.
     164       R	General register in bits <15:12>.
     165       r	General register in bits <3:0>.
     166       S	Source operand in bit <10> and a prefix; a 3-operand prefix
     167  	without side-effect.
     168       s	Source operand in bits <10> and <3:0>, optionally with a
     169  	side-effect prefix, except [pc] (the name, not R15 as in ACR)
     170  	isn't allowed for v32 and higher.
     171       T  Support register in bits <15:12>.
     172       u  4-bit (PC-relative) unsigned immediate word offset in bits <3:0>.
     173       U  Relaxes to either u or n, instruction is assumed LAPCQ or LAPC.
     174  	Not recognized at disassembly.
     175       x	Register-dot-modifier, for example "r5.w" in bits <15:12> and <5:4>.
     176       y	Like 's' but do not allow an integer at assembly.
     177       Y	The difference s-y; only an integer is allowed.
     178       z	Size modifier (B or W) in bit <4>.  */
     179  
     180  
     181  /* Please note the order of the opcodes in this table is significant.
     182     The assembler requires that all instances of the same mnemonic must
     183     be consecutive.  If they aren't, the assembler might not recognize
     184     them, or may indicate an internal error.
     185  
     186     The disassembler should not normally care about the order of the
     187     opcodes, but will prefer an earlier alternative if the "match-score"
     188     (see cris-dis.c) is computed as equal.
     189  
     190     It should not be significant for proper execution that this table is
     191     in alphabetical order, but please follow that convention for an easy
     192     overview.  */
     193  
     194  const struct cris_opcode
     195  cris_opcodes[] =
     196  {
     197    {"abs",     0x06B0, 0x0940,		  "r,R",     0, SIZE_NONE,     0,
     198     cris_abs_op},
     199  
     200    {"add",     0x0600, 0x09c0,		  "m r,R",   0, SIZE_NONE,     0,
     201     cris_reg_mode_add_sub_cmp_and_or_move_op},
     202  
     203    {"add",     0x0A00, 0x01c0,		  "m s,R",   0, SIZE_FIELD,    0,
     204     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     205  
     206    {"add",     0x0A00, 0x01c0,		  "m S,D",   0, SIZE_NONE,
     207     cris_ver_v0_10,
     208     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     209  
     210    {"add",     0x0a00, 0x05c0,		  "m S,R,r", 0, SIZE_NONE,
     211     cris_ver_v0_10,
     212     cris_three_operand_add_sub_cmp_and_or_op},
     213  
     214    {"add",     0x0A00, 0x01c0,		  "m s,R",   0, SIZE_FIELD,
     215     cris_ver_v32p,
     216     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     217  
     218    {"addc",    0x0570, 0x0A80,		  "r,R",     0, SIZE_FIX_32,
     219     cris_ver_v32p,
     220     cris_not_implemented_op},
     221  
     222    {"addc",    0x09A0, 0x0250,		  "s,R",     0, SIZE_FIX_32,
     223     cris_ver_v32p,
     224     cris_not_implemented_op},
     225  
     226    {"addi",    0x0540, 0x0A80,		  "x,r,A",   0, SIZE_NONE,
     227     cris_ver_v32p,
     228     cris_addi_op},
     229  
     230    {"addi",    0x0500, 0x0Ac0,		  "x,r",     0, SIZE_NONE,     0,
     231     cris_addi_op},
     232  
     233    /* This collates after "addo", but we want to disassemble as "addoq",
     234       not "addo".  */
     235    {"addoq",   0x0100, 0x0E00,		  "Q,A",     0, SIZE_NONE,
     236     cris_ver_v32p,
     237     cris_not_implemented_op},
     238  
     239    {"addo",    0x0940, 0x0280,		  "m s,R,A", 0, SIZE_FIELD_SIGNED,
     240     cris_ver_v32p,
     241     cris_not_implemented_op},
     242  
     243    /* This must be located after the insn above, lest we misinterpret
     244       "addo.b -1,r0,acr" as "addo .b-1,r0,acr".  FIXME: Sounds like a
     245       parser bug.  */
     246    {"addo",   0x0100, 0x0E00,		  "O,A",     0, SIZE_NONE,
     247     cris_ver_v32p,
     248     cris_not_implemented_op},
     249  
     250    {"addq",    0x0200, 0x0Dc0,		  "I,R",     0, SIZE_NONE,     0,
     251     cris_quick_mode_add_sub_op},
     252  
     253    {"adds",    0x0420, 0x0Bc0,		  "z r,R",   0, SIZE_NONE,     0,
     254     cris_reg_mode_add_sub_cmp_and_or_move_op},
     255  
     256    /* FIXME: SIZE_FIELD_SIGNED and all necessary changes.  */
     257    {"adds",    0x0820, 0x03c0,		  "z s,R",   0, SIZE_FIELD,    0,
     258     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     259  
     260    {"adds",    0x0820, 0x03c0,		  "z S,D",   0, SIZE_NONE,
     261     cris_ver_v0_10,
     262     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     263  
     264    {"adds",    0x0820, 0x07c0,		  "z S,R,r", 0, SIZE_NONE,
     265     cris_ver_v0_10,
     266     cris_three_operand_add_sub_cmp_and_or_op},
     267  
     268    {"addu",    0x0400, 0x0be0,		  "z r,R",   0, SIZE_NONE,     0,
     269     cris_reg_mode_add_sub_cmp_and_or_move_op},
     270  
     271    /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes.  */
     272    {"addu",    0x0800, 0x03e0,		  "z s,R",   0, SIZE_FIELD,    0,
     273     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     274  
     275    {"addu",    0x0800, 0x03e0,		  "z S,D",   0, SIZE_NONE,
     276     cris_ver_v0_10,
     277     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     278  
     279    {"addu",    0x0800, 0x07e0,		  "z S,R,r", 0, SIZE_NONE,
     280     cris_ver_v0_10,
     281     cris_three_operand_add_sub_cmp_and_or_op},
     282  
     283    {"and",     0x0700, 0x08C0,		  "m r,R",   0, SIZE_NONE,     0,
     284     cris_reg_mode_add_sub_cmp_and_or_move_op},
     285  
     286    {"and",     0x0B00, 0x00C0,		  "m s,R",   0, SIZE_FIELD,    0,
     287     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     288  
     289    {"and",     0x0B00, 0x00C0,		  "m S,D",   0, SIZE_NONE,
     290     cris_ver_v0_10,
     291     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     292  
     293    {"and",     0x0B00, 0x04C0,		  "m S,R,r", 0, SIZE_NONE,
     294     cris_ver_v0_10,
     295     cris_three_operand_add_sub_cmp_and_or_op},
     296  
     297    {"andq",    0x0300, 0x0CC0,		  "i,R",     0, SIZE_NONE,     0,
     298     cris_quick_mode_and_cmp_move_or_op},
     299  
     300    {"asr",     0x0780, 0x0840,		  "m r,R",   0, SIZE_NONE,     0,
     301     cris_asr_op},
     302  
     303    {"asrq",    0x03a0, 0x0c40,		  "c,R",     0, SIZE_NONE,     0,
     304     cris_asrq_op},
     305  
     306    {"ax",      0x15B0, 0xEA4F,		  "",	     0, SIZE_NONE,     0,
     307     cris_ax_ei_setf_op},
     308  
     309    /* FIXME: Should use branch #defines.  */
     310    {"b",	      0x0dff, 0x0200,		  "b",	     1, SIZE_NONE,     0,
     311     cris_sixteen_bit_offset_branch_op},
     312  
     313    {"ba",
     314     BA_QUICK_OPCODE,
     315     0x0F00+(0xF-CC_A)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     316     cris_eight_bit_offset_branch_op},
     317  
     318    /* Needs to come after the usual "ba o", which might be relaxed to
     319       this one.  */
     320    {"ba",     BA_DWORD_OPCODE,
     321     0xffff & (~BA_DWORD_OPCODE),		  "n",	     0, SIZE_FIX_32,
     322     cris_ver_v32p,
     323     cris_none_reg_mode_jump_op},
     324  
     325    {"bas",     0x0EBF, 0x0140,		  "n,P",     0, SIZE_FIX_32,
     326     cris_ver_v32p,
     327     cris_none_reg_mode_jump_op},
     328  
     329    {"basc",     0x0EFF, 0x0100,		  "n,P",     0, SIZE_FIX_32,
     330     cris_ver_v32p,
     331     cris_none_reg_mode_jump_op},
     332  
     333    {"bcc",
     334     BRANCH_QUICK_OPCODE+CC_CC*0x1000,
     335     0x0f00+(0xF-CC_CC)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     336     cris_eight_bit_offset_branch_op},
     337  
     338    {"bcs",
     339     BRANCH_QUICK_OPCODE+CC_CS*0x1000,
     340     0x0f00+(0xF-CC_CS)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     341     cris_eight_bit_offset_branch_op},
     342  
     343    {"bdap",
     344     BDAP_INDIR_OPCODE, BDAP_INDIR_Z_BITS,  "pm s,R",  0, SIZE_FIELD_SIGNED,
     345     cris_ver_v0_10,
     346     cris_bdap_prefix},
     347  
     348    {"bdap",
     349     BDAP_QUICK_OPCODE, BDAP_QUICK_Z_BITS,  "pO",	     0, SIZE_NONE,
     350     cris_ver_v0_10,
     351     cris_quick_mode_bdap_prefix},
     352  
     353    {"beq",
     354     BRANCH_QUICK_OPCODE+CC_EQ*0x1000,
     355     0x0f00+(0xF-CC_EQ)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     356     cris_eight_bit_offset_branch_op},
     357  
     358    /* This is deliberately put before "bext" to trump it, even though not
     359       in alphabetical order, since we don't do excluding version checks
     360       for v0..v10.  */
     361    {"bwf",
     362     BRANCH_QUICK_OPCODE+CC_EXT*0x1000,
     363     0x0f00+(0xF-CC_EXT)*0x1000,		  "o",	     1, SIZE_NONE,
     364     cris_ver_v10,
     365     cris_eight_bit_offset_branch_op},
     366  
     367    {"bext",
     368     BRANCH_QUICK_OPCODE+CC_EXT*0x1000,
     369     0x0f00+(0xF-CC_EXT)*0x1000,		  "o",	     1, SIZE_NONE,
     370     cris_ver_v0_3,
     371     cris_eight_bit_offset_branch_op},
     372  
     373    {"bge",
     374     BRANCH_QUICK_OPCODE+CC_GE*0x1000,
     375     0x0f00+(0xF-CC_GE)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     376     cris_eight_bit_offset_branch_op},
     377  
     378    {"bgt",
     379     BRANCH_QUICK_OPCODE+CC_GT*0x1000,
     380     0x0f00+(0xF-CC_GT)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     381     cris_eight_bit_offset_branch_op},
     382  
     383    {"bhi",
     384     BRANCH_QUICK_OPCODE+CC_HI*0x1000,
     385     0x0f00+(0xF-CC_HI)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     386     cris_eight_bit_offset_branch_op},
     387  
     388    {"bhs",
     389     BRANCH_QUICK_OPCODE+CC_HS*0x1000,
     390     0x0f00+(0xF-CC_HS)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     391     cris_eight_bit_offset_branch_op},
     392  
     393    {"biap", BIAP_OPCODE, BIAP_Z_BITS,	  "pm r,R",  0, SIZE_NONE,
     394     cris_ver_v0_10,
     395     cris_biap_prefix},
     396  
     397    {"ble",
     398     BRANCH_QUICK_OPCODE+CC_LE*0x1000,
     399     0x0f00+(0xF-CC_LE)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     400     cris_eight_bit_offset_branch_op},
     401  
     402    {"blo",
     403     BRANCH_QUICK_OPCODE+CC_LO*0x1000,
     404     0x0f00+(0xF-CC_LO)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     405     cris_eight_bit_offset_branch_op},
     406  
     407    {"bls",
     408     BRANCH_QUICK_OPCODE+CC_LS*0x1000,
     409     0x0f00+(0xF-CC_LS)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     410     cris_eight_bit_offset_branch_op},
     411  
     412    {"blt",
     413     BRANCH_QUICK_OPCODE+CC_LT*0x1000,
     414     0x0f00+(0xF-CC_LT)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     415     cris_eight_bit_offset_branch_op},
     416  
     417    {"bmi",
     418     BRANCH_QUICK_OPCODE+CC_MI*0x1000,
     419     0x0f00+(0xF-CC_MI)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     420     cris_eight_bit_offset_branch_op},
     421  
     422    {"bmod",    0x0ab0, 0x0140,		  "s,R",     0, SIZE_FIX_32,
     423     cris_ver_sim_v0_10,
     424     cris_not_implemented_op},
     425  
     426    {"bmod",    0x0ab0, 0x0140,		  "S,D",     0, SIZE_NONE,
     427     cris_ver_sim_v0_10,
     428     cris_not_implemented_op},
     429  
     430    {"bmod",    0x0ab0, 0x0540,		  "S,R,r",   0, SIZE_NONE,
     431     cris_ver_sim_v0_10,
     432     cris_not_implemented_op},
     433  
     434    {"bne",
     435     BRANCH_QUICK_OPCODE+CC_NE*0x1000,
     436     0x0f00+(0xF-CC_NE)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     437     cris_eight_bit_offset_branch_op},
     438  
     439    {"bound",   0x05c0, 0x0A00,		  "m r,R",   0, SIZE_NONE,     0,
     440     cris_two_operand_bound_op},
     441    /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes.  */
     442    {"bound",   0x09c0, 0x0200,		  "m s,R",   0, SIZE_FIELD,
     443     cris_ver_v0_10,
     444     cris_two_operand_bound_op},
     445    /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes.  */
     446    {"bound",   0x0dcf, 0x0200,		  "m Y,R",   0, SIZE_FIELD,    0,
     447     cris_two_operand_bound_op},
     448    {"bound",   0x09c0, 0x0200,		  "m S,D",   0, SIZE_NONE,
     449     cris_ver_v0_10,
     450     cris_two_operand_bound_op},
     451    {"bound",   0x09c0, 0x0600,		  "m S,R,r", 0, SIZE_NONE,
     452     cris_ver_v0_10,
     453     cris_three_operand_bound_op},
     454  
     455    {"bpl",
     456     BRANCH_QUICK_OPCODE+CC_PL*0x1000,
     457     0x0f00+(0xF-CC_PL)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     458     cris_eight_bit_offset_branch_op},
     459  
     460    {"break",   0xe930, 0x16c0,		  "C",	     0, SIZE_NONE,
     461     cris_ver_v3p,
     462     cris_break_op},
     463  
     464    {"bsb",
     465     BRANCH_QUICK_OPCODE+CC_EXT*0x1000,
     466     0x0f00+(0xF-CC_EXT)*0x1000,		  "o",	     1, SIZE_NONE,
     467     cris_ver_v32p,
     468     cris_eight_bit_offset_branch_op},
     469  
     470    {"bsr",     0xBEBF, 0x4140,		  "n",	     0, SIZE_FIX_32,
     471     cris_ver_v32p,
     472     cris_none_reg_mode_jump_op},
     473  
     474    {"bsrc",     0xBEFF, 0x4100,		  "n",	     0, SIZE_FIX_32,
     475     cris_ver_v32p,
     476     cris_none_reg_mode_jump_op},
     477  
     478    {"bstore",  0x0af0, 0x0100,		  "s,R",     0, SIZE_FIX_32,
     479     cris_ver_warning,
     480     cris_not_implemented_op},
     481  
     482    {"bstore",  0x0af0, 0x0100,		  "S,D",     0, SIZE_NONE,
     483     cris_ver_warning,
     484     cris_not_implemented_op},
     485  
     486    {"bstore",  0x0af0, 0x0500,		  "S,R,r",   0, SIZE_NONE,
     487     cris_ver_warning,
     488     cris_not_implemented_op},
     489  
     490    {"btst",    0x04F0, 0x0B00,		  "r,R",     0, SIZE_NONE,     0,
     491     cris_btst_nop_op},
     492    {"btstq",   0x0380, 0x0C60,		  "c,R",     0, SIZE_NONE,     0,
     493     cris_btst_nop_op},
     494  
     495    {"bvc",
     496     BRANCH_QUICK_OPCODE+CC_VC*0x1000,
     497     0x0f00+(0xF-CC_VC)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     498     cris_eight_bit_offset_branch_op},
     499  
     500    {"bvs",
     501     BRANCH_QUICK_OPCODE+CC_VS*0x1000,
     502     0x0f00+(0xF-CC_VS)*0x1000,		  "o",	     1, SIZE_NONE,     0,
     503     cris_eight_bit_offset_branch_op},
     504  
     505    {"clear",   0x0670, 0x3980,		  "M r",     0, SIZE_NONE,     0,
     506     cris_reg_mode_clear_op},
     507  
     508    {"clear",   0x0A70, 0x3180,		  "M y",     0, SIZE_NONE,     0,
     509     cris_none_reg_mode_clear_test_op},
     510  
     511    {"clear",   0x0A70, 0x3180,		  "M S",     0, SIZE_NONE,
     512     cris_ver_v0_10,
     513     cris_none_reg_mode_clear_test_op},
     514  
     515    {"clearf",  0x05F0, 0x0A00,		  "f",	     0, SIZE_NONE,     0,
     516     cris_clearf_di_op},
     517  
     518    {"cmp",     0x06C0, 0x0900,		  "m r,R",   0, SIZE_NONE,     0,
     519     cris_reg_mode_add_sub_cmp_and_or_move_op},
     520  
     521    {"cmp",     0x0Ac0, 0x0100,		  "m s,R",   0, SIZE_FIELD,    0,
     522     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     523  
     524    {"cmp",     0x0Ac0, 0x0100,		  "m S,D",   0, SIZE_NONE,
     525     cris_ver_v0_10,
     526     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     527  
     528    {"cmpq",    0x02C0, 0x0D00,		  "i,R",     0, SIZE_NONE,     0,
     529     cris_quick_mode_and_cmp_move_or_op},
     530  
     531    /* FIXME: SIZE_FIELD_SIGNED and all necessary changes.  */
     532    {"cmps",    0x08e0, 0x0300,		  "z s,R",   0, SIZE_FIELD,    0,
     533     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     534  
     535    {"cmps",    0x08e0, 0x0300,		  "z S,D",   0, SIZE_NONE,
     536     cris_ver_v0_10,
     537     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     538  
     539    /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes.  */
     540    {"cmpu",    0x08c0, 0x0320,		  "z s,R" ,  0, SIZE_FIELD,    0,
     541     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     542  
     543    {"cmpu",    0x08c0, 0x0320,		  "z S,D",   0, SIZE_NONE,
     544     cris_ver_v0_10,
     545     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     546  
     547    {"di",      0x25F0, 0xDA0F,		  "",	     0, SIZE_NONE,     0,
     548     cris_clearf_di_op},
     549  
     550    {"dip",     DIP_OPCODE, DIP_Z_BITS,	  "ps",	     0, SIZE_FIX_32,
     551     cris_ver_v0_10,
     552     cris_dip_prefix},
     553  
     554    {"div",     0x0980, 0x0640,		  "m R,r",   0, SIZE_FIELD,    0,
     555     cris_not_implemented_op},
     556  
     557    {"dstep",   0x06f0, 0x0900,		  "r,R",     0, SIZE_NONE,     0,
     558     cris_dstep_logshift_mstep_neg_not_op},
     559  
     560    {"ei",      0x25B0, 0xDA4F,		  "",	     0, SIZE_NONE,     0,
     561     cris_ax_ei_setf_op},
     562  
     563    {"fidxd",    0x0ab0, 0xf540,		  "[r]",     0, SIZE_NONE,
     564     cris_ver_v32p,
     565     cris_not_implemented_op},
     566  
     567    {"fidxi",    0x0d30, 0xF2C0,		  "[r]",     0, SIZE_NONE,
     568     cris_ver_v32p,
     569     cris_not_implemented_op},
     570  
     571    {"ftagd",    0x1AB0, 0xE540,		  "[r]",     0, SIZE_NONE,
     572     cris_ver_v32p,
     573     cris_not_implemented_op},
     574  
     575    {"ftagi",    0x1D30, 0xE2C0,		  "[r]",     0, SIZE_NONE,
     576     cris_ver_v32p,
     577     cris_not_implemented_op},
     578  
     579    {"halt",    0xF930, 0x06CF,		  "",	     0, SIZE_NONE,
     580     cris_ver_v32p,
     581     cris_not_implemented_op},
     582  
     583    {"jas",    0x09B0, 0x0640,		  "r,P",     0, SIZE_NONE,
     584     cris_ver_v32p,
     585     cris_reg_mode_jump_op},
     586  
     587    {"jas",    0x0DBF, 0x0240,		  "N,P",     0, SIZE_FIX_32,
     588     cris_ver_v32p,
     589     cris_reg_mode_jump_op},
     590  
     591    {"jasc",    0x0B30, 0x04C0,		  "r,P",     0, SIZE_NONE,
     592     cris_ver_v32p,
     593     cris_reg_mode_jump_op},
     594  
     595    {"jasc",    0x0F3F, 0x00C0,		  "N,P",     0, SIZE_FIX_32,
     596     cris_ver_v32p,
     597     cris_reg_mode_jump_op},
     598  
     599    {"jbrc",    0x69b0, 0x9640,		  "r",	     0, SIZE_NONE,
     600     cris_ver_v8_10,
     601     cris_reg_mode_jump_op},
     602  
     603    {"jbrc",    0x6930, 0x92c0,		  "s",	     0, SIZE_FIX_32,
     604     cris_ver_v8_10,
     605     cris_none_reg_mode_jump_op},
     606  
     607    {"jbrc",    0x6930, 0x92c0,		  "S",	     0, SIZE_NONE,
     608     cris_ver_v8_10,
     609     cris_none_reg_mode_jump_op},
     610  
     611    {"jir",     0xA9b0, 0x5640,		  "r",	     0, SIZE_NONE,
     612     cris_ver_v8_10,
     613     cris_reg_mode_jump_op},
     614  
     615    {"jir",     0xA930, 0x52c0,		  "s",	     0, SIZE_FIX_32,
     616     cris_ver_v8_10,
     617     cris_none_reg_mode_jump_op},
     618  
     619    {"jir",     0xA930, 0x52c0,		  "S",	     0, SIZE_NONE,
     620     cris_ver_v8_10,
     621     cris_none_reg_mode_jump_op},
     622  
     623    {"jirc",    0x29b0, 0xd640,		  "r",	     0, SIZE_NONE,
     624     cris_ver_v8_10,
     625     cris_reg_mode_jump_op},
     626  
     627    {"jirc",    0x2930, 0xd2c0,		  "s",	     0, SIZE_FIX_32,
     628     cris_ver_v8_10,
     629     cris_none_reg_mode_jump_op},
     630  
     631    {"jirc",    0x2930, 0xd2c0,		  "S",	     0, SIZE_NONE,
     632     cris_ver_v8_10,
     633     cris_none_reg_mode_jump_op},
     634  
     635    {"jsr",     0xB9b0, 0x4640,		  "r",	     0, SIZE_NONE,     0,
     636     cris_reg_mode_jump_op},
     637  
     638    {"jsr",     0xB930, 0x42c0,		  "s",	     0, SIZE_FIX_32,
     639     cris_ver_v0_10,
     640     cris_none_reg_mode_jump_op},
     641  
     642    {"jsr",     0xBDBF, 0x4240,		  "N",	     0, SIZE_FIX_32,
     643     cris_ver_v32p,
     644     cris_none_reg_mode_jump_op},
     645  
     646    {"jsr",     0xB930, 0x42c0,		  "S",	     0, SIZE_NONE,
     647     cris_ver_v0_10,
     648     cris_none_reg_mode_jump_op},
     649  
     650    {"jsrc",    0x39b0, 0xc640,		  "r",	     0, SIZE_NONE,
     651     cris_ver_v8_10,
     652     cris_reg_mode_jump_op},
     653  
     654    {"jsrc",    0x3930, 0xc2c0,		  "s",	     0, SIZE_FIX_32,
     655     cris_ver_v8_10,
     656     cris_none_reg_mode_jump_op},
     657  
     658    {"jsrc",    0x3930, 0xc2c0,		  "S",	     0, SIZE_NONE,
     659     cris_ver_v8_10,
     660     cris_none_reg_mode_jump_op},
     661  
     662    {"jsrc",    0xBB30, 0x44C0,		  "r",       0, SIZE_NONE,
     663     cris_ver_v32p,
     664     cris_reg_mode_jump_op},
     665  
     666    {"jsrc",    0xBF3F, 0x40C0,		  "N",	     0, SIZE_FIX_32,
     667     cris_ver_v32p,
     668     cris_reg_mode_jump_op},
     669  
     670    {"jump",    0x09b0, 0xF640,		  "r",	     0, SIZE_NONE,     0,
     671     cris_reg_mode_jump_op},
     672  
     673    {"jump",
     674     JUMP_INDIR_OPCODE, JUMP_INDIR_Z_BITS,  "s",	     0, SIZE_FIX_32,
     675     cris_ver_v0_10,
     676     cris_none_reg_mode_jump_op},
     677  
     678    {"jump",
     679     JUMP_INDIR_OPCODE, JUMP_INDIR_Z_BITS,  "S",	     0, SIZE_NONE,
     680     cris_ver_v0_10,
     681     cris_none_reg_mode_jump_op},
     682  
     683    {"jump",    0x09F0, 0x060F,		  "P",	     0, SIZE_NONE,
     684     cris_ver_v32p,
     685     cris_none_reg_mode_jump_op},
     686  
     687    {"jump",
     688     JUMP_PC_INCR_OPCODE_V32,
     689     (0xffff & ~JUMP_PC_INCR_OPCODE_V32),	  "N",	     0, SIZE_FIX_32,
     690     cris_ver_v32p,
     691     cris_none_reg_mode_jump_op},
     692  
     693    {"jmpu",    0x8930, 0x72c0,		  "s",	     0, SIZE_FIX_32,
     694     cris_ver_v10,
     695     cris_none_reg_mode_jump_op},
     696  
     697    {"jmpu",    0x8930, 0x72c0,		   "S",	     0, SIZE_NONE,
     698     cris_ver_v10,
     699     cris_none_reg_mode_jump_op},
     700  
     701    {"lapc",    0x0970, 0x0680,		  "U,R",    0, SIZE_NONE,
     702     cris_ver_v32p,
     703     cris_not_implemented_op},
     704  
     705    {"lapc",    0x0D7F, 0x0280,		  "dn,R",    0, SIZE_FIX_32,
     706     cris_ver_v32p,
     707     cris_not_implemented_op},
     708  
     709    {"lapcq",   0x0970, 0x0680,		  "u,R",     0, SIZE_NONE,
     710     cris_ver_v32p,
     711     cris_addi_op},
     712  
     713    {"lsl",     0x04C0, 0x0B00,		  "m r,R",   0, SIZE_NONE,     0,
     714     cris_dstep_logshift_mstep_neg_not_op},
     715  
     716    {"lslq",    0x03c0, 0x0C20,		  "c,R",     0, SIZE_NONE,     0,
     717     cris_dstep_logshift_mstep_neg_not_op},
     718  
     719    {"lsr",     0x07C0, 0x0800,		  "m r,R",   0, SIZE_NONE,     0,
     720     cris_dstep_logshift_mstep_neg_not_op},
     721  
     722    {"lsrq",    0x03e0, 0x0C00,		  "c,R",     0, SIZE_NONE,     0,
     723     cris_dstep_logshift_mstep_neg_not_op},
     724  
     725    {"lz",      0x0730, 0x08C0,		  "r,R",     0, SIZE_NONE,
     726     cris_ver_v3p,
     727     cris_not_implemented_op},
     728  
     729    {"mcp",      0x07f0, 0x0800,		  "P,r",     0, SIZE_NONE,
     730     cris_ver_v32p,
     731     cris_not_implemented_op},
     732  
     733    {"move",    0x0640, 0x0980,		  "m r,R",   0, SIZE_NONE,     0,
     734     cris_reg_mode_add_sub_cmp_and_or_move_op},
     735  
     736    {"move",    0x0A40, 0x0180,		  "m s,R",   0, SIZE_FIELD,    0,
     737     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     738  
     739    {"move",    0x0A40, 0x0180,		  "m S,D",   0, SIZE_NONE,
     740     cris_ver_v0_10,
     741     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     742  
     743    {"move",    0x0630, 0x09c0,		  "r,P",     0, SIZE_NONE,     0,
     744     cris_move_to_preg_op},
     745  
     746    {"move",    0x0670, 0x0980,		  "P,r",     0, SIZE_NONE,     0,
     747     cris_reg_mode_move_from_preg_op},
     748  
     749    {"move",    0x0BC0, 0x0000,		  "m R,y",   0, SIZE_FIELD,    0,
     750     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     751  
     752    {"move",    0x0BC0, 0x0000,		  "m D,S",   0, SIZE_NONE,
     753     cris_ver_v0_10,
     754     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     755  
     756    {"move",
     757     MOVE_M_TO_PREG_OPCODE, MOVE_M_TO_PREG_ZBITS,
     758     "s,P",   0, SIZE_SPEC_REG, 0,
     759     cris_move_to_preg_op},
     760  
     761    {"move",    0x0A30, 0x01c0,		  "S,P",     0, SIZE_NONE,
     762     cris_ver_v0_10,
     763     cris_move_to_preg_op},
     764  
     765    {"move",    0x0A70, 0x0180,		  "P,y",     0, SIZE_SPEC_REG, 0,
     766     cris_none_reg_mode_move_from_preg_op},
     767  
     768    {"move",    0x0A70, 0x0180,		  "P,S",     0, SIZE_NONE,
     769     cris_ver_v0_10,
     770     cris_none_reg_mode_move_from_preg_op},
     771  
     772    {"move",    0x0B70, 0x0480,		  "r,T",     0, SIZE_NONE,
     773     cris_ver_v32p,
     774     cris_not_implemented_op},
     775  
     776    {"move",    0x0F70, 0x0080,		  "T,r",     0, SIZE_NONE,
     777     cris_ver_v32p,
     778     cris_not_implemented_op},
     779  
     780    {"movem",   0x0BF0, 0x0000,		  "R,y",     0, SIZE_FIX_32,   0,
     781     cris_move_reg_to_mem_movem_op},
     782  
     783    {"movem",   0x0BF0, 0x0000,		  "D,S",     0, SIZE_NONE,
     784     cris_ver_v0_10,
     785     cris_move_reg_to_mem_movem_op},
     786  
     787    {"movem",   0x0BB0, 0x0040,		  "s,R",     0, SIZE_FIX_32,   0,
     788     cris_move_mem_to_reg_movem_op},
     789  
     790    {"movem",   0x0BB0, 0x0040,		  "S,D",     0, SIZE_NONE,
     791     cris_ver_v0_10,
     792     cris_move_mem_to_reg_movem_op},
     793  
     794    {"moveq",   0x0240, 0x0D80,		  "i,R",     0, SIZE_NONE,     0,
     795     cris_quick_mode_and_cmp_move_or_op},
     796  
     797    {"movs",    0x0460, 0x0B80,		  "z r,R",   0, SIZE_NONE,     0,
     798     cris_reg_mode_add_sub_cmp_and_or_move_op},
     799  
     800    /* FIXME: SIZE_FIELD_SIGNED and all necessary changes.  */
     801    {"movs",    0x0860, 0x0380,		  "z s,R",   0, SIZE_FIELD,    0,
     802     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     803  
     804    {"movs",    0x0860, 0x0380,		  "z S,D",   0, SIZE_NONE,
     805     cris_ver_v0_10,
     806     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     807  
     808    {"movu",    0x0440, 0x0Ba0,		  "z r,R",   0, SIZE_NONE,     0,
     809     cris_reg_mode_add_sub_cmp_and_or_move_op},
     810  
     811    /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes.  */
     812    {"movu",    0x0840, 0x03a0,		  "z s,R",   0, SIZE_FIELD,    0,
     813     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     814  
     815    {"movu",    0x0840, 0x03a0,		  "z S,D",   0, SIZE_NONE,
     816     cris_ver_v0_10,
     817     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     818  
     819    {"mstep",   0x07f0, 0x0800,		  "r,R",     0, SIZE_NONE,
     820     cris_ver_v0_10,
     821     cris_dstep_logshift_mstep_neg_not_op},
     822  
     823    {"muls",    0x0d00, 0x02c0,		  "m r,R",   0, SIZE_NONE,
     824     cris_ver_v10p,
     825     cris_muls_op},
     826  
     827    {"mulu",    0x0900, 0x06c0,		  "m r,R",   0, SIZE_NONE,
     828     cris_ver_v10p,
     829     cris_mulu_op},
     830  
     831    {"neg",     0x0580, 0x0A40,		  "m r,R",   0, SIZE_NONE,     0,
     832     cris_dstep_logshift_mstep_neg_not_op},
     833  
     834    {"nop",     NOP_OPCODE, NOP_Z_BITS,	  "",	     0, SIZE_NONE,
     835     cris_ver_v0_10,
     836     cris_btst_nop_op},
     837  
     838    {"nop",     NOP_OPCODE_V32, NOP_Z_BITS_V32, "",    0, SIZE_NONE,
     839     cris_ver_v32p,
     840     cris_btst_nop_op},
     841  
     842    {"not",     0x8770, 0x7880,		  "r",	     0, SIZE_NONE,     0,
     843     cris_dstep_logshift_mstep_neg_not_op},
     844  
     845    {"or",      0x0740, 0x0880,		  "m r,R",   0, SIZE_NONE,     0,
     846     cris_reg_mode_add_sub_cmp_and_or_move_op},
     847  
     848    {"or",      0x0B40, 0x0080,		  "m s,R",   0, SIZE_FIELD,    0,
     849     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     850  
     851    {"or",      0x0B40, 0x0080,		  "m S,D",   0, SIZE_NONE,
     852     cris_ver_v0_10,
     853     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     854  
     855    {"or",      0x0B40, 0x0480,		  "m S,R,r", 0, SIZE_NONE,
     856     cris_ver_v0_10,
     857     cris_three_operand_add_sub_cmp_and_or_op},
     858  
     859    {"orq",     0x0340, 0x0C80,		  "i,R",     0, SIZE_NONE,     0,
     860     cris_quick_mode_and_cmp_move_or_op},
     861  
     862    {"pop",     0x0E6E, 0x0191,		  "!R",	     0, SIZE_NONE,
     863     cris_ver_v0_10,
     864     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     865  
     866    {"pop",     0x0e3e, 0x01c1,		  "!P",	     0, SIZE_NONE,
     867     cris_ver_v0_10,
     868     cris_none_reg_mode_move_from_preg_op},
     869  
     870    {"push",    0x0FEE, 0x0011,		  "BR",	     0, SIZE_NONE,
     871     cris_ver_v0_10,
     872     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
     873  
     874    {"push",    0x0E7E, 0x0181,		  "BP",	     0, SIZE_NONE,
     875     cris_ver_v0_10,
     876     cris_move_to_preg_op},
     877  
     878    {"rbf",     0x3b30, 0xc0c0,		  "y",	     0, SIZE_NONE,
     879     cris_ver_v10,
     880     cris_not_implemented_op},
     881  
     882    {"rbf",     0x3b30, 0xc0c0,		  "S",	     0, SIZE_NONE,
     883     cris_ver_v10,
     884     cris_not_implemented_op},
     885  
     886    {"rfe",     0x2930, 0xD6CF,		  "",	     0, SIZE_NONE,
     887     cris_ver_v32p,
     888     cris_not_implemented_op},
     889  
     890    {"rfg",     0x4930, 0xB6CF,		  "",	     0, SIZE_NONE,
     891     cris_ver_v32p,
     892     cris_not_implemented_op},
     893  
     894    {"rfn",     0x5930, 0xA6CF,		  "",	     0, SIZE_NONE,
     895     cris_ver_v32p,
     896     cris_not_implemented_op},
     897  
     898    {"ret",     0xB67F, 0x4980,		  "",	     1, SIZE_NONE,
     899     cris_ver_v0_10,
     900     cris_reg_mode_move_from_preg_op},
     901  
     902    {"ret",     0xB9F0, 0x460F,		  "",	     1, SIZE_NONE,
     903     cris_ver_v32p,
     904     cris_reg_mode_move_from_preg_op},
     905  
     906    {"retb",    0xe67f, 0x1980,		  "",	     1, SIZE_NONE,
     907     cris_ver_v0_10,
     908     cris_reg_mode_move_from_preg_op},
     909  
     910    {"rete",     0xA9F0, 0x560F,		  "",	     1, SIZE_NONE,
     911     cris_ver_v32p,
     912     cris_reg_mode_move_from_preg_op},
     913  
     914    {"reti",    0xA67F, 0x5980,		  "",	     1, SIZE_NONE,
     915     cris_ver_v0_10,
     916     cris_reg_mode_move_from_preg_op},
     917  
     918    {"retn",     0xC9F0, 0x360F,		  "",	     1, SIZE_NONE,
     919     cris_ver_v32p,
     920     cris_reg_mode_move_from_preg_op},
     921  
     922    {"sbfs",    0x3b70, 0xc080,		  "y",	     0, SIZE_NONE,
     923     cris_ver_v10,
     924     cris_not_implemented_op},
     925  
     926    {"sbfs",    0x3b70, 0xc080,		  "S",	     0, SIZE_NONE,
     927     cris_ver_v10,
     928     cris_not_implemented_op},
     929  
     930    {"sa",
     931     0x0530+CC_A*0x1000,
     932     0x0AC0+(0xf-CC_A)*0x1000,		  "r",	     0, SIZE_NONE,     0,
     933     cris_scc_op},
     934  
     935    {"ssb",
     936     0x0530+CC_EXT*0x1000,
     937     0x0AC0+(0xf-CC_EXT)*0x1000,		  "r",	     0, SIZE_NONE,
     938     cris_ver_v32p,
     939     cris_scc_op},
     940  
     941    {"scc",
     942     0x0530+CC_CC*0x1000,
     943     0x0AC0+(0xf-CC_CC)*0x1000,		  "r",	     0, SIZE_NONE,     0,
     944     cris_scc_op},
     945  
     946    {"scs",
     947     0x0530+CC_CS*0x1000,
     948     0x0AC0+(0xf-CC_CS)*0x1000,		  "r",	     0, SIZE_NONE,     0,
     949     cris_scc_op},
     950  
     951    {"seq",
     952     0x0530+CC_EQ*0x1000,
     953     0x0AC0+(0xf-CC_EQ)*0x1000,		  "r",	     0, SIZE_NONE,     0,
     954     cris_scc_op},
     955  
     956    {"setf",    0x05b0, 0x0A40,		  "f",	     0, SIZE_NONE,     0,
     957     cris_ax_ei_setf_op},
     958  
     959    {"sfe",    0x3930, 0xC6CF,		  "",	     0, SIZE_NONE,
     960     cris_ver_v32p,
     961     cris_not_implemented_op},
     962  
     963    /* Need to have "swf" in front of "sext" so it is the one displayed in
     964       disassembly.  */
     965    {"swf",
     966     0x0530+CC_EXT*0x1000,
     967     0x0AC0+(0xf-CC_EXT)*0x1000,		  "r",	     0, SIZE_NONE,
     968     cris_ver_v10,
     969     cris_scc_op},
     970  
     971    {"sext",
     972     0x0530+CC_EXT*0x1000,
     973     0x0AC0+(0xf-CC_EXT)*0x1000,		  "r",	     0, SIZE_NONE,
     974     cris_ver_v0_3,
     975     cris_scc_op},
     976  
     977    {"sge",
     978     0x0530+CC_GE*0x1000,
     979     0x0AC0+(0xf-CC_GE)*0x1000,		  "r",	     0, SIZE_NONE,     0,
     980     cris_scc_op},
     981  
     982    {"sgt",
     983     0x0530+CC_GT*0x1000,
     984     0x0AC0+(0xf-CC_GT)*0x1000,		  "r",	     0, SIZE_NONE,     0,
     985     cris_scc_op},
     986  
     987    {"shi",
     988     0x0530+CC_HI*0x1000,
     989     0x0AC0+(0xf-CC_HI)*0x1000,		  "r",	     0, SIZE_NONE,     0,
     990     cris_scc_op},
     991  
     992    {"shs",
     993     0x0530+CC_HS*0x1000,
     994     0x0AC0+(0xf-CC_HS)*0x1000,		  "r",	     0, SIZE_NONE,     0,
     995     cris_scc_op},
     996  
     997    {"sle",
     998     0x0530+CC_LE*0x1000,
     999     0x0AC0+(0xf-CC_LE)*0x1000,		  "r",	     0, SIZE_NONE,     0,
    1000     cris_scc_op},
    1001  
    1002    {"slo",
    1003     0x0530+CC_LO*0x1000,
    1004     0x0AC0+(0xf-CC_LO)*0x1000,		  "r",	     0, SIZE_NONE,     0,
    1005     cris_scc_op},
    1006  
    1007    {"sls",
    1008     0x0530+CC_LS*0x1000,
    1009     0x0AC0+(0xf-CC_LS)*0x1000,		  "r",	     0, SIZE_NONE,     0,
    1010     cris_scc_op},
    1011  
    1012    {"slt",
    1013     0x0530+CC_LT*0x1000,
    1014     0x0AC0+(0xf-CC_LT)*0x1000,		  "r",	     0, SIZE_NONE,     0,
    1015     cris_scc_op},
    1016  
    1017    {"smi",
    1018     0x0530+CC_MI*0x1000,
    1019     0x0AC0+(0xf-CC_MI)*0x1000,		  "r",	     0, SIZE_NONE,     0,
    1020     cris_scc_op},
    1021  
    1022    {"sne",
    1023     0x0530+CC_NE*0x1000,
    1024     0x0AC0+(0xf-CC_NE)*0x1000,		  "r",	     0, SIZE_NONE,     0,
    1025     cris_scc_op},
    1026  
    1027    {"spl",
    1028     0x0530+CC_PL*0x1000,
    1029     0x0AC0+(0xf-CC_PL)*0x1000,		  "r",	     0, SIZE_NONE,     0,
    1030     cris_scc_op},
    1031  
    1032    {"sub",     0x0680, 0x0940,		  "m r,R",   0, SIZE_NONE,     0,
    1033     cris_reg_mode_add_sub_cmp_and_or_move_op},
    1034  
    1035    {"sub",     0x0a80, 0x0140,		  "m s,R",   0, SIZE_FIELD,    0,
    1036     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
    1037  
    1038    {"sub",     0x0a80, 0x0140,		  "m S,D",   0, SIZE_NONE,
    1039     cris_ver_v0_10,
    1040     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
    1041  
    1042    {"sub",     0x0a80, 0x0540,		  "m S,R,r", 0, SIZE_NONE,
    1043     cris_ver_v0_10,
    1044     cris_three_operand_add_sub_cmp_and_or_op},
    1045  
    1046    {"subq",    0x0280, 0x0d40,		  "I,R",     0, SIZE_NONE,     0,
    1047     cris_quick_mode_add_sub_op},
    1048  
    1049    {"subs",    0x04a0, 0x0b40,		  "z r,R",   0, SIZE_NONE,     0,
    1050     cris_reg_mode_add_sub_cmp_and_or_move_op},
    1051  
    1052    /* FIXME: SIZE_FIELD_SIGNED and all necessary changes.  */
    1053    {"subs",    0x08a0, 0x0340,		  "z s,R",   0, SIZE_FIELD,    0,
    1054     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
    1055  
    1056    {"subs",    0x08a0, 0x0340,		  "z S,D",   0, SIZE_NONE,
    1057     cris_ver_v0_10,
    1058     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
    1059  
    1060    {"subs",    0x08a0, 0x0740,		  "z S,R,r", 0, SIZE_NONE,
    1061     cris_ver_v0_10,
    1062     cris_three_operand_add_sub_cmp_and_or_op},
    1063  
    1064    {"subu",    0x0480, 0x0b60,		  "z r,R",   0, SIZE_NONE,     0,
    1065     cris_reg_mode_add_sub_cmp_and_or_move_op},
    1066  
    1067    /* FIXME: SIZE_FIELD_UNSIGNED and all necessary changes.  */
    1068    {"subu",    0x0880, 0x0360,		  "z s,R",   0, SIZE_FIELD,    0,
    1069     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
    1070  
    1071    {"subu",    0x0880, 0x0360,		  "z S,D",   0, SIZE_NONE,
    1072     cris_ver_v0_10,
    1073     cris_none_reg_mode_add_sub_cmp_and_or_move_op},
    1074  
    1075    {"subu",    0x0880, 0x0760,		  "z S,R,r", 0, SIZE_NONE,
    1076     cris_ver_v0_10,
    1077     cris_three_operand_add_sub_cmp_and_or_op},
    1078  
    1079    {"svc",
    1080     0x0530+CC_VC*0x1000,
    1081     0x0AC0+(0xf-CC_VC)*0x1000,		  "r",	     0, SIZE_NONE,     0,
    1082     cris_scc_op},
    1083  
    1084    {"svs",
    1085     0x0530+CC_VS*0x1000,
    1086     0x0AC0+(0xf-CC_VS)*0x1000,		  "r",	     0, SIZE_NONE,     0,
    1087     cris_scc_op},
    1088  
    1089    /* The insn "swapn" is the same as "not" and will be disassembled as
    1090       such, but the swap* family of mnmonics are generally v8-and-higher
    1091       only, so count it in.  */
    1092    {"swapn",   0x8770, 0x7880,		  "r",	     0, SIZE_NONE,
    1093     cris_ver_v8p,
    1094     cris_not_implemented_op},
    1095  
    1096    {"swapw",   0x4770, 0xb880,		  "r",	     0, SIZE_NONE,
    1097     cris_ver_v8p,
    1098     cris_not_implemented_op},
    1099  
    1100    {"swapnw",  0xc770, 0x3880,		  "r",	     0, SIZE_NONE,
    1101     cris_ver_v8p,
    1102     cris_not_implemented_op},
    1103  
    1104    {"swapb",   0x2770, 0xd880,		  "r",	     0, SIZE_NONE,
    1105     cris_ver_v8p,
    1106     cris_not_implemented_op},
    1107  
    1108    {"swapnb",  0xA770, 0x5880,		  "r",	     0, SIZE_NONE,
    1109     cris_ver_v8p,
    1110     cris_not_implemented_op},
    1111  
    1112    {"swapwb",  0x6770, 0x9880,		  "r",	     0, SIZE_NONE,
    1113     cris_ver_v8p,
    1114     cris_not_implemented_op},
    1115  
    1116    {"swapnwb", 0xE770, 0x1880,		  "r",	     0, SIZE_NONE,
    1117     cris_ver_v8p,
    1118     cris_not_implemented_op},
    1119  
    1120    {"swapr",   0x1770, 0xe880,		  "r",	     0, SIZE_NONE,
    1121     cris_ver_v8p,
    1122     cris_not_implemented_op},
    1123  
    1124    {"swapnr",  0x9770, 0x6880,		  "r",	     0, SIZE_NONE,
    1125     cris_ver_v8p,
    1126     cris_not_implemented_op},
    1127  
    1128    {"swapwr",  0x5770, 0xa880,		  "r",	     0, SIZE_NONE,
    1129     cris_ver_v8p,
    1130     cris_not_implemented_op},
    1131  
    1132    {"swapnwr", 0xd770, 0x2880,		  "r",	     0, SIZE_NONE,
    1133     cris_ver_v8p,
    1134     cris_not_implemented_op},
    1135  
    1136    {"swapbr",  0x3770, 0xc880,		  "r",	     0, SIZE_NONE,
    1137     cris_ver_v8p,
    1138     cris_not_implemented_op},
    1139  
    1140    {"swapnbr", 0xb770, 0x4880,		  "r",	     0, SIZE_NONE,
    1141     cris_ver_v8p,
    1142     cris_not_implemented_op},
    1143  
    1144    {"swapwbr", 0x7770, 0x8880,		  "r",	     0, SIZE_NONE,
    1145     cris_ver_v8p,
    1146     cris_not_implemented_op},
    1147  
    1148    {"swapnwbr", 0xf770, 0x0880,		  "r",	     0, SIZE_NONE,
    1149     cris_ver_v8p,
    1150     cris_not_implemented_op},
    1151  
    1152    {"test",    0x0640, 0x0980,		  "m D",     0, SIZE_NONE,
    1153     cris_ver_v0_10,
    1154     cris_reg_mode_test_op},
    1155  
    1156    {"test",    0x0b80, 0xf040,		  "m y",     0, SIZE_FIELD,    0,
    1157     cris_none_reg_mode_clear_test_op},
    1158  
    1159    {"test",    0x0b80, 0xf040,		  "m S",     0, SIZE_NONE,
    1160     cris_ver_v0_10,
    1161     cris_none_reg_mode_clear_test_op},
    1162  
    1163    {"xor",     0x07B0, 0x0840,		  "r,R",     0, SIZE_NONE,     0,
    1164     cris_xor_op},
    1165  
    1166    {NULL, 0, 0, NULL, 0, 0, 0, cris_not_implemented_op}
    1167  };
    1168  
    1169  /* Condition-names, indexed by the CC_* numbers as found in cris.h. */
    1170  const char * const
    1171  cris_cc_strings[] =
    1172  {
    1173    "hs",
    1174    "lo",
    1175    "ne",
    1176    "eq",
    1177    "vc",
    1178    "vs",
    1179    "pl",
    1180    "mi",
    1181    "ls",
    1182    "hi",
    1183    "ge",
    1184    "lt",
    1185    "gt",
    1186    "le",
    1187    "a",
    1188    /* This is a placeholder.  In v0, this would be "ext".  In v32, this
    1189       is "sb".  See cris_conds15.  */
    1190    "wf"
    1191  };
    1192  
    1193  /* Different names and semantics for condition 1111 (0xf).  */
    1194  const struct cris_cond15 cris_cond15s[] =
    1195  {
    1196    /* FIXME: In what version did condition "ext" disappear?  */
    1197    {"ext", cris_ver_v0_3},
    1198    {"wf", cris_ver_v10},
    1199    {"sb", cris_ver_v32p},
    1200    {NULL, 0}
    1201  };
    1202  
    1203  
    1204  /*
    1205   * Local variables:
    1206   * eval: (c-set-style "gnu")
    1207   * indent-tabs-mode: t
    1208   * End:
    1209   */