1 /* Instruction opcode table for xc16x.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright 1996-2009 Free Software Foundation, Inc.
7 This file is part of the GNU Binutils and/or GDB, the GNU debugger.
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)
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.
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.
29 #include "xc16x-desc.h"
30 #include "xc16x-opc.h"
31 #include "libiberty.h"
36 /* The hash functions are recorded here to help keep assembler code out of
37 the disassembler and vice versa. */
39 static int asm_hash_insn_p (const CGEN_INSN
*);
40 static unsigned int asm_hash_insn (const char *);
41 static int dis_hash_insn_p (const CGEN_INSN
*);
42 static unsigned int dis_hash_insn (const char *, CGEN_INSN_INT
);
44 /* Instruction formats. */
46 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
47 #define F(f) & xc16x_cgen_ifld_table[XC16X_##f]
49 #define F(f) & xc16x_cgen_ifld_table[XC16X_/**/f]
51 static const CGEN_IFMT ifmt_empty ATTRIBUTE_UNUSED
= {
55 static const CGEN_IFMT ifmt_addrpof ATTRIBUTE_UNUSED
= {
56 32, 32, 0xff, { { F (F_MEMORY
) }, { F (F_REG8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
59 static const CGEN_IFMT ifmt_addbrpof ATTRIBUTE_UNUSED
= {
60 32, 32, 0xff, { { F (F_MEMORY
) }, { F (F_REGB8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
63 static const CGEN_IFMT ifmt_addrpag ATTRIBUTE_UNUSED
= {
64 32, 32, 0xff, { { F (F_UIMM16
) }, { F (F_REG8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
67 static const CGEN_IFMT ifmt_addbrpag ATTRIBUTE_UNUSED
= {
68 32, 32, 0xff, { { F (F_UIMM16
) }, { F (F_REGB8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
71 static const CGEN_IFMT ifmt_addrhpof ATTRIBUTE_UNUSED
= {
72 32, 32, 0xff, { { F (F_UIMM16
) }, { F (F_REG8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
75 static 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 } }
79 static 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 } }
83 static 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 } }
87 static const CGEN_IFMT ifmt_addr ATTRIBUTE_UNUSED
= {
88 16, 16, 0xff, { { F (F_R1
) }, { F (F_R2
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
91 static const CGEN_IFMT ifmt_addbr ATTRIBUTE_UNUSED
= {
92 16, 16, 0xff, { { F (F_R1
) }, { F (F_R2
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
95 static 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 } }
99 static 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 } }
103 static const CGEN_IFMT ifmt_addrm2 ATTRIBUTE_UNUSED
= {
104 32, 32, 0xff, { { F (F_MEMGR8
) }, { F (F_REGMEM8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
107 static const CGEN_IFMT ifmt_addrm ATTRIBUTE_UNUSED
= {
108 32, 32, 0xff, { { F (F_MEMORY
) }, { F (F_REG8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
111 static const CGEN_IFMT ifmt_addbrm2 ATTRIBUTE_UNUSED
= {
112 32, 32, 0xff, { { F (F_MEMGR8
) }, { F (F_REGMEM8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
115 static const CGEN_IFMT ifmt_addbrm ATTRIBUTE_UNUSED
= {
116 32, 32, 0xff, { { F (F_MEMORY
) }, { F (F_REGB8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
119 static const CGEN_IFMT ifmt_muls ATTRIBUTE_UNUSED
= {
120 16, 16, 0xff, { { F (F_R1
) }, { F (F_R2
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
123 static const CGEN_IFMT ifmt_div ATTRIBUTE_UNUSED
= {
124 16, 16, 0xff, { { F (F_REG8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
127 static 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 } }
131 static 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 } }
135 static const CGEN_IFMT ifmt_movri ATTRIBUTE_UNUSED
= {
136 16, 16, 0xff, { { F (F_UIMM4
) }, { F (F_R4
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
139 static const CGEN_IFMT ifmt_movbri ATTRIBUTE_UNUSED
= {
140 16, 16, 0xff, { { F (F_UIMM4
) }, { F (F_R2
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
143 static const CGEN_IFMT ifmt_movbr2 ATTRIBUTE_UNUSED
= {
144 16, 16, 0xff, { { F (F_R1
) }, { F (F_R2
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
147 static 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 } }
151 static 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 } }
155 static 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 } }
159 static const CGEN_IFMT ifmt_movehm5 ATTRIBUTE_UNUSED
= {
160 32, 32, 0xff, { { F (F_MEMORY
) }, { F (F_REGOFF8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
163 static const CGEN_IFMT ifmt_movehm6 ATTRIBUTE_UNUSED
= {
164 32, 32, 0xff, { { F (F_UIMM16
) }, { F (F_REGOFF8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
167 static const CGEN_IFMT ifmt_movehm7 ATTRIBUTE_UNUSED
= {
168 32, 32, 0xff, { { F (F_OFFSET16
) }, { F (F_REGOFF8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
171 static const CGEN_IFMT ifmt_movehm8 ATTRIBUTE_UNUSED
= {
172 32, 32, 0xff, { { F (F_OFFSET16
) }, { F (F_REGOFF8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
175 static 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 } }
179 static const CGEN_IFMT ifmt_movbsrpofm ATTRIBUTE_UNUSED
= {
180 32, 32, 0xff, { { F (F_MEMORY
) }, { F (F_REGMEM8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
183 static const CGEN_IFMT ifmt_movbspofmr ATTRIBUTE_UNUSED
= {
184 32, 32, 0xff, { { F (F_MEMORY
) }, { F (F_REGMEM8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
187 static 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 } }
191 static 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 } }
195 static const CGEN_IFMT ifmt_jmpi ATTRIBUTE_UNUSED
= {
196 16, 16, 0xff, { { F (F_ICONDCODE
) }, { F (F_R2
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
199 static const CGEN_IFMT ifmt_jmpr_nenz ATTRIBUTE_UNUSED
= {
200 16, 16, 0xff, { { F (F_REL8
) }, { F (F_RCOND
) }, { F (F_OP2
) }, { 0 } }
203 static const CGEN_IFMT ifmt_jmpseg ATTRIBUTE_UNUSED
= {
204 32, 32, 0xff, { { F (F_OFFSET16
) }, { F (F_SEG8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
207 static const CGEN_IFMT ifmt_jmps ATTRIBUTE_UNUSED
= {
208 32, 32, 0xff, { { F (F_OFFSET16
) }, { F (F_SEG8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
211 static 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 } }
215 static 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 } }
219 static 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 } }
223 static const CGEN_IFMT ifmt_callr ATTRIBUTE_UNUSED
= {
224 16, 16, 0xff, { { F (F_REL8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
227 static const CGEN_IFMT ifmt_callseg ATTRIBUTE_UNUSED
= {
228 32, 32, 0xff, { { F (F_OFFSET16
) }, { F (F_SEG8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
231 static const CGEN_IFMT ifmt_pcall ATTRIBUTE_UNUSED
= {
232 32, 32, 0xff, { { F (F_OFFSET16
) }, { F (F_REG8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
235 static 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 } }
239 static const CGEN_IFMT ifmt_ret ATTRIBUTE_UNUSED
= {
240 16, 16, 0xff0000ff, { { F (F_OP_BIT8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
243 static const CGEN_IFMT ifmt_retp ATTRIBUTE_UNUSED
= {
244 16, 16, 0xff, { { F (F_REG8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
247 static 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 } }
251 static 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 } }
255 static 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 } }
259 static 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 } }
263 static 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 } }
267 static 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 } }
271 static 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 } }
275 static const CGEN_IFMT ifmt_bclr18 ATTRIBUTE_UNUSED
= {
276 16, 16, 0xff, { { F (F_REG8
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
279 static const CGEN_IFMT ifmt_bclr0 ATTRIBUTE_UNUSED
= {
280 16, 16, 0xff, { { F (F_REG8
) }, { F (F_QCOND
) }, { F (F_OP2
) }, { 0 } }
283 static 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 } }
287 static 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 } }
291 static 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 } }
295 static 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 } }
299 static const CGEN_IFMT ifmt_cmpd1ri ATTRIBUTE_UNUSED
= {
300 16, 16, 0xff, { { F (F_UIMM4
) }, { F (F_R2
) }, { F (F_OP1
) }, { F (F_OP2
) }, { 0 } }
305 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
306 #define A(a) (1 << CGEN_INSN_##a)
308 #define A(a) (1 << CGEN_INSN_/**/a)
310 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
311 #define OPERAND(op) XC16X_OPERAND_##op
313 #define OPERAND(op) XC16X_OPERAND_/**/op
315 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
316 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
318 /* The instruction table. */
320 static const CGEN_OPCODE xc16x_cgen_insn_opcode_table
[MAX_INSNS
] =
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 */
329 { { MNEM
, ' ', OP (REG8
), ',', OP (POF
), OP (UPOF16
), 0 } },
330 & ifmt_addrpof
, { 0x2 }
332 /* sub $reg8,$pof$upof16 */
335 { { MNEM
, ' ', OP (REG8
), ',', OP (POF
), OP (UPOF16
), 0 } },
336 & ifmt_addrpof
, { 0x22 }
338 /* addb $regb8,$pof$upof16 */
341 { { MNEM
, ' ', OP (REGB8
), ',', OP (POF
), OP (UPOF16
), 0 } },
342 & ifmt_addbrpof
, { 0x3 }
344 /* subb $regb8,$pof$upof16 */
347 { { MNEM
, ' ', OP (REGB8
), ',', OP (POF
), OP (UPOF16
), 0 } },
348 & ifmt_addbrpof
, { 0x23 }
350 /* add $reg8,$pag$upag16 */
353 { { MNEM
, ' ', OP (REG8
), ',', OP (PAG
), OP (UPAG16
), 0 } },
354 & ifmt_addrpag
, { 0x2 }
356 /* sub $reg8,$pag$upag16 */
359 { { MNEM
, ' ', OP (REG8
), ',', OP (PAG
), OP (UPAG16
), 0 } },
360 & ifmt_addrpag
, { 0x22 }
362 /* addb $regb8,$pag$upag16 */
365 { { MNEM
, ' ', OP (REGB8
), ',', OP (PAG
), OP (UPAG16
), 0 } },
366 & ifmt_addbrpag
, { 0x3 }
368 /* subb $regb8,$pag$upag16 */
371 { { MNEM
, ' ', OP (REGB8
), ',', OP (PAG
), OP (UPAG16
), 0 } },
372 & ifmt_addbrpag
, { 0x23 }
374 /* addc $reg8,$pof$upof16 */
377 { { MNEM
, ' ', OP (REG8
), ',', OP (POF
), OP (UPOF16
), 0 } },
378 & ifmt_addrpof
, { 0x12 }
380 /* subc $reg8,$pof$upof16 */
383 { { MNEM
, ' ', OP (REG8
), ',', OP (POF
), OP (UPOF16
), 0 } },
384 & ifmt_addrpof
, { 0x32 }
386 /* addcb $regb8,$pof$upof16 */
389 { { MNEM
, ' ', OP (REGB8
), ',', OP (POF
), OP (UPOF16
), 0 } },
390 & ifmt_addbrpof
, { 0x13 }
392 /* subcb $regb8,$pof$upof16 */
395 { { MNEM
, ' ', OP (REGB8
), ',', OP (POF
), OP (UPOF16
), 0 } },
396 & ifmt_addbrpof
, { 0x33 }
398 /* addc $reg8,$pag$upag16 */
401 { { MNEM
, ' ', OP (REG8
), ',', OP (PAG
), OP (UPAG16
), 0 } },
402 & ifmt_addrpag
, { 0x12 }
404 /* subc $reg8,$pag$upag16 */
407 { { MNEM
, ' ', OP (REG8
), ',', OP (PAG
), OP (UPAG16
), 0 } },
408 & ifmt_addrpag
, { 0x32 }
410 /* addcb $regb8,$pag$upag16 */
413 { { MNEM
, ' ', OP (REGB8
), ',', OP (PAG
), OP (UPAG16
), 0 } },
414 & ifmt_addbrpag
, { 0x13 }
416 /* subcb $regb8,$pag$upag16 */
419 { { MNEM
, ' ', OP (REGB8
), ',', OP (PAG
), OP (UPAG16
), 0 } },
420 & ifmt_addbrpag
, { 0x33 }
422 /* add $pof$upof16,$reg8 */
425 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REG8
), 0 } },
426 & ifmt_addrpof
, { 0x4 }
428 /* sub $pof$upof16,$reg8 */
431 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REG8
), 0 } },
432 & ifmt_addrpof
, { 0x24 }
434 /* addb $pof$upof16,$regb8 */
437 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REGB8
), 0 } },
438 & ifmt_addbrpof
, { 0x5 }
440 /* subb $pof$upof16,$regb8 */
443 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REGB8
), 0 } },
444 & ifmt_addbrpof
, { 0x25 }
446 /* addc $pof$upof16,$reg8 */
449 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REG8
), 0 } },
450 & ifmt_addrpof
, { 0x14 }
452 /* subc $pof$upof16,$reg8 */
455 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REG8
), 0 } },
456 & ifmt_addrpof
, { 0x34 }
458 /* addcb $pof$upof16,$regb8 */
461 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REGB8
), 0 } },
462 & ifmt_addbrpof
, { 0x15 }
464 /* subcb $pof$upof16,$regb8 */
467 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REGB8
), 0 } },
468 & ifmt_addbrpof
, { 0x35 }
470 /* add $reg8,$hash$pof$uimm16 */
473 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (POF
), OP (UIMM16
), 0 } },
474 & ifmt_addrhpof
, { 0x6 }
476 /* sub $reg8,$hash$pof$uimm16 */
479 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (POF
), OP (UIMM16
), 0 } },
480 & ifmt_addrhpof
, { 0x26 }
482 /* add $reg8,$hash$pag$uimm16 */
485 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (PAG
), OP (UIMM16
), 0 } },
486 & ifmt_addrhpof
, { 0x6 }
488 /* sub $reg8,$hash$pag$uimm16 */
491 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (PAG
), OP (UIMM16
), 0 } },
492 & ifmt_addrhpof
, { 0x26 }
494 /* add $dr,$hash$pof$uimm3 */
497 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (POF
), OP (UIMM3
), 0 } },
498 & ifmt_addrhpof3
, { 0x8 }
500 /* sub $dr,$hash$pof$uimm3 */
503 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (POF
), OP (UIMM3
), 0 } },
504 & ifmt_addrhpof3
, { 0x28 }
506 /* addb $drb,$hash$pag$uimm3 */
509 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (PAG
), OP (UIMM3
), 0 } },
510 & ifmt_addbrhpag3
, { 0x9 }
512 /* subb $drb,$hash$pag$uimm3 */
515 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (PAG
), OP (UIMM3
), 0 } },
516 & ifmt_addbrhpag3
, { 0x29 }
518 /* add $dr,$hash$pag$uimm3 */
521 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (PAG
), OP (UIMM3
), 0 } },
522 & ifmt_addrhpof3
, { 0x8 }
524 /* sub $dr,$hash$pag$uimm3 */
527 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (PAG
), OP (UIMM3
), 0 } },
528 & ifmt_addrhpof3
, { 0x28 }
530 /* addb $drb,$hash$pof$uimm3 */
533 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (POF
), OP (UIMM3
), 0 } },
534 & ifmt_addbrhpag3
, { 0x9 }
536 /* subb $drb,$hash$pof$uimm3 */
539 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (POF
), OP (UIMM3
), 0 } },
540 & ifmt_addbrhpag3
, { 0x29 }
542 /* addb $regb8,$hash$pof$uimm8 */
545 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (POF
), OP (UIMM8
), 0 } },
546 & ifmt_addrbhpof
, { 0x7 }
548 /* subb $regb8,$hash$pof$uimm8 */
551 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (POF
), OP (UIMM8
), 0 } },
552 & ifmt_addrbhpof
, { 0x27 }
554 /* addb $regb8,$hash$pag$uimm8 */
557 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (PAG
), OP (UIMM8
), 0 } },
558 & ifmt_addrbhpof
, { 0x7 }
560 /* subb $regb8,$hash$pag$uimm8 */
563 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (PAG
), OP (UIMM8
), 0 } },
564 & ifmt_addrbhpof
, { 0x27 }
566 /* addc $reg8,$hash$pof$uimm16 */
569 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (POF
), OP (UIMM16
), 0 } },
570 & ifmt_addrhpof
, { 0x16 }
572 /* subc $reg8,$hash$pof$uimm16 */
575 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (POF
), OP (UIMM16
), 0 } },
576 & ifmt_addrhpof
, { 0x36 }
578 /* addc $reg8,$hash$pag$uimm16 */
581 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (PAG
), OP (UIMM16
), 0 } },
582 & ifmt_addrhpof
, { 0x16 }
584 /* subc $reg8,$hash$pag$uimm16 */
587 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (PAG
), OP (UIMM16
), 0 } },
588 & ifmt_addrhpof
, { 0x36 }
590 /* addc $dr,$hash$pof$uimm3 */
593 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (POF
), OP (UIMM3
), 0 } },
594 & ifmt_addrhpof3
, { 0x18 }
596 /* subc $dr,$hash$pof$uimm3 */
599 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (POF
), OP (UIMM3
), 0 } },
600 & ifmt_addrhpof3
, { 0x38 }
602 /* addcb $drb,$hash$pag$uimm3 */
605 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (PAG
), OP (UIMM3
), 0 } },
606 & ifmt_addbrhpag3
, { 0x19 }
608 /* subcb $drb,$hash$pag$uimm3 */
611 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (PAG
), OP (UIMM3
), 0 } },
612 & ifmt_addbrhpag3
, { 0x39 }
614 /* addc $dr,$hash$pag$uimm3 */
617 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (PAG
), OP (UIMM3
), 0 } },
618 & ifmt_addrhpof3
, { 0x18 }
620 /* subc $dr,$hash$pag$uimm3 */
623 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (PAG
), OP (UIMM3
), 0 } },
624 & ifmt_addrhpof3
, { 0x38 }
626 /* addcb $drb,$hash$pof$uimm3 */
629 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (POF
), OP (UIMM3
), 0 } },
630 & ifmt_addbrhpag3
, { 0x19 }
632 /* subcb $drb,$hash$pof$uimm3 */
635 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (POF
), OP (UIMM3
), 0 } },
636 & ifmt_addbrhpag3
, { 0x39 }
638 /* addcb $regb8,$hash$pof$uimm8 */
641 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (POF
), OP (UIMM8
), 0 } },
642 & ifmt_addrbhpof
, { 0x17 }
644 /* subcb $regb8,$hash$pof$uimm8 */
647 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (POF
), OP (UIMM8
), 0 } },
648 & ifmt_addrbhpof
, { 0x37 }
650 /* addcb $regb8,$hash$pag$uimm8 */
653 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (PAG
), OP (UIMM8
), 0 } },
654 & ifmt_addrbhpof
, { 0x17 }
656 /* subcb $regb8,$hash$pag$uimm8 */
659 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (PAG
), OP (UIMM8
), 0 } },
660 & ifmt_addrbhpof
, { 0x37 }
662 /* add $dr,$hash$uimm3 */
665 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (UIMM3
), 0 } },
666 & ifmt_addrhpof3
, { 0x8 }
668 /* sub $dr,$hash$uimm3 */
671 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (UIMM3
), 0 } },
672 & ifmt_addrhpof3
, { 0x28 }
674 /* addb $drb,$hash$uimm3 */
677 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (UIMM3
), 0 } },
678 & ifmt_addbrhpag3
, { 0x9 }
680 /* subb $drb,$hash$uimm3 */
683 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (UIMM3
), 0 } },
684 & ifmt_addbrhpag3
, { 0x29 }
686 /* add $reg8,$hash$uimm16 */
689 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
690 & ifmt_addrhpof
, { 0x6 }
692 /* sub $reg8,$hash$uimm16 */
695 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
696 & ifmt_addrhpof
, { 0x26 }
698 /* addb $regb8,$hash$uimm8 */
701 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (UIMM8
), 0 } },
702 & ifmt_addrbhpof
, { 0x7 }
704 /* subb $regb8,$hash$uimm8 */
707 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (UIMM8
), 0 } },
708 & ifmt_addrbhpof
, { 0x27 }
710 /* addc $dr,$hash$uimm3 */
713 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (UIMM3
), 0 } },
714 & ifmt_addrhpof3
, { 0x18 }
716 /* subc $dr,$hash$uimm3 */
719 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (UIMM3
), 0 } },
720 & ifmt_addrhpof3
, { 0x38 }
722 /* addcb $drb,$hash$uimm3 */
725 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (UIMM3
), 0 } },
726 & ifmt_addbrhpag3
, { 0x19 }
728 /* subcb $drb,$hash$uimm3 */
731 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (UIMM3
), 0 } },
732 & ifmt_addbrhpag3
, { 0x39 }
734 /* addc $reg8,$hash$uimm16 */
737 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
738 & ifmt_addrhpof
, { 0x16 }
740 /* subc $reg8,$hash$uimm16 */
743 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
744 & ifmt_addrhpof
, { 0x36 }
746 /* addcb $regb8,$hash$uimm8 */
749 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (UIMM8
), 0 } },
750 & ifmt_addrbhpof
, { 0x17 }
752 /* subcb $regb8,$hash$uimm8 */
755 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (UIMM8
), 0 } },
756 & ifmt_addrbhpof
, { 0x37 }
761 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
767 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
768 & ifmt_addr
, { 0x20 }
773 { { MNEM
, ' ', OP (DRB
), ',', OP (SRB
), 0 } },
774 & ifmt_addbr
, { 0x1 }
779 { { MNEM
, ' ', OP (DRB
), ',', OP (SRB
), 0 } },
780 & ifmt_addbr
, { 0x21 }
785 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), ']', 0 } },
786 & ifmt_add2
, { 0x808 }
791 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), ']', 0 } },
792 & ifmt_add2
, { 0x828 }
794 /* addb $drb,[$sr2] */
797 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), ']', 0 } },
798 & ifmt_addb2
, { 0x809 }
800 /* subb $drb,[$sr2] */
803 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), ']', 0 } },
804 & ifmt_addb2
, { 0x829 }
806 /* add $dr,[$sr2+] */
809 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), '+', ']', 0 } },
810 & ifmt_add2
, { 0xc08 }
812 /* sub $dr,[$sr2+] */
815 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), '+', ']', 0 } },
816 & ifmt_add2
, { 0xc28 }
818 /* addb $drb,[$sr2+] */
821 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), '+', ']', 0 } },
822 & ifmt_addb2
, { 0xc09 }
824 /* subb $drb,[$sr2+] */
827 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), '+', ']', 0 } },
828 & ifmt_addb2
, { 0xc29 }
833 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
834 & ifmt_addr
, { 0x10 }
839 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
840 & ifmt_addr
, { 0x30 }
842 /* addcb $drb,$srb */
845 { { MNEM
, ' ', OP (DRB
), ',', OP (SRB
), 0 } },
846 & ifmt_addbr
, { 0x11 }
848 /* subcb $drb,$srb */
851 { { MNEM
, ' ', OP (DRB
), ',', OP (SRB
), 0 } },
852 & ifmt_addbr
, { 0x31 }
854 /* addc $dr,[$sr2] */
857 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), ']', 0 } },
858 & ifmt_add2
, { 0x818 }
860 /* subc $dr,[$sr2] */
863 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), ']', 0 } },
864 & ifmt_add2
, { 0x838 }
866 /* addcb $drb,[$sr2] */
869 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), ']', 0 } },
870 & ifmt_addb2
, { 0x819 }
872 /* subcb $drb,[$sr2] */
875 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), ']', 0 } },
876 & ifmt_addb2
, { 0x839 }
878 /* addc $dr,[$sr2+] */
881 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), '+', ']', 0 } },
882 & ifmt_add2
, { 0xc18 }
884 /* subc $dr,[$sr2+] */
887 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), '+', ']', 0 } },
888 & ifmt_add2
, { 0xc38 }
890 /* addcb $drb,[$sr2+] */
893 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), '+', ']', 0 } },
894 & ifmt_addb2
, { 0xc19 }
896 /* subcb $drb,[$sr2+] */
899 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), '+', ']', 0 } },
900 & ifmt_addb2
, { 0xc39 }
902 /* add $regmem8,$memgr8 */
905 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
906 & ifmt_addrm2
, { 0x2 }
908 /* add $memgr8,$regmem8 */
911 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGMEM8
), 0 } },
912 & ifmt_addrm2
, { 0x4 }
914 /* add $reg8,$memory */
917 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
918 & ifmt_addrm
, { 0x2 }
920 /* add $memory,$reg8 */
923 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REG8
), 0 } },
924 & ifmt_addrm
, { 0x4 }
926 /* sub $regmem8,$memgr8 */
929 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
930 & ifmt_addrm2
, { 0x22 }
932 /* sub $memgr8,$regmem8 */
935 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGMEM8
), 0 } },
936 & ifmt_addrm2
, { 0x24 }
938 /* sub $reg8,$memory */
941 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
942 & ifmt_addrm
, { 0x22 }
944 /* sub $memory,$reg8 */
947 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REG8
), 0 } },
948 & ifmt_addrm
, { 0x24 }
950 /* addb $regbmem8,$memgr8 */
953 { { MNEM
, ' ', OP (REGBMEM8
), ',', OP (MEMGR8
), 0 } },
954 & ifmt_addbrm2
, { 0x3 }
956 /* addb $memgr8,$regbmem8 */
959 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGBMEM8
), 0 } },
960 & ifmt_addbrm2
, { 0x5 }
962 /* addb $regb8,$memory */
965 { { MNEM
, ' ', OP (REGB8
), ',', OP (MEMORY
), 0 } },
966 & ifmt_addbrm
, { 0x3 }
968 /* addb $memory,$regb8 */
971 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REGB8
), 0 } },
972 & ifmt_addbrm
, { 0x5 }
974 /* subb $regbmem8,$memgr8 */
977 { { MNEM
, ' ', OP (REGBMEM8
), ',', OP (MEMGR8
), 0 } },
978 & ifmt_addbrm2
, { 0x23 }
980 /* subb $memgr8,$regbmem8 */
983 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGBMEM8
), 0 } },
984 & ifmt_addbrm2
, { 0x25 }
986 /* subb $regb8,$memory */
989 { { MNEM
, ' ', OP (REGB8
), ',', OP (MEMORY
), 0 } },
990 & ifmt_addbrm
, { 0x23 }
992 /* subb $memory,$regb8 */
995 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REGB8
), 0 } },
996 & ifmt_addbrm
, { 0x25 }
998 /* addc $regmem8,$memgr8 */
1001 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
1002 & ifmt_addrm2
, { 0x12 }
1004 /* addc $memgr8,$regmem8 */
1007 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGMEM8
), 0 } },
1008 & ifmt_addrm2
, { 0x14 }
1010 /* addc $reg8,$memory */
1013 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
1014 & ifmt_addrm
, { 0x12 }
1016 /* addc $memory,$reg8 */
1019 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REG8
), 0 } },
1020 & ifmt_addrm
, { 0x14 }
1022 /* subc $regmem8,$memgr8 */
1025 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
1026 & ifmt_addrm2
, { 0x32 }
1028 /* subc $memgr8,$regmem8 */
1031 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGMEM8
), 0 } },
1032 & ifmt_addrm2
, { 0x34 }
1034 /* subc $reg8,$memory */
1037 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
1038 & ifmt_addrm
, { 0x32 }
1040 /* subc $memory,$reg8 */
1043 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REG8
), 0 } },
1044 & ifmt_addrm
, { 0x34 }
1046 /* addcb $regbmem8,$memgr8 */
1049 { { MNEM
, ' ', OP (REGBMEM8
), ',', OP (MEMGR8
), 0 } },
1050 & ifmt_addbrm2
, { 0x13 }
1052 /* addcb $memgr8,$regbmem8 */
1055 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGBMEM8
), 0 } },
1056 & ifmt_addbrm2
, { 0x15 }
1058 /* addcb $regb8,$memory */
1061 { { MNEM
, ' ', OP (REGB8
), ',', OP (MEMORY
), 0 } },
1062 & ifmt_addbrm
, { 0x13 }
1064 /* addcb $memory,$regb8 */
1067 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REGB8
), 0 } },
1068 & ifmt_addbrm
, { 0x15 }
1070 /* subcb $regbmem8,$memgr8 */
1073 { { MNEM
, ' ', OP (REGBMEM8
), ',', OP (MEMGR8
), 0 } },
1074 & ifmt_addbrm2
, { 0x33 }
1076 /* subcb $memgr8,$regbmem8 */
1079 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGBMEM8
), 0 } },
1080 & ifmt_addbrm2
, { 0x35 }
1082 /* subcb $regb8,$memory */
1085 { { MNEM
, ' ', OP (REGB8
), ',', OP (MEMORY
), 0 } },
1086 & ifmt_addbrm
, { 0x33 }
1088 /* subcb $memory,$regb8 */
1091 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REGB8
), 0 } },
1092 & ifmt_addbrm
, { 0x35 }
1094 /* mul $src1,$src2 */
1097 { { MNEM
, ' ', OP (SRC1
), ',', OP (SRC2
), 0 } },
1098 & ifmt_muls
, { 0xb }
1100 /* mulu $src1,$src2 */
1103 { { MNEM
, ' ', OP (SRC1
), ',', OP (SRC2
), 0 } },
1104 & ifmt_muls
, { 0x1b }
1109 { { MNEM
, ' ', OP (SRDIV
), 0 } },
1110 & ifmt_div
, { 0x4b }
1115 { { MNEM
, ' ', OP (SRDIV
), 0 } },
1116 & ifmt_div
, { 0x6b }
1121 { { MNEM
, ' ', OP (SRDIV
), 0 } },
1122 & ifmt_div
, { 0x7b }
1127 { { MNEM
, ' ', OP (SRDIV
), 0 } },
1128 & ifmt_div
, { 0x5b }
1133 { { MNEM
, ' ', OP (DR
), 0 } },
1134 & ifmt_cpl
, { 0x91 }
1139 { { MNEM
, ' ', OP (DRB
), 0 } },
1140 & ifmt_cplb
, { 0xb1 }
1145 { { MNEM
, ' ', OP (DR
), 0 } },
1146 & ifmt_cpl
, { 0x81 }
1151 { { MNEM
, ' ', OP (DRB
), 0 } },
1152 & ifmt_cplb
, { 0xa1 }
1157 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
1158 & ifmt_addr
, { 0x60 }
1163 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
1164 & ifmt_addr
, { 0x70 }
1169 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
1170 & ifmt_addr
, { 0x50 }
1172 /* andb $drb,$srb */
1175 { { MNEM
, ' ', OP (DRB
), ',', OP (SRB
), 0 } },
1176 & ifmt_addbr
, { 0x61 }
1181 { { MNEM
, ' ', OP (DRB
), ',', OP (SRB
), 0 } },
1182 & ifmt_addbr
, { 0x71 }
1184 /* xorb $drb,$srb */
1187 { { MNEM
, ' ', OP (DRB
), ',', OP (SRB
), 0 } },
1188 & ifmt_addbr
, { 0x51 }
1190 /* and $dr,$hash$uimm3 */
1193 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (UIMM3
), 0 } },
1194 & ifmt_addrhpof3
, { 0x68 }
1196 /* or $dr,$hash$uimm3 */
1199 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (UIMM3
), 0 } },
1200 & ifmt_addrhpof3
, { 0x78 }
1202 /* xor $dr,$hash$uimm3 */
1205 { { MNEM
, ' ', OP (DR
), ',', OP (HASH
), OP (UIMM3
), 0 } },
1206 & ifmt_addrhpof3
, { 0x58 }
1208 /* andb $drb,$hash$uimm3 */
1211 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (UIMM3
), 0 } },
1212 & ifmt_addbrhpag3
, { 0x69 }
1214 /* orb $drb,$hash$uimm3 */
1217 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (UIMM3
), 0 } },
1218 & ifmt_addbrhpag3
, { 0x79 }
1220 /* xorb $drb,$hash$uimm3 */
1223 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (UIMM3
), 0 } },
1224 & ifmt_addbrhpag3
, { 0x59 }
1226 /* and $reg8,$hash$uimm16 */
1229 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
1230 & ifmt_addrhpof
, { 0x66 }
1232 /* or $reg8,$hash$uimm16 */
1235 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
1236 & ifmt_addrhpof
, { 0x76 }
1238 /* xor $reg8,$hash$uimm16 */
1241 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
1242 & ifmt_addrhpof
, { 0x56 }
1244 /* andb $regb8,$hash$uimm8 */
1247 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (UIMM8
), 0 } },
1248 & ifmt_addrbhpof
, { 0x67 }
1250 /* orb $regb8,$hash$uimm8 */
1253 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (UIMM8
), 0 } },
1254 & ifmt_addrbhpof
, { 0x77 }
1256 /* xorb $regb8,$hash$uimm8 */
1259 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (UIMM8
), 0 } },
1260 & ifmt_addrbhpof
, { 0x57 }
1262 /* and $dr,[$sr2] */
1265 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), ']', 0 } },
1266 & ifmt_add2
, { 0x868 }
1271 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), ']', 0 } },
1272 & ifmt_add2
, { 0x878 }
1274 /* xor $dr,[$sr2] */
1277 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), ']', 0 } },
1278 & ifmt_add2
, { 0x858 }
1280 /* andb $drb,[$sr2] */
1283 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), ']', 0 } },
1284 & ifmt_addb2
, { 0x869 }
1286 /* orb $drb,[$sr2] */
1289 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), ']', 0 } },
1290 & ifmt_addb2
, { 0x879 }
1292 /* xorb $drb,[$sr2] */
1295 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), ']', 0 } },
1296 & ifmt_addb2
, { 0x859 }
1298 /* and $dr,[$sr2+] */
1301 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), '+', ']', 0 } },
1302 & ifmt_add2
, { 0xc68 }
1304 /* or $dr,[$sr2+] */
1307 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), '+', ']', 0 } },
1308 & ifmt_add2
, { 0xc78 }
1310 /* xor $dr,[$sr2+] */
1313 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), '+', ']', 0 } },
1314 & ifmt_add2
, { 0xc58 }
1316 /* andb $drb,[$sr2+] */
1319 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), '+', ']', 0 } },
1320 & ifmt_addb2
, { 0xc69 }
1322 /* orb $drb,[$sr2+] */
1325 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), '+', ']', 0 } },
1326 & ifmt_addb2
, { 0xc79 }
1328 /* xorb $drb,[$sr2+] */
1331 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), '+', ']', 0 } },
1332 & ifmt_addb2
, { 0xc59 }
1334 /* and $pof$reg8,$upof16 */
1337 { { MNEM
, ' ', OP (POF
), OP (REG8
), ',', OP (UPOF16
), 0 } },
1338 & ifmt_addrpof
, { 0x62 }
1340 /* or $pof$reg8,$upof16 */
1343 { { MNEM
, ' ', OP (POF
), OP (REG8
), ',', OP (UPOF16
), 0 } },
1344 & ifmt_addrpof
, { 0x72 }
1346 /* xor $pof$reg8,$upof16 */
1349 { { MNEM
, ' ', OP (POF
), OP (REG8
), ',', OP (UPOF16
), 0 } },
1350 & ifmt_addrpof
, { 0x52 }
1352 /* andb $pof$regb8,$upof16 */
1355 { { MNEM
, ' ', OP (POF
), OP (REGB8
), ',', OP (UPOF16
), 0 } },
1356 & ifmt_addbrpof
, { 0x63 }
1358 /* orb $pof$regb8,$upof16 */
1361 { { MNEM
, ' ', OP (POF
), OP (REGB8
), ',', OP (UPOF16
), 0 } },
1362 & ifmt_addbrpof
, { 0x73 }
1364 /* xorb $pof$regb8,$upof16 */
1367 { { MNEM
, ' ', OP (POF
), OP (REGB8
), ',', OP (UPOF16
), 0 } },
1368 & ifmt_addbrpof
, { 0x53 }
1370 /* and $pof$upof16,$reg8 */
1373 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REG8
), 0 } },
1374 & ifmt_addrpof
, { 0x64 }
1376 /* or $pof$upof16,$reg8 */
1379 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REG8
), 0 } },
1380 & ifmt_addrpof
, { 0x74 }
1382 /* xor $pof$upof16,$reg8 */
1385 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REG8
), 0 } },
1386 & ifmt_addrpof
, { 0x54 }
1388 /* andb $pof$upof16,$regb8 */
1391 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REGB8
), 0 } },
1392 & ifmt_addbrpof
, { 0x65 }
1394 /* orb $pof$upof16,$regb8 */
1397 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REGB8
), 0 } },
1398 & ifmt_addbrpof
, { 0x75 }
1400 /* xorb $pof$upof16,$regb8 */
1403 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REGB8
), 0 } },
1404 & ifmt_addbrpof
, { 0x55 }
1406 /* and $regmem8,$memgr8 */
1409 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
1410 & ifmt_addrm2
, { 0x62 }
1412 /* and $memgr8,$regmem8 */
1415 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGMEM8
), 0 } },
1416 & ifmt_addrm2
, { 0x64 }
1418 /* and $reg8,$memory */
1421 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
1422 & ifmt_addrm
, { 0x62 }
1424 /* and $memory,$reg8 */
1427 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REG8
), 0 } },
1428 & ifmt_addrm
, { 0x64 }
1430 /* or $regmem8,$memgr8 */
1433 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
1434 & ifmt_addrm2
, { 0x72 }
1436 /* or $memgr8,$regmem8 */
1439 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGMEM8
), 0 } },
1440 & ifmt_addrm2
, { 0x74 }
1442 /* or $reg8,$memory */
1445 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
1446 & ifmt_addrm
, { 0x72 }
1448 /* or $memory,$reg8 */
1451 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REG8
), 0 } },
1452 & ifmt_addrm
, { 0x74 }
1454 /* xor $regmem8,$memgr8 */
1457 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
1458 & ifmt_addrm2
, { 0x52 }
1460 /* xor $memgr8,$regmem8 */
1463 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGMEM8
), 0 } },
1464 & ifmt_addrm2
, { 0x54 }
1466 /* xor $reg8,$memory */
1469 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
1470 & ifmt_addrm
, { 0x52 }
1472 /* xor $memory,$reg8 */
1475 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REG8
), 0 } },
1476 & ifmt_addrm
, { 0x54 }
1478 /* andb $regbmem8,$memgr8 */
1481 { { MNEM
, ' ', OP (REGBMEM8
), ',', OP (MEMGR8
), 0 } },
1482 & ifmt_addbrm2
, { 0x63 }
1484 /* andb $memgr8,$regbmem8 */
1487 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGBMEM8
), 0 } },
1488 & ifmt_addbrm2
, { 0x65 }
1490 /* andb $regb8,$memory */
1493 { { MNEM
, ' ', OP (REGB8
), ',', OP (MEMORY
), 0 } },
1494 & ifmt_addbrm
, { 0x63 }
1496 /* andb $memory,$regb8 */
1499 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REGB8
), 0 } },
1500 & ifmt_addbrm
, { 0x65 }
1502 /* orb $regbmem8,$memgr8 */
1505 { { MNEM
, ' ', OP (REGBMEM8
), ',', OP (MEMGR8
), 0 } },
1506 & ifmt_addbrm2
, { 0x73 }
1508 /* orb $memgr8,$regbmem8 */
1511 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGBMEM8
), 0 } },
1512 & ifmt_addbrm2
, { 0x75 }
1514 /* orb $regb8,$memory */
1517 { { MNEM
, ' ', OP (REGB8
), ',', OP (MEMORY
), 0 } },
1518 & ifmt_addbrm
, { 0x73 }
1520 /* orb $memory,$regb8 */
1523 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REGB8
), 0 } },
1524 & ifmt_addbrm
, { 0x75 }
1526 /* xorb $regbmem8,$memgr8 */
1529 { { MNEM
, ' ', OP (REGBMEM8
), ',', OP (MEMGR8
), 0 } },
1530 & ifmt_addbrm2
, { 0x53 }
1532 /* xorb $memgr8,$regbmem8 */
1535 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGBMEM8
), 0 } },
1536 & ifmt_addbrm2
, { 0x55 }
1538 /* xorb $regb8,$memory */
1541 { { MNEM
, ' ', OP (REGB8
), ',', OP (MEMORY
), 0 } },
1542 & ifmt_addbrm
, { 0x53 }
1544 /* xorb $memory,$regb8 */
1547 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REGB8
), 0 } },
1548 & ifmt_addbrm
, { 0x55 }
1553 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
1554 & ifmt_addr
, { 0xf0 }
1556 /* movb $drb,$srb */
1559 { { MNEM
, ' ', OP (DRB
), ',', OP (SRB
), 0 } },
1560 & ifmt_addbr
, { 0xf1 }
1562 /* mov $dri,$hash$u4 */
1565 { { MNEM
, ' ', OP (DRI
), ',', OP (HASH
), OP (U4
), 0 } },
1566 & ifmt_movri
, { 0xe0 }
1568 /* movb $srb,$hash$u4 */
1571 { { MNEM
, ' ', OP (SRB
), ',', OP (HASH
), OP (U4
), 0 } },
1572 & ifmt_movbri
, { 0xe1 }
1574 /* mov $reg8,$hash$uimm16 */
1577 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
1578 & ifmt_addrhpof
, { 0xe6 }
1580 /* movb $regb8,$hash$uimm8 */
1583 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (UIMM8
), 0 } },
1584 & ifmt_addrbhpof
, { 0xe7 }
1589 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR
), ']', 0 } },
1590 & ifmt_addr
, { 0xa8 }
1592 /* movb $drb,[$sr] */
1595 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR
), ']', 0 } },
1596 & ifmt_movbr2
, { 0xa9 }
1601 { { MNEM
, ' ', '[', OP (SR
), ']', ',', OP (DR
), 0 } },
1602 & ifmt_addr
, { 0xb8 }
1604 /* movb [$sr],$drb */
1607 { { MNEM
, ' ', '[', OP (SR
), ']', ',', OP (DRB
), 0 } },
1608 & ifmt_movbr2
, { 0xb9 }
1610 /* mov [-$sr],$dr */
1613 { { MNEM
, ' ', '[', '-', OP (SR
), ']', ',', OP (DR
), 0 } },
1614 & ifmt_addr
, { 0x88 }
1616 /* movb [-$sr],$drb */
1619 { { MNEM
, ' ', '[', '-', OP (SR
), ']', ',', OP (DRB
), 0 } },
1620 & ifmt_movbr2
, { 0x89 }
1622 /* mov $dr,[$sr+] */
1625 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR
), '+', ']', 0 } },
1626 & ifmt_addr
, { 0x98 }
1628 /* movb $drb,[$sr+] */
1631 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR
), '+', ']', 0 } },
1632 & ifmt_movbr2
, { 0x99 }
1634 /* mov [$dr],[$sr] */
1637 { { MNEM
, ' ', '[', OP (DR
), ']', ',', '[', OP (SR
), ']', 0 } },
1638 & ifmt_addr
, { 0xc8 }
1640 /* movb [$dr],[$sr] */
1643 { { MNEM
, ' ', '[', OP (DR
), ']', ',', '[', OP (SR
), ']', 0 } },
1644 & ifmt_addr
, { 0xc9 }
1646 /* mov [$dr+],[$sr] */
1649 { { MNEM
, ' ', '[', OP (DR
), '+', ']', ',', '[', OP (SR
), ']', 0 } },
1650 & ifmt_addr
, { 0xd8 }
1652 /* movb [$dr+],[$sr] */
1655 { { MNEM
, ' ', '[', OP (DR
), '+', ']', ',', '[', OP (SR
), ']', 0 } },
1656 & ifmt_addr
, { 0xd9 }
1658 /* mov [$dr],[$sr+] */
1661 { { MNEM
, ' ', '[', OP (DR
), ']', ',', '[', OP (SR
), '+', ']', 0 } },
1662 & ifmt_addr
, { 0xe8 }
1664 /* movb [$dr],[$sr+] */
1667 { { MNEM
, ' ', '[', OP (DR
), ']', ',', '[', OP (SR
), '+', ']', 0 } },
1668 & ifmt_addr
, { 0xe9 }
1670 /* mov $dr,[$sr+$hash$uimm16] */
1673 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR
), '+', OP (HASH
), OP (UIMM16
), ']', 0 } },
1674 & ifmt_mov9i
, { 0xd4 }
1676 /* movb $drb,[$sr+$hash$uimm16] */
1679 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR
), '+', OP (HASH
), OP (UIMM16
), ']', 0 } },
1680 & ifmt_movb9i
, { 0xf4 }
1682 /* mov [$sr+$hash$uimm16],$dr */
1685 { { MNEM
, ' ', '[', OP (SR
), '+', OP (HASH
), OP (UIMM16
), ']', ',', OP (DR
), 0 } },
1686 & ifmt_mov9i
, { 0xc4 }
1688 /* movb [$sr+$hash$uimm16],$drb */
1691 { { MNEM
, ' ', '[', OP (SR
), '+', OP (HASH
), OP (UIMM16
), ']', ',', OP (DRB
), 0 } },
1692 & ifmt_movb9i
, { 0xe4 }
1694 /* mov [$src2],$memory */
1697 { { MNEM
, ' ', '[', OP (SRC2
), ']', ',', OP (MEMORY
), 0 } },
1698 & ifmt_movri11
, { 0x84 }
1700 /* movb [$src2],$memory */
1703 { { MNEM
, ' ', '[', OP (SRC2
), ']', ',', OP (MEMORY
), 0 } },
1704 & ifmt_movri11
, { 0xa4 }
1706 /* mov $memory,[$src2] */
1709 { { MNEM
, ' ', OP (MEMORY
), ',', '[', OP (SRC2
), ']', 0 } },
1710 & ifmt_movri11
, { 0x94 }
1712 /* movb $memory,[$src2] */
1715 { { MNEM
, ' ', OP (MEMORY
), ',', '[', OP (SRC2
), ']', 0 } },
1716 & ifmt_movri11
, { 0xb4 }
1718 /* mov $regoff8,$hash$pof$upof16 */
1721 { { MNEM
, ' ', OP (REGOFF8
), ',', OP (HASH
), OP (POF
), OP (UPOF16
), 0 } },
1722 & ifmt_movehm5
, { 0xe6 }
1724 /* mov $regoff8,$hash$pag$upag16 */
1727 { { MNEM
, ' ', OP (REGOFF8
), ',', OP (HASH
), OP (PAG
), OP (UPAG16
), 0 } },
1728 & ifmt_movehm6
, { 0xe6 }
1730 /* mov $regoff8,$hash$segm$useg16 */
1733 { { MNEM
, ' ', OP (REGOFF8
), ',', OP (HASH
), OP (SEGM
), OP (USEG16
), 0 } },
1734 & ifmt_movehm7
, { 0xe6 }
1736 /* mov $regoff8,$hash$sof$usof16 */
1739 { { MNEM
, ' ', OP (REGOFF8
), ',', OP (HASH
), OP (SOF
), OP (USOF16
), 0 } },
1740 & ifmt_movehm8
, { 0xe6 }
1742 /* movb $regb8,$hash$pof$uimm8 */
1745 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (POF
), OP (UIMM8
), 0 } },
1746 & ifmt_addrbhpof
, { 0xe7 }
1748 /* movb $regoff8,$hash$pag$uimm8 */
1751 { { MNEM
, ' ', OP (REGOFF8
), ',', OP (HASH
), OP (PAG
), OP (UIMM8
), 0 } },
1752 & ifmt_movehm10
, { 0xe7 }
1754 /* mov $regoff8,$pof$upof16 */
1757 { { MNEM
, ' ', OP (REGOFF8
), ',', OP (POF
), OP (UPOF16
), 0 } },
1758 & ifmt_movehm5
, { 0xf2 }
1760 /* movb $regb8,$pof$upof16 */
1763 { { MNEM
, ' ', OP (REGB8
), ',', OP (POF
), OP (UPOF16
), 0 } },
1764 & ifmt_addbrpof
, { 0xf3 }
1766 /* mov $regoff8,$pag$upag16 */
1769 { { MNEM
, ' ', OP (REGOFF8
), ',', OP (PAG
), OP (UPAG16
), 0 } },
1770 & ifmt_movehm6
, { 0xf2 }
1772 /* movb $regb8,$pag$upag16 */
1775 { { MNEM
, ' ', OP (REGB8
), ',', OP (PAG
), OP (UPAG16
), 0 } },
1776 & ifmt_addbrpag
, { 0xf3 }
1778 /* mov $pof$upof16,$regoff8 */
1781 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REGOFF8
), 0 } },
1782 & ifmt_movehm5
, { 0xf6 }
1784 /* movb $pof$upof16,$regb8 */
1787 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REGB8
), 0 } },
1788 & ifmt_addbrpof
, { 0xf7 }
1790 /* mov $dri,$hash$pof$u4 */
1793 { { MNEM
, ' ', OP (DRI
), ',', OP (HASH
), OP (POF
), OP (U4
), 0 } },
1794 & ifmt_movri
, { 0xe0 }
1796 /* movb $srb,$hash$pof$u4 */
1799 { { MNEM
, ' ', OP (SRB
), ',', OP (HASH
), OP (POF
), OP (U4
), 0 } },
1800 & ifmt_movbri
, { 0xe1 }
1802 /* mov $dri,$hash$pag$u4 */
1805 { { MNEM
, ' ', OP (DRI
), ',', OP (HASH
), OP (PAG
), OP (U4
), 0 } },
1806 & ifmt_movri
, { 0xe0 }
1808 /* movb $srb,$hash$pag$u4 */
1811 { { MNEM
, ' ', OP (SRB
), ',', OP (HASH
), OP (PAG
), OP (U4
), 0 } },
1812 & ifmt_movbri
, { 0xe1 }
1814 /* mov $regmem8,$memgr8 */
1817 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
1818 & ifmt_addrm2
, { 0xf2 }
1820 /* mov $memgr8,$regmem8 */
1823 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGMEM8
), 0 } },
1824 & ifmt_addrm2
, { 0xf6 }
1826 /* mov $reg8,$memory */
1829 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
1830 & ifmt_addrm
, { 0xf2 }
1832 /* mov $memory,$reg8 */
1835 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REG8
), 0 } },
1836 & ifmt_addrm
, { 0xf6 }
1838 /* movb $regbmem8,$memgr8 */
1841 { { MNEM
, ' ', OP (REGBMEM8
), ',', OP (MEMGR8
), 0 } },
1842 & ifmt_addbrm2
, { 0xf3 }
1844 /* movb $memgr8,$regbmem8 */
1847 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGBMEM8
), 0 } },
1848 & ifmt_addbrm2
, { 0xf7 }
1850 /* movb $regb8,$memory */
1853 { { MNEM
, ' ', OP (REGB8
), ',', OP (MEMORY
), 0 } },
1854 & ifmt_addbrm
, { 0xf3 }
1856 /* movb $memory,$regb8 */
1859 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REGB8
), 0 } },
1860 & ifmt_addbrm
, { 0xf7 }
1862 /* movbs $sr,$drb */
1865 { { MNEM
, ' ', OP (SR
), ',', OP (DRB
), 0 } },
1866 & ifmt_movbr2
, { 0xd0 }
1868 /* movbz $sr,$drb */
1871 { { MNEM
, ' ', OP (SR
), ',', OP (DRB
), 0 } },
1872 & ifmt_movbr2
, { 0xc0 }
1874 /* movbs $regmem8,$pof$upof16 */
1877 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (POF
), OP (UPOF16
), 0 } },
1878 & ifmt_movbsrpofm
, { 0xd2 }
1880 /* movbs $pof$upof16,$regbmem8 */
1883 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REGBMEM8
), 0 } },
1884 & ifmt_movbspofmr
, { 0xd5 }
1886 /* movbz $reg8,$pof$upof16 */
1889 { { MNEM
, ' ', OP (REG8
), ',', OP (POF
), OP (UPOF16
), 0 } },
1890 & ifmt_addrpof
, { 0xc2 }
1892 /* movbz $pof$upof16,$regb8 */
1895 { { MNEM
, ' ', OP (POF
), OP (UPOF16
), ',', OP (REGB8
), 0 } },
1896 & ifmt_addbrpof
, { 0xc5 }
1898 /* movbs $regmem8,$memgr8 */
1901 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
1902 & ifmt_addrm2
, { 0xd2 }
1904 /* movbs $memgr8,$regbmem8 */
1907 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGBMEM8
), 0 } },
1908 & ifmt_addbrm2
, { 0xd5 }
1910 /* movbs $reg8,$memory */
1913 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
1914 & ifmt_addrm
, { 0xd2 }
1916 /* movbs $memory,$regb8 */
1919 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REGB8
), 0 } },
1920 & ifmt_addbrm
, { 0xd5 }
1922 /* movbz $regmem8,$memgr8 */
1925 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
1926 & ifmt_addrm2
, { 0xc2 }
1928 /* movbz $memgr8,$regbmem8 */
1931 { { MNEM
, ' ', OP (MEMGR8
), ',', OP (REGBMEM8
), 0 } },
1932 & ifmt_addbrm2
, { 0xc5 }
1934 /* movbz $reg8,$memory */
1937 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
1938 & ifmt_addrm
, { 0xc2 }
1940 /* movbz $memory,$regb8 */
1943 { { MNEM
, ' ', OP (MEMORY
), ',', OP (REGB8
), 0 } },
1944 & ifmt_addbrm
, { 0xc5 }
1946 /* movbs $sr,$drb */
1949 { { MNEM
, ' ', OP (SR
), ',', OP (DRB
), 0 } },
1950 & ifmt_movbr2
, { 0xd0 }
1952 /* movbz $sr,$drb */
1955 { { MNEM
, ' ', OP (SR
), ',', OP (DRB
), 0 } },
1956 & ifmt_movbr2
, { 0xc0 }
1958 /* jmpa+ $extcond,$caddr */
1961 { { MNEM
, ' ', OP (EXTCOND
), ',', OP (CADDR
), 0 } },
1962 & ifmt_jmpa0
, { 0xea }
1964 /* jmpa $extcond,$caddr */
1967 { { MNEM
, ' ', OP (EXTCOND
), ',', OP (CADDR
), 0 } },
1968 & ifmt_jmpa0
, { 0xea }
1970 /* jmpa- $extcond,$caddr */
1973 { { MNEM
, ' ', OP (EXTCOND
), ',', OP (CADDR
), 0 } },
1974 & ifmt_jmpa_
, { 0x1ea }
1976 /* jmpi $icond,[$sr] */
1979 { { MNEM
, ' ', OP (ICOND
), ',', '[', OP (SR
), ']', 0 } },
1980 & ifmt_jmpi
, { 0x9c }
1982 /* jmpr $cond,$rel */
1985 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
1986 & ifmt_jmpr_nenz
, { 0x3d }
1988 /* jmpr $cond,$rel */
1991 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
1992 & ifmt_jmpr_nenz
, { 0xad }
1994 /* jmpr $cond,$rel */
1997 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
1998 & ifmt_jmpr_nenz
, { 0x2d }
2000 /* jmpr $cond,$rel */
2003 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2004 & ifmt_jmpr_nenz
, { 0x4d }
2006 /* jmpr $cond,$rel */
2009 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2010 & ifmt_jmpr_nenz
, { 0x5d }
2012 /* jmpr $cond,$rel */
2015 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2016 & ifmt_jmpr_nenz
, { 0x6d }
2018 /* jmpr $cond,$rel */
2021 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2022 & ifmt_jmpr_nenz
, { 0x7d }
2024 /* jmpr $cond,$rel */
2027 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2028 & ifmt_jmpr_nenz
, { 0x8d }
2030 /* jmpr $cond,$rel */
2033 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2034 & ifmt_jmpr_nenz
, { 0x9d }
2036 /* jmpr $cond,$rel */
2039 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2040 & ifmt_jmpr_nenz
, { 0x2d }
2042 /* jmpr $cond,$rel */
2045 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2046 & ifmt_jmpr_nenz
, { 0x3d }
2048 /* jmpr $cond,$rel */
2051 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2052 & ifmt_jmpr_nenz
, { 0x8d }
2054 /* jmpr $cond,$rel */
2057 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2058 & ifmt_jmpr_nenz
, { 0xfd }
2060 /* jmpr $cond,$rel */
2063 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2064 & ifmt_jmpr_nenz
, { 0x9d }
2066 /* jmpr $cond,$rel */
2069 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2070 & ifmt_jmpr_nenz
, { 0xed }
2072 /* jmpr $cond,$rel */
2075 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2076 & ifmt_jmpr_nenz
, { 0xbd }
2078 /* jmpr $cond,$rel */
2081 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2082 & ifmt_jmpr_nenz
, { 0xdd }
2084 /* jmpr $cond,$rel */
2087 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2088 & ifmt_jmpr_nenz
, { 0x1d }
2090 /* jmpr $cond,$rel */
2093 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2094 & ifmt_jmpr_nenz
, { 0xd }
2096 /* jmpr $cond,$rel */
2099 { { MNEM
, ' ', OP (COND
), ',', OP (REL
), 0 } },
2100 & ifmt_jmpr_nenz
, { 0xcd }
2102 /* jmps $hash$segm$useg8,$hash$sof$usof16 */
2105 { { MNEM
, ' ', OP (HASH
), OP (SEGM
), OP (USEG8
), ',', OP (HASH
), OP (SOF
), OP (USOF16
), 0 } },
2106 & ifmt_jmpseg
, { 0xfa }
2108 /* jmps $seg,$caddr */
2111 { { MNEM
, ' ', OP (SEG
), ',', OP (CADDR
), 0 } },
2112 & ifmt_jmps
, { 0xfa }
2114 /* jb $genreg$dot$qlobit,$relhi */
2117 { { MNEM
, ' ', OP (GENREG
), OP (DOT
), OP (QLOBIT
), ',', OP (RELHI
), 0 } },
2120 /* jbc $genreg$dot$qlobit,$relhi */
2123 { { MNEM
, ' ', OP (GENREG
), OP (DOT
), OP (QLOBIT
), ',', OP (RELHI
), 0 } },
2126 /* jnb $genreg$dot$qlobit,$relhi */
2129 { { MNEM
, ' ', OP (GENREG
), OP (DOT
), OP (QLOBIT
), ',', OP (RELHI
), 0 } },
2132 /* jnbs $genreg$dot$qlobit,$relhi */
2135 { { MNEM
, ' ', OP (GENREG
), OP (DOT
), OP (QLOBIT
), ',', OP (RELHI
), 0 } },
2138 /* calla+ $extcond,$caddr */
2141 { { MNEM
, ' ', OP (EXTCOND
), ',', OP (CADDR
), 0 } },
2142 & ifmt_calla0
, { 0xca }
2144 /* calla $extcond,$caddr */
2147 { { MNEM
, ' ', OP (EXTCOND
), ',', OP (CADDR
), 0 } },
2148 & ifmt_calla0
, { 0xca }
2150 /* calla- $extcond,$caddr */
2153 { { MNEM
, ' ', OP (EXTCOND
), ',', OP (CADDR
), 0 } },
2154 & ifmt_calla_
, { 0x1ca }
2156 /* calli $icond,[$sr] */
2159 { { MNEM
, ' ', OP (ICOND
), ',', '[', OP (SR
), ']', 0 } },
2160 & ifmt_jmpi
, { 0xab }
2165 { { MNEM
, ' ', OP (REL
), 0 } },
2166 & ifmt_callr
, { 0xbb }
2168 /* calls $hash$segm$useg8,$hash$sof$usof16 */
2171 { { MNEM
, ' ', OP (HASH
), OP (SEGM
), OP (USEG8
), ',', OP (HASH
), OP (SOF
), OP (USOF16
), 0 } },
2172 & ifmt_callseg
, { 0xda }
2174 /* calls $seg,$caddr */
2177 { { MNEM
, ' ', OP (SEG
), ',', OP (CADDR
), 0 } },
2178 & ifmt_jmps
, { 0xda }
2180 /* pcall $reg8,$caddr */
2183 { { MNEM
, ' ', OP (REG8
), ',', OP (CADDR
), 0 } },
2184 & ifmt_pcall
, { 0xe2 }
2186 /* trap $hash$uimm7 */
2189 { { MNEM
, ' ', OP (HASH
), OP (UIMM7
), 0 } },
2190 & ifmt_trap
, { 0x9b }
2196 & ifmt_ret
, { 0xcb }
2202 & ifmt_ret
, { 0xdb }
2207 { { MNEM
, ' ', OP (REG8
), 0 } },
2208 & ifmt_retp
, { 0xeb }
2214 & ifmt_reti
, { 0x88fb }
2219 { { MNEM
, ' ', OP (REG8
), 0 } },
2220 & ifmt_retp
, { 0xfc }
2225 { { MNEM
, ' ', OP (REG8
), 0 } },
2226 & ifmt_retp
, { 0xec }
2228 /* scxt $reg8,$hash$uimm16 */
2231 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
2232 & ifmt_addrhpof
, { 0xc6 }
2234 /* scxt $reg8,$pof$upof16 */
2237 { { MNEM
, ' ', OP (REG8
), ',', OP (POF
), OP (UPOF16
), 0 } },
2238 & ifmt_addrpof
, { 0xd6 }
2240 /* scxt $regmem8,$memgr8 */
2243 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
2244 & ifmt_addrm2
, { 0xd6 }
2246 /* scxt $reg8,$memory */
2249 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
2250 & ifmt_addrm
, { 0xd6 }
2256 & ifmt_ret
, { 0xcc }
2262 & ifmt_srstm
, { 0xb7b748b7 }
2268 & ifmt_srstm
, { 0x87877887 }
2274 & ifmt_srstm
, { 0x97976897 }
2280 & ifmt_srstm
, { 0xa5a55aa5 }
2286 & ifmt_srstm
, { 0x85857a85 }
2292 & ifmt_srstm
, { 0xb5b54ab5 }
2298 & ifmt_srstm
, { 0xa7a758a7 }
2304 & ifmt_ret
, { 0x8c }
2306 /* atomic $hash$uimm2 */
2309 { { MNEM
, ' ', OP (HASH
), OP (UIMM2
), 0 } },
2310 & ifmt_atomic
, { 0xd1 }
2312 /* extr $hash$uimm2 */
2315 { { MNEM
, ' ', OP (HASH
), OP (UIMM2
), 0 } },
2316 & ifmt_atomic
, { 0x80d1 }
2318 /* extp $sr,$hash$uimm2 */
2321 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM2
), 0 } },
2322 & ifmt_extp
, { 0x40dc }
2324 /* extp $hash$pagenum,$hash$uimm2 */
2327 { { MNEM
, ' ', OP (HASH
), OP (PAGENUM
), ',', OP (HASH
), OP (UIMM2
), 0 } },
2328 & ifmt_extp1
, { 0x40d7 }
2330 /* extp $hash$pag$upag16,$hash$uimm2 */
2333 { { MNEM
, ' ', OP (HASH
), OP (PAG
), OP (UPAG16
), ',', OP (HASH
), OP (UIMM2
), 0 } },
2334 & ifmt_extpg1
, { 0x40d7 }
2336 /* extpr $sr,$hash$uimm2 */
2339 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM2
), 0 } },
2340 & ifmt_extp
, { 0xc0dc }
2342 /* extpr $hash$pagenum,$hash$uimm2 */
2345 { { MNEM
, ' ', OP (HASH
), OP (PAGENUM
), ',', OP (HASH
), OP (UIMM2
), 0 } },
2346 & ifmt_extp1
, { 0xc0d7 }
2348 /* exts $sr,$hash$uimm2 */
2351 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM2
), 0 } },
2352 & ifmt_extp
, { 0xdc }
2354 /* exts $hash$seghi8,$hash$uimm2 */
2357 { { MNEM
, ' ', OP (HASH
), OP (SEGHI8
), ',', OP (HASH
), OP (UIMM2
), 0 } },
2358 & ifmt_exts1
, { 0xd7 }
2360 /* extsr $sr,$hash$uimm2 */
2363 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM2
), 0 } },
2364 & ifmt_extp
, { 0x80dc }
2366 /* extsr $hash$seghi8,$hash$uimm2 */
2369 { { MNEM
, ' ', OP (HASH
), OP (SEGHI8
), ',', OP (HASH
), OP (UIMM2
), 0 } },
2370 & ifmt_exts1
, { 0x80d7 }
2375 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
2376 & ifmt_addr
, { 0x2b }
2381 { { MNEM
, ' ', OP (REGNAM
), 0 } },
2382 & ifmt_bclr18
, { 0xbe }
2384 /* bclr $reg8$dot$qbit */
2387 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2388 & ifmt_bclr0
, { 0xe }
2390 /* bclr $reg8$dot$qbit */
2393 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2394 & ifmt_bclr0
, { 0x1e }
2396 /* bclr $reg8$dot$qbit */
2399 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2400 & ifmt_bclr0
, { 0x2e }
2402 /* bclr $reg8$dot$qbit */
2405 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2406 & ifmt_bclr0
, { 0x3e }
2408 /* bclr $reg8$dot$qbit */
2411 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2412 & ifmt_bclr0
, { 0x4e }
2414 /* bclr $reg8$dot$qbit */
2417 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2418 & ifmt_bclr0
, { 0x5e }
2420 /* bclr $reg8$dot$qbit */
2423 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2424 & ifmt_bclr0
, { 0x6e }
2426 /* bclr $reg8$dot$qbit */
2429 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2430 & ifmt_bclr0
, { 0x7e }
2432 /* bclr $reg8$dot$qbit */
2435 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2436 & ifmt_bclr0
, { 0x8e }
2438 /* bclr $reg8$dot$qbit */
2441 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2442 & ifmt_bclr0
, { 0x9e }
2444 /* bclr $reg8$dot$qbit */
2447 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2448 & ifmt_bclr0
, { 0xae }
2450 /* bclr $reg8$dot$qbit */
2453 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2454 & ifmt_bclr0
, { 0xbe }
2456 /* bclr $reg8$dot$qbit */
2459 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2460 & ifmt_bclr0
, { 0xce }
2462 /* bclr $reg8$dot$qbit */
2465 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2466 & ifmt_bclr0
, { 0xde }
2468 /* bclr $reg8$dot$qbit */
2471 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2472 & ifmt_bclr0
, { 0xee }
2474 /* bclr $reg8$dot$qbit */
2477 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2478 & ifmt_bclr0
, { 0xfe }
2483 { { MNEM
, ' ', OP (REGNAM
), 0 } },
2484 & ifmt_bclr18
, { 0xbf }
2486 /* bset $reg8$dot$qbit */
2489 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2490 & ifmt_bclr0
, { 0xf }
2492 /* bset $reg8$dot$qbit */
2495 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2496 & ifmt_bclr0
, { 0x1f }
2498 /* bset $reg8$dot$qbit */
2501 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2502 & ifmt_bclr0
, { 0x2f }
2504 /* bset $reg8$dot$qbit */
2507 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2508 & ifmt_bclr0
, { 0x3f }
2510 /* bset $reg8$dot$qbit */
2513 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2514 & ifmt_bclr0
, { 0x4f }
2516 /* bset $reg8$dot$qbit */
2519 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2520 & ifmt_bclr0
, { 0x5f }
2522 /* bset $reg8$dot$qbit */
2525 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2526 & ifmt_bclr0
, { 0x6f }
2528 /* bset $reg8$dot$qbit */
2531 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2532 & ifmt_bclr0
, { 0x7f }
2534 /* bset $reg8$dot$qbit */
2537 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2538 & ifmt_bclr0
, { 0x8f }
2540 /* bset $reg8$dot$qbit */
2543 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2544 & ifmt_bclr0
, { 0x9f }
2546 /* bset $reg8$dot$qbit */
2549 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2550 & ifmt_bclr0
, { 0xaf }
2552 /* bset $reg8$dot$qbit */
2555 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2556 & ifmt_bclr0
, { 0xbf }
2558 /* bset $reg8$dot$qbit */
2561 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2562 & ifmt_bclr0
, { 0xcf }
2564 /* bset $reg8$dot$qbit */
2567 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2568 & ifmt_bclr0
, { 0xdf }
2570 /* bset $reg8$dot$qbit */
2573 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2574 & ifmt_bclr0
, { 0xef }
2576 /* bset $reg8$dot$qbit */
2579 { { MNEM
, ' ', OP (REG8
), OP (DOT
), OP (QBIT
), 0 } },
2580 & ifmt_bclr0
, { 0xff }
2582 /* bmov $reghi8$dot$qhibit,$reg8$dot$qlobit */
2585 { { MNEM
, ' ', OP (REGHI8
), OP (DOT
), OP (QHIBIT
), ',', OP (REG8
), OP (DOT
), OP (QLOBIT
), 0 } },
2586 & ifmt_bmov
, { 0x4a }
2588 /* bmovn $reghi8$dot$qhibit,$reg8$dot$qlobit */
2591 { { MNEM
, ' ', OP (REGHI8
), OP (DOT
), OP (QHIBIT
), ',', OP (REG8
), OP (DOT
), OP (QLOBIT
), 0 } },
2592 & ifmt_bmov
, { 0x3a }
2594 /* band $reghi8$dot$qhibit,$reg8$dot$qlobit */
2597 { { MNEM
, ' ', OP (REGHI8
), OP (DOT
), OP (QHIBIT
), ',', OP (REG8
), OP (DOT
), OP (QLOBIT
), 0 } },
2598 & ifmt_bmov
, { 0x6a }
2600 /* bor $reghi8$dot$qhibit,$reg8$dot$qlobit */
2603 { { MNEM
, ' ', OP (REGHI8
), OP (DOT
), OP (QHIBIT
), ',', OP (REG8
), OP (DOT
), OP (QLOBIT
), 0 } },
2604 & ifmt_bmov
, { 0x5a }
2606 /* bxor $reghi8$dot$qhibit,$reg8$dot$qlobit */
2609 { { MNEM
, ' ', OP (REGHI8
), OP (DOT
), OP (QHIBIT
), ',', OP (REG8
), OP (DOT
), OP (QLOBIT
), 0 } },
2610 & ifmt_bmov
, { 0x7a }
2612 /* bcmp $reghi8$dot$qhibit,$reg8$dot$qlobit */
2615 { { MNEM
, ' ', OP (REGHI8
), OP (DOT
), OP (QHIBIT
), ',', OP (REG8
), OP (DOT
), OP (QLOBIT
), 0 } },
2616 & ifmt_bmov
, { 0x2a }
2618 /* bfldl $reg8,$hash$mask8,$hash$datahi8 */
2621 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (MASK8
), ',', OP (HASH
), OP (DATAHI8
), 0 } },
2622 & ifmt_bfldl
, { 0xa }
2624 /* bfldh $reg8,$hash$masklo8,$hash$data8 */
2627 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (MASKLO8
), ',', OP (HASH
), OP (DATA8
), 0 } },
2628 & ifmt_bfldh
, { 0x1a }
2630 /* cmp $src1,$src2 */
2633 { { MNEM
, ' ', OP (SRC1
), ',', OP (SRC2
), 0 } },
2634 & ifmt_muls
, { 0x40 }
2636 /* cmpb $drb,$srb */
2639 { { MNEM
, ' ', OP (DRB
), ',', OP (SRB
), 0 } },
2640 & ifmt_addbr
, { 0x41 }
2642 /* cmp $src1,$hash$uimm3 */
2645 { { MNEM
, ' ', OP (SRC1
), ',', OP (HASH
), OP (UIMM3
), 0 } },
2646 & ifmt_cmpri
, { 0x48 }
2648 /* cmpb $drb,$hash$uimm3 */
2651 { { MNEM
, ' ', OP (DRB
), ',', OP (HASH
), OP (UIMM3
), 0 } },
2652 & ifmt_addbrhpag3
, { 0x49 }
2654 /* cmp $reg8,$hash$uimm16 */
2657 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
2658 & ifmt_addrhpof
, { 0x46 }
2660 /* cmpb $regb8,$hash$uimm8 */
2663 { { MNEM
, ' ', OP (REGB8
), ',', OP (HASH
), OP (UIMM8
), 0 } },
2664 & ifmt_addrbhpof
, { 0x47 }
2666 /* cmp $dr,[$sr2] */
2669 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), ']', 0 } },
2670 & ifmt_add2
, { 0x848 }
2672 /* cmpb $drb,[$sr2] */
2675 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), ']', 0 } },
2676 & ifmt_addb2
, { 0x849 }
2678 /* cmp $dr,[$sr2+] */
2681 { { MNEM
, ' ', OP (DR
), ',', '[', OP (SR2
), '+', ']', 0 } },
2682 & ifmt_add2
, { 0xc48 }
2684 /* cmpb $drb,[$sr2+] */
2687 { { MNEM
, ' ', OP (DRB
), ',', '[', OP (SR2
), '+', ']', 0 } },
2688 & ifmt_addb2
, { 0xc49 }
2690 /* cmp $reg8,$pof$upof16 */
2693 { { MNEM
, ' ', OP (REG8
), ',', OP (POF
), OP (UPOF16
), 0 } },
2694 & ifmt_addrpof
, { 0x42 }
2696 /* cmpb $regb8,$pof$upof16 */
2699 { { MNEM
, ' ', OP (REGB8
), ',', OP (POF
), OP (UPOF16
), 0 } },
2700 & ifmt_addbrpof
, { 0x43 }
2702 /* cmp $regmem8,$memgr8 */
2705 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
2706 & ifmt_addrm2
, { 0x42 }
2708 /* cmp $reg8,$memory */
2711 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
2712 & ifmt_addrm
, { 0x42 }
2714 /* cmpb $regbmem8,$memgr8 */
2717 { { MNEM
, ' ', OP (REGBMEM8
), ',', OP (MEMGR8
), 0 } },
2718 & ifmt_addbrm2
, { 0x43 }
2720 /* cmpb $regb8,$memory */
2723 { { MNEM
, ' ', OP (REGB8
), ',', OP (MEMORY
), 0 } },
2724 & ifmt_addbrm
, { 0x43 }
2726 /* cmpd1 $sr,$hash$uimm4 */
2729 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM4
), 0 } },
2730 & ifmt_cmpd1ri
, { 0xa0 }
2732 /* cmpd2 $sr,$hash$uimm4 */
2735 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM4
), 0 } },
2736 & ifmt_cmpd1ri
, { 0xb0 }
2738 /* cmpi1 $sr,$hash$uimm4 */
2741 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM4
), 0 } },
2742 & ifmt_cmpd1ri
, { 0x80 }
2744 /* cmpi2 $sr,$hash$uimm4 */
2747 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM4
), 0 } },
2748 & ifmt_cmpd1ri
, { 0x90 }
2750 /* cmpd1 $reg8,$hash$uimm16 */
2753 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
2754 & ifmt_addrhpof
, { 0xa6 }
2756 /* cmpd2 $reg8,$hash$uimm16 */
2759 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
2760 & ifmt_addrhpof
, { 0xb6 }
2762 /* cmpi1 $reg8,$hash$uimm16 */
2765 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
2766 & ifmt_addrhpof
, { 0x86 }
2768 /* cmpi2 $reg8,$hash$uimm16 */
2771 { { MNEM
, ' ', OP (REG8
), ',', OP (HASH
), OP (UIMM16
), 0 } },
2772 & ifmt_addrhpof
, { 0x96 }
2774 /* cmpd1 $reg8,$pof$upof16 */
2777 { { MNEM
, ' ', OP (REG8
), ',', OP (POF
), OP (UPOF16
), 0 } },
2778 & ifmt_addrpof
, { 0xa2 }
2780 /* cmpd2 $reg8,$pof$upof16 */
2783 { { MNEM
, ' ', OP (REG8
), ',', OP (POF
), OP (UPOF16
), 0 } },
2784 & ifmt_addrpof
, { 0xb2 }
2786 /* cmpi1 $reg8,$pof$upof16 */
2789 { { MNEM
, ' ', OP (REG8
), ',', OP (POF
), OP (UPOF16
), 0 } },
2790 & ifmt_addrpof
, { 0x82 }
2792 /* cmpi2 $reg8,$pof$upof16 */
2795 { { MNEM
, ' ', OP (REG8
), ',', OP (POF
), OP (UPOF16
), 0 } },
2796 & ifmt_addrpof
, { 0x92 }
2798 /* cmpd1 $regmem8,$memgr8 */
2801 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
2802 & ifmt_addrm2
, { 0xa2 }
2804 /* cmpd2 $regmem8,$memgr8 */
2807 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
2808 & ifmt_addrm2
, { 0xb2 }
2810 /* cmpi1 $regmem8,$memgr8 */
2813 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
2814 & ifmt_addrm2
, { 0x82 }
2816 /* cmpi2 $regmem8,$memgr8 */
2819 { { MNEM
, ' ', OP (REGMEM8
), ',', OP (MEMGR8
), 0 } },
2820 & ifmt_addrm2
, { 0x92 }
2822 /* cmpd1 $reg8,$memory */
2825 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
2826 & ifmt_addrm
, { 0xa2 }
2828 /* cmpd2 $reg8,$memory */
2831 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
2832 & ifmt_addrm
, { 0xb2 }
2834 /* cmpi1 $reg8,$memory */
2837 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
2838 & ifmt_addrm
, { 0x82 }
2840 /* cmpi2 $reg8,$memory */
2843 { { MNEM
, ' ', OP (REG8
), ',', OP (MEMORY
), 0 } },
2844 & ifmt_addrm
, { 0x92 }
2849 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
2850 & ifmt_addr
, { 0x4c }
2855 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
2856 & ifmt_addr
, { 0x6c }
2861 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
2862 & ifmt_addr
, { 0xc }
2867 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
2868 & ifmt_addr
, { 0x2c }
2873 { { MNEM
, ' ', OP (DR
), ',', OP (SR
), 0 } },
2874 & ifmt_addr
, { 0xac }
2876 /* shl $sr,$hash$uimm4 */
2879 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM4
), 0 } },
2880 & ifmt_cmpd1ri
, { 0x5c }
2882 /* shr $sr,$hash$uimm4 */
2885 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM4
), 0 } },
2886 & ifmt_cmpd1ri
, { 0x7c }
2888 /* rol $sr,$hash$uimm4 */
2891 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM4
), 0 } },
2892 & ifmt_cmpd1ri
, { 0x1c }
2894 /* ror $sr,$hash$uimm4 */
2897 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM4
), 0 } },
2898 & ifmt_cmpd1ri
, { 0x3c }
2900 /* ashr $sr,$hash$uimm4 */
2903 { { MNEM
, ' ', OP (SR
), ',', OP (HASH
), OP (UIMM4
), 0 } },
2904 & ifmt_cmpd1ri
, { 0xbc }
2913 /* Formats for ALIAS macro-insns. */
2915 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
2916 #define F(f) & xc16x_cgen_ifld_table[XC16X_##f]
2918 #define F(f) & xc16x_cgen_ifld_table[XC16X_/**/f]
2922 /* Each non-simple macro entry points to an array of expansion possibilities. */
2924 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
2925 #define A(a) (1 << CGEN_INSN_##a)
2927 #define A(a) (1 << CGEN_INSN_/**/a)
2929 #if defined (__STDC__) || defined (ALMOST_STDC) || defined (HAVE_STRINGIZE)
2930 #define OPERAND(op) XC16X_OPERAND_##op
2932 #define OPERAND(op) XC16X_OPERAND_/**/op
2934 #define MNEM CGEN_SYNTAX_MNEMONIC /* syntax value for mnemonic */
2935 #define OP(field) CGEN_SYNTAX_MAKE_FIELD (OPERAND (field))
2937 /* The macro instruction table. */
2939 static const CGEN_IBASE xc16x_cgen_macro_insn_table
[] =
2943 /* The macro instruction opcode table. */
2945 static const CGEN_OPCODE xc16x_cgen_macro_insn_opcode_table
[] =
2954 #ifndef CGEN_ASM_HASH_P
2955 #define CGEN_ASM_HASH_P(insn) 1
2958 #ifndef CGEN_DIS_HASH_P
2959 #define CGEN_DIS_HASH_P(insn) 1
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. */
2966 asm_hash_insn_p (insn
)
2967 const CGEN_INSN
*insn ATTRIBUTE_UNUSED
;
2969 return CGEN_ASM_HASH_P (insn
);
2973 dis_hash_insn_p (insn
)
2974 const CGEN_INSN
*insn
;
2976 /* If building the hash table and the NO-DIS attribute is present,
2978 if (CGEN_INSN_ATTR_VALUE (insn
, CGEN_INSN_NO_DIS
))
2980 return CGEN_DIS_HASH_P (insn
);
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)
2988 #define CGEN_ASM_HASH(mnem) (*(unsigned char *) (mnem) % CGEN_ASM_HASH_SIZE) /*FIXME*/
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. */
2997 #ifndef CGEN_DIS_HASH
2998 #define CGEN_DIS_HASH_SIZE 256
2999 #define CGEN_DIS_HASH(buf, value) (*(unsigned char *) (buf))
3002 /* The result is the hash value of the insn.
3003 Targets are free to override CGEN_{ASM,DIS}_HASH in the .opc file. */
3006 asm_hash_insn (mnem
)
3009 return CGEN_ASM_HASH (mnem
);
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. */
3016 dis_hash_insn (buf
, value
)
3017 const char * buf ATTRIBUTE_UNUSED
;
3018 CGEN_INSN_INT value ATTRIBUTE_UNUSED
;
3020 return CGEN_DIS_HASH (buf
, value
);
3023 /* Set the recorded length of the insn in the CGEN_FIELDS struct. */
3026 set_fields_bitsize (CGEN_FIELDS
*fields
, int size
)
3028 CGEN_FIELDS_BITSIZE (fields
) = size
;
3031 /* Function to call before using the operand instance table.
3032 This plugs the opcode entries and macro instructions into the cpu table. */
3035 xc16x_cgen_init_opcode_table (CGEN_CPU_DESC cd
)
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
));
3044 /* This test has been added to avoid a warning generated
3045 if memset is called with a third argument of value zero. */
3046 if (num_macros
>= 1)
3047 memset (insns
, 0, num_macros
* sizeof (CGEN_INSN
));
3048 for (i
= 0; i
< num_macros
; ++i
)
3050 insns
[i
].base
= &ib
[i
];
3051 insns
[i
].opcode
= &oc
[i
];
3052 xc16x_cgen_build_insn_regex (& insns
[i
]);
3054 cd
->macro_insn_table
.init_entries
= insns
;
3055 cd
->macro_insn_table
.entry_size
= sizeof (CGEN_IBASE
);
3056 cd
->macro_insn_table
.num_init_entries
= num_macros
;
3058 oc
= & xc16x_cgen_insn_opcode_table
[0];
3059 insns
= (CGEN_INSN
*) cd
->insn_table
.init_entries
;
3060 for (i
= 0; i
< MAX_INSNS
; ++i
)
3062 insns
[i
].opcode
= &oc
[i
];
3063 xc16x_cgen_build_insn_regex (& insns
[i
]);
3066 cd
->sizeof_fields
= sizeof (CGEN_FIELDS
);
3067 cd
->set_fields_bitsize
= set_fields_bitsize
;
3069 cd
->asm_hash_p
= asm_hash_insn_p
;
3070 cd
->asm_hash
= asm_hash_insn
;
3071 cd
->asm_hash_size
= CGEN_ASM_HASH_SIZE
;
3073 cd
->dis_hash_p
= dis_hash_insn_p
;
3074 cd
->dis_hash
= dis_hash_insn
;
3075 cd
->dis_hash_size
= CGEN_DIS_HASH_SIZE
;