1/* Instruction opcode table for xc16x.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5Copyright 1996-2007 Free Software Foundation, Inc.
6
7This file is part of the GNU Binutils and/or GDB, the GNU debugger.
8
9   This file is free software; you can redistribute it and/or modify
10   it under the terms of the GNU General Public License as published by
11   the Free Software Foundation; either version 3, or (at your option)
12   any later version.
13
14   It is distributed in the hope that it will be useful, but WITHOUT
15   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
17   License for more details.
18
19   You should have received a copy of the GNU General Public License along
20   with this program; if not, write to the Free Software Foundation, Inc.,
21   51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
22
23*/
24
25#include "sysdep.h"
26#include "ansidecl.h"
27#include "bfd.h"
28#include "symcat.h"
29#include "xc16x-desc.h"
30#include "xc16x-opc.h"
31#include "libiberty.h"
32
33/* -- opc.c */
34
35/* -- */
36/* The hash functions are recorded here to help keep assembler code out of
37   the disassembler and vice versa.  */
38
39static int asm_hash_insn_p        (const CGEN_INSN *);
40static unsigned int asm_hash_insn (const char *);
41static int dis_hash_insn_p        (const CGEN_INSN *);
42static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT);
43
44/* Instruction formats.  */
45
46#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
47#define F(f) & xc16x_cgen_ifld_table[XC16X_##f]
48#else
49#define F(f) & xc16x_cgen_ifld_table[XC16X_/**/f]
50#endif
51static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED = {
52  0, 0, 0x0, { { 0 } }
53};
54
55static const CGEN_IFMT ifmt_addrpof ATTRIBUTE_UNUSED = {
56  32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
57};
58
59static const CGEN_IFMT ifmt_addbrpof ATTRIBUTE_UNUSED = {
60  32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REGB8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
61};
62
63static const CGEN_IFMT ifmt_addrpag ATTRIBUTE_UNUSED = {
64  32, 32, 0xff, { { F (F_UIMM16) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
65};
66
67static const CGEN_IFMT ifmt_addbrpag ATTRIBUTE_UNUSED = {
68  32, 32, 0xff, { { F (F_UIMM16) }, { F (F_REGB8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
69};
70
71static const CGEN_IFMT ifmt_addrhpof ATTRIBUTE_UNUSED = {
72  32, 32, 0xff, { { F (F_UIMM16) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
73};
74
75static const CGEN_IFMT ifmt_addrhpof3 ATTRIBUTE_UNUSED = {
76  16, 16, 0x8ff, { { F (F_R1) }, { F (F_OP_BIT1) }, { F (F_UIMM3) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
77};
78
79static const CGEN_IFMT ifmt_addbrhpag3 ATTRIBUTE_UNUSED = {
80  16, 16, 0x8ff, { { F (F_R1) }, { F (F_OP_BIT1) }, { F (F_UIMM3) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
81};
82
83static const CGEN_IFMT ifmt_addrbhpof ATTRIBUTE_UNUSED = {
84  32, 32, 0xff0000ff, { { F (F_OP_BIT8) }, { F (F_UIMM8) }, { F (F_REGB8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
85};
86
87static const CGEN_IFMT ifmt_addr ATTRIBUTE_UNUSED = {
88  16, 16, 0xff, { { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
89};
90
91static const CGEN_IFMT ifmt_addbr ATTRIBUTE_UNUSED = {
92  16, 16, 0xff, { { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
93};
94
95static const CGEN_IFMT ifmt_add2 ATTRIBUTE_UNUSED = {
96  16, 16, 0xcff, { { F (F_R1) }, { F (F_OP_BIT2) }, { F (F_R0) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
97};
98
99static const CGEN_IFMT ifmt_addb2 ATTRIBUTE_UNUSED = {
100  16, 16, 0xcff, { { F (F_R1) }, { F (F_OP_BIT2) }, { F (F_R0) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
101};
102
103static const CGEN_IFMT ifmt_addrm2 ATTRIBUTE_UNUSED = {
104  32, 32, 0xff, { { F (F_MEMGR8) }, { F (F_REGMEM8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
105};
106
107static const CGEN_IFMT ifmt_addrm ATTRIBUTE_UNUSED = {
108  32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
109};
110
111static const CGEN_IFMT ifmt_addbrm2 ATTRIBUTE_UNUSED = {
112  32, 32, 0xff, { { F (F_MEMGR8) }, { F (F_REGMEM8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
113};
114
115static const CGEN_IFMT ifmt_addbrm ATTRIBUTE_UNUSED = {
116  32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REGB8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
117};
118
119static const CGEN_IFMT ifmt_muls ATTRIBUTE_UNUSED = {
120  16, 16, 0xff, { { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
121};
122
123static const CGEN_IFMT ifmt_div ATTRIBUTE_UNUSED = {
124  16, 16, 0xff, { { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
125};
126
127static const CGEN_IFMT ifmt_cpl ATTRIBUTE_UNUSED = {
128  16, 16, 0xfff, { { F (F_R1) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
129};
130
131static const CGEN_IFMT ifmt_cplb ATTRIBUTE_UNUSED = {
132  16, 16, 0xfff, { { F (F_R1) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
133};
134
135static const CGEN_IFMT ifmt_movri ATTRIBUTE_UNUSED = {
136  16, 16, 0xff, { { F (F_UIMM4) }, { F (F_R4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
137};
138
139static const CGEN_IFMT ifmt_movbri ATTRIBUTE_UNUSED = {
140  16, 16, 0xff, { { F (F_UIMM4) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
141};
142
143static const CGEN_IFMT ifmt_movbr2 ATTRIBUTE_UNUSED = {
144  16, 16, 0xff, { { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
145};
146
147static const CGEN_IFMT ifmt_mov9i ATTRIBUTE_UNUSED = {
148  32, 32, 0xff, { { F (F_UIMM16) }, { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
149};
150
151static const CGEN_IFMT ifmt_movb9i ATTRIBUTE_UNUSED = {
152  32, 32, 0xff, { { F (F_UIMM16) }, { F (F_R1) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
153};
154
155static const CGEN_IFMT ifmt_movri11 ATTRIBUTE_UNUSED = {
156  32, 32, 0xf0ff, { { F (F_MEMORY) }, { F (F_OP_LBIT4) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
157};
158
159static const CGEN_IFMT ifmt_movehm5 ATTRIBUTE_UNUSED = {
160  32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REGOFF8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
161};
162
163static const CGEN_IFMT ifmt_movehm6 ATTRIBUTE_UNUSED = {
164  32, 32, 0xff, { { F (F_UIMM16) }, { F (F_REGOFF8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
165};
166
167static const CGEN_IFMT ifmt_movehm7 ATTRIBUTE_UNUSED = {
168  32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_REGOFF8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
169};
170
171static const CGEN_IFMT ifmt_movehm8 ATTRIBUTE_UNUSED = {
172  32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_REGOFF8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
173};
174
175static const CGEN_IFMT ifmt_movehm10 ATTRIBUTE_UNUSED = {
176  32, 32, 0xff0000ff, { { F (F_OP_BIT8) }, { F (F_UIMM8) }, { F (F_REGOFF8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
177};
178
179static const CGEN_IFMT ifmt_movbsrpofm ATTRIBUTE_UNUSED = {
180  32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REGMEM8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
181};
182
183static const CGEN_IFMT ifmt_movbspofmr ATTRIBUTE_UNUSED = {
184  32, 32, 0xff, { { F (F_MEMORY) }, { F (F_REGMEM8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
185};
186
187static const CGEN_IFMT ifmt_jmpa0 ATTRIBUTE_UNUSED = {
188  32, 32, 0x4ff, { { F (F_OFFSET16) }, { F (F_EXTCCODE) }, { F (F_OP_BITONE) }, { F (F_OP_ONEBIT) }, { F (F_OP_1BIT) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
189};
190
191static const CGEN_IFMT ifmt_jmpa_ ATTRIBUTE_UNUSED = {
192  32, 32, 0x5ff, { { F (F_OFFSET16) }, { F (F_EXTCCODE) }, { F (F_OP_BITONE) }, { F (F_OP_ONEBIT) }, { F (F_OP_1BIT) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
193};
194
195static const CGEN_IFMT ifmt_jmpi ATTRIBUTE_UNUSED = {
196  16, 16, 0xff, { { F (F_ICONDCODE) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
197};
198
199static const CGEN_IFMT ifmt_jmpr_nenz ATTRIBUTE_UNUSED = {
200  16, 16, 0xff, { { F (F_REL8) }, { F (F_RCOND) }, { F (F_OP2) }, { 0 } }
201};
202
203static const CGEN_IFMT ifmt_jmpseg ATTRIBUTE_UNUSED = {
204  32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_SEG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
205};
206
207static const CGEN_IFMT ifmt_jmps ATTRIBUTE_UNUSED = {
208  32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_SEG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
209};
210
211static const CGEN_IFMT ifmt_jb ATTRIBUTE_UNUSED = {
212  32, 32, 0xf0000ff, { { F (F_QLOBIT) }, { F (F_QHIBIT) }, { F (F_RELHI8) }, { F (F_REGB8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
213};
214
215static const CGEN_IFMT ifmt_calla0 ATTRIBUTE_UNUSED = {
216  32, 32, 0x6ff, { { F (F_OFFSET16) }, { F (F_EXTCCODE) }, { F (F_OP_2BIT) }, { F (F_OP_1BIT) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
217};
218
219static const CGEN_IFMT ifmt_calla_ ATTRIBUTE_UNUSED = {
220  32, 32, 0x7ff, { { F (F_OFFSET16) }, { F (F_EXTCCODE) }, { F (F_OP_BIT3) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
221};
222
223static const CGEN_IFMT ifmt_callr ATTRIBUTE_UNUSED = {
224  16, 16, 0xff, { { F (F_REL8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
225};
226
227static const CGEN_IFMT ifmt_callseg ATTRIBUTE_UNUSED = {
228  32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_SEG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
229};
230
231static const CGEN_IFMT ifmt_pcall ATTRIBUTE_UNUSED = {
232  32, 32, 0xff, { { F (F_OFFSET16) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
233};
234
235static const CGEN_IFMT ifmt_trap ATTRIBUTE_UNUSED = {
236  16, 16, 0x1ff, { { F (F_UIMM7) }, { F (F_OP_1BIT) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
237};
238
239static const CGEN_IFMT ifmt_ret ATTRIBUTE_UNUSED = {
240  16, 16, 0xff0000ff, { { F (F_OP_BIT8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
241};
242
243static const CGEN_IFMT ifmt_retp ATTRIBUTE_UNUSED = {
244  16, 16, 0xff, { { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
245};
246
247static const CGEN_IFMT ifmt_reti ATTRIBUTE_UNUSED = {
248  16, 16, 0xffff, { { F (F_OP_LBIT4) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
249};
250
251static const CGEN_IFMT ifmt_srstm ATTRIBUTE_UNUSED = {
252  32, 32, 0xffffffff, { { F (F_OP_BIT8) }, { F (F_DATA8) }, { F (F_OP_LBIT4) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
253};
254
255static const CGEN_IFMT ifmt_atomic ATTRIBUTE_UNUSED = {
256  16, 16, 0xcfff, { { F (F_OP_LBIT2) }, { F (F_UIMM2) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
257};
258
259static const CGEN_IFMT ifmt_extp ATTRIBUTE_UNUSED = {
260  16, 16, 0xc0ff, { { F (F_OP_LBIT2) }, { F (F_UIMM2) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
261};
262
263static const CGEN_IFMT ifmt_extp1 ATTRIBUTE_UNUSED = {
264  32, 32, 0xfc00cfff, { { F (F_QLOBIT) }, { F (F_QLOBIT2) }, { F (F_PAGENUM) }, { F (F_OP_LBIT2) }, { F (F_UIMM2) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
265};
266
267static const CGEN_IFMT ifmt_extpg1 ATTRIBUTE_UNUSED = {
268  32, 32, 0xcfff, { { F (F_UIMM16) }, { F (F_OP_LBIT2) }, { F (F_UIMM2) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
269};
270
271static const CGEN_IFMT ifmt_exts1 ATTRIBUTE_UNUSED = {
272  32, 32, 0xff00cfff, { { F (F_OP_BIT8) }, { F (F_SEGNUM8) }, { F (F_OP_LBIT2) }, { F (F_UIMM2) }, { F (F_OP_BIT4) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
273};
274
275static const CGEN_IFMT ifmt_bclr18 ATTRIBUTE_UNUSED = {
276  16, 16, 0xff, { { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
277};
278
279static const CGEN_IFMT ifmt_bclr0 ATTRIBUTE_UNUSED = {
280  16, 16, 0xff, { { F (F_REG8) }, { F (F_QCOND) }, { F (F_OP2) }, { 0 } }
281};
282
283static const CGEN_IFMT ifmt_bmov ATTRIBUTE_UNUSED = {
284  32, 32, 0xff, { { F (F_QLOBIT) }, { F (F_QHIBIT) }, { F (F_REGHI8) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
285};
286
287static const CGEN_IFMT ifmt_bfldl ATTRIBUTE_UNUSED = {
288  32, 32, 0xff, { { F (F_DATAHI8) }, { F (F_MASK8) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
289};
290
291static const CGEN_IFMT ifmt_bfldh ATTRIBUTE_UNUSED = {
292  32, 32, 0xff, { { F (F_DATAHI8) }, { F (F_DATA8) }, { F (F_REG8) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
293};
294
295static const CGEN_IFMT ifmt_cmpri ATTRIBUTE_UNUSED = {
296  16, 16, 0x8ff, { { F (F_R1) }, { F (F_OP_BIT1) }, { F (F_UIMM3) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
297};
298
299static const CGEN_IFMT ifmt_cmpd1ri ATTRIBUTE_UNUSED = {
300  16, 16, 0xff, { { F (F_UIMM4) }, { F (F_R2) }, { F (F_OP1) }, { F (F_OP2) }, { 0 } }
301};
302
303#undef F
304
305#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
306#define A(a) (1 << CGEN_INSN_##a)
307#else
308#define A(a) (1 << CGEN_INSN_/**/a)
309#endif
310#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
311#define OPERAND(op) XC16X_OPERAND_##op
312#else
313#define OPERAND(op) XC16X_OPERAND_/**/op
314#endif
315#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
316#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
317
318/* The instruction table.  */
319
320static const CGEN_OPCODE xc16x_cgen_insn_opcode_table[MAX_INSNS] =
321{
322  /* Special null first entry.
323     A `num' value of zero is thus invalid.
324     Also, the special `invalid' insn resides here.  */
325  { { 0, 0, 0, 0 }, {{0}}, 0, {0}},
326/* add $reg8,$pof$upof16 */
327  {
328    { 0, 0, 0, 0 },
329    { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
330    & ifmt_addrpof, { 0x2 }
331  },
332/* sub $reg8,$pof$upof16 */
333  {
334    { 0, 0, 0, 0 },
335    { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
336    & ifmt_addrpof, { 0x22 }
337  },
338/* addb $regb8,$pof$upof16 */
339  {
340    { 0, 0, 0, 0 },
341    { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
342    & ifmt_addbrpof, { 0x3 }
343  },
344/* subb $regb8,$pof$upof16 */
345  {
346    { 0, 0, 0, 0 },
347    { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
348    & ifmt_addbrpof, { 0x23 }
349  },
350/* add $reg8,$pag$upag16 */
351  {
352    { 0, 0, 0, 0 },
353    { { MNEM, ' ', OP (REG8), ',', OP (PAG), OP (UPAG16), 0 } },
354    & ifmt_addrpag, { 0x2 }
355  },
356/* sub $reg8,$pag$upag16 */
357  {
358    { 0, 0, 0, 0 },
359    { { MNEM, ' ', OP (REG8), ',', OP (PAG), OP (UPAG16), 0 } },
360    & ifmt_addrpag, { 0x22 }
361  },
362/* addb $regb8,$pag$upag16 */
363  {
364    { 0, 0, 0, 0 },
365    { { MNEM, ' ', OP (REGB8), ',', OP (PAG), OP (UPAG16), 0 } },
366    & ifmt_addbrpag, { 0x3 }
367  },
368/* subb $regb8,$pag$upag16 */
369  {
370    { 0, 0, 0, 0 },
371    { { MNEM, ' ', OP (REGB8), ',', OP (PAG), OP (UPAG16), 0 } },
372    & ifmt_addbrpag, { 0x23 }
373  },
374/* addc $reg8,$pof$upof16 */
375  {
376    { 0, 0, 0, 0 },
377    { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
378    & ifmt_addrpof, { 0x12 }
379  },
380/* subc $reg8,$pof$upof16 */
381  {
382    { 0, 0, 0, 0 },
383    { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
384    & ifmt_addrpof, { 0x32 }
385  },
386/* addcb $regb8,$pof$upof16 */
387  {
388    { 0, 0, 0, 0 },
389    { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
390    & ifmt_addbrpof, { 0x13 }
391  },
392/* subcb $regb8,$pof$upof16 */
393  {
394    { 0, 0, 0, 0 },
395    { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
396    & ifmt_addbrpof, { 0x33 }
397  },
398/* addc $reg8,$pag$upag16 */
399  {
400    { 0, 0, 0, 0 },
401    { { MNEM, ' ', OP (REG8), ',', OP (PAG), OP (UPAG16), 0 } },
402    & ifmt_addrpag, { 0x12 }
403  },
404/* subc $reg8,$pag$upag16 */
405  {
406    { 0, 0, 0, 0 },
407    { { MNEM, ' ', OP (REG8), ',', OP (PAG), OP (UPAG16), 0 } },
408    & ifmt_addrpag, { 0x32 }
409  },
410/* addcb $regb8,$pag$upag16 */
411  {
412    { 0, 0, 0, 0 },
413    { { MNEM, ' ', OP (REGB8), ',', OP (PAG), OP (UPAG16), 0 } },
414    & ifmt_addbrpag, { 0x13 }
415  },
416/* subcb $regb8,$pag$upag16 */
417  {
418    { 0, 0, 0, 0 },
419    { { MNEM, ' ', OP (REGB8), ',', OP (PAG), OP (UPAG16), 0 } },
420    & ifmt_addbrpag, { 0x33 }
421  },
422/* add $pof$upof16,$reg8 */
423  {
424    { 0, 0, 0, 0 },
425    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
426    & ifmt_addrpof, { 0x4 }
427  },
428/* sub $pof$upof16,$reg8 */
429  {
430    { 0, 0, 0, 0 },
431    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
432    & ifmt_addrpof, { 0x24 }
433  },
434/* addb $pof$upof16,$regb8 */
435  {
436    { 0, 0, 0, 0 },
437    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
438    & ifmt_addbrpof, { 0x5 }
439  },
440/* subb $pof$upof16,$regb8 */
441  {
442    { 0, 0, 0, 0 },
443    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
444    & ifmt_addbrpof, { 0x25 }
445  },
446/* addc $pof$upof16,$reg8 */
447  {
448    { 0, 0, 0, 0 },
449    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
450    & ifmt_addrpof, { 0x14 }
451  },
452/* subc $pof$upof16,$reg8 */
453  {
454    { 0, 0, 0, 0 },
455    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
456    & ifmt_addrpof, { 0x34 }
457  },
458/* addcb $pof$upof16,$regb8 */
459  {
460    { 0, 0, 0, 0 },
461    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
462    & ifmt_addbrpof, { 0x15 }
463  },
464/* subcb $pof$upof16,$regb8 */
465  {
466    { 0, 0, 0, 0 },
467    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
468    & ifmt_addbrpof, { 0x35 }
469  },
470/* add $reg8,$hash$pof$uimm16 */
471  {
472    { 0, 0, 0, 0 },
473    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (POF), OP (UIMM16), 0 } },
474    & ifmt_addrhpof, { 0x6 }
475  },
476/* sub $reg8,$hash$pof$uimm16 */
477  {
478    { 0, 0, 0, 0 },
479    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (POF), OP (UIMM16), 0 } },
480    & ifmt_addrhpof, { 0x26 }
481  },
482/* add $reg8,$hash$pag$uimm16 */
483  {
484    { 0, 0, 0, 0 },
485    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (PAG), OP (UIMM16), 0 } },
486    & ifmt_addrhpof, { 0x6 }
487  },
488/* sub $reg8,$hash$pag$uimm16 */
489  {
490    { 0, 0, 0, 0 },
491    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (PAG), OP (UIMM16), 0 } },
492    & ifmt_addrhpof, { 0x26 }
493  },
494/* add $dr,$hash$pof$uimm3 */
495  {
496    { 0, 0, 0, 0 },
497    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
498    & ifmt_addrhpof3, { 0x8 }
499  },
500/* sub $dr,$hash$pof$uimm3 */
501  {
502    { 0, 0, 0, 0 },
503    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
504    & ifmt_addrhpof3, { 0x28 }
505  },
506/* addb $drb,$hash$pag$uimm3 */
507  {
508    { 0, 0, 0, 0 },
509    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
510    & ifmt_addbrhpag3, { 0x9 }
511  },
512/* subb $drb,$hash$pag$uimm3 */
513  {
514    { 0, 0, 0, 0 },
515    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
516    & ifmt_addbrhpag3, { 0x29 }
517  },
518/* add $dr,$hash$pag$uimm3 */
519  {
520    { 0, 0, 0, 0 },
521    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
522    & ifmt_addrhpof3, { 0x8 }
523  },
524/* sub $dr,$hash$pag$uimm3 */
525  {
526    { 0, 0, 0, 0 },
527    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
528    & ifmt_addrhpof3, { 0x28 }
529  },
530/* addb $drb,$hash$pof$uimm3 */
531  {
532    { 0, 0, 0, 0 },
533    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
534    & ifmt_addbrhpag3, { 0x9 }
535  },
536/* subb $drb,$hash$pof$uimm3 */
537  {
538    { 0, 0, 0, 0 },
539    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
540    & ifmt_addbrhpag3, { 0x29 }
541  },
542/* addb $regb8,$hash$pof$uimm8 */
543  {
544    { 0, 0, 0, 0 },
545    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (POF), OP (UIMM8), 0 } },
546    & ifmt_addrbhpof, { 0x7 }
547  },
548/* subb $regb8,$hash$pof$uimm8 */
549  {
550    { 0, 0, 0, 0 },
551    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (POF), OP (UIMM8), 0 } },
552    & ifmt_addrbhpof, { 0x27 }
553  },
554/* addb $regb8,$hash$pag$uimm8 */
555  {
556    { 0, 0, 0, 0 },
557    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (PAG), OP (UIMM8), 0 } },
558    & ifmt_addrbhpof, { 0x7 }
559  },
560/* subb $regb8,$hash$pag$uimm8 */
561  {
562    { 0, 0, 0, 0 },
563    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (PAG), OP (UIMM8), 0 } },
564    & ifmt_addrbhpof, { 0x27 }
565  },
566/* addc $reg8,$hash$pof$uimm16 */
567  {
568    { 0, 0, 0, 0 },
569    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (POF), OP (UIMM16), 0 } },
570    & ifmt_addrhpof, { 0x16 }
571  },
572/* subc $reg8,$hash$pof$uimm16 */
573  {
574    { 0, 0, 0, 0 },
575    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (POF), OP (UIMM16), 0 } },
576    & ifmt_addrhpof, { 0x36 }
577  },
578/* addc $reg8,$hash$pag$uimm16 */
579  {
580    { 0, 0, 0, 0 },
581    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (PAG), OP (UIMM16), 0 } },
582    & ifmt_addrhpof, { 0x16 }
583  },
584/* subc $reg8,$hash$pag$uimm16 */
585  {
586    { 0, 0, 0, 0 },
587    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (PAG), OP (UIMM16), 0 } },
588    & ifmt_addrhpof, { 0x36 }
589  },
590/* addc $dr,$hash$pof$uimm3 */
591  {
592    { 0, 0, 0, 0 },
593    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
594    & ifmt_addrhpof3, { 0x18 }
595  },
596/* subc $dr,$hash$pof$uimm3 */
597  {
598    { 0, 0, 0, 0 },
599    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
600    & ifmt_addrhpof3, { 0x38 }
601  },
602/* addcb $drb,$hash$pag$uimm3 */
603  {
604    { 0, 0, 0, 0 },
605    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
606    & ifmt_addbrhpag3, { 0x19 }
607  },
608/* subcb $drb,$hash$pag$uimm3 */
609  {
610    { 0, 0, 0, 0 },
611    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
612    & ifmt_addbrhpag3, { 0x39 }
613  },
614/* addc $dr,$hash$pag$uimm3 */
615  {
616    { 0, 0, 0, 0 },
617    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
618    & ifmt_addrhpof3, { 0x18 }
619  },
620/* subc $dr,$hash$pag$uimm3 */
621  {
622    { 0, 0, 0, 0 },
623    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (PAG), OP (UIMM3), 0 } },
624    & ifmt_addrhpof3, { 0x38 }
625  },
626/* addcb $drb,$hash$pof$uimm3 */
627  {
628    { 0, 0, 0, 0 },
629    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
630    & ifmt_addbrhpag3, { 0x19 }
631  },
632/* subcb $drb,$hash$pof$uimm3 */
633  {
634    { 0, 0, 0, 0 },
635    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (POF), OP (UIMM3), 0 } },
636    & ifmt_addbrhpag3, { 0x39 }
637  },
638/* addcb $regb8,$hash$pof$uimm8 */
639  {
640    { 0, 0, 0, 0 },
641    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (POF), OP (UIMM8), 0 } },
642    & ifmt_addrbhpof, { 0x17 }
643  },
644/* subcb $regb8,$hash$pof$uimm8 */
645  {
646    { 0, 0, 0, 0 },
647    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (POF), OP (UIMM8), 0 } },
648    & ifmt_addrbhpof, { 0x37 }
649  },
650/* addcb $regb8,$hash$pag$uimm8 */
651  {
652    { 0, 0, 0, 0 },
653    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (PAG), OP (UIMM8), 0 } },
654    & ifmt_addrbhpof, { 0x17 }
655  },
656/* subcb $regb8,$hash$pag$uimm8 */
657  {
658    { 0, 0, 0, 0 },
659    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (PAG), OP (UIMM8), 0 } },
660    & ifmt_addrbhpof, { 0x37 }
661  },
662/* add $dr,$hash$uimm3 */
663  {
664    { 0, 0, 0, 0 },
665    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
666    & ifmt_addrhpof3, { 0x8 }
667  },
668/* sub $dr,$hash$uimm3 */
669  {
670    { 0, 0, 0, 0 },
671    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
672    & ifmt_addrhpof3, { 0x28 }
673  },
674/* addb $drb,$hash$uimm3 */
675  {
676    { 0, 0, 0, 0 },
677    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
678    & ifmt_addbrhpag3, { 0x9 }
679  },
680/* subb $drb,$hash$uimm3 */
681  {
682    { 0, 0, 0, 0 },
683    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
684    & ifmt_addbrhpag3, { 0x29 }
685  },
686/* add $reg8,$hash$uimm16 */
687  {
688    { 0, 0, 0, 0 },
689    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
690    & ifmt_addrhpof, { 0x6 }
691  },
692/* sub $reg8,$hash$uimm16 */
693  {
694    { 0, 0, 0, 0 },
695    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
696    & ifmt_addrhpof, { 0x26 }
697  },
698/* addb $regb8,$hash$uimm8 */
699  {
700    { 0, 0, 0, 0 },
701    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
702    & ifmt_addrbhpof, { 0x7 }
703  },
704/* subb $regb8,$hash$uimm8 */
705  {
706    { 0, 0, 0, 0 },
707    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
708    & ifmt_addrbhpof, { 0x27 }
709  },
710/* addc $dr,$hash$uimm3 */
711  {
712    { 0, 0, 0, 0 },
713    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
714    & ifmt_addrhpof3, { 0x18 }
715  },
716/* subc $dr,$hash$uimm3 */
717  {
718    { 0, 0, 0, 0 },
719    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
720    & ifmt_addrhpof3, { 0x38 }
721  },
722/* addcb $drb,$hash$uimm3 */
723  {
724    { 0, 0, 0, 0 },
725    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
726    & ifmt_addbrhpag3, { 0x19 }
727  },
728/* subcb $drb,$hash$uimm3 */
729  {
730    { 0, 0, 0, 0 },
731    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
732    & ifmt_addbrhpag3, { 0x39 }
733  },
734/* addc $reg8,$hash$uimm16 */
735  {
736    { 0, 0, 0, 0 },
737    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
738    & ifmt_addrhpof, { 0x16 }
739  },
740/* subc $reg8,$hash$uimm16 */
741  {
742    { 0, 0, 0, 0 },
743    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
744    & ifmt_addrhpof, { 0x36 }
745  },
746/* addcb $regb8,$hash$uimm8 */
747  {
748    { 0, 0, 0, 0 },
749    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
750    & ifmt_addrbhpof, { 0x17 }
751  },
752/* subcb $regb8,$hash$uimm8 */
753  {
754    { 0, 0, 0, 0 },
755    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
756    & ifmt_addrbhpof, { 0x37 }
757  },
758/* add $dr,$sr */
759  {
760    { 0, 0, 0, 0 },
761    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
762    & ifmt_addr, { 0x0 }
763  },
764/* sub $dr,$sr */
765  {
766    { 0, 0, 0, 0 },
767    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
768    & ifmt_addr, { 0x20 }
769  },
770/* addb $drb,$srb */
771  {
772    { 0, 0, 0, 0 },
773    { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
774    & ifmt_addbr, { 0x1 }
775  },
776/* subb $drb,$srb */
777  {
778    { 0, 0, 0, 0 },
779    { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
780    & ifmt_addbr, { 0x21 }
781  },
782/* add $dr,[$sr2] */
783  {
784    { 0, 0, 0, 0 },
785    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
786    & ifmt_add2, { 0x808 }
787  },
788/* sub $dr,[$sr2] */
789  {
790    { 0, 0, 0, 0 },
791    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
792    & ifmt_add2, { 0x828 }
793  },
794/* addb $drb,[$sr2] */
795  {
796    { 0, 0, 0, 0 },
797    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
798    & ifmt_addb2, { 0x809 }
799  },
800/* subb $drb,[$sr2] */
801  {
802    { 0, 0, 0, 0 },
803    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
804    & ifmt_addb2, { 0x829 }
805  },
806/* add $dr,[$sr2+] */
807  {
808    { 0, 0, 0, 0 },
809    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
810    & ifmt_add2, { 0xc08 }
811  },
812/* sub $dr,[$sr2+] */
813  {
814    { 0, 0, 0, 0 },
815    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
816    & ifmt_add2, { 0xc28 }
817  },
818/* addb $drb,[$sr2+] */
819  {
820    { 0, 0, 0, 0 },
821    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
822    & ifmt_addb2, { 0xc09 }
823  },
824/* subb $drb,[$sr2+] */
825  {
826    { 0, 0, 0, 0 },
827    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
828    & ifmt_addb2, { 0xc29 }
829  },
830/* addc $dr,$sr */
831  {
832    { 0, 0, 0, 0 },
833    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
834    & ifmt_addr, { 0x10 }
835  },
836/* subc $dr,$sr */
837  {
838    { 0, 0, 0, 0 },
839    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
840    & ifmt_addr, { 0x30 }
841  },
842/* addcb $drb,$srb */
843  {
844    { 0, 0, 0, 0 },
845    { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
846    & ifmt_addbr, { 0x11 }
847  },
848/* subcb $drb,$srb */
849  {
850    { 0, 0, 0, 0 },
851    { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
852    & ifmt_addbr, { 0x31 }
853  },
854/* addc $dr,[$sr2] */
855  {
856    { 0, 0, 0, 0 },
857    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
858    & ifmt_add2, { 0x818 }
859  },
860/* subc $dr,[$sr2] */
861  {
862    { 0, 0, 0, 0 },
863    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
864    & ifmt_add2, { 0x838 }
865  },
866/* addcb $drb,[$sr2] */
867  {
868    { 0, 0, 0, 0 },
869    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
870    & ifmt_addb2, { 0x819 }
871  },
872/* subcb $drb,[$sr2] */
873  {
874    { 0, 0, 0, 0 },
875    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
876    & ifmt_addb2, { 0x839 }
877  },
878/* addc $dr,[$sr2+] */
879  {
880    { 0, 0, 0, 0 },
881    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
882    & ifmt_add2, { 0xc18 }
883  },
884/* subc $dr,[$sr2+] */
885  {
886    { 0, 0, 0, 0 },
887    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
888    & ifmt_add2, { 0xc38 }
889  },
890/* addcb $drb,[$sr2+] */
891  {
892    { 0, 0, 0, 0 },
893    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
894    & ifmt_addb2, { 0xc19 }
895  },
896/* subcb $drb,[$sr2+] */
897  {
898    { 0, 0, 0, 0 },
899    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
900    & ifmt_addb2, { 0xc39 }
901  },
902/* add $regmem8,$memgr8 */
903  {
904    { 0, 0, 0, 0 },
905    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
906    & ifmt_addrm2, { 0x2 }
907  },
908/* add $memgr8,$regmem8 */
909  {
910    { 0, 0, 0, 0 },
911    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
912    & ifmt_addrm2, { 0x4 }
913  },
914/* add $reg8,$memory */
915  {
916    { 0, 0, 0, 0 },
917    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
918    & ifmt_addrm, { 0x2 }
919  },
920/* add $memory,$reg8 */
921  {
922    { 0, 0, 0, 0 },
923    { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
924    & ifmt_addrm, { 0x4 }
925  },
926/* sub $regmem8,$memgr8 */
927  {
928    { 0, 0, 0, 0 },
929    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
930    & ifmt_addrm2, { 0x22 }
931  },
932/* sub $memgr8,$regmem8 */
933  {
934    { 0, 0, 0, 0 },
935    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
936    & ifmt_addrm2, { 0x24 }
937  },
938/* sub $reg8,$memory */
939  {
940    { 0, 0, 0, 0 },
941    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
942    & ifmt_addrm, { 0x22 }
943  },
944/* sub $memory,$reg8 */
945  {
946    { 0, 0, 0, 0 },
947    { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
948    & ifmt_addrm, { 0x24 }
949  },
950/* addb $regbmem8,$memgr8 */
951  {
952    { 0, 0, 0, 0 },
953    { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
954    & ifmt_addbrm2, { 0x3 }
955  },
956/* addb $memgr8,$regbmem8 */
957  {
958    { 0, 0, 0, 0 },
959    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
960    & ifmt_addbrm2, { 0x5 }
961  },
962/* addb $regb8,$memory */
963  {
964    { 0, 0, 0, 0 },
965    { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
966    & ifmt_addbrm, { 0x3 }
967  },
968/* addb $memory,$regb8 */
969  {
970    { 0, 0, 0, 0 },
971    { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
972    & ifmt_addbrm, { 0x5 }
973  },
974/* subb $regbmem8,$memgr8 */
975  {
976    { 0, 0, 0, 0 },
977    { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
978    & ifmt_addbrm2, { 0x23 }
979  },
980/* subb $memgr8,$regbmem8 */
981  {
982    { 0, 0, 0, 0 },
983    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
984    & ifmt_addbrm2, { 0x25 }
985  },
986/* subb $regb8,$memory */
987  {
988    { 0, 0, 0, 0 },
989    { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
990    & ifmt_addbrm, { 0x23 }
991  },
992/* subb $memory,$regb8 */
993  {
994    { 0, 0, 0, 0 },
995    { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
996    & ifmt_addbrm, { 0x25 }
997  },
998/* addc $regmem8,$memgr8 */
999  {
1000    { 0, 0, 0, 0 },
1001    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
1002    & ifmt_addrm2, { 0x12 }
1003  },
1004/* addc $memgr8,$regmem8 */
1005  {
1006    { 0, 0, 0, 0 },
1007    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
1008    & ifmt_addrm2, { 0x14 }
1009  },
1010/* addc $reg8,$memory */
1011  {
1012    { 0, 0, 0, 0 },
1013    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
1014    & ifmt_addrm, { 0x12 }
1015  },
1016/* addc $memory,$reg8 */
1017  {
1018    { 0, 0, 0, 0 },
1019    { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
1020    & ifmt_addrm, { 0x14 }
1021  },
1022/* subc $regmem8,$memgr8 */
1023  {
1024    { 0, 0, 0, 0 },
1025    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
1026    & ifmt_addrm2, { 0x32 }
1027  },
1028/* subc $memgr8,$regmem8 */
1029  {
1030    { 0, 0, 0, 0 },
1031    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
1032    & ifmt_addrm2, { 0x34 }
1033  },
1034/* subc $reg8,$memory */
1035  {
1036    { 0, 0, 0, 0 },
1037    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
1038    & ifmt_addrm, { 0x32 }
1039  },
1040/* subc $memory,$reg8 */
1041  {
1042    { 0, 0, 0, 0 },
1043    { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
1044    & ifmt_addrm, { 0x34 }
1045  },
1046/* addcb $regbmem8,$memgr8 */
1047  {
1048    { 0, 0, 0, 0 },
1049    { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
1050    & ifmt_addbrm2, { 0x13 }
1051  },
1052/* addcb $memgr8,$regbmem8 */
1053  {
1054    { 0, 0, 0, 0 },
1055    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
1056    & ifmt_addbrm2, { 0x15 }
1057  },
1058/* addcb $regb8,$memory */
1059  {
1060    { 0, 0, 0, 0 },
1061    { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
1062    & ifmt_addbrm, { 0x13 }
1063  },
1064/* addcb $memory,$regb8 */
1065  {
1066    { 0, 0, 0, 0 },
1067    { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
1068    & ifmt_addbrm, { 0x15 }
1069  },
1070/* subcb $regbmem8,$memgr8 */
1071  {
1072    { 0, 0, 0, 0 },
1073    { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
1074    & ifmt_addbrm2, { 0x33 }
1075  },
1076/* subcb $memgr8,$regbmem8 */
1077  {
1078    { 0, 0, 0, 0 },
1079    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
1080    & ifmt_addbrm2, { 0x35 }
1081  },
1082/* subcb $regb8,$memory */
1083  {
1084    { 0, 0, 0, 0 },
1085    { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
1086    & ifmt_addbrm, { 0x33 }
1087  },
1088/* subcb $memory,$regb8 */
1089  {
1090    { 0, 0, 0, 0 },
1091    { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
1092    & ifmt_addbrm, { 0x35 }
1093  },
1094/* mul $src1,$src2 */
1095  {
1096    { 0, 0, 0, 0 },
1097    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },
1098    & ifmt_muls, { 0xb }
1099  },
1100/* mulu $src1,$src2 */
1101  {
1102    { 0, 0, 0, 0 },
1103    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },
1104    & ifmt_muls, { 0x1b }
1105  },
1106/* div $srdiv */
1107  {
1108    { 0, 0, 0, 0 },
1109    { { MNEM, ' ', OP (SRDIV), 0 } },
1110    & ifmt_div, { 0x4b }
1111  },
1112/* divl $srdiv */
1113  {
1114    { 0, 0, 0, 0 },
1115    { { MNEM, ' ', OP (SRDIV), 0 } },
1116    & ifmt_div, { 0x6b }
1117  },
1118/* divlu $srdiv */
1119  {
1120    { 0, 0, 0, 0 },
1121    { { MNEM, ' ', OP (SRDIV), 0 } },
1122    & ifmt_div, { 0x7b }
1123  },
1124/* divu $srdiv */
1125  {
1126    { 0, 0, 0, 0 },
1127    { { MNEM, ' ', OP (SRDIV), 0 } },
1128    & ifmt_div, { 0x5b }
1129  },
1130/* cpl $dr */
1131  {
1132    { 0, 0, 0, 0 },
1133    { { MNEM, ' ', OP (DR), 0 } },
1134    & ifmt_cpl, { 0x91 }
1135  },
1136/* cplb $drb */
1137  {
1138    { 0, 0, 0, 0 },
1139    { { MNEM, ' ', OP (DRB), 0 } },
1140    & ifmt_cplb, { 0xb1 }
1141  },
1142/* neg $dr */
1143  {
1144    { 0, 0, 0, 0 },
1145    { { MNEM, ' ', OP (DR), 0 } },
1146    & ifmt_cpl, { 0x81 }
1147  },
1148/* negb $drb */
1149  {
1150    { 0, 0, 0, 0 },
1151    { { MNEM, ' ', OP (DRB), 0 } },
1152    & ifmt_cplb, { 0xa1 }
1153  },
1154/* and $dr,$sr */
1155  {
1156    { 0, 0, 0, 0 },
1157    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
1158    & ifmt_addr, { 0x60 }
1159  },
1160/* or $dr,$sr */
1161  {
1162    { 0, 0, 0, 0 },
1163    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
1164    & ifmt_addr, { 0x70 }
1165  },
1166/* xor $dr,$sr */
1167  {
1168    { 0, 0, 0, 0 },
1169    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
1170    & ifmt_addr, { 0x50 }
1171  },
1172/* andb $drb,$srb */
1173  {
1174    { 0, 0, 0, 0 },
1175    { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
1176    & ifmt_addbr, { 0x61 }
1177  },
1178/* orb $drb,$srb */
1179  {
1180    { 0, 0, 0, 0 },
1181    { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
1182    & ifmt_addbr, { 0x71 }
1183  },
1184/* xorb $drb,$srb */
1185  {
1186    { 0, 0, 0, 0 },
1187    { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
1188    & ifmt_addbr, { 0x51 }
1189  },
1190/* and $dr,$hash$uimm3 */
1191  {
1192    { 0, 0, 0, 0 },
1193    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
1194    & ifmt_addrhpof3, { 0x68 }
1195  },
1196/* or $dr,$hash$uimm3 */
1197  {
1198    { 0, 0, 0, 0 },
1199    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
1200    & ifmt_addrhpof3, { 0x78 }
1201  },
1202/* xor $dr,$hash$uimm3 */
1203  {
1204    { 0, 0, 0, 0 },
1205    { { MNEM, ' ', OP (DR), ',', OP (HASH), OP (UIMM3), 0 } },
1206    & ifmt_addrhpof3, { 0x58 }
1207  },
1208/* andb $drb,$hash$uimm3 */
1209  {
1210    { 0, 0, 0, 0 },
1211    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
1212    & ifmt_addbrhpag3, { 0x69 }
1213  },
1214/* orb $drb,$hash$uimm3 */
1215  {
1216    { 0, 0, 0, 0 },
1217    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
1218    & ifmt_addbrhpag3, { 0x79 }
1219  },
1220/* xorb $drb,$hash$uimm3 */
1221  {
1222    { 0, 0, 0, 0 },
1223    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
1224    & ifmt_addbrhpag3, { 0x59 }
1225  },
1226/* and $reg8,$hash$uimm16 */
1227  {
1228    { 0, 0, 0, 0 },
1229    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
1230    & ifmt_addrhpof, { 0x66 }
1231  },
1232/* or $reg8,$hash$uimm16 */
1233  {
1234    { 0, 0, 0, 0 },
1235    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
1236    & ifmt_addrhpof, { 0x76 }
1237  },
1238/* xor $reg8,$hash$uimm16 */
1239  {
1240    { 0, 0, 0, 0 },
1241    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
1242    & ifmt_addrhpof, { 0x56 }
1243  },
1244/* andb $regb8,$hash$uimm8 */
1245  {
1246    { 0, 0, 0, 0 },
1247    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
1248    & ifmt_addrbhpof, { 0x67 }
1249  },
1250/* orb $regb8,$hash$uimm8 */
1251  {
1252    { 0, 0, 0, 0 },
1253    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
1254    & ifmt_addrbhpof, { 0x77 }
1255  },
1256/* xorb $regb8,$hash$uimm8 */
1257  {
1258    { 0, 0, 0, 0 },
1259    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
1260    & ifmt_addrbhpof, { 0x57 }
1261  },
1262/* and $dr,[$sr2] */
1263  {
1264    { 0, 0, 0, 0 },
1265    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
1266    & ifmt_add2, { 0x868 }
1267  },
1268/* or $dr,[$sr2] */
1269  {
1270    { 0, 0, 0, 0 },
1271    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
1272    & ifmt_add2, { 0x878 }
1273  },
1274/* xor $dr,[$sr2] */
1275  {
1276    { 0, 0, 0, 0 },
1277    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
1278    & ifmt_add2, { 0x858 }
1279  },
1280/* andb $drb,[$sr2] */
1281  {
1282    { 0, 0, 0, 0 },
1283    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
1284    & ifmt_addb2, { 0x869 }
1285  },
1286/* orb $drb,[$sr2] */
1287  {
1288    { 0, 0, 0, 0 },
1289    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
1290    & ifmt_addb2, { 0x879 }
1291  },
1292/* xorb $drb,[$sr2] */
1293  {
1294    { 0, 0, 0, 0 },
1295    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
1296    & ifmt_addb2, { 0x859 }
1297  },
1298/* and $dr,[$sr2+] */
1299  {
1300    { 0, 0, 0, 0 },
1301    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
1302    & ifmt_add2, { 0xc68 }
1303  },
1304/* or $dr,[$sr2+] */
1305  {
1306    { 0, 0, 0, 0 },
1307    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
1308    & ifmt_add2, { 0xc78 }
1309  },
1310/* xor $dr,[$sr2+] */
1311  {
1312    { 0, 0, 0, 0 },
1313    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
1314    & ifmt_add2, { 0xc58 }
1315  },
1316/* andb $drb,[$sr2+] */
1317  {
1318    { 0, 0, 0, 0 },
1319    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
1320    & ifmt_addb2, { 0xc69 }
1321  },
1322/* orb $drb,[$sr2+] */
1323  {
1324    { 0, 0, 0, 0 },
1325    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
1326    & ifmt_addb2, { 0xc79 }
1327  },
1328/* xorb $drb,[$sr2+] */
1329  {
1330    { 0, 0, 0, 0 },
1331    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
1332    & ifmt_addb2, { 0xc59 }
1333  },
1334/* and $pof$reg8,$upof16 */
1335  {
1336    { 0, 0, 0, 0 },
1337    { { MNEM, ' ', OP (POF), OP (REG8), ',', OP (UPOF16), 0 } },
1338    & ifmt_addrpof, { 0x62 }
1339  },
1340/* or $pof$reg8,$upof16 */
1341  {
1342    { 0, 0, 0, 0 },
1343    { { MNEM, ' ', OP (POF), OP (REG8), ',', OP (UPOF16), 0 } },
1344    & ifmt_addrpof, { 0x72 }
1345  },
1346/* xor $pof$reg8,$upof16 */
1347  {
1348    { 0, 0, 0, 0 },
1349    { { MNEM, ' ', OP (POF), OP (REG8), ',', OP (UPOF16), 0 } },
1350    & ifmt_addrpof, { 0x52 }
1351  },
1352/* andb $pof$regb8,$upof16 */
1353  {
1354    { 0, 0, 0, 0 },
1355    { { MNEM, ' ', OP (POF), OP (REGB8), ',', OP (UPOF16), 0 } },
1356    & ifmt_addbrpof, { 0x63 }
1357  },
1358/* orb $pof$regb8,$upof16 */
1359  {
1360    { 0, 0, 0, 0 },
1361    { { MNEM, ' ', OP (POF), OP (REGB8), ',', OP (UPOF16), 0 } },
1362    & ifmt_addbrpof, { 0x73 }
1363  },
1364/* xorb $pof$regb8,$upof16 */
1365  {
1366    { 0, 0, 0, 0 },
1367    { { MNEM, ' ', OP (POF), OP (REGB8), ',', OP (UPOF16), 0 } },
1368    & ifmt_addbrpof, { 0x53 }
1369  },
1370/* and $pof$upof16,$reg8 */
1371  {
1372    { 0, 0, 0, 0 },
1373    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
1374    & ifmt_addrpof, { 0x64 }
1375  },
1376/* or $pof$upof16,$reg8 */
1377  {
1378    { 0, 0, 0, 0 },
1379    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
1380    & ifmt_addrpof, { 0x74 }
1381  },
1382/* xor $pof$upof16,$reg8 */
1383  {
1384    { 0, 0, 0, 0 },
1385    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REG8), 0 } },
1386    & ifmt_addrpof, { 0x54 }
1387  },
1388/* andb $pof$upof16,$regb8 */
1389  {
1390    { 0, 0, 0, 0 },
1391    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
1392    & ifmt_addbrpof, { 0x65 }
1393  },
1394/* orb $pof$upof16,$regb8 */
1395  {
1396    { 0, 0, 0, 0 },
1397    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
1398    & ifmt_addbrpof, { 0x75 }
1399  },
1400/* xorb $pof$upof16,$regb8 */
1401  {
1402    { 0, 0, 0, 0 },
1403    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
1404    & ifmt_addbrpof, { 0x55 }
1405  },
1406/* and $regmem8,$memgr8 */
1407  {
1408    { 0, 0, 0, 0 },
1409    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
1410    & ifmt_addrm2, { 0x62 }
1411  },
1412/* and $memgr8,$regmem8 */
1413  {
1414    { 0, 0, 0, 0 },
1415    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
1416    & ifmt_addrm2, { 0x64 }
1417  },
1418/* and $reg8,$memory */
1419  {
1420    { 0, 0, 0, 0 },
1421    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
1422    & ifmt_addrm, { 0x62 }
1423  },
1424/* and $memory,$reg8 */
1425  {
1426    { 0, 0, 0, 0 },
1427    { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
1428    & ifmt_addrm, { 0x64 }
1429  },
1430/* or $regmem8,$memgr8 */
1431  {
1432    { 0, 0, 0, 0 },
1433    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
1434    & ifmt_addrm2, { 0x72 }
1435  },
1436/* or $memgr8,$regmem8 */
1437  {
1438    { 0, 0, 0, 0 },
1439    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
1440    & ifmt_addrm2, { 0x74 }
1441  },
1442/* or $reg8,$memory */
1443  {
1444    { 0, 0, 0, 0 },
1445    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
1446    & ifmt_addrm, { 0x72 }
1447  },
1448/* or $memory,$reg8 */
1449  {
1450    { 0, 0, 0, 0 },
1451    { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
1452    & ifmt_addrm, { 0x74 }
1453  },
1454/* xor $regmem8,$memgr8 */
1455  {
1456    { 0, 0, 0, 0 },
1457    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
1458    & ifmt_addrm2, { 0x52 }
1459  },
1460/* xor $memgr8,$regmem8 */
1461  {
1462    { 0, 0, 0, 0 },
1463    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
1464    & ifmt_addrm2, { 0x54 }
1465  },
1466/* xor $reg8,$memory */
1467  {
1468    { 0, 0, 0, 0 },
1469    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
1470    & ifmt_addrm, { 0x52 }
1471  },
1472/* xor $memory,$reg8 */
1473  {
1474    { 0, 0, 0, 0 },
1475    { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
1476    & ifmt_addrm, { 0x54 }
1477  },
1478/* andb $regbmem8,$memgr8 */
1479  {
1480    { 0, 0, 0, 0 },
1481    { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
1482    & ifmt_addbrm2, { 0x63 }
1483  },
1484/* andb $memgr8,$regbmem8 */
1485  {
1486    { 0, 0, 0, 0 },
1487    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
1488    & ifmt_addbrm2, { 0x65 }
1489  },
1490/* andb $regb8,$memory */
1491  {
1492    { 0, 0, 0, 0 },
1493    { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
1494    & ifmt_addbrm, { 0x63 }
1495  },
1496/* andb $memory,$regb8 */
1497  {
1498    { 0, 0, 0, 0 },
1499    { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
1500    & ifmt_addbrm, { 0x65 }
1501  },
1502/* orb $regbmem8,$memgr8 */
1503  {
1504    { 0, 0, 0, 0 },
1505    { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
1506    & ifmt_addbrm2, { 0x73 }
1507  },
1508/* orb $memgr8,$regbmem8 */
1509  {
1510    { 0, 0, 0, 0 },
1511    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
1512    & ifmt_addbrm2, { 0x75 }
1513  },
1514/* orb $regb8,$memory */
1515  {
1516    { 0, 0, 0, 0 },
1517    { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
1518    & ifmt_addbrm, { 0x73 }
1519  },
1520/* orb $memory,$regb8 */
1521  {
1522    { 0, 0, 0, 0 },
1523    { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
1524    & ifmt_addbrm, { 0x75 }
1525  },
1526/* xorb $regbmem8,$memgr8 */
1527  {
1528    { 0, 0, 0, 0 },
1529    { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
1530    & ifmt_addbrm2, { 0x53 }
1531  },
1532/* xorb $memgr8,$regbmem8 */
1533  {
1534    { 0, 0, 0, 0 },
1535    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
1536    & ifmt_addbrm2, { 0x55 }
1537  },
1538/* xorb $regb8,$memory */
1539  {
1540    { 0, 0, 0, 0 },
1541    { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
1542    & ifmt_addbrm, { 0x53 }
1543  },
1544/* xorb $memory,$regb8 */
1545  {
1546    { 0, 0, 0, 0 },
1547    { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
1548    & ifmt_addbrm, { 0x55 }
1549  },
1550/* mov $dr,$sr */
1551  {
1552    { 0, 0, 0, 0 },
1553    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
1554    & ifmt_addr, { 0xf0 }
1555  },
1556/* movb $drb,$srb */
1557  {
1558    { 0, 0, 0, 0 },
1559    { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
1560    & ifmt_addbr, { 0xf1 }
1561  },
1562/* mov $dri,$hash$u4 */
1563  {
1564    { 0, 0, 0, 0 },
1565    { { MNEM, ' ', OP (DRI), ',', OP (HASH), OP (U4), 0 } },
1566    & ifmt_movri, { 0xe0 }
1567  },
1568/* movb $srb,$hash$u4 */
1569  {
1570    { 0, 0, 0, 0 },
1571    { { MNEM, ' ', OP (SRB), ',', OP (HASH), OP (U4), 0 } },
1572    & ifmt_movbri, { 0xe1 }
1573  },
1574/* mov $reg8,$hash$uimm16 */
1575  {
1576    { 0, 0, 0, 0 },
1577    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
1578    & ifmt_addrhpof, { 0xe6 }
1579  },
1580/* movb $regb8,$hash$uimm8 */
1581  {
1582    { 0, 0, 0, 0 },
1583    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
1584    & ifmt_addrbhpof, { 0xe7 }
1585  },
1586/* mov $dr,[$sr] */
1587  {
1588    { 0, 0, 0, 0 },
1589    { { MNEM, ' ', OP (DR), ',', '[', OP (SR), ']', 0 } },
1590    & ifmt_addr, { 0xa8 }
1591  },
1592/* movb $drb,[$sr] */
1593  {
1594    { 0, 0, 0, 0 },
1595    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR), ']', 0 } },
1596    & ifmt_movbr2, { 0xa9 }
1597  },
1598/* mov [$sr],$dr */
1599  {
1600    { 0, 0, 0, 0 },
1601    { { MNEM, ' ', '[', OP (SR), ']', ',', OP (DR), 0 } },
1602    & ifmt_addr, { 0xb8 }
1603  },
1604/* movb [$sr],$drb */
1605  {
1606    { 0, 0, 0, 0 },
1607    { { MNEM, ' ', '[', OP (SR), ']', ',', OP (DRB), 0 } },
1608    & ifmt_movbr2, { 0xb9 }
1609  },
1610/* mov [-$sr],$dr */
1611  {
1612    { 0, 0, 0, 0 },
1613    { { MNEM, ' ', '[', '-', OP (SR), ']', ',', OP (DR), 0 } },
1614    & ifmt_addr, { 0x88 }
1615  },
1616/* movb [-$sr],$drb */
1617  {
1618    { 0, 0, 0, 0 },
1619    { { MNEM, ' ', '[', '-', OP (SR), ']', ',', OP (DRB), 0 } },
1620    & ifmt_movbr2, { 0x89 }
1621  },
1622/* mov $dr,[$sr+] */
1623  {
1624    { 0, 0, 0, 0 },
1625    { { MNEM, ' ', OP (DR), ',', '[', OP (SR), '+', ']', 0 } },
1626    & ifmt_addr, { 0x98 }
1627  },
1628/* movb $drb,[$sr+] */
1629  {
1630    { 0, 0, 0, 0 },
1631    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR), '+', ']', 0 } },
1632    & ifmt_movbr2, { 0x99 }
1633  },
1634/* mov [$dr],[$sr] */
1635  {
1636    { 0, 0, 0, 0 },
1637    { { MNEM, ' ', '[', OP (DR), ']', ',', '[', OP (SR), ']', 0 } },
1638    & ifmt_addr, { 0xc8 }
1639  },
1640/* movb [$dr],[$sr] */
1641  {
1642    { 0, 0, 0, 0 },
1643    { { MNEM, ' ', '[', OP (DR), ']', ',', '[', OP (SR), ']', 0 } },
1644    & ifmt_addr, { 0xc9 }
1645  },
1646/* mov [$dr+],[$sr] */
1647  {
1648    { 0, 0, 0, 0 },
1649    { { MNEM, ' ', '[', OP (DR), '+', ']', ',', '[', OP (SR), ']', 0 } },
1650    & ifmt_addr, { 0xd8 }
1651  },
1652/* movb [$dr+],[$sr] */
1653  {
1654    { 0, 0, 0, 0 },
1655    { { MNEM, ' ', '[', OP (DR), '+', ']', ',', '[', OP (SR), ']', 0 } },
1656    & ifmt_addr, { 0xd9 }
1657  },
1658/* mov [$dr],[$sr+] */
1659  {
1660    { 0, 0, 0, 0 },
1661    { { MNEM, ' ', '[', OP (DR), ']', ',', '[', OP (SR), '+', ']', 0 } },
1662    & ifmt_addr, { 0xe8 }
1663  },
1664/* movb [$dr],[$sr+] */
1665  {
1666    { 0, 0, 0, 0 },
1667    { { MNEM, ' ', '[', OP (DR), ']', ',', '[', OP (SR), '+', ']', 0 } },
1668    & ifmt_addr, { 0xe9 }
1669  },
1670/* mov $dr,[$sr+$hash$uimm16] */
1671  {
1672    { 0, 0, 0, 0 },
1673    { { MNEM, ' ', OP (DR), ',', '[', OP (SR), '+', OP (HASH), OP (UIMM16), ']', 0 } },
1674    & ifmt_mov9i, { 0xd4 }
1675  },
1676/* movb $drb,[$sr+$hash$uimm16] */
1677  {
1678    { 0, 0, 0, 0 },
1679    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR), '+', OP (HASH), OP (UIMM16), ']', 0 } },
1680    & ifmt_movb9i, { 0xf4 }
1681  },
1682/* mov [$sr+$hash$uimm16],$dr */
1683  {
1684    { 0, 0, 0, 0 },
1685    { { MNEM, ' ', '[', OP (SR), '+', OP (HASH), OP (UIMM16), ']', ',', OP (DR), 0 } },
1686    & ifmt_mov9i, { 0xc4 }
1687  },
1688/* movb [$sr+$hash$uimm16],$drb */
1689  {
1690    { 0, 0, 0, 0 },
1691    { { MNEM, ' ', '[', OP (SR), '+', OP (HASH), OP (UIMM16), ']', ',', OP (DRB), 0 } },
1692    & ifmt_movb9i, { 0xe4 }
1693  },
1694/* mov [$src2],$memory */
1695  {
1696    { 0, 0, 0, 0 },
1697    { { MNEM, ' ', '[', OP (SRC2), ']', ',', OP (MEMORY), 0 } },
1698    & ifmt_movri11, { 0x84 }
1699  },
1700/* movb [$src2],$memory */
1701  {
1702    { 0, 0, 0, 0 },
1703    { { MNEM, ' ', '[', OP (SRC2), ']', ',', OP (MEMORY), 0 } },
1704    & ifmt_movri11, { 0xa4 }
1705  },
1706/* mov $memory,[$src2] */
1707  {
1708    { 0, 0, 0, 0 },
1709    { { MNEM, ' ', OP (MEMORY), ',', '[', OP (SRC2), ']', 0 } },
1710    & ifmt_movri11, { 0x94 }
1711  },
1712/* movb $memory,[$src2] */
1713  {
1714    { 0, 0, 0, 0 },
1715    { { MNEM, ' ', OP (MEMORY), ',', '[', OP (SRC2), ']', 0 } },
1716    & ifmt_movri11, { 0xb4 }
1717  },
1718/* mov $regoff8,$hash$pof$upof16 */
1719  {
1720    { 0, 0, 0, 0 },
1721    { { MNEM, ' ', OP (REGOFF8), ',', OP (HASH), OP (POF), OP (UPOF16), 0 } },
1722    & ifmt_movehm5, { 0xe6 }
1723  },
1724/* mov $regoff8,$hash$pag$upag16 */
1725  {
1726    { 0, 0, 0, 0 },
1727    { { MNEM, ' ', OP (REGOFF8), ',', OP (HASH), OP (PAG), OP (UPAG16), 0 } },
1728    & ifmt_movehm6, { 0xe6 }
1729  },
1730/* mov $regoff8,$hash$segm$useg16 */
1731  {
1732    { 0, 0, 0, 0 },
1733    { { MNEM, ' ', OP (REGOFF8), ',', OP (HASH), OP (SEGM), OP (USEG16), 0 } },
1734    & ifmt_movehm7, { 0xe6 }
1735  },
1736/* mov $regoff8,$hash$sof$usof16 */
1737  {
1738    { 0, 0, 0, 0 },
1739    { { MNEM, ' ', OP (REGOFF8), ',', OP (HASH), OP (SOF), OP (USOF16), 0 } },
1740    & ifmt_movehm8, { 0xe6 }
1741  },
1742/* movb $regb8,$hash$pof$uimm8 */
1743  {
1744    { 0, 0, 0, 0 },
1745    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (POF), OP (UIMM8), 0 } },
1746    & ifmt_addrbhpof, { 0xe7 }
1747  },
1748/* movb $regoff8,$hash$pag$uimm8 */
1749  {
1750    { 0, 0, 0, 0 },
1751    { { MNEM, ' ', OP (REGOFF8), ',', OP (HASH), OP (PAG), OP (UIMM8), 0 } },
1752    & ifmt_movehm10, { 0xe7 }
1753  },
1754/* mov $regoff8,$pof$upof16 */
1755  {
1756    { 0, 0, 0, 0 },
1757    { { MNEM, ' ', OP (REGOFF8), ',', OP (POF), OP (UPOF16), 0 } },
1758    & ifmt_movehm5, { 0xf2 }
1759  },
1760/* movb $regb8,$pof$upof16 */
1761  {
1762    { 0, 0, 0, 0 },
1763    { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
1764    & ifmt_addbrpof, { 0xf3 }
1765  },
1766/* mov $regoff8,$pag$upag16 */
1767  {
1768    { 0, 0, 0, 0 },
1769    { { MNEM, ' ', OP (REGOFF8), ',', OP (PAG), OP (UPAG16), 0 } },
1770    & ifmt_movehm6, { 0xf2 }
1771  },
1772/* movb $regb8,$pag$upag16 */
1773  {
1774    { 0, 0, 0, 0 },
1775    { { MNEM, ' ', OP (REGB8), ',', OP (PAG), OP (UPAG16), 0 } },
1776    & ifmt_addbrpag, { 0xf3 }
1777  },
1778/* mov $pof$upof16,$regoff8 */
1779  {
1780    { 0, 0, 0, 0 },
1781    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGOFF8), 0 } },
1782    & ifmt_movehm5, { 0xf6 }
1783  },
1784/* movb $pof$upof16,$regb8 */
1785  {
1786    { 0, 0, 0, 0 },
1787    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
1788    & ifmt_addbrpof, { 0xf7 }
1789  },
1790/* mov $dri,$hash$pof$u4 */
1791  {
1792    { 0, 0, 0, 0 },
1793    { { MNEM, ' ', OP (DRI), ',', OP (HASH), OP (POF), OP (U4), 0 } },
1794    & ifmt_movri, { 0xe0 }
1795  },
1796/* movb $srb,$hash$pof$u4 */
1797  {
1798    { 0, 0, 0, 0 },
1799    { { MNEM, ' ', OP (SRB), ',', OP (HASH), OP (POF), OP (U4), 0 } },
1800    & ifmt_movbri, { 0xe1 }
1801  },
1802/* mov $dri,$hash$pag$u4 */
1803  {
1804    { 0, 0, 0, 0 },
1805    { { MNEM, ' ', OP (DRI), ',', OP (HASH), OP (PAG), OP (U4), 0 } },
1806    & ifmt_movri, { 0xe0 }
1807  },
1808/* movb $srb,$hash$pag$u4 */
1809  {
1810    { 0, 0, 0, 0 },
1811    { { MNEM, ' ', OP (SRB), ',', OP (HASH), OP (PAG), OP (U4), 0 } },
1812    & ifmt_movbri, { 0xe1 }
1813  },
1814/* mov $regmem8,$memgr8 */
1815  {
1816    { 0, 0, 0, 0 },
1817    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
1818    & ifmt_addrm2, { 0xf2 }
1819  },
1820/* mov $memgr8,$regmem8 */
1821  {
1822    { 0, 0, 0, 0 },
1823    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGMEM8), 0 } },
1824    & ifmt_addrm2, { 0xf6 }
1825  },
1826/* mov $reg8,$memory */
1827  {
1828    { 0, 0, 0, 0 },
1829    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
1830    & ifmt_addrm, { 0xf2 }
1831  },
1832/* mov $memory,$reg8 */
1833  {
1834    { 0, 0, 0, 0 },
1835    { { MNEM, ' ', OP (MEMORY), ',', OP (REG8), 0 } },
1836    & ifmt_addrm, { 0xf6 }
1837  },
1838/* movb $regbmem8,$memgr8 */
1839  {
1840    { 0, 0, 0, 0 },
1841    { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
1842    & ifmt_addbrm2, { 0xf3 }
1843  },
1844/* movb $memgr8,$regbmem8 */
1845  {
1846    { 0, 0, 0, 0 },
1847    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
1848    & ifmt_addbrm2, { 0xf7 }
1849  },
1850/* movb $regb8,$memory */
1851  {
1852    { 0, 0, 0, 0 },
1853    { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
1854    & ifmt_addbrm, { 0xf3 }
1855  },
1856/* movb $memory,$regb8 */
1857  {
1858    { 0, 0, 0, 0 },
1859    { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
1860    & ifmt_addbrm, { 0xf7 }
1861  },
1862/* movbs $sr,$drb */
1863  {
1864    { 0, 0, 0, 0 },
1865    { { MNEM, ' ', OP (SR), ',', OP (DRB), 0 } },
1866    & ifmt_movbr2, { 0xd0 }
1867  },
1868/* movbz $sr,$drb */
1869  {
1870    { 0, 0, 0, 0 },
1871    { { MNEM, ' ', OP (SR), ',', OP (DRB), 0 } },
1872    & ifmt_movbr2, { 0xc0 }
1873  },
1874/* movbs $regmem8,$pof$upof16 */
1875  {
1876    { 0, 0, 0, 0 },
1877    { { MNEM, ' ', OP (REGMEM8), ',', OP (POF), OP (UPOF16), 0 } },
1878    & ifmt_movbsrpofm, { 0xd2 }
1879  },
1880/* movbs $pof$upof16,$regbmem8 */
1881  {
1882    { 0, 0, 0, 0 },
1883    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGBMEM8), 0 } },
1884    & ifmt_movbspofmr, { 0xd5 }
1885  },
1886/* movbz $reg8,$pof$upof16 */
1887  {
1888    { 0, 0, 0, 0 },
1889    { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
1890    & ifmt_addrpof, { 0xc2 }
1891  },
1892/* movbz $pof$upof16,$regb8 */
1893  {
1894    { 0, 0, 0, 0 },
1895    { { MNEM, ' ', OP (POF), OP (UPOF16), ',', OP (REGB8), 0 } },
1896    & ifmt_addbrpof, { 0xc5 }
1897  },
1898/* movbs $regmem8,$memgr8 */
1899  {
1900    { 0, 0, 0, 0 },
1901    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
1902    & ifmt_addrm2, { 0xd2 }
1903  },
1904/* movbs $memgr8,$regbmem8 */
1905  {
1906    { 0, 0, 0, 0 },
1907    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
1908    & ifmt_addbrm2, { 0xd5 }
1909  },
1910/* movbs $reg8,$memory */
1911  {
1912    { 0, 0, 0, 0 },
1913    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
1914    & ifmt_addrm, { 0xd2 }
1915  },
1916/* movbs $memory,$regb8 */
1917  {
1918    { 0, 0, 0, 0 },
1919    { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
1920    & ifmt_addbrm, { 0xd5 }
1921  },
1922/* movbz $regmem8,$memgr8 */
1923  {
1924    { 0, 0, 0, 0 },
1925    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
1926    & ifmt_addrm2, { 0xc2 }
1927  },
1928/* movbz $memgr8,$regbmem8 */
1929  {
1930    { 0, 0, 0, 0 },
1931    { { MNEM, ' ', OP (MEMGR8), ',', OP (REGBMEM8), 0 } },
1932    & ifmt_addbrm2, { 0xc5 }
1933  },
1934/* movbz $reg8,$memory */
1935  {
1936    { 0, 0, 0, 0 },
1937    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
1938    & ifmt_addrm, { 0xc2 }
1939  },
1940/* movbz $memory,$regb8 */
1941  {
1942    { 0, 0, 0, 0 },
1943    { { MNEM, ' ', OP (MEMORY), ',', OP (REGB8), 0 } },
1944    & ifmt_addbrm, { 0xc5 }
1945  },
1946/* movbs $sr,$drb */
1947  {
1948    { 0, 0, 0, 0 },
1949    { { MNEM, ' ', OP (SR), ',', OP (DRB), 0 } },
1950    & ifmt_movbr2, { 0xd0 }
1951  },
1952/* movbz $sr,$drb */
1953  {
1954    { 0, 0, 0, 0 },
1955    { { MNEM, ' ', OP (SR), ',', OP (DRB), 0 } },
1956    & ifmt_movbr2, { 0xc0 }
1957  },
1958/* jmpa+ $extcond,$caddr */
1959  {
1960    { 0, 0, 0, 0 },
1961    { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
1962    & ifmt_jmpa0, { 0xea }
1963  },
1964/* jmpa $extcond,$caddr */
1965  {
1966    { 0, 0, 0, 0 },
1967    { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
1968    & ifmt_jmpa0, { 0xea }
1969  },
1970/* jmpa- $extcond,$caddr */
1971  {
1972    { 0, 0, 0, 0 },
1973    { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
1974    & ifmt_jmpa_, { 0x1ea }
1975  },
1976/* jmpi $icond,[$sr] */
1977  {
1978    { 0, 0, 0, 0 },
1979    { { MNEM, ' ', OP (ICOND), ',', '[', OP (SR), ']', 0 } },
1980    & ifmt_jmpi, { 0x9c }
1981  },
1982/* jmpr $cond,$rel */
1983  {
1984    { 0, 0, 0, 0 },
1985    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
1986    & ifmt_jmpr_nenz, { 0x3d }
1987  },
1988/* jmpr $cond,$rel */
1989  {
1990    { 0, 0, 0, 0 },
1991    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
1992    & ifmt_jmpr_nenz, { 0xad }
1993  },
1994/* jmpr $cond,$rel */
1995  {
1996    { 0, 0, 0, 0 },
1997    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
1998    & ifmt_jmpr_nenz, { 0x2d }
1999  },
2000/* jmpr $cond,$rel */
2001  {
2002    { 0, 0, 0, 0 },
2003    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2004    & ifmt_jmpr_nenz, { 0x4d }
2005  },
2006/* jmpr $cond,$rel */
2007  {
2008    { 0, 0, 0, 0 },
2009    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2010    & ifmt_jmpr_nenz, { 0x5d }
2011  },
2012/* jmpr $cond,$rel */
2013  {
2014    { 0, 0, 0, 0 },
2015    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2016    & ifmt_jmpr_nenz, { 0x6d }
2017  },
2018/* jmpr $cond,$rel */
2019  {
2020    { 0, 0, 0, 0 },
2021    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2022    & ifmt_jmpr_nenz, { 0x7d }
2023  },
2024/* jmpr $cond,$rel */
2025  {
2026    { 0, 0, 0, 0 },
2027    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2028    & ifmt_jmpr_nenz, { 0x8d }
2029  },
2030/* jmpr $cond,$rel */
2031  {
2032    { 0, 0, 0, 0 },
2033    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2034    & ifmt_jmpr_nenz, { 0x9d }
2035  },
2036/* jmpr $cond,$rel */
2037  {
2038    { 0, 0, 0, 0 },
2039    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2040    & ifmt_jmpr_nenz, { 0x2d }
2041  },
2042/* jmpr $cond,$rel */
2043  {
2044    { 0, 0, 0, 0 },
2045    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2046    & ifmt_jmpr_nenz, { 0x3d }
2047  },
2048/* jmpr $cond,$rel */
2049  {
2050    { 0, 0, 0, 0 },
2051    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2052    & ifmt_jmpr_nenz, { 0x8d }
2053  },
2054/* jmpr $cond,$rel */
2055  {
2056    { 0, 0, 0, 0 },
2057    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2058    & ifmt_jmpr_nenz, { 0xfd }
2059  },
2060/* jmpr $cond,$rel */
2061  {
2062    { 0, 0, 0, 0 },
2063    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2064    & ifmt_jmpr_nenz, { 0x9d }
2065  },
2066/* jmpr $cond,$rel */
2067  {
2068    { 0, 0, 0, 0 },
2069    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2070    & ifmt_jmpr_nenz, { 0xed }
2071  },
2072/* jmpr $cond,$rel */
2073  {
2074    { 0, 0, 0, 0 },
2075    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2076    & ifmt_jmpr_nenz, { 0xbd }
2077  },
2078/* jmpr $cond,$rel */
2079  {
2080    { 0, 0, 0, 0 },
2081    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2082    & ifmt_jmpr_nenz, { 0xdd }
2083  },
2084/* jmpr $cond,$rel */
2085  {
2086    { 0, 0, 0, 0 },
2087    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2088    & ifmt_jmpr_nenz, { 0x1d }
2089  },
2090/* jmpr $cond,$rel */
2091  {
2092    { 0, 0, 0, 0 },
2093    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2094    & ifmt_jmpr_nenz, { 0xd }
2095  },
2096/* jmpr $cond,$rel */
2097  {
2098    { 0, 0, 0, 0 },
2099    { { MNEM, ' ', OP (COND), ',', OP (REL), 0 } },
2100    & ifmt_jmpr_nenz, { 0xcd }
2101  },
2102/* jmps $hash$segm$useg8,$hash$sof$usof16 */
2103  {
2104    { 0, 0, 0, 0 },
2105    { { MNEM, ' ', OP (HASH), OP (SEGM), OP (USEG8), ',', OP (HASH), OP (SOF), OP (USOF16), 0 } },
2106    & ifmt_jmpseg, { 0xfa }
2107  },
2108/* jmps $seg,$caddr */
2109  {
2110    { 0, 0, 0, 0 },
2111    { { MNEM, ' ', OP (SEG), ',', OP (CADDR), 0 } },
2112    & ifmt_jmps, { 0xfa }
2113  },
2114/* jb $genreg$dot$qlobit,$relhi */
2115  {
2116    { 0, 0, 0, 0 },
2117    { { MNEM, ' ', OP (GENREG), OP (DOT), OP (QLOBIT), ',', OP (RELHI), 0 } },
2118    & ifmt_jb, { 0x8a }
2119  },
2120/* jbc $genreg$dot$qlobit,$relhi */
2121  {
2122    { 0, 0, 0, 0 },
2123    { { MNEM, ' ', OP (GENREG), OP (DOT), OP (QLOBIT), ',', OP (RELHI), 0 } },
2124    & ifmt_jb, { 0xaa }
2125  },
2126/* jnb $genreg$dot$qlobit,$relhi */
2127  {
2128    { 0, 0, 0, 0 },
2129    { { MNEM, ' ', OP (GENREG), OP (DOT), OP (QLOBIT), ',', OP (RELHI), 0 } },
2130    & ifmt_jb, { 0x9a }
2131  },
2132/* jnbs $genreg$dot$qlobit,$relhi */
2133  {
2134    { 0, 0, 0, 0 },
2135    { { MNEM, ' ', OP (GENREG), OP (DOT), OP (QLOBIT), ',', OP (RELHI), 0 } },
2136    & ifmt_jb, { 0xba }
2137  },
2138/* calla+ $extcond,$caddr */
2139  {
2140    { 0, 0, 0, 0 },
2141    { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
2142    & ifmt_calla0, { 0xca }
2143  },
2144/* calla $extcond,$caddr */
2145  {
2146    { 0, 0, 0, 0 },
2147    { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
2148    & ifmt_calla0, { 0xca }
2149  },
2150/* calla- $extcond,$caddr */
2151  {
2152    { 0, 0, 0, 0 },
2153    { { MNEM, ' ', OP (EXTCOND), ',', OP (CADDR), 0 } },
2154    & ifmt_calla_, { 0x1ca }
2155  },
2156/* calli $icond,[$sr] */
2157  {
2158    { 0, 0, 0, 0 },
2159    { { MNEM, ' ', OP (ICOND), ',', '[', OP (SR), ']', 0 } },
2160    & ifmt_jmpi, { 0xab }
2161  },
2162/* callr $rel */
2163  {
2164    { 0, 0, 0, 0 },
2165    { { MNEM, ' ', OP (REL), 0 } },
2166    & ifmt_callr, { 0xbb }
2167  },
2168/* calls $hash$segm$useg8,$hash$sof$usof16 */
2169  {
2170    { 0, 0, 0, 0 },
2171    { { MNEM, ' ', OP (HASH), OP (SEGM), OP (USEG8), ',', OP (HASH), OP (SOF), OP (USOF16), 0 } },
2172    & ifmt_callseg, { 0xda }
2173  },
2174/* calls $seg,$caddr */
2175  {
2176    { 0, 0, 0, 0 },
2177    { { MNEM, ' ', OP (SEG), ',', OP (CADDR), 0 } },
2178    & ifmt_jmps, { 0xda }
2179  },
2180/* pcall $reg8,$caddr */
2181  {
2182    { 0, 0, 0, 0 },
2183    { { MNEM, ' ', OP (REG8), ',', OP (CADDR), 0 } },
2184    & ifmt_pcall, { 0xe2 }
2185  },
2186/* trap $hash$uimm7 */
2187  {
2188    { 0, 0, 0, 0 },
2189    { { MNEM, ' ', OP (HASH), OP (UIMM7), 0 } },
2190    & ifmt_trap, { 0x9b }
2191  },
2192/* ret */
2193  {
2194    { 0, 0, 0, 0 },
2195    { { MNEM, 0 } },
2196    & ifmt_ret, { 0xcb }
2197  },
2198/* rets */
2199  {
2200    { 0, 0, 0, 0 },
2201    { { MNEM, 0 } },
2202    & ifmt_ret, { 0xdb }
2203  },
2204/* retp $reg8 */
2205  {
2206    { 0, 0, 0, 0 },
2207    { { MNEM, ' ', OP (REG8), 0 } },
2208    & ifmt_retp, { 0xeb }
2209  },
2210/* reti */
2211  {
2212    { 0, 0, 0, 0 },
2213    { { MNEM, 0 } },
2214    & ifmt_reti, { 0x88fb }
2215  },
2216/* pop $reg8 */
2217  {
2218    { 0, 0, 0, 0 },
2219    { { MNEM, ' ', OP (REG8), 0 } },
2220    & ifmt_retp, { 0xfc }
2221  },
2222/* push $reg8 */
2223  {
2224    { 0, 0, 0, 0 },
2225    { { MNEM, ' ', OP (REG8), 0 } },
2226    & ifmt_retp, { 0xec }
2227  },
2228/* scxt $reg8,$hash$uimm16 */
2229  {
2230    { 0, 0, 0, 0 },
2231    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
2232    & ifmt_addrhpof, { 0xc6 }
2233  },
2234/* scxt $reg8,$pof$upof16 */
2235  {
2236    { 0, 0, 0, 0 },
2237    { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
2238    & ifmt_addrpof, { 0xd6 }
2239  },
2240/* scxt $regmem8,$memgr8 */
2241  {
2242    { 0, 0, 0, 0 },
2243    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
2244    & ifmt_addrm2, { 0xd6 }
2245  },
2246/* scxt $reg8,$memory */
2247  {
2248    { 0, 0, 0, 0 },
2249    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
2250    & ifmt_addrm, { 0xd6 }
2251  },
2252/* nop */
2253  {
2254    { 0, 0, 0, 0 },
2255    { { MNEM, 0 } },
2256    & ifmt_ret, { 0xcc }
2257  },
2258/* srst */
2259  {
2260    { 0, 0, 0, 0 },
2261    { { MNEM, 0 } },
2262    & ifmt_srstm, { 0xb7b748b7 }
2263  },
2264/* idle */
2265  {
2266    { 0, 0, 0, 0 },
2267    { { MNEM, 0 } },
2268    & ifmt_srstm, { 0x87877887 }
2269  },
2270/* pwrdn */
2271  {
2272    { 0, 0, 0, 0 },
2273    { { MNEM, 0 } },
2274    & ifmt_srstm, { 0x97976897 }
2275  },
2276/* diswdt */
2277  {
2278    { 0, 0, 0, 0 },
2279    { { MNEM, 0 } },
2280    & ifmt_srstm, { 0xa5a55aa5 }
2281  },
2282/* enwdt */
2283  {
2284    { 0, 0, 0, 0 },
2285    { { MNEM, 0 } },
2286    & ifmt_srstm, { 0x85857a85 }
2287  },
2288/* einit */
2289  {
2290    { 0, 0, 0, 0 },
2291    { { MNEM, 0 } },
2292    & ifmt_srstm, { 0xb5b54ab5 }
2293  },
2294/* srvwdt */
2295  {
2296    { 0, 0, 0, 0 },
2297    { { MNEM, 0 } },
2298    & ifmt_srstm, { 0xa7a758a7 }
2299  },
2300/* sbrk */
2301  {
2302    { 0, 0, 0, 0 },
2303    { { MNEM, 0 } },
2304    & ifmt_ret, { 0x8c }
2305  },
2306/* atomic $hash$uimm2 */
2307  {
2308    { 0, 0, 0, 0 },
2309    { { MNEM, ' ', OP (HASH), OP (UIMM2), 0 } },
2310    & ifmt_atomic, { 0xd1 }
2311  },
2312/* extr $hash$uimm2 */
2313  {
2314    { 0, 0, 0, 0 },
2315    { { MNEM, ' ', OP (HASH), OP (UIMM2), 0 } },
2316    & ifmt_atomic, { 0x80d1 }
2317  },
2318/* extp $sr,$hash$uimm2 */
2319  {
2320    { 0, 0, 0, 0 },
2321    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM2), 0 } },
2322    & ifmt_extp, { 0x40dc }
2323  },
2324/* extp $hash$pagenum,$hash$uimm2 */
2325  {
2326    { 0, 0, 0, 0 },
2327    { { MNEM, ' ', OP (HASH), OP (PAGENUM), ',', OP (HASH), OP (UIMM2), 0 } },
2328    & ifmt_extp1, { 0x40d7 }
2329  },
2330/* extp $hash$pag$upag16,$hash$uimm2 */
2331  {
2332    { 0, 0, 0, 0 },
2333    { { MNEM, ' ', OP (HASH), OP (PAG), OP (UPAG16), ',', OP (HASH), OP (UIMM2), 0 } },
2334    & ifmt_extpg1, { 0x40d7 }
2335  },
2336/* extpr $sr,$hash$uimm2 */
2337  {
2338    { 0, 0, 0, 0 },
2339    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM2), 0 } },
2340    & ifmt_extp, { 0xc0dc }
2341  },
2342/* extpr $hash$pagenum,$hash$uimm2 */
2343  {
2344    { 0, 0, 0, 0 },
2345    { { MNEM, ' ', OP (HASH), OP (PAGENUM), ',', OP (HASH), OP (UIMM2), 0 } },
2346    & ifmt_extp1, { 0xc0d7 }
2347  },
2348/* exts $sr,$hash$uimm2 */
2349  {
2350    { 0, 0, 0, 0 },
2351    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM2), 0 } },
2352    & ifmt_extp, { 0xdc }
2353  },
2354/* exts $hash$seghi8,$hash$uimm2 */
2355  {
2356    { 0, 0, 0, 0 },
2357    { { MNEM, ' ', OP (HASH), OP (SEGHI8), ',', OP (HASH), OP (UIMM2), 0 } },
2358    & ifmt_exts1, { 0xd7 }
2359  },
2360/* extsr $sr,$hash$uimm2 */
2361  {
2362    { 0, 0, 0, 0 },
2363    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM2), 0 } },
2364    & ifmt_extp, { 0x80dc }
2365  },
2366/* extsr $hash$seghi8,$hash$uimm2 */
2367  {
2368    { 0, 0, 0, 0 },
2369    { { MNEM, ' ', OP (HASH), OP (SEGHI8), ',', OP (HASH), OP (UIMM2), 0 } },
2370    & ifmt_exts1, { 0x80d7 }
2371  },
2372/* prior $dr,$sr */
2373  {
2374    { 0, 0, 0, 0 },
2375    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
2376    & ifmt_addr, { 0x2b }
2377  },
2378/* bclr $RegNam */
2379  {
2380    { 0, 0, 0, 0 },
2381    { { MNEM, ' ', OP (REGNAM), 0 } },
2382    & ifmt_bclr18, { 0xbe }
2383  },
2384/* bclr $reg8$dot$qbit */
2385  {
2386    { 0, 0, 0, 0 },
2387    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2388    & ifmt_bclr0, { 0xe }
2389  },
2390/* bclr $reg8$dot$qbit */
2391  {
2392    { 0, 0, 0, 0 },
2393    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2394    & ifmt_bclr0, { 0x1e }
2395  },
2396/* bclr $reg8$dot$qbit */
2397  {
2398    { 0, 0, 0, 0 },
2399    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2400    & ifmt_bclr0, { 0x2e }
2401  },
2402/* bclr $reg8$dot$qbit */
2403  {
2404    { 0, 0, 0, 0 },
2405    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2406    & ifmt_bclr0, { 0x3e }
2407  },
2408/* bclr $reg8$dot$qbit */
2409  {
2410    { 0, 0, 0, 0 },
2411    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2412    & ifmt_bclr0, { 0x4e }
2413  },
2414/* bclr $reg8$dot$qbit */
2415  {
2416    { 0, 0, 0, 0 },
2417    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2418    & ifmt_bclr0, { 0x5e }
2419  },
2420/* bclr $reg8$dot$qbit */
2421  {
2422    { 0, 0, 0, 0 },
2423    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2424    & ifmt_bclr0, { 0x6e }
2425  },
2426/* bclr $reg8$dot$qbit */
2427  {
2428    { 0, 0, 0, 0 },
2429    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2430    & ifmt_bclr0, { 0x7e }
2431  },
2432/* bclr $reg8$dot$qbit */
2433  {
2434    { 0, 0, 0, 0 },
2435    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2436    & ifmt_bclr0, { 0x8e }
2437  },
2438/* bclr $reg8$dot$qbit */
2439  {
2440    { 0, 0, 0, 0 },
2441    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2442    & ifmt_bclr0, { 0x9e }
2443  },
2444/* bclr $reg8$dot$qbit */
2445  {
2446    { 0, 0, 0, 0 },
2447    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2448    & ifmt_bclr0, { 0xae }
2449  },
2450/* bclr $reg8$dot$qbit */
2451  {
2452    { 0, 0, 0, 0 },
2453    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2454    & ifmt_bclr0, { 0xbe }
2455  },
2456/* bclr $reg8$dot$qbit */
2457  {
2458    { 0, 0, 0, 0 },
2459    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2460    & ifmt_bclr0, { 0xce }
2461  },
2462/* bclr $reg8$dot$qbit */
2463  {
2464    { 0, 0, 0, 0 },
2465    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2466    & ifmt_bclr0, { 0xde }
2467  },
2468/* bclr $reg8$dot$qbit */
2469  {
2470    { 0, 0, 0, 0 },
2471    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2472    & ifmt_bclr0, { 0xee }
2473  },
2474/* bclr $reg8$dot$qbit */
2475  {
2476    { 0, 0, 0, 0 },
2477    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2478    & ifmt_bclr0, { 0xfe }
2479  },
2480/* bset $RegNam */
2481  {
2482    { 0, 0, 0, 0 },
2483    { { MNEM, ' ', OP (REGNAM), 0 } },
2484    & ifmt_bclr18, { 0xbf }
2485  },
2486/* bset $reg8$dot$qbit */
2487  {
2488    { 0, 0, 0, 0 },
2489    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2490    & ifmt_bclr0, { 0xf }
2491  },
2492/* bset $reg8$dot$qbit */
2493  {
2494    { 0, 0, 0, 0 },
2495    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2496    & ifmt_bclr0, { 0x1f }
2497  },
2498/* bset $reg8$dot$qbit */
2499  {
2500    { 0, 0, 0, 0 },
2501    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2502    & ifmt_bclr0, { 0x2f }
2503  },
2504/* bset $reg8$dot$qbit */
2505  {
2506    { 0, 0, 0, 0 },
2507    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2508    & ifmt_bclr0, { 0x3f }
2509  },
2510/* bset $reg8$dot$qbit */
2511  {
2512    { 0, 0, 0, 0 },
2513    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2514    & ifmt_bclr0, { 0x4f }
2515  },
2516/* bset $reg8$dot$qbit */
2517  {
2518    { 0, 0, 0, 0 },
2519    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2520    & ifmt_bclr0, { 0x5f }
2521  },
2522/* bset $reg8$dot$qbit */
2523  {
2524    { 0, 0, 0, 0 },
2525    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2526    & ifmt_bclr0, { 0x6f }
2527  },
2528/* bset $reg8$dot$qbit */
2529  {
2530    { 0, 0, 0, 0 },
2531    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2532    & ifmt_bclr0, { 0x7f }
2533  },
2534/* bset $reg8$dot$qbit */
2535  {
2536    { 0, 0, 0, 0 },
2537    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2538    & ifmt_bclr0, { 0x8f }
2539  },
2540/* bset $reg8$dot$qbit */
2541  {
2542    { 0, 0, 0, 0 },
2543    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2544    & ifmt_bclr0, { 0x9f }
2545  },
2546/* bset $reg8$dot$qbit */
2547  {
2548    { 0, 0, 0, 0 },
2549    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2550    & ifmt_bclr0, { 0xaf }
2551  },
2552/* bset $reg8$dot$qbit */
2553  {
2554    { 0, 0, 0, 0 },
2555    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2556    & ifmt_bclr0, { 0xbf }
2557  },
2558/* bset $reg8$dot$qbit */
2559  {
2560    { 0, 0, 0, 0 },
2561    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2562    & ifmt_bclr0, { 0xcf }
2563  },
2564/* bset $reg8$dot$qbit */
2565  {
2566    { 0, 0, 0, 0 },
2567    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2568    & ifmt_bclr0, { 0xdf }
2569  },
2570/* bset $reg8$dot$qbit */
2571  {
2572    { 0, 0, 0, 0 },
2573    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2574    & ifmt_bclr0, { 0xef }
2575  },
2576/* bset $reg8$dot$qbit */
2577  {
2578    { 0, 0, 0, 0 },
2579    { { MNEM, ' ', OP (REG8), OP (DOT), OP (QBIT), 0 } },
2580    & ifmt_bclr0, { 0xff }
2581  },
2582/* bmov $reghi8$dot$qhibit,$reg8$dot$qlobit */
2583  {
2584    { 0, 0, 0, 0 },
2585    { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
2586    & ifmt_bmov, { 0x4a }
2587  },
2588/* bmovn $reghi8$dot$qhibit,$reg8$dot$qlobit */
2589  {
2590    { 0, 0, 0, 0 },
2591    { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
2592    & ifmt_bmov, { 0x3a }
2593  },
2594/* band $reghi8$dot$qhibit,$reg8$dot$qlobit */
2595  {
2596    { 0, 0, 0, 0 },
2597    { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
2598    & ifmt_bmov, { 0x6a }
2599  },
2600/* bor $reghi8$dot$qhibit,$reg8$dot$qlobit */
2601  {
2602    { 0, 0, 0, 0 },
2603    { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
2604    & ifmt_bmov, { 0x5a }
2605  },
2606/* bxor $reghi8$dot$qhibit,$reg8$dot$qlobit */
2607  {
2608    { 0, 0, 0, 0 },
2609    { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
2610    & ifmt_bmov, { 0x7a }
2611  },
2612/* bcmp $reghi8$dot$qhibit,$reg8$dot$qlobit */
2613  {
2614    { 0, 0, 0, 0 },
2615    { { MNEM, ' ', OP (REGHI8), OP (DOT), OP (QHIBIT), ',', OP (REG8), OP (DOT), OP (QLOBIT), 0 } },
2616    & ifmt_bmov, { 0x2a }
2617  },
2618/* bfldl $reg8,$hash$mask8,$hash$datahi8 */
2619  {
2620    { 0, 0, 0, 0 },
2621    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (MASK8), ',', OP (HASH), OP (DATAHI8), 0 } },
2622    & ifmt_bfldl, { 0xa }
2623  },
2624/* bfldh $reg8,$hash$masklo8,$hash$data8 */
2625  {
2626    { 0, 0, 0, 0 },
2627    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (MASKLO8), ',', OP (HASH), OP (DATA8), 0 } },
2628    & ifmt_bfldh, { 0x1a }
2629  },
2630/* cmp $src1,$src2 */
2631  {
2632    { 0, 0, 0, 0 },
2633    { { MNEM, ' ', OP (SRC1), ',', OP (SRC2), 0 } },
2634    & ifmt_muls, { 0x40 }
2635  },
2636/* cmpb $drb,$srb */
2637  {
2638    { 0, 0, 0, 0 },
2639    { { MNEM, ' ', OP (DRB), ',', OP (SRB), 0 } },
2640    & ifmt_addbr, { 0x41 }
2641  },
2642/* cmp $src1,$hash$uimm3 */
2643  {
2644    { 0, 0, 0, 0 },
2645    { { MNEM, ' ', OP (SRC1), ',', OP (HASH), OP (UIMM3), 0 } },
2646    & ifmt_cmpri, { 0x48 }
2647  },
2648/* cmpb $drb,$hash$uimm3 */
2649  {
2650    { 0, 0, 0, 0 },
2651    { { MNEM, ' ', OP (DRB), ',', OP (HASH), OP (UIMM3), 0 } },
2652    & ifmt_addbrhpag3, { 0x49 }
2653  },
2654/* cmp $reg8,$hash$uimm16 */
2655  {
2656    { 0, 0, 0, 0 },
2657    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
2658    & ifmt_addrhpof, { 0x46 }
2659  },
2660/* cmpb $regb8,$hash$uimm8 */
2661  {
2662    { 0, 0, 0, 0 },
2663    { { MNEM, ' ', OP (REGB8), ',', OP (HASH), OP (UIMM8), 0 } },
2664    & ifmt_addrbhpof, { 0x47 }
2665  },
2666/* cmp $dr,[$sr2] */
2667  {
2668    { 0, 0, 0, 0 },
2669    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), ']', 0 } },
2670    & ifmt_add2, { 0x848 }
2671  },
2672/* cmpb $drb,[$sr2] */
2673  {
2674    { 0, 0, 0, 0 },
2675    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), ']', 0 } },
2676    & ifmt_addb2, { 0x849 }
2677  },
2678/* cmp $dr,[$sr2+] */
2679  {
2680    { 0, 0, 0, 0 },
2681    { { MNEM, ' ', OP (DR), ',', '[', OP (SR2), '+', ']', 0 } },
2682    & ifmt_add2, { 0xc48 }
2683  },
2684/* cmpb $drb,[$sr2+] */
2685  {
2686    { 0, 0, 0, 0 },
2687    { { MNEM, ' ', OP (DRB), ',', '[', OP (SR2), '+', ']', 0 } },
2688    & ifmt_addb2, { 0xc49 }
2689  },
2690/* cmp $reg8,$pof$upof16 */
2691  {
2692    { 0, 0, 0, 0 },
2693    { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
2694    & ifmt_addrpof, { 0x42 }
2695  },
2696/* cmpb $regb8,$pof$upof16 */
2697  {
2698    { 0, 0, 0, 0 },
2699    { { MNEM, ' ', OP (REGB8), ',', OP (POF), OP (UPOF16), 0 } },
2700    & ifmt_addbrpof, { 0x43 }
2701  },
2702/* cmp $regmem8,$memgr8 */
2703  {
2704    { 0, 0, 0, 0 },
2705    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
2706    & ifmt_addrm2, { 0x42 }
2707  },
2708/* cmp $reg8,$memory */
2709  {
2710    { 0, 0, 0, 0 },
2711    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
2712    & ifmt_addrm, { 0x42 }
2713  },
2714/* cmpb $regbmem8,$memgr8 */
2715  {
2716    { 0, 0, 0, 0 },
2717    { { MNEM, ' ', OP (REGBMEM8), ',', OP (MEMGR8), 0 } },
2718    & ifmt_addbrm2, { 0x43 }
2719  },
2720/* cmpb $regb8,$memory */
2721  {
2722    { 0, 0, 0, 0 },
2723    { { MNEM, ' ', OP (REGB8), ',', OP (MEMORY), 0 } },
2724    & ifmt_addbrm, { 0x43 }
2725  },
2726/* cmpd1 $sr,$hash$uimm4 */
2727  {
2728    { 0, 0, 0, 0 },
2729    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
2730    & ifmt_cmpd1ri, { 0xa0 }
2731  },
2732/* cmpd2 $sr,$hash$uimm4 */
2733  {
2734    { 0, 0, 0, 0 },
2735    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
2736    & ifmt_cmpd1ri, { 0xb0 }
2737  },
2738/* cmpi1 $sr,$hash$uimm4 */
2739  {
2740    { 0, 0, 0, 0 },
2741    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
2742    & ifmt_cmpd1ri, { 0x80 }
2743  },
2744/* cmpi2 $sr,$hash$uimm4 */
2745  {
2746    { 0, 0, 0, 0 },
2747    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
2748    & ifmt_cmpd1ri, { 0x90 }
2749  },
2750/* cmpd1 $reg8,$hash$uimm16 */
2751  {
2752    { 0, 0, 0, 0 },
2753    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
2754    & ifmt_addrhpof, { 0xa6 }
2755  },
2756/* cmpd2 $reg8,$hash$uimm16 */
2757  {
2758    { 0, 0, 0, 0 },
2759    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
2760    & ifmt_addrhpof, { 0xb6 }
2761  },
2762/* cmpi1 $reg8,$hash$uimm16 */
2763  {
2764    { 0, 0, 0, 0 },
2765    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
2766    & ifmt_addrhpof, { 0x86 }
2767  },
2768/* cmpi2 $reg8,$hash$uimm16 */
2769  {
2770    { 0, 0, 0, 0 },
2771    { { MNEM, ' ', OP (REG8), ',', OP (HASH), OP (UIMM16), 0 } },
2772    & ifmt_addrhpof, { 0x96 }
2773  },
2774/* cmpd1 $reg8,$pof$upof16 */
2775  {
2776    { 0, 0, 0, 0 },
2777    { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
2778    & ifmt_addrpof, { 0xa2 }
2779  },
2780/* cmpd2 $reg8,$pof$upof16 */
2781  {
2782    { 0, 0, 0, 0 },
2783    { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
2784    & ifmt_addrpof, { 0xb2 }
2785  },
2786/* cmpi1 $reg8,$pof$upof16 */
2787  {
2788    { 0, 0, 0, 0 },
2789    { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
2790    & ifmt_addrpof, { 0x82 }
2791  },
2792/* cmpi2 $reg8,$pof$upof16 */
2793  {
2794    { 0, 0, 0, 0 },
2795    { { MNEM, ' ', OP (REG8), ',', OP (POF), OP (UPOF16), 0 } },
2796    & ifmt_addrpof, { 0x92 }
2797  },
2798/* cmpd1 $regmem8,$memgr8 */
2799  {
2800    { 0, 0, 0, 0 },
2801    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
2802    & ifmt_addrm2, { 0xa2 }
2803  },
2804/* cmpd2 $regmem8,$memgr8 */
2805  {
2806    { 0, 0, 0, 0 },
2807    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
2808    & ifmt_addrm2, { 0xb2 }
2809  },
2810/* cmpi1 $regmem8,$memgr8 */
2811  {
2812    { 0, 0, 0, 0 },
2813    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
2814    & ifmt_addrm2, { 0x82 }
2815  },
2816/* cmpi2 $regmem8,$memgr8 */
2817  {
2818    { 0, 0, 0, 0 },
2819    { { MNEM, ' ', OP (REGMEM8), ',', OP (MEMGR8), 0 } },
2820    & ifmt_addrm2, { 0x92 }
2821  },
2822/* cmpd1 $reg8,$memory */
2823  {
2824    { 0, 0, 0, 0 },
2825    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
2826    & ifmt_addrm, { 0xa2 }
2827  },
2828/* cmpd2 $reg8,$memory */
2829  {
2830    { 0, 0, 0, 0 },
2831    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
2832    & ifmt_addrm, { 0xb2 }
2833  },
2834/* cmpi1 $reg8,$memory */
2835  {
2836    { 0, 0, 0, 0 },
2837    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
2838    & ifmt_addrm, { 0x82 }
2839  },
2840/* cmpi2 $reg8,$memory */
2841  {
2842    { 0, 0, 0, 0 },
2843    { { MNEM, ' ', OP (REG8), ',', OP (MEMORY), 0 } },
2844    & ifmt_addrm, { 0x92 }
2845  },
2846/* shl $dr,$sr */
2847  {
2848    { 0, 0, 0, 0 },
2849    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
2850    & ifmt_addr, { 0x4c }
2851  },
2852/* shr $dr,$sr */
2853  {
2854    { 0, 0, 0, 0 },
2855    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
2856    & ifmt_addr, { 0x6c }
2857  },
2858/* rol $dr,$sr */
2859  {
2860    { 0, 0, 0, 0 },
2861    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
2862    & ifmt_addr, { 0xc }
2863  },
2864/* ror $dr,$sr */
2865  {
2866    { 0, 0, 0, 0 },
2867    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
2868    & ifmt_addr, { 0x2c }
2869  },
2870/* ashr $dr,$sr */
2871  {
2872    { 0, 0, 0, 0 },
2873    { { MNEM, ' ', OP (DR), ',', OP (SR), 0 } },
2874    & ifmt_addr, { 0xac }
2875  },
2876/* shl $sr,$hash$uimm4 */
2877  {
2878    { 0, 0, 0, 0 },
2879    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
2880    & ifmt_cmpd1ri, { 0x5c }
2881  },
2882/* shr $sr,$hash$uimm4 */
2883  {
2884    { 0, 0, 0, 0 },
2885    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
2886    & ifmt_cmpd1ri, { 0x7c }
2887  },
2888/* rol $sr,$hash$uimm4 */
2889  {
2890    { 0, 0, 0, 0 },
2891    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
2892    & ifmt_cmpd1ri, { 0x1c }
2893  },
2894/* ror $sr,$hash$uimm4 */
2895  {
2896    { 0, 0, 0, 0 },
2897    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
2898    & ifmt_cmpd1ri, { 0x3c }
2899  },
2900/* ashr $sr,$hash$uimm4 */
2901  {
2902    { 0, 0, 0, 0 },
2903    { { MNEM, ' ', OP (SR), ',', OP (HASH), OP (UIMM4), 0 } },
2904    & ifmt_cmpd1ri, { 0xbc }
2905  },
2906};
2907
2908#undef A
2909#undef OPERAND
2910#undef MNEM
2911#undef OP
2912
2913/* Formats for ALIAS macro-insns.  */
2914
2915#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
2916#define F(f) & xc16x_cgen_ifld_table[XC16X_##f]
2917#else
2918#define F(f) & xc16x_cgen_ifld_table[XC16X_/**/f]
2919#endif
2920#undef F
2921
2922/* Each non-simple macro entry points to an array of expansion possibilities.  */
2923
2924#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
2925#define A(a) (1 << CGEN_INSN_##a)
2926#else
2927#define A(a) (1 << CGEN_INSN_/**/a)
2928#endif
2929#if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
2930#define OPERAND(op) XC16X_OPERAND_##op
2931#else
2932#define OPERAND(op) XC16X_OPERAND_/**/op
2933#endif
2934#define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
2935#define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
2936
2937/* The macro instruction table.  */
2938
2939static const CGEN_IBASE xc16x_cgen_macro_insn_table[] =
2940{
2941};
2942
2943/* The macro instruction opcode table.  */
2944
2945static const CGEN_OPCODE xc16x_cgen_macro_insn_opcode_table[] =
2946{
2947};
2948
2949#undef A
2950#undef OPERAND
2951#undef MNEM
2952#undef OP
2953
2954#ifndef CGEN_ASM_HASH_P
2955#define CGEN_ASM_HASH_P(insn) 1
2956#endif
2957
2958#ifndef CGEN_DIS_HASH_P
2959#define CGEN_DIS_HASH_P(insn) 1
2960#endif
2961
2962/* Return non-zero if INSN is to be added to the hash table.
2963   Targets are free to override CGEN_{ASM,DIS}_HASH_P in the .opc file.  */
2964
2965static int
2966asm_hash_insn_p (insn)
2967     const CGEN_INSN *insn ATTRIBUTE_UNUSED;
2968{
2969  return CGEN_ASM_HASH_P (insn);
2970}
2971
2972static int
2973dis_hash_insn_p (insn)
2974     const CGEN_INSN *insn;
2975{
2976  /* If building the hash table and the NO-DIS attribute is present,
2977     ignore.  */
2978  if (CGEN_INSN_ATTR_VALUE (insn, CGEN_INSN_NO_DIS))
2979    return 0;
2980  return CGEN_DIS_HASH_P (insn);
2981}
2982
2983#ifndef CGEN_ASM_HASH
2984#define CGEN_ASM_HASH_SIZE 127
2985#ifdef CGEN_MNEMONIC_OPERANDS
2986#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE)
2987#else
2988#define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
2989#endif
2990#endif
2991
2992/* It doesn't make much sense to provide a default here,
2993   but while this is under development we do.
2994   BUFFER is a pointer to the bytes of the insn, target order.
2995   VALUE is the first base_insn_bitsize bits as an int in host order.  */
2996
2997#ifndef CGEN_DIS_HASH
2998#define CGEN_DIS_HASH_SIZE 256
2999#define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
3000#endif
3001
3002/* The result is the hash value of the insn.
3003   Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file.  */
3004
3005static unsigned int
3006asm_hash_insn (mnem)
3007     const char * mnem;
3008{
3009  return CGEN_ASM_HASH (mnem);
3010}
3011
3012/* BUF is a pointer to the bytes of the insn, target order.
3013   VALUE is the first base_insn_bitsize bits as an int in host order.  */
3014
3015static unsigned int
3016dis_hash_insn (buf, value)
3017     const char * buf ATTRIBUTE_UNUSED;
3018     CGEN_INSN_INT value ATTRIBUTE_UNUSED;
3019{
3020  return CGEN_DIS_HASH (buf, value);
3021}
3022
3023/* Set the recorded length of the insn in the CGEN_FIELDS struct.  */
3024
3025static void
3026set_fields_bitsize (CGEN_FIELDS *fields, int size)
3027{
3028  CGEN_FIELDS_BITSIZE (fields) = size;
3029}
3030
3031/* Function to call before using the operand instance table.
3032   This plugs the opcode entries and macro instructions into the cpu table.  */
3033
3034void
3035xc16x_cgen_init_opcode_table (CGEN_CPU_DESC cd)
3036{
3037  int i;
3038  int num_macros = (sizeof (xc16x_cgen_macro_insn_table) /
3039		    sizeof (xc16x_cgen_macro_insn_table[0]));
3040  const CGEN_IBASE *ib = & xc16x_cgen_macro_insn_table[0];
3041  const CGEN_OPCODE *oc = & xc16x_cgen_macro_insn_opcode_table[0];
3042  CGEN_INSN *insns = xmalloc (num_macros * sizeof (CGEN_INSN));
3043
3044  memset (insns, 0, num_macros * sizeof (CGEN_INSN));
3045  for (i = 0; i < num_macros; ++i)
3046    {
3047      insns[i].base = &ib[i];
3048      insns[i].opcode = &oc[i];
3049      xc16x_cgen_build_insn_regex (& insns[i]);
3050    }
3051  cd->macro_insn_table.init_entries = insns;
3052  cd->macro_insn_table.entry_size = sizeof (CGEN_IBASE);
3053  cd->macro_insn_table.num_init_entries = num_macros;
3054
3055  oc = & xc16x_cgen_insn_opcode_table[0];
3056  insns = (CGEN_INSN *) cd->insn_table.init_entries;
3057  for (i = 0; i < MAX_INSNS; ++i)
3058    {
3059      insns[i].opcode = &oc[i];
3060      xc16x_cgen_build_insn_regex (& insns[i]);
3061    }
3062
3063  cd->sizeof_fields = sizeof (CGEN_FIELDS);
3064  cd->set_fields_bitsize = set_fields_bitsize;
3065
3066  cd->asm_hash_p = asm_hash_insn_p;
3067  cd->asm_hash = asm_hash_insn;
3068  cd->asm_hash_size = CGEN_ASM_HASH_SIZE;
3069
3070  cd->dis_hash_p = dis_hash_insn_p;
3071  cd->dis_hash = dis_hash_insn;
3072  cd->dis_hash_size = CGEN_DIS_HASH_SIZE;
3073}
3074