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