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